这几天在学液晶模块的用法,写了一个简单的显示程序。
P1口走数据,其他接口见程序注释(晶振11.0592)
单片机源程序如下:
- #include <reg52.h> //此程序用于1602液晶从左侧飞入显示
- #define ui unsigned int
- #define uc unsigned char
- /*数据口是P1*/
- sbit rs=P2^3; //定义管脚
- sbit rw=P2^4;
- sbit e =P2^5;
- uc num;
- uc code t[]="Hello,";
- uc code t1[]="World!";
- void delay(ui x) //毫秒延时
- {
- ui i,j;
- for(i=x;i>0;i--)
- for(j=110;j>0;j--);
- }
- void w_com(ui com) //写命令
- {
- rs=0;
- rw=0;
- P0=com;
- delay(5);
- e=1;
- delay(5);
- e=0;
- }
- void w_data(ui dat) //写数据
- {
- rs=1;
- rw=0;
- P0=dat;
- delay(5);
- e=1;
- delay(5);
- e=0;
- }
- void init() //初始化
- {
- w_com(0x38);
- w_com(0x0c);
- w_com(0x06);
- w_com(0x01);
- }
- void shan() //二极管闪烁
- {
- P1=0x00;
- delay(200);
- P1=0xff;
- delay(200);
- P1=0x00;
- delay(200);
- P1=0xff;
- }
- void main()
- {
- init();
- delay(5);
-
- w_com(0x80+0x10); //调数据指针
- num=0; //写第一行
- while(num<6)
- {
- w_data(t[num]);
- delay(5);
- num++;
- }
- delay(5);
- w_com(0x80+0x50); //调数据指针
- num=0; //写第二行
- while(num<6)
- {
- w_data(t1[num]);
- delay(5);
- num++;
- }
- delay(5);
-
- for(num=16;num>0;num--) //左移
- {
- w_com(0x18);
- delay(300);
- }
- shan();
- while(1);
- }
复制代码
所有资料51hei提供下载:
cs1602.rar
(16.49 KB, 下载次数: 5)
|