自己写的1602液晶 求指导,求请教!
时间:10-02
整理:3721RD
点击:
- 今天才学完1602液晶 自己模仿写了一个程序 求指教啊!谢谢了!
- #include<reg51.h>
- #define uchar unsigned char
- #define uint unsigned int
- uchar code table[]="LI WEI :";//第一行显示字符串
- uchar code table1[]="I LOVE YOU !";//第二行显示字符串
- sbit lcde=P2^7; //使能端
- sbit lcdrs=P2^6; //数据或指令选择
- sbit lcdrw=P2^5; //读写选择
- uchar num; // 表的移动变量
- void delay(uint z) //延时函数,延时较长时不用uchar
- {
- uint x,y;
- for(x=z;x>0;x--)
- for(y=110;y>0;y--);
- }
- void write_com(uchar com) //写指令
- {
- lcdrs=0;
- P0=com;
- delay(5);
- lcde=1;
- delay(5);
- lcde=0;
- }
- void write_data(uchar date)//写数据
- {
- lcdrs=1;
- P0=date;
- delay(5);
- lcde=1;
- delay(5);
- lcde=0;
- }
- void init() //初始化函数
- { lcde=0;
- lcdrw=0;
- write_com(0x38); //16*2显示,5*7点阵,8位数据接口
- write_com(0x0f);//开显示,开光标,光标闪烁
- write_com(0x06); //显示一个字符后,光标加一,指针加一
- write_com(0x01); //清屏(数据和显示)
- write_com(0x80+0x10); //数据指针的设置(隐藏在后面)
- }
- main()
- { init();//初始化
- for(num=0;num<8;num++) //循环显示第一行
- {
- write_data(table[num]);
- delay(20);
- }
- write_com(0x80+0x54);
- for(num=0;num<12;num++) //循环显示第二行
- {
- write_data(table1[num]);
- delay(20);
- }
- for(num=0;num<16;num++) //整屏移动(只能一字节一字节移动)
- {
- write_com(0x18); //整屏移动的指令
- delay(300);
- }
- while(1);
- }
小编究竟要干什么?
就是想让大师们看看我的程序的写法,对风格和一些应该注意的地方给点建议!
不错哦