proteus51仿真(4)——lcd1602

proteus51仿真(4)——lcd1602_第1张图片

本例为lcd1602的基本使用。

要想会用1602,必须要了解时序图和相关的命令。寄存器:RS、RW、EN

 

 

1.1602只能显示ASCII码,范围为16个字符/每行*2行

 

2.时序图

 (1)写操作(单片机-->1602)

 

proteus51仿真(4)——lcd1602_第2张图片 

首先要对寄存器的选择和读、写操作选择进行配置。RS是寄存器选择,RS = 1对数据进行操作;RS = 0对指令进行操作。
接着对读写操作选择进行配置,RW = 0 写操作。
打开使能端,输入使能信号 E = 1。
数据总线,对DB0~DB7赋值,进行数据的传输。

【注】如果先打开使能,再进行其他配置的话,有可能传输的数据不是自己想要的。

  1. 读操作(1602-->单片机)
  2. proteus51仿真(4)——lcd1602_第3张图片

 

3.1602的常用指令集

proteus51仿真(4)——lcd1602_第4张图片

proteus51仿真(4)——lcd1602_第5张图片

proteus51仿真(4)——lcd1602_第6张图片

proteus51仿真(4)——lcd1602_第7张图片

proteus51仿真(4)——lcd1602_第8张图片

4.显示位置的确定

显示在第一行某一列的数据可以写命令:0x80 | 0x**
显示在第二行某一列的数据可以写命令:0x80 | 0x40 | 0x** = 0xC0 | 0x**
0x80是因为在设置DDRAM地址时,DB7固定是为1的(1000 0000)。

proteus51仿真(4)——lcd1602_第9张图片

 

5.由于LCD是外部设备,处理速度比CPU速度慢,向LCD写入命令到完成功能需要一定的时间,在这个过程中,LCD处于忙状态,不能向LCD写入新的内容。LCD是否处于忙状态可以通过读忙标志命令来了解。用state = LCDPORT来读取IO端口的状态,将state & 0x80来判断LCD是否处于忙状态,若IO口bit7为1,则表示LCD处于忙状态,反之则空闲。

 

6.在本例中,对于未知长度的数组,可以用sizeof()函数确定数组的长度。

 

获得完整仿真文件,请关注公众号:一名追风的少年,在后台回复:proteus-lcd1602即可

proteus51仿真(4)——lcd1602_第10张图片

你可能感兴趣的:(proteus51仿真(4)——lcd1602)