在前一篇文章《辉光管时钟系列<一>单片机最小系统》中,我们是通过蜂鸣器或发光二极管来验证最小系统是否正常工作。很多时候,我们需要将系统的信息进行可视化展示,方面我们对系统进行测试。这里我们介绍如何通过常用的LCD1602液晶来显示一些单片机的信息。
图1为LCD1602与单片机的电路原理图:
除了单片机最小系统的元器件外,还需要液晶显示器1602以及相应的电阻,其实物图如图2所示:
图2中,排针用于使用杜邦线连接LCD1602和单片机,可调变阻器用于调节LCD1602的明暗程度。
最后,我们给出简单的LCD1602显示的C语言程序:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82
| #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) { lcdrs=0; P0=com; delay(5); lcden=1; delay(5); lcden=0; }
void write_date(uchar dat) { lcdrs=1; P0=dat; delay(5); lcden=1; delay(5); lcden=0; }
void init() {
lcden=0;
write_com(0x38); write_com(0x0e); write_com(0x06); write_com(0x01); 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 。