|
实现功能:LCD1602的第一行和第二行可以显示不超过16字符的内容,帮助初学者大致了解LCD1602的运作原理;
- //LCD1602显示时分秒
- #include <reg52.h>
- #define uint unsigned int
- #define uchar unsigned char
- sbit rs=P2^6;
- sbit rw=P2^5;
- sbit en=P2^7;
- uchar code Wenhou[]="NinHaoWangHaiJie";//第一行显示内容;
- uchar code table[]="QQ:248xx9282"; //1602第二行显示内容,
- void write_command(uchar); //声明写指令
- void write_date(uchar); //声明写数据
- uchar a,b;
- void delay(uint x) //延时函数
- {
- uint i,j;
- for(i=x;i>0;i--)
- for(j=110;j>0;j--);
- }
- void init()
- {
- en=0;
- rs=1;
- rw=1;
- P0=0xff;
- }
- /*----------------------------------------------------------------------------------------*/
- void main()
- {
- init(); //初始化
- while(1) // 循环内 不断扫描
- {delay(2000);
- write_command(0x38);//设置16*2显示 7*5点阵 8位数据口 //0011 1000
- //write_command(0x06);//地址加1 光标右移 //0000 0110
- //write_command(0x08);//只开显示 //0000 1000
- //write_command(0x01);//清屏 //0000 0001
- write_command(0x0c);//开显示 不开光标
-
- write_command(0x80);//第一行第一位地址 //0000 1100
- for(b=0;b<16;b++)
- write_date(Wenhou[b]);
- write_command(0xc0);//第二行第一位地址 //1000 0000
- for(a=0;a<12;a++)
- write_date(table[a]);
- delay(5000);
- write_command(0x02);
- }
- }
- void write_command(uchar com) //1602 写指令
- {
- en=0;
- rs=0;
- rw=0;
- P0=com;
- delay(5);
- en=1;
- delay(5);
- en=0;
- }
- void write_date(uchar date)//1602 写数据
- {
- en=0;
- rs=1;
- rw=0;
- P0=date;
- delay(5);
- en=1;
- delay(5);
- en=0;
- }
复制代码
|
|