版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、LCD160温示屏的驱动设置及例程般来说,LCD1602有16条引脚,据说还有14条引脚的,与16脚的相比缺少了号是HJ1602A 是绘晶科背光电源A(15脚)和地线K(16脚)。我手里这块LCD1602的型技公司的产品,它有16条引脚。如图1所示:再来一张它的背面的,如图 2所示:弓1脚号符号引脚说明弓1脚号符号引脚说明1VSS电源地9D2数据端口2VDD电源正极10D3数据端口3VO偏压信号11D4数据端口4RS命令/数据12D5数据端口5RW读/写13D6数据端口6E使能14D7数据端口7D0数据端口15A背光正极8D1数据端口16K背光负极图2它的16条引脚定义如下:对这个表的说明:1
2、. VS眼电源地。2. VDDg +5V。3. VO是液晶显示的偏压信号, 可接10K的3296精密电位器。或同样阻值的RM065/RM 063蓝白可调电阻。见图 3。V0vdd|1| vss10K图34. RS是命令/数据选择引脚,接单片机的一个I/O ,当RS为低电平时,选择命令;当RS为高电平时,选择数据。5. RW是读/写选择引脚,接单片机的一个 I/O,当RW的低电平时,向LCD1602写入命 令或数据;当RWfc高电平时,从LCD1602读取状态或数据。如果不需要进行读取操作, 可以直接将其接VSS6. E,执行命令的使能引脚,接单片机的一个I/O。7. DO-D7,并行数据输入/
3、输出引脚,可接单片机的 P0-P3任意的8个I/O 口。如果 接P0 口,P0 应该接4.7K 10K的上拉电阻。如果是 4线并行驱动,只须接 4个I/O 口。8. A背光正极,可接一个 1047欧的限流电阻到VDD9. K背光负极,接VSS见图4所示。volZT?S 氏W三K1 ijlZ T55_x TT7A.基本操作LCD1602的基本操作分为四种: 1. 读状态:输入 RS=Q RW=1 =高脉冲。输出:DO- D7为状态字2.读数据:输入RS=1, RW=1 E=S脉冲。输出:DO-D7为数据。3 . 写命令:输入 RS=Q RW=0 =高脉冲。输出:无4 .写数据:输入 RS=1,
4、RW=0 =高脉冲。输出:无读操作时序图(如图5):图5写操作时序图(如图6):RS时序时间参数(如图7):时序依符号4单位对试条件餐巾值典对值E华号周期tc400n*E通口宽考tfflF1W一一ns引料EE上升沿下降泊时利t,. tf一J?S+tspi30一* ns-1博H嫌:持时Mtlwns.第新理立H回:读噜作切,一一100n刘务标费时眄ii唏嚏20ns-立时岬1写揖柞,tSF7*)一n片斫悔特时回:熏揖牛,t喊10,urn,DDRAMCGROM! CGRAMDDRAM(Display Data RAM)就是显示数据 RAM用来寄存待显示白字符代码。共 80个字节,其地址和屏幕的对应关系
5、如下 (如图8):LCD1宿字X2行000102t30A050607090AOB00ODOEOF104 bdwH2?4。41424344454641484g4A4B4 c4 口4b4F506 7DDRAM!当于计算机的显存,我们为了在屏幕上显示字符,就把字符代码送入显存,这样该字符就可以显示在屏幕上了。同样LCD1602共有80个字节的显存,即DDRAM但LCD1602的显示屏幕只有16X2大小,因此,并不是所有写入 DDRAMJ字符代码都能在屏 幕上显示出来,只有写在上图所示范围内的字符才可以显示出来,写在范围外的字符不能显示出来。这样,我们在程序中可以利用下面的“光标或显示移动指令”使字符
6、慢慢 移动到可见的显示范围内,看到字符的移动效果。前面说了,为了在液晶屏幕上显示字符,就把字符代码送入DDRAM例如,如果想在屏幕左上角显示字符A,那么就把字符A的字符代码41H写入DDRAIMJ 00H地址处 即可。至于怎么写入,后面会有说明。那么为什么把字符代码写入DDRAM就可以在相应位置显示这个代码的字符呢?我们知道,LCD1602是一种字符点阵显示器,为了显示一种字符的字形,必须要有这个字符的字模数据,什么叫字符的字模数据,看看下面的 这个图就明白了(如图9)。IOHIOOHHHO10001UOOOU10001BOOOB10001HOOQI1111110001HOOOH10001BO
7、OOB图9上图的左边就是字符A的字模数据,右边就是将左边数据用代表 0,用 代表1。从而显示出A这个字形。从下面的图可以看出,字符A的高4位是0100, 低4位是0001,合在一起就是 01000001b,即41Ho它恰好与I字符的 ASCII码一致, 这样就给了我们很大的方便,我们可以在PC上使用P2=飞 这样的语法。编译后,正好是这个字符的字符代码。在LCD1602模块上固化了字模存储器,就是 CGROMP CGRAM HD44780内置了 192个常 用字符的字模,存于字符产生器 CGROM(Character Generator ROM)中,另外还有8个允 许用户自定义的字符产生 RA
8、M称为CGRAM(Character Generator RAM)。下图(如图12) 说明了 CGROMP CGRAMT字符的对应关系。从 RO防口 RAM勺名字我们也可以知道,ROM是早已固化在LCD1602模块中的,只能读取;而 RAMg可读写的。也就是说,如果只需 要在屏幕上显示已存在于 CGROMP的字符,那么只须在DDRA波写入它的字符代码就可 以了;但如果要显示 CGROMP没有的字符,比如摄氏温标白符号,那么就只有先在CGRAM中定义,然后再在DDRA忡写入这个自定义字符的字符代码即可。和CGROM固化的字符不同,CGRA忡本身没有字符,所以要在 DDRA叩写入某个CGROM存在
9、的字符, 必须在CGRA忡先定义后使用。程序退出后CGRA忡定义的字符也不复存在,下次使用 时,必须重新定义。cfwracter font口匚 gWTI 11Qrwr5X103character lent11th Ine图10上面这个图(如图10)说明白是5X8点阵和5X10点阵字符的字形和光标的位置。先来说5X 8点阵,它有8行5歹U。那么定义这样一个字符需要8个字节,每个字节的前3个位没有被使用。 例如,定义摄氏温标的符号0x10,0x06,0x09,0x08,0x08,0x09,0x06, 0x00。RS H/W DfV DBG DPS 口fM DB3 OB? 61 DUCode 0 D
10、 0 Ina a n 图11上面这个图(如图11)说明的是设置CGRAMfe址指令。从这个指令的格式中我们可以看出, 它共有aaaaaa这6位,一共可以表示64个地址,即64个字节。一个5X8点阵字符共 占用8个字节,那么这64个字节一共可以自定义 8个字符。也就是说,上面这个图的6 位地址中的 DB5DB4DB3来表示8个自定义的字符,DB2DB1DB0!来表示每个字符的 8 个字节。这DB5DB4DB3表示的8个自定义字符(0-7)就是要写入DDRAMP的字符代码。我们知道,在CGRA肿只能定义8个自定义字符,也就是只有 07这8个字符代码, 但在下面的这个表(如图12)中一共有16个字符
11、代码(xx xx 0000b- xx xx 1111b) 实际上,如图所示,它只能表示8个自定义字符(xxxx 0000b=xx xx 1000b, xxxx 0001b=xx xx 1001b,依次类推 )。也就是说,写入DDRAW的字符代码0和 字符代码8是同一个自定义字符。5 x 10点阵每个字符共占用16个字节的空间,所以CGRA肿只能定义4个这样的自定义字符。那么如何在CGRA肿自定义字符呢?在上面的介绍中,我们知道有一个设置 CGRAMfe址指令,同写DDRAIW令相似,只须设置好某个自定义字符的字模数据,然后按照上面介 绍的方法,设置好 CGRA的址,依次写入这个字模数据即可。我
12、们在后面的例子中再进 行说明。图12四.LCD1602指令1 .工作方式设置指令(如图13)RS FVW DQ7 O6 DBS DB4 DB3 0B2 DB1 060Cede 0 Q D 01 DC N F XX图13X:不关心,也就是说这个位是0或1都可以,一般取0。DL:设置数据接口位数。DL=1: 8 位数据接口(D7 D0)DL=0: 4 位数据接口(D7 D4)。N=Q 一行显示。N=1:两行显示。F=0: 5X8点阵字符。F=1: 5X10点阵字符。说明:因为是写指令字,所以RS和RW0是0。LCD1602只能用并行方式驱动,不能用串行方式驱动。而并行方式又可以选择8位数据接口或4
13、位数据接口。这里我们选择 8位数据接口 (D7-D0)o我们的设置是8位数据接口,两行显示,5X8点阵,即0b00111 000也就是0x38。(注意:NF是10或11的效果是一样的,都是两行 5X8点阵。因为它 不能以两行5X10点阵方式进行显示,换句话说,这里用 0x38或0x3c是一木的)。2 .显示开关控制指令(如图14)C0Q6 00 G 0 D a 4 D c eB2 EAM UJIh DEK DBF0日3 口川皿图14D=1:显示开,D=0:显示关。C=1:光标显示,C=0:光标不显示。B=1:光标闪烁,B=0:光标不闪烁。说明:这里的设置是显示开,不显示光标,光标不闪烁,设置字
14、为0x0c。3 .进入模式设置指令(如图15、16)RS WW 口酊 DB6 DO5 Oft* DB3 一虹 061 OBOSfe QGDOanal If D S图15I/D=1 :写入新数据后光标右移。I/D=0 :写入新数据后光标左移S=1:显示移动。S=0:显示不移动。S = 1l/D = 1It stirfts the display to the leHS = 11/D = 0It shifts the display Io the right图16说明:这里的设置是 0x06。4 .光标或显示移动指令(如图17、18)RS RW DS7 DB6 DB5 DB4 DH3 DB2 DS
15、1 DHJQDaDs/cRA.XX图17wcRAMirra rplKMHf00SM3KC MIm 1AC-AC-1013M1 fsn?1 帕 Vie njhiAG -AC* 11Q9k4iQtw W Cww Mm * cKviiiy vM11fcpLrj Io tw3KM 2m EiM-AC图18说明:在需要进行整屏移动时,这个指令非常有用,可以实现屏幕的滚动显示效果。初 始化时不使用这个指令。5 .清屏指令(如图19)RS RW 丽 D66 0H5 DB4 D63 而 口Bl DBOCode DODDODODDl图19说明:清除屏幕显示内容。光标返回屏幕左上角。执行这个指令时需要一定时间。6
16、 .光标归位指令(如图20)000000001XRS RM DB7 DB6 DBS DB4 DB3 DH2 DB1 DBOCode图20说明:光标返回屏幕左上角,它不改变屏幕显示内容。7 .设置CGRA随址指令(如图21)R5 RfW DB丁 DBS CB5 DBJ DB DB1 DOOOxte DD01aAaaA图21说明:这个指令在上面已经介绍过。用法在后面例子中说明8 .设置 DDRAMfe址指令(如图22)RS WW 06/ 066 05 口64 口83 M2 DB1 DMOode C0tia4fl4图22说明:这个指令用于设置 DDRAMfe址。在对DDRA睡行读写之前,首先要设置
17、DDRAlMfe 址,然后才能进行读写。前面我们说过,DDRA就是LCD1602的显示存储器。我们要在它上面进行显示,就要把要显示的字符写入DDRAM同样,我们想知道 DDRAMK个地址上有什么字符,也要先设置 DDRAMfe址,然后将它读出到单片机。9 .读忙信号和地址计数器 AC(如图23)RS FUW DB7 DB6 DBS DM DB3 OK DS1 090Code OlBFaaiiea图23说明:这个指令用来读取 LCD1602状态。对于单片机来说,LCD1602属于慢速设备。当单片机向其发送一个指令后,它将去执行这个指令。这时如果单片机再次发送下一条指令,由于LCD1602速度较慢
18、,前一条指令还未执行完毕,它将不接受这新的指令,导致新的指令丢失。因此这条读忙指令可以用来判断LCD1602是否忙,能否接收单片机发来的指令。当BF=1,表示LCD1602IE忙,不能接受单片机的指令;当BF=0,表示LCD1602空闲,可以接收单片机的指令。RS=Q表示是指令;RW=1表示是读取。这条指令还有一个副产品:即可以得到地址记数器AC的值(address counter) 。 LCD1602维护了一个地址计数器AC,用来记录下一次读写 CGRA或DDRAMfi位置。需要强调的是:这条指 令我一次也没有执行成功。很多网友似乎也是这样。好在我们有另外的办法,也就是延 时。通过查看每条指
19、令的执行时间,再经过一些试验,可以确定指令的延时。这样就可 以在上一条指令执行完毕后再执行下一条指令了。10 .写数据到 CGRA或DDRAIW令(如图24)RS RW DB7 006 DBS DB3 DB2 DB1 DB0Code 1 Ddddddddd图24说明:RS=1,数据;RW=0写。指令执行时,要在DBJDB0上先设置好要写入的数据, 然后执行写命令。11 .从CGRA械DDRA旗数据指令(如图25)RS FVW 口射 D86 005 DB4 0B3 I3B2 QB1 D6CCode lldddddddd图25说明:RS=1,数据;RW=1读。先设置好 CGRA瞰DDRAU地址,然
20、后执行读取命令。 数据就被读入后DBJ DBQ五.实例下面我们就以一个实例来结束这篇文章。先介绍一下背景:单片机最小系统(扩充了外部 RAM 62256)。采用 STC89C52R C 晶振 22.1184MHz 以 5X8 点阵,16X2 行,8 位数 据端口。首先在第一行显示“ I love MCU! ”,第二行显示“ LCD1602 Test! ”。延时一 段时间,清屏。然后在第一行显示自定义字符:摄氏温标标志。第二行显示圆周率(pai)标志。再延时一段时间,清屏。最后在第一行显示 Welcome to my blog! ”,显示方 式是从屏幕右面移入,左面移出。周而复始(如图26)。2
21、5图2611.void lcd_write (unsignedchar byte, unsignedchar flag)15.RS= 1; / 数据19.RS = 0|命令17.else21.RW = 0; / 与26. 28. 29. dH|_ms( 15);例程:2.#include ./delay/delay.h9.10.#define LCD_WRITE_COM 012. 14.16.18.20.22.E = 1 ;/使能23.LCDPORT = byte;24.lliy_UI|HH|1.#include 3.7.8.#define LCDPORT P013.E = 0;4.sbit
22、RS = P2A4;5.sbit RW = P2A 5;6.sbitE = P2A 6;#define LCDWRITEDATA 127_vmii_im ()30.lcd_write( 0x38 ,LCD_WRITE_COM); 设置工作方式,8位数据接口,两行显示,70.1)31.32.33.34.35.36.37.38.39.40.41.42.43.44.45.46.47.48.5*8点阵字符delayms( 5);lcd write(0x38 ,LCD WRITE COM);delay_ms( 5);lcd write(0x38 ,LCD WRITE COM);delay ms( 5);
23、lcdwrite( 0x38 ,LCDWRITECOM);delay_ms( 5);lcd write(0x38 ,LCD WRITE COM);delay ms( 5);lcd write(0x08 ,LCD WRITE COM); 关闭显示delay ms( 5);lcd write(0x01 ,LCD WRITE COM); 清屏delay ms( 5);lcd write(0x06 ,LCD WRITE COM); 写入新数据之后光标后移,显示移动delayms( 5);lcdwrite( 0x0c ,LCDWRITECOM); 显示开,光标不显示,光标不闪烁delayms( 5);4
24、9.void dis lcd write(unsignedchar x, unsignedchar y, unsignedchar byte)50.51.unsignedchar i =0;52./*byte*/53.if (y =0)54.55.56.60.61.write( DIWBIIICIIII lcd write(byte,LCD WRITE DATA);lcd write(0x80 +0x40 +x,LCD WRITE COM);lcd write(byte,LCD WRITE DATA);62.63.64.VHHHIIIICIBnHIIChlllHIHHIChllmiHIIChl
25、lHIC)65.66.67.68.lcdwrite( 0x80 +x,LCDWRITECOM);69.75.while (*src!=0 )76.77.78.79.80. lcd_write(*src,LCD_WRITE_DATA);src+;自定义字符缓冲区:CGRAM 1602能存储8个自定义字符,这 8个自定义字符存储空间的首地址分别是:0X40,0X48,0X50,0X58,0X60,0X68,0X70,0X78。在以0x40来说,它的存储空间如图所示不过字符的像素通常是 5X7。如果需要更大像素的字符,就只能用多个5X7的字符拼合。每个自定义字符的字节有8个,最后一个是0x00;每个字节的高
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026中国休闲食品行业消费趋势与产品创新方向
- 2026商业地产行业市场供需现状及运营管理规划分析研究报告
- 2026中国云计算数据中心服务市场现状及技术发展趋势分析报告
- 2026中国玻璃微纤维绝热材料节能建筑政策红利与冷链物流需求双驱动报告
- 2026叶黄素酯在航空食品中的稳定性保持与应用创新
- 2026人工智能翻译软件行业市场竞争格局及发展前景规划研究报告
- 2026中国铁路行业市场深度分析及发展趋势与投资前景研究报告
- 山西大同市平城区部分学校2025-2026学年第二学期期末教学质量评价八年级英语试题(含答案)
- 2027届四川绵阳外国语学校九年级化学第一学期期中预测试题含解析
- 2027届江苏省东台市九年级化学第一学期期末教学质量检测模拟试题含解析
- 留疆战士考核试题及答案
- 2026年企业财务管理与审计方案
- GB/T 10810.5-2025眼镜镜片第5部分:表面耐磨试验方法
- 《复杂系统理论》课件
- 外出参加护理会议后汇报
- T-CTSS 3-2024 茶艺职业技能竞赛技术规程
- 2023年教育部高中技术课程标准
- CJT 340-2016 绿化种植土壤
- 高标准农田改造提升建设项目投标方案(技术标)
- 光学成像技术1-课件
- 实验诊断 第五章 常用肾脏功能实验室检测(2学时)
评论
0/150
提交评论