标题:
at89c51控制的lcd1602显示
[打印本页]
作者:
啊哈哈000
时间:
2017-5-2 22:31
标题:
at89c51控制的lcd1602显示
自己学了很长时间,功夫不负有心人,终于懂点了!!
0.png
(22.52 KB, 下载次数: 111)
下载附件
2017-5-2 23:07 上传
0.png
(49.33 KB, 下载次数: 77)
下载附件
2017-5-2 23:07 上传
#include <reg51.h>
#define uint unsigned int
#define uchar unsigned char
uchar code table1[]="SMILE -_-!"; //第一行需要的字符
uchar code table2[]="HI,HONEY!_HYC";//第二行需要的字符
sbit RS=P2^0;
sbit RW=P2^1;
sbit E=P2^2;
void delay(uint t)//延时程序
{
uint i,j;
for(i=t;i>0;i--);
for(j=110;j>0;j--);
}
void write_com(uchar com)//写指令
{
RS=0;
RW=0;
P0=com;
delay(5);//延时,给硬件反应时间
E=1;
delay(5);
E=0;
}
void write_date(uchar date)//写数据
{
RS=1;
RW=0;
P0=date;
delay(5);
E=1;
delay(5);
E=0;
}
void init()//LCD初始化
{
E=0;
delay(15);
write_com(0x38); //设置8位格式
delay(5);
write_com(0x38);
delay(5);
write_com(0x38); //连续3次,确保成功
delay(5);
write_com(0x0c);//设置开显示,不显示光标
delay(5);
write_com(0x06);//每次写数据后地址指针加1
delay(5);
write_com(0x01);//清屏
delay(5);
}
void main()//主程序
{
uchar x,y;
init();
write_com(0x80);//第一行地址基数
for(x=0;x<10;x++)
{
write_date(table1[x]);
delay(5);
}
write_com(0xC0);//第二行地址基数
for(y=0;y<13;y++)
{
write_date(table2[y]);
delay(5);
}
while(1);
}
复制代码
下载:
lcd1602.zip
(34.92 KB, 下载次数: 44)
2017-5-2 22:30 上传
点击文件名下载附件
下载积分: 黑币 -5
作者:
ptlantu
时间:
2018-6-20 14:12
学习了,感谢分享
作者:
xiaofeiyang
时间:
2020-4-17 19:14
前辈可以留个联系方式吗
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1