51单片机实例11——LCD1602显示数字0-9

LCD1602显示数字0-9

1、设计目的

        LCD1602显示数字0-9

2、仿真电路

51单片机实例11——LCD1602显示数字0-9_第1张图片

 51单片机实例11——LCD1602显示数字0-9_第2张图片

3、程序设计(C语言)

#include
    
sbit lcdrs=P3^0;		 //LCD显示的数据/命令选择端
sbit lcdrw=P3^1;        //LCD显示的读写操作选择端
sbit lcden=P3^2;		 //LCD显示的使能信号

/****************************************
函数功能:ms级延时
*****************************************/
void delayms(unsigned int xms)							//定义延时函数
{
	unsigned int i,j;
	for(i=xms;i>0;i--)
		for(j=110;j>0;j--);
}

/****************************************
函数功能:LCD写入数据
*****************************************/
void write_data(unsigned char date)										
{
    lcdrw=0;                //RW=0,写操作
	lcdrs=1;                 //RS=1 写数据
	P0=date;                                       
	delayms(5);
	lcden=1;								 //E=1
	delayms(5);
	lcden=0;								 //E=0   当E由1变0时LCD写入数据
}

/****************************************
函数功能:LCD写入指令
*****************************************/
void write_com(unsigned char com)
{
    lcdrw=0;                //RW=0,写操作
	lcdrs=0;               //RS=0 写命令                                  
	P0=com;                                     
	delayms(5);
	lcden=1;               //E=1
	delayms(5);
	lcden=0;               //E=0   当E由1变0时LCD执行命令
}

/****************************************
函数功能:LCD初始化设置
*****************************************/
void lcd_init()				   
{
	lcden=0;               //E=0   
	write_com(0x38);       //00111000两行显示,5*7点阵,8位数据
	write_com(0x0c);   		 //00001100开整体显示,光标关,无闪烁
	write_com(0x06);       //00000110写入1个字符后,地址指针加一
	write_com(0x01);       //00000001清屏
}

/****************************************
函数功能:LCD显示数字0-9
*****************************************/
void lcd_number(unsigned int number)
{
    int num[10]={0x30,0x31,0x32,0x33,0x34,0x35,0x36,0x37,0x38,0x39};
    lcden=0;
	switch(number)
	{
		case 0:write_data(num[0]);
		break;
		case 1:write_data(num[1]);
		break;
		case 2:write_data(num[2]);
		break;
		case 3:write_data(num[3]);
		break;
		case 4:write_data(num[4]);
		break;
		case 5:write_data(num[5]);
		break;
		case 6:write_data(num[6]);
		break;
		case 7:write_data(num[7]);
		break;
		case 8:write_data(num[8]);
		break;
		case 9:write_data(num[9]);
		break;
	}
}

/****************************************
函数功能:主函数
*****************************************/
void main()
{
    int number;
    lcd_init();
    for(number=0;number<10;number++)
        {
            write_com(0x80+number); //显示位置
            lcd_number(number);     //显示数字
            delayms(100);
        }
	while(1);	//持续运行
}

你可能感兴趣的:(51单片机,proteus仿真,51单片机,单片机)