1602中文资料.docx
《1602中文资料.docx》由会员分享,可在线阅读,更多相关《1602中文资料.docx(29页珍藏版)》请在三一办公上搜索。
1、1602中文资料 1602采用标准的16脚接口,其中:第1脚:VSS为地电源第2脚:VDD接5V正电源第3脚:Vo为液晶显示器对比度调整端,接正电源时对比度最弱,接地电源时对比度最高, 对比度过高时会产生“鬼影”,使用时可以通过一个IOK的电位器调整对比度第4脚:RS为寄存器选择,高电平时选择数据寄存器、低电平时选择指令寄存器。第5脚:RW为读写信号线,高电平时进行读操作,低电平时进行写操作。当RS和RW共 同为低电平时可以写入指令或者显示地址,当RS为低电平RW为高电平时可以读忙信号, 当RS为高电平RW为低电平时可以写入数据。第6脚:E端为使能端,当E端由高电平跳变成低电平时,液晶模块执行
2、命令。第714脚:DOD7为8位双向数据线。第1516脚:空脚1602液晶模块内部的字符发生存储器(CGROM )已经存储了 160个不同的点阵字符图 形,如表1所示,这些字符有:阿拉伯数字、英文字母的大小写、常用的符号、和日文假 名等,每一个字符都有一个固定的代码,比如大写的英文字母“A”的代码是OIOOOOOlB(41H),显示时模块把地址41H中的点阵字符图形显示出来,我们就能看到字母“A”表13-4 CGROM和CGRAM中字符代码与字符图形对应关系位000000101101000101OllOOlll10101011IlOO11011110Hll0000CGRAM (1)09PP夕三
3、P XOOOl(2)1AQq口T十aq XOOlO(3)2BRbr川6 XOOH(4)U3CSCSJJeCOO 0100(5)$4DTdtX卜0101(6)%5EUeU口才tB00I10(7)&6FVfVT力二3P XOlll(8)7GW8W7X=8x 1000(1)(8HXhX*UJX XlOOl2)9IYiy力J-1y XlOlO(3)tJZiZXVj千 XXlOll(4)+IKCk(才tOX万11005)7N*n3八nn(8)/?O一O7-7D61602液晶模块内部的控制器共有11条控制指令,如表2所示, 表 指令表指令RSR/WD7D6D5D4D3D2DlDOI清显示000000000
4、I2光标返回000000001置输入模式00000001I/DSU显示开/关控制0000001DCB5光标或字符移位000001S/CR/L*.6置功能00001DLNF*7置字符发生存贮器地址0001字符发生存贮器地址(AGG)S置数据存贮器地址001显示屐据存七藉地址(ADD)J读忙标志或地址01BF计数器地址(AC)P写数到CGRAM或DDRAM10要写的数,/从CGRAM或DDRAM读数11读出的数据它的读写操作、屏幕和光标的操作都是通过指令编程来实现的。(说明:1为高电平、0为低电平)指令1 :清显示,指令码01H,光标复位到地址OOH位置指令2 :光标复位,光标返回到地址OOH 指
5、令3 :光标和显示模式设置I/D :光标移动方向,高电平右移,低电平左移S:屏幕上所有 文字是否左移或者右移。高电平表示有效,低电平则无效指令4 :显示开关控制。D:控制整体显示的开与关,高电平表示开显示,低电平表示关显 示C:控制光标的开与关,高电平表示有光标,低电平表示无光标B:控制光标是否闪烁, 高电平闪烁,低电平不闪烁指令5 :光标或显示移位S/C :高电平时移动显示的文字,低电平时移动光标指令6 :功能设置命令DL :高电平时为4位总线,低电平时为8位总线N:低电平时为单 行显示,高电平时双行显示F:低电平时显示5x7的点阵字符,高电平时显示5x10的点阵 字符指令7 :字符发生器R
6、AM地址设置指令8 : DDRAM地址设置指令9 :读忙信号和光标地址BF :为忙标志位,高电平表示忙,此时模块不能接收命令或 者数据,如果为低电平表示不忙。指令10:写数据指令11 :读数据DM-162液晶显示模块可以和单片机AT89C51直接接口,电路如图所示。AT89C51DMT62液晶模块液晶显示模块是一个慢显示器件,所以在执行每条指令之前一定要确认模块的忙标志为低电 平,表示不忙,否则此指令失效。要显示字符时要先输入显示字符地址,也就是告诉模块在 哪里显示字符,表3是DM-162的内部显示地址.12345 6 7 8 910 Il 121314 1516000102030405060
7、70809OAOBOCODOEOF第一行404142434445464748494A4B4C4D4E4F第二行比如第二行第一个字符的地址是40H ,那么是否直接写入40H就可以将光标定位在第二行第一个字符的位置呢?这样不行,因为写入显示地址时要求最高位D7恒定为高电平1所以实际写入的数据应该是 C)IOOOOOoB ( 40H ) +10000000B(80H)=11000000B(C0H)以下是在液晶模块的第二行第一个字符的位置显示字母“A”的程序:ORG OOOOHRS EQU P3.7;确定具体硬件的连接方式RW EQU P3.6 ;确定具体硬件的连接方式E EQU P3.5 ;确定具体
8、硬件的连接方式MOV P1 ,#00000001B ;清屏并光标复位ACALL ENABLE;调用写入命令子程序MOV P1,#00111OOOB ;设置显示模式:8位2行5x7点阵ACALL ENABLE ;调用写入命令子程序MOV P1,#00001111B ;显示器开、光标开、光标允许闪烁ACALL ENABLE ;调用写入命令子程序MOV P1,#0000011OB ;文字不动,光标自动右移ACALL ENABLE ;调用写入命令子程序MOV P1,#0C0H ;写入显示起始地址(第二行第一个位置)ACALL ENABLE ;调用写入命令子程序MOV P1,#01000001B ;字母
9、 A 的代码SETB RS ; RS=ICLR RW ; RW=O ;准备写入数据CLR E ; E=O;执行显示命令ACALL DELA丫 ;判断液晶模块是否忙?SETB E ; E=1 ;显示完成,程序停车AJMP $ENABLE:CLR RS ;写入控制命令的子程序CLR RWCLR EACALL DELAYSETBERETDELAY:MOVP1,#OFFH ;判断液晶显示器是否忙的子程序CLR RSSETB RWCLR ENOPSETBEJB P1.7,DELAY ;如果P1.7为高电平表示忙就循环等待RETEND程序在开始时对液晶模块功能进行了初始化设置,约定了显示格式。注意显示字符
10、时光标是自动右移的,无需人工干预,每次输入指令都先调用判断液晶模块是否忙的子程序DELAY ,然后输入显示位置的地址OCOH ,最后输入要显示的字符A的代码41H。1602液晶仿真的一些发现看了 JJJ的例子:字符液晶1602仿真;则试按自己习惯也写了个,发现些问题JJJ说仿真时要屏蔽掉检查LCD忙的代码,否则会死循环WhiIe(DBPort&0x80);这句要屏蔽我写的程序总是无法正确仿真,因为不检查LCD忙,就不能保证LCD已经空闲查资料LCD清屏命令要1.64ms才完成,一般命令也要40us,最后加上足够的延时后才仿真通过后来又试了下其它LCD资料上的例程,仿真发现检查LCD忙标志也不会
11、死循环分析了下,区别是:它不是一直在使能的情况下读忙信号,而是每次都有EN=O,再EN=I重新读取忙标志 我还没做好实际实验电路板,没试过实际电路根据JJJ的描述和我的仿真实验,我猜仿真和实际硬件的区别是:实际硬件在EN=I的情况FzLCD执行完指令会更新LCD忙标志为0;而仿真需要EN=O,EN=I来重新读取忙信号,否则就不会更新,而一直以为是忙在JJJ的LCD1602.h加了几句,变成VVhiIe(DBPort&0x80) LcdEn=O; _nop_();LcdEn=I; _nop_();仿真就可以检查忙标志了自己的代码也做相应改动,都可以成功检查忙标志,也无需多加延时了在包含文件出里定
12、义函数实体,则keil调试时会出现莫名其秒的问题:在主程序.c里,执行”运行到指定行”,可能实际是执行到了.H里的函数所生成的代码,有点混乱暂停时,光标所指的行未必真是当前正在执行的,总之比较乱所以我把函数定义实体另放在一个c里,使用时添加到工程里,而.h只有函数声明和主程序需要用的常量定 义zu、还有一个奇怪的问题:执行命令0x05,输入方式设置为字符右移,光标不动时,仿真总是无法正常显示其它输入方式都正常!在液晶屏上显示一个字母A液晶显示器以其微功耗、体积小、显示内容丰富、超薄轻巧的诸多优点,在袖珍式仪表和低功耗应用系统 中得到越来越广泛的应用。这里介绍的字符型液晶模块是一种用5x7点阵图
13、形来显示字符的液晶显示器,根据显示的容量可以分为 1行16个字、2行16个字、2行20个字等等,这里以常用的2行16个字的DM-162液晶模块来介绍它 的编程方法。DM-162采用标准的14脚接口,其中VSS为地电源,VDD接5V正电源,VO为液晶显示器对比度调整 端,接正电源时对比度最弱,接地电源时对比度最高,对比度过高时会产生“鬼影”,使用时可以通过一个 IoK的电位器调整对比度。RS为寄存器选择,高电平时选择数据寄存器、低电平时选择指令寄存器。RW 为读写信号线,高电平时进行读操作,低电平时进行写操作。当RS和RW共同为低电平时可以写入指令 或者显示地址,当RS为低电平RW为高电平时可以
14、读忙信号,当RS为高电平RW为低电平时可以写入 数据。E端为使能端,当E端由高电平跳变成低电平时,液晶模块执行命令。D0D7为8位双向数据线。DM-162液晶模块内部的字符发生存储器(CGRoM)已经存储了 160个不同的点阵字符图形,如表1所 示,这些字符有:阿拉伯数字、英文字母的大小写、常用的符号、和日文假名等,每一个字符都有一个固 定的代码,比如大写的英文字母“A”的代码是OIOooOolB (41H ),显示时模块把地址41H中的点阵字符图形显示出来,我们就能看到字母“A”DM-162液晶模块内部的控制器共有11条控制指令,如表2所示,表 指令表指令RSR/WD7D6D5D4D3D2D
15、lDOI清显示000000000I2光标返回000000001*,置输入模式00000001I/DSW显示开/关控制0000001DCB5光标或字符移位000001S/CR/L*6置功能00001DLNF7置字符发生存贮器地址0001字符发生存亡器地址(AGG)C普蜘肛左r54lnn1显示数据存贮器地址(ADD)读忙标志或地址01BF计数器地址(AC)P写数到CGRAM或DDRAM10要写的数.,U P AM V RM iftCOO 0100(5)$4DTdtX卜Fn XOlOl(G)%5EUeUD才tB00110(7)&6FVfV千力二3P XOlll(8)7GW8WT*Xs8W 1000(
16、1)(8HXhX木9JX XlOOl(2)9IYy9rJ/U-1y XXlOlO(3)IJZiXX9Vi千1011(4)+IKk(才tDX万11005)7Nn.3八nn(8)/?OO*7y-7D6比如第二行第一个字符的地址是40H ,那么是否直接写入40H就可以将光标定位在第二行第一个字符的位置呢?这样不行,因为写入显示地址时要求最高位D7恒定为高电平1所以实际写入的数据应该是01000000B ( 40H)+10000000B(80H)=11000000B(C0H)以下是在液晶模块的第二行第一个字符的位置显示字母“A”的程序:RW EQU P3.1E EQU P3.5ORG OOOOHMOV
17、 P1,#00000001B;清屏ACALL ENABLEMOV P1 ,#00111OOOB;8位2行5x7点阵ACALL ENABLEMOV P1 ,#00001111B;显示器开、光标开、闪烁开ACALL ENABLEMOV P1 ,#0000011OB;文字不动,光标自动右移ACALL ENABLEMOV P1,#0C0H ;写入显示起始地址(第二行第一个位置)ACALL ENABLEMC)VP1,# OlOOOOOlB ;字母 A 的代码CLR RW ; RW=OCLR E ; E=OACALL DELAYSETBE ; E=1AJMP $ENABLE: CLR RS ;写入控制命令
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 1602 中文 资料
链接地址:https://www.31ppt.com/p-6734408.html