概述
第一个部分
(可以结合着看加以理解)
一、学习目的
学会如何使用一个新的模块:- 从硬件上获得接口的了解;
- 查看芯片的数据手册,了解接口的使用方法
- 写程序时要遵循 硬件电路 –> 硬件接口 –> 软件编程 这三个部分
二、LCD1602原理
1、只能显示ASCII码
1602 = 16个字符/行 * 2行 = 像素 16*2
2、分析时序图
(1)写操作(单片机至HD44780)
描述:
首先要对寄存器的选择和读、写操作选择进行配置。RS是寄存器选择,RS = 1对数据进行操作;RS = 0对指令进行操作。
接着对读写操作选择进行配置,RW = 0 写操作。
打开使能端,输入使能信号 E = 1。
数据总线,对DB0~DB7赋值,进行数据的传输
【注】如果先打开使能,再进行其他配置的话,有可能传输的数据不是自己想要的。
(2)读操作(HD44780至单片机)
(描述同上)
3、显示模块的指令集
根据自己的显示需要进行相应的配置
4、显示的位置设置DDRAM
显示在第一行某一列的数据可以写命令:0x80 | 0x**
显示在第二行某一列的数据可以写命令:0x80 | 0x40 | 0x** = 0xC0 | 0x**
0x80是因为在设置DDRAM地址时,DB7固定是为1的。
三、LCD1602写入自己的字符及显示汉字
1、由于LCD是外部设备,处理速度比CPU速度慢,向LCD写入命令到完成功能需要一定的时间,在这个过程中,LCD处于忙状态,不能向LCD写入新的内容。LCD是否处于忙状态可以通过读忙标志命令来了解。
用state = LCDPORT来读取IO端口的状态,将state & 0x80来判断LCD是否处于忙状态,若IO口bit7为1,则表示LCD处于忙状态,反之则空闲。
2、要让LCD1602显示自定义字符,就得用到CGRAM指令,CGROM字码表实际只有8个字节可供使用,writecom(0x40)表示将要在CGRAM中写入数据,设置字库CGRAM地址命令是0100 0000.
1602能存储8个自定义字符(即8个字节的使用),这8个自定义字符存储空间的首地址分别是:0X40,0X48,0X50,0X58,0X60,0X68,0X70,0X78。
使用时读取自定义字符的地址即为0X40-0X78 对应为 00H-07H。一个地址(如00H)存放1B的一个字符(1B = 8bit,一个字符由8个0x**组成)
以0x40来说,它的存储空间如图所示:
如果使用5*7字符的话,那么最左3位和最后一行的数据实际上是没用的,通常置0。
这样我们就得到每个地址需要写入的数据:
地址 : 数据
0x40 : 0x16
0x41 : 0x09
0x42 : 0x08 其他类推。将这8个数据写入到对应地址即可。(有红格子的即为1,白格子即为0)
第二个部分
一、lcd1602概念
(1)lcd1602指显示内容为16*2(可显示两行),每行可6个字节的液晶显示模块。
(2)CGRAM是用户自定义的字符图形存储区,可以定义8个自定义字符。
(3)将显示模式设置为“16*2显示.
二、LCD显示字符三个注意点
① 待显示字符ASCII标准码产生
② 液晶显示模式的设置
③ 字符显示位置的指定
三、LCD显示数据的位置选择
若想在00H(第一行第一列)上显示数据,必须将00H加上0x80H(指令发送0x80);若想在第二行第五列显示数据,则地址确定的指令为80H + 40H + 4 = C4H,其他以此类推。
四、LCD1602的硬件连接
① JPBG直接连接电源,第3引脚的可调电位器的两端一定要连接电源和地。
② P2.0、P2.1、P2.2分别是RS(数据命令选择端)、R/W(读写控制位)和E(LCD使能端)三个控制位,P0.0~P0.7是8个数据接口线。
●RS:高电平(RS = 1)代表传输数据,低电平(RS = 0)代表传输命令。
●R/W:R/W = 1为读指令,R/W = 0为写指令。
五、1602LCD的自定义字符
从CGRAM表上可以看到,在表的最左侧是一列可以允许用户自定义的CGRAM,从上往下看共16个,实际上只有8个字节可以自定义。设置CGRAM地址的命令如下:
也就是说当我们想自定义字符,从这个指令可以看出指令数据的高两位已经固定为01,只有后面6位是地址数据,而这6位中的高3位就代表这8个自定义字符,最后3位是字模数据的8个地址。例如第一个自定义字符的字模地址为01000000 —— 01000111。
六、LCD1602程序示例
最后
以上就是能干羊为你收集整理的lcd 1602晶体显示合解的全部内容,希望文章能够帮你解决lcd 1602晶体显示合解所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复