0%

【单片机】辉光管时钟系列<二>LCD液晶显示

在前一篇文章《辉光管时钟系列<一>单片机最小系统》中,我们是通过蜂鸣器或发光二极管来验证最小系统是否正常工作。很多时候,我们需要将系统的信息进行可视化展示,方面我们对系统进行测试。这里我们介绍如何通过常用的LCD1602液晶来显示一些单片机的信息。

图1为LCD1602与单片机的电路原理图:

图1

除了单片机最小系统的元器件外,还需要液晶显示器1602以及相应的电阻,其实物图如图2所示:

图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)// 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

注意:在图3中,P0口没有加10K的上拉电阻,也能正常工作,但是还是推荐加上上拉电阻。关于LCD1602显示的其他设置,可以参考LCD1602的datasheet,链接地址如下:https://github.com/tengweitw/LCD1602_Datasheet

坚持原创技术分享,您的支持将鼓励我继续创作!