与单片机有关的课件.

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

2020/1/9第八章MCS-51单片机的其他接口8.1LCD与MCS-51接口液晶显示器简称LCD显示器。它是利用液晶经过处理后能改变光线的传输方向的特性实现显示信息。液晶显示器按其功能可分为三类:笔段式液晶显示器、字符点阵式液晶显示器和图形点阵式液晶显示器。前两种可显示数字、字符和符号等,而图形点阵式液晶显示器还可以显示汉字和任意图形,达到图文并茂的效果。2020/1/9第2页8.1.1字符型点阵式LCD液晶显示器目前市面上常用的有16字1行、16字2行、20字2行和40字2行等的字符液晶显示模块。本节将以162字符型液晶显示模块RT-1602C为例,详细介绍字符型液晶显示模块的应用。一.字符型液晶显示模块RT-1602C的外观与引脚2020/1/9RT-1602C采用标准的16脚接口,各引脚情况如下:第1脚:VSS,电源地第2脚:VDD,+5V电源第3脚:VL,液晶显示偏压信号第4脚:RS,数据/命令选择端,高电平时选择数据寄存器、低电平时选择指令寄存器。第5脚:R/W,读/写选择端,高电平时进行读操作,低电平时进行写操作。当RS和R/W共同为低电平时可以写入指令或者显示地址,当RS为低电平R/W为高电平时可以读忙信号,当RS为高电平R/W为低电平时可以写入数据。第6脚:E,使能端,当E端由高电平跳变成低电平时,液晶模块执行命令。第7~14脚:D0~D7,为8位双向数据线。第15脚:BLA,背光源正极第16脚:BLK,背光源负极2020/1/9二.字符型液晶显示模块RT-1602C的内部结构液晶显示模块RT-C1602C的内部结构可以分成三部份:一为LCD控制器,二为LCD驱动器,三为LCD显示装置,如图所示:LCD控制器LCD驱动器LCD显示装备VSSVDDVOVSV/WEDB0~DB72020/1/9HD44780集成电路的特点:1、可选择5×7或5×10点字符。2、HD44780不仅作为控制器而且还具有驱动40×16点阵液晶像素的能力。3、HD44780的显示缓冲区DDRAM、字符发生存储器(ROM)及用户自定义的字符发生器CGRAM全部内藏在芯片内。HD44780有80个字节的显示缓冲区,分两行,地址分别为00H~27H,40H~67H,它下实际显示位置的排列顺序跟LCD的型号有关,液晶显示模块RT-1602C的显示地址与实际显示位置的关系如图所示。2020/1/9第6页000102030405060708090A0B0C0D0E0F10……27404142434445464748494A4B4C4D4E4F50……67LCD16字×2行2020/1/9HD44780内藏的字符发生存储器(ROM)已经存储了160个不同的点阵字符图形,如图所示:这些字符有:阿拉伯数字、英文字母的大小写、常用的符号、和日文假名等,每一个字符都有一个固定的代码。比如数字“1”的代码是00110001B(31H),又如大写的英文字母“A”的代码是01000001B(41H),可以看出英文字母的代码与ASCII编码相同。要显示“1”时,我们只需将ASCII码31H存入DDRAM指定位置,显示模块将在相应的位置把数字“1”的点阵字符图形显示出来,我们就能看到数字“1”了。2020/1/92020/1/94、HD44780具有8位数据和4位数据传输两种方式,可与4/8位CPU相连。5、HD44780具有简单而功能较强的指令集,可实现字符移动,闪烁等显示功能。2020/1/9第10页三.指令格式与指令功能LCD控制器HD44780内有多个寄存器,通过RS和R/W引脚共同决定选择哪一个寄存器,选择情况如表RSR/W寄存器及操作00指令寄存器写入01忙标志和地址计数器读出10数据寄存器写入11数据寄存器读出总共有11条指令,它们的格式和功能如下:2020/1/91.清屏命令RSR/WD7D6D5D4D3D2D1D00000000001功能:清除屏幕,将显示缓冲区DDRAM的内容全部写入空格(ASCII20H)。光标复位,回到显示器的左上角。地址计数器AC清零。2.光标复位命令功能:光标复位,回到显示器的左上角。地址计数器AC清零。显示缓冲区DDRAM的内容不变。RSR/WD7D6D5D4D3D2D1D000000000102020/1/93.输入方式设置命令RSR/WD7D6D5D4D3D2D1D000000001I/DS功能:设定当写入一个字节后,光标的移动方向以及后面的内容是否移动。当I/D=1时,光标从左向右移动;I/D=0时,光标从右向左移动。当S=1时,内容移动,S=0时,内容不移动。4.显示开关控制命令RSR/WD7D6D5D4D3D2D1D00000001DCB功能:控制显示的开关,当D=1时显示,D=0时不显示。控制光标开关,当C=1时光标显示,C=0时光标不显示。控制字符是否闪烁,当B=1时字符闪烁,B=0时字符不闪烁。2020/1/95.光标移位置命令RSR/WD7D6D5D4D3D2D1D0000001S/CR/L**功能:移动光标或整个显示字幕移位。当S/C=1时整个显示字幕移位,当S/C=0时只光标移位。当R/L=1时光标右移,R/L=0时光标左移。6.功能设置命令RSR/WD7D6D5D4D3D2D1D000001DLNF**功能:设置数据位数,当DL=1时数据位为8位,DL=0时数据位为4位。设置显示行数,当N=1时双行显示,N=0时单行显示。设置字形大小,当F=1时5×10点阵,F=0时为5×7点阵。2020/1/97.设置字库CGRAM地址命令RSR/WD7D6D5D4D3D2D1D00001CGRAM的地址功能:设置用户自定义CGRAM的地址,对用户自定义CGRAM访问时,要先设定CGRAM的地址,地址范畴0~63。8.显示缓冲区DDRAM地址设置命令RSR/WD7D6D5D4D3D2D1D0001DDRAM的地址功能:设置当前显示缓冲区DDRAM的地址,对DDRAM访问时,要先设定DDRAM的地址,地址范畴0~127。2020/1/99.读忙标志及地址计数器AC命令RSR/WD7D6D5D4D3D2D1D001BFAC的值功能:读忙标志及地址计数器AC,当BF=1时则表示忙,这时不能接收命令和数据;BF=0时表示不忙。低7位为读出的AC的地址,值为0~127。10.写DDRAM或CGRAM命令RSR/WD7D6D5D4D3D2D1D010写入的数据功能:向DDRAM或CGRAM当前位置中写入数据。对DDRAM或CGRAM写入数据之前须设定DDRAM或CGRAM的地址。2020/1/911.读DDRAM或CGRAM命令RSR/WD7D6D5D4D3D2D1D011读出的数据功能:从DDRAM或CGRAM当前位置中读出数据。当DDRAM或CGRAM读出数据时,先须设定DDRAM或CGRAM的地址。2020/1/9第17页四.LCD显示器的初始化LCD使用之前须对它进行初始化,初始化可通过复位完成,也可在复位后完成,初始化过程如下:1.清屏。2.功能设置。3.开/关显示设置。4.输入方式设置。2020/1/98.1.2LCD显示器与单片机的接口与应用下图是LCD显示器与8051单片机的接口图,图中RT-1602C的数据线与8051的P1口相连,RS与8051的P2.0相连,R/W与8051的P2.1相连,E端与8051的P2.7相连。编程在LCD显示器的第一行、第一列开始显示“GOOD”,第二行、第6列开始显示“BYE”。P1.7P2.7P2.1P2.0P1.08051…………DB0……DB7ERSR/WRT-1602VLBLKBLAP=10KOVOV+5VR=10欧姆1/2W2020/1/9汇编语言程序:RSBITP2.0RWBITP2.1EBITP2.7ORG0000HAJMPSTARTORG50H;主程序START:MOVSP,#50HACALLINITMOVA,#10000000B;写入显示缓冲区起始地址为第1行第1列。ACALLWC51RMOVA,“G”;第1行第1列显示字母“G”。ACALLWC51DDRMOVA,“O”;第1行第2列显示字母“O”。ACALLWC51DDRMOVA,“O”;第1行第3列显示字母“O”。ACALLWC51DDRMOVA,“D”;第1行第4列显示字母“D”。ACALLWC51DDR2020/1/9MOVA,#11000101B;写入显示缓冲区起始地址为第2行第6列。ACALLWC51RMOVA,“B”;第2行第6列显示字母“B”。ACALLWC51DDRMOVA,“Y”;第2行第7列显示字母“Y”。ACALLWC51DDRMOVA,“E”;第2行第8列显示字母“E”。ACALLWC51DDRLOOP:AJMPLOOP;初始化子程序INIT:MOVA,#00000001H;清屏ACALLWC51RMOVA,#00111000B;使用8位数据,显示两行,使用5*7的字型。LCALLWC51RMOVA,#00001110B;显示器开,光标开,字符不闪烁。LCALLWC51RMOVA,#00000110B;字符不动,光标自动右移一格。LCALLWC51RRET2020/1/9;检查忙子程序F_BUSY:PUSHACC;保护现场PUSHDPHPUSHDPLPUSHPSWWAIT:CLRRSSETBRWCLRESETBEMOVA,P1CLREJBACC.7,WAIT;忙,等待POPPSW;不忙,恢复现场POPDPLPOPDPHPOPACCACALLDELAYRET2020/1/9;写入命令子程序。WC51R:ACALLF_BUSYCLRECLRRSCLRRWSETBEMOVP1,ACLREACALLDELAYRET;写入数据子程序。WC51DDR:ACALLF_BUSYCLRESETBRSCLRRWSETBEMOVP1,ACLREACALLDELAYRET2020/1/9;延时子程序。DELAY:MOVR6,#5D1:MOVR7,#248DJNZR7,$DJNZR6,D1RETEND2020/1/9C语言编程:#includereg51.h#defineucharunsignedcharsbitRS=P2^0;sbitRW=P2^1;sbitE=P2^7;voiddelay(void);voidinit(void);voidwc5r(uchari);voidwc51ddr(uchari);voidfbusy(void);//主函数voidmain(){SP=0x50;init();wc51r(0x80);//写入显示缓冲区起始地址为第1行第1列wc51ddr(0x44);//第1行第1列显示字母“G”wc51ddr(0x4f);//第1行第2列显示字母“O”wc51ddr(0x4f);//第1行第3列显示字母“O”wc51ddr(0x47);//第1行第4列显示字母“D”2020/1/9wc51r(0xc5);//写入显示缓冲区起始地址为第2行第6列wc51ddr(0x42);//第2行第6列显示字母“B”wc51ddr(0x59);//第2行第7列显示字母“Y”wc51ddr(0x45);//第2行第8列显示字母“E”while(1);}//初始化函数voidinit(){wc51r(0x01);//清屏wc51r(0x38);//使用8位数据,显示两行,使用5*7的字型wc51r(0x0e);//显示器开,光标开,字符不闪烁wc51r(0x06);//字符不动,光标自动右移一格}2020/1/9//检查忙函数voidfbusy(){RS=0;RW=1;E=1;E=0;while(P1&0x80);//忙,等待delay();}//写命令函数voidwc51r(ucharj){fbusy();E=0;RS=0;RW=0;E=1;P1=j;E=0;delay();}2020/1/9//写数据函数voidwc51ddr(ucharj){fbusy();E=0

1 / 63
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功