在前一篇文章《辉光管时钟系列<一>单片机最小系统》中,我们是通过蜂鸣器或发光二极管来验证最小系统是否正常工作。很多时候,我们需要将系统的信息进行可视化展示,方面我们对系统进行测试。这里我们介绍如何通过常用的LCD1602液晶来显示一些单片机的信息。
图1为LCD1602与单片机的电路原理图:
除了单片机最小系统的元器件外,还需要液晶显示器1602以及相应的电阻,其实物图如图2所示:
图2中,排针用于使用杜邦线连接LCD1602和单片机,可调变阻器用于调节LCD1602的明暗程度。
最后,我们给出简单的LCD1602显示的C语言程序:
#include<reg52.h>
#define uchar unsigned char
#define uint unsigned int
sbit lcden=P2^7;
sbit lcdrs=P2^5;
uchar code table1[]=" Hello World! ";
uchar code table2[]=" tengweitw.com ";
void delay(uint z)
{
uint x,y;
for(x=z;x>0;x--)
for(y=110;y>0;y--);
}
void write_com(uchar com)// LCD1602写命令
{
lcdrs=0;
P0=com;
delay(5);
lcden=1;
delay(5);
lcden=0;
}
void write_date(uchar dat)// LCD1602写数据
{
lcdrs=1;
P0=dat;
delay(5);
lcden=1;
delay(5);
lcden=0;
}
void init()
{
lcden=0;
write_com(0x38); //设置1602显示
write_com(0x0e);//开显示、显示光标、光标不显示
write_com(0x06); //移动光标
write_com(0x01); //清除LCD的显示内容
write_com(0x80);//设置显示的起始地址
}
void main()
{
uchar num;
init();
write_com(0x80);
for(num=0;num<16;num++)//显示第一行
{
write_date(table1[num]);
delay(10);
}
write_com(0x80+0x40);
for(num=0;num<16;num++)//显示第二行
{
write_date(table2[num]);
delay(10);
}
while(1);//程序停在这
}
显示的效果图如下:
注意:在图3中,P0口没有加10K的上拉电阻,也能正常工作,但是还是推荐加上上拉电阻。关于LCD1602显示的其他设置,可以参考LCD1602的datasheet,链接地址如下:https://github.com/tengweitw/LCD1602_Datasheet 。