菜鸟学习C2000 LESSON7之液晶1602的显示
[复制链接]
1. 简单介绍下1602 1602液晶也叫1602字符型液晶它是一种专门用来显示字母、数字、符号等的点阵型液晶模块它有若干个5X7或者5X11等点阵字符位组成,每个点阵字符位都可以显示一个字符。每位之间有一个点距的间隔每行之间也有间隔起到了字符间距和行间距的作用,正因为如此所以他不能显示图形 (用自定义CGRAM,显示效果也不好)1602LCD是指显示的内容为16X2,即可以显示两行,每行16个字符液晶模块(显示字符和数字)。
LCD1602特性 +5V电压,对比度可调 内含复位电路 提供各种控制命令,如:清屏、字符闪烁、光标闪烁、显示移位等多种功能 有80字节显示数据存储器DDRAM 内建有160个5X7点阵的字型的字符发生器CGROM 8个可由用户自定义的5X7的字符发生器CGRAM 字符型LCD1602通常有14条引脚线或16条引脚线的LCD,多出来的2条线是背光电源线VCC(15脚)和地线GND(16脚
原理图
一些指令的简单介绍
液晶显示中的DDRAM、CGROM和CGRAM的作用(部分来源于网络) DDRAM显示用ram,直接和屏幕上的点相对应.屏幕上的一个点和ddram中的一个位对应,字符屏的ddram和图形屏的ddram有一点点区别。 第一行的内容对应DDRAM中80H到8FH内容 第二行的内容对应DDRAM中C0H到CFH内容 CGROM 中存储了一些标准的 字符的字模编码,是液晶屏出厂时固化在控制芯片中的,用户不能改变其中的存储内容,只能读取调用,包含有标准的ASCII码、日文字符和希腊文字符 CGRAM 是控制芯片留给用户,用以存储用户自己设计的字模编码。为了便于理解,可以如下打一比方:CGROM和CGRAM中存储的字模信息相当于厨房中的食品,CGROM是厨房中现成的熟食,CGRAM是用户自行制作的菜肴,这些食品都要通过托盘转移一下,才能送到餐桌上食用;类似的字模编码都要先被读取到对应的DDRAM中,经如上中转以后,屏幕的相应位置才显示出字符。对于字符屏,要显示某个字符时,往ddram里写字符的索引(一般都是ascii码)就可以完成显示。比如你写0x38,则显示为数字8。
由上两条指令可知DDRAM地址(DB7赋值1),所以地址从0x80开始 可知CGRAM地址(DB6赋值1),所以地址从0x40开始 首先:我们要弄清楚一个概念,其实我们使用1602显示中文汉字,就是利用其内部的自定义字节空间,我们都知道LCD1602内部有一个64字节的自定义CGRAM,那么好,我们就是要利用自定义字节来达到显示汉字的效果.
我们知道一个字符占8个字节,所以在CGRAM能够存放8个字符。
也就是说,这个64字节的CGRAM是给我们提供写入数据的,
那么我们怎么把我们要的汉字写入CGRAM呢?
不要急,大家查看LCD1602的用户手册,里面提到当我们需要想CGRAM写入数据时,我们需要先写入CGRAM的地址,从手册上可知,CGRAM的地址为0x40.所以当我们要写入数据时,要先写入一条地址命令 write_com(0x040);
然后把你要写入的数据通过写数据命令写入 write_date( 你要写得数据); 做完以上步骤了,是不是LCD1602就会显示你输入的汉字呢?
不要急,以上你只是把你要显示汉字的代码存放在CGRAM里,就相当于其他常用字符一样固定在LCD里面了,如果你不把它读出来,LCD是不会显示的。。
当你把上面的步骤做完后,接下来要做的与你平常怎么使用LCD1602是一样的,只不过是LCD1602里面增加了一些你自定义的字符,汉字。 字符的数据也就是要输入到自定义字符CGRAM里面的。 好的,怎么把获取汉字代码,怎么把代码输入到CGRAM里面都知道了,下面就是要把我们的自定义汉字、字符显示在LCD1602屏幕上了。。我们知道常用字符是从0x20开始显示,而0x00—0x0f都是没有用的,其实这个正式为我们自定义显示字符准备的。当你把上面的代码输入到CGRAM中,LCD1602机会把汉字或字符赋予地址,这个地址是从0x00开始,因为最多只能8个字符,所以当在CGRAM里面输入8个字符代码时,这8个字符的代码的数据地址就是0x00开始到0x07。所以当你要在LCD1602上显示自定义字符时,只需要把这个地址用数据输入就OK。 Write_date(0x00—0x07);也就是说现在你要显示自定义字符和你显示常用字符一样的做法了,先写地址,然后写数据自定义字符的数据就是0x00—0x07。也就是你自定义的8个字 符。 应用注意点: 首先要对LCD1602初始化,初始化的内容可根据显示的需要选择上面的指令。 初始化完成后,接着指定显示位置。要显示字符时,应先输入显示字符的地址,也就是告知显示器在哪里显示字符。第一行第一列的地址是00H,但应注意,比如该位置的地址不能写入00H,而应写入80H,这是因为写入显示地址时要求最高位DB7恒为高电平1,所以实际写入的数据应该是00000000B(00H)+10000000B(80H)=10000000B(80H)。同理第2行40H也需要加80H。如下图所示。 取模 首先取得想要的中文或者图形的字模数组。通过字模软件不能直接提取5*8点阵的字模数据,可以通过手动提取的方法。如下图所示,对应一个字符显示区域。每8个字节,组成一个点阵数组。
本文只是让lcd1602显示,具体怎么显示花样 读者要仔细想想。另外本文没有对忙信号进行检测,不算很谨慎把,读者可自行加上
|