单片机原理及应用

上传人:陈** 文档编号:253080558 上传时间:2024-11-28 格式:PPT 页数:92 大小:2.85MB
返回 下载 相关 举报
单片机原理及应用_第1页
第1页 / 共92页
单片机原理及应用_第2页
第2页 / 共92页
单片机原理及应用_第3页
第3页 / 共92页
点击查看更多>>
资源描述
单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,第四讲,LCD,液晶显示模块,LCD,结构与原理,1,、,LCD,(,Liquid Crystal Display,)的工作原理,液晶面板包含了两片精致的玻璃,中间夹着一层液晶。液晶是一种具有规则性分子排列的有机化合物。当加电时导通,排列有秩序,使光线容易通过;不加电时排列混乱,阻止光线通过。,由于液晶材料本身并不发光,所以在液晶显示屏背面有一块背光板和反光膜,背光板是由荧光物质组成的,可以发射光线,其作用主要是提供均匀的背景光源。,背光板发出的光线在穿过第一层玻璃板之后进入包含成千上万水晶液滴的液晶层。液晶层中的水晶液滴都被包含在细小的单元格结构中,一个或多个单元格构成屏幕上的一个像素。,在玻璃板与液晶材料之间是透明的电极,电极分为行和列,在行与列的交叉点上,通过改变电压而改变液晶的旋光,(,排列,),状态,所以液晶材料的作用类似于一个个小的光阀。,LCD,显示器的分类,当前市场上液晶显示器种类繁多,按排列形状可分为字段型、点阵字符型和点阵图形型。,(,1,)字段型。它是以长条状组成字符显示。该类显示器主要用于数字显示,也可用于显示西文字母或某些字符,已广泛用于,电子表、计算器、数字仪表,中,(,类似于数码管,),。,(,2,)点阵字符型。它专门用于显示字母、数字、符号等。,它由若干,5,7,或,5,10,的点阵组成,每一个点阵显示一个字符。此类显示模块广泛应用在各类单片机应用系统中。,(,3,)点阵图形型。它是在平板上排列多行或多列,形成矩阵式的晶格点,点的大小可根据显示的清晰度来设计。这类液晶显示器可广泛应用于图形显示,如用于笔记本电脑、彩色电视和游戏机等。,点阵字符型液晶显示模块介绍,在单片机应用系统中,常使用点阵字符型,LCD,显示器。要使用点阵字符型,LCD,显示器,必须有相应的,LCD,控制器、驱动器来对,LCD,显示器进行扫描、驱动,还要有一定空间的,RAM,和,ROM,来存储单片机写入的命令和显示字符的点阵。,由于,LCD,的面板较为脆弱,制造商已将,LCD,控制器、驱动器、,RAM,、,ROM,和,LCD,显示器用,PCB,连接到一起,称为液晶显示模块(,LCd Module,,,LCM,)。,使用者只需购买现成的液晶显示模块即可。单片机控制,LCM,时,只要向,LCM,送入相应的命令和数据就可实现所需要的显示内容,这种模块与单片机接口简单,使用灵活方便。,(,1,)液晶显示板,在液晶显示板上排列着若干,5,7,或,5,10,点阵的字符显示位,从规格上分为每行,8,、,16,、,20,、,24,、,32,、,40,位,有,1,行、,2,行及,4,行等,用户可根据需要,选择购买。,(,2,)模块电路框图,图,10-18,为字符型,LCD,模块框图,它由日立公司生产的控制器,HD44780,、驱动器,HD44100,及几个电阻和电容组成。,HD44100,是扩展显示字符位用的(例如,,16,字符,1,行模块就可不用,HD44100,,,16,字符,2,行模块就要用一片,HD44100,)。,图,10-18,字符型,LCD,模块的电路框图,(,3,),1602,字符型,LCM,的特性,(两行显示,每行,16,个字符), 内部具有字符发生器,ROM,(,CGROM,),即字符库。可显示,192,个,5,7,点阵字符,见,图,10-19,。由该字符库可看出,LCM,显示的数字和字母部分的代码值,恰好与,ASCII,码表中的数字和字母相同。所以在显示数字和字母时,只需向,LCM,送入对应的,ASCII,码即可。,模块内有,64,字节的自定义字符,RAM(CGRAM),用户可自行定义,8,个,5,7,点阵字符。,图,10-19,ROM,字符库的内容,(12*16=192,个字符,+ 4*16=64,预留自定义字符,), 模块内有,80,字节的数据显示存储器(,DDRAM,)即:缓存、显存,注意:这里的地址属于片外地址,所以其实际地址要加上,0x80,(片内,128B,,地址范围:,0X000X7F,),2. LCM,的引脚,1602 LCM,通常有,16,个引脚,也有少数的,LCM,为,14,个引脚,其中包括,8,条数据线、,3,条控制线和,3,条电源线,如,表,10-10,所示。通过单片机写入模块的命令和数据,就可对显示方式和显示内容做出选择。,3,命令格式及功能说明,(,1,)内部寄存器,LCD,控制器,HD44780,内有多个寄存器,寄存器的选择如,表,10-11,所示。,RS,位和,R/W*,引脚,上的电平决定对寄存器的选择和读,/,写,而,DB7,DB0,决定命令功能。,忙标记和地址计数器(也称状态字寄存器),最高位,(STA7),为忙标记:,1,忙,(,不能读写,),0,闲,(,可读写,),低,7,位,(STA6STA0),为显存地址:显存为,80B,,其地址占,7,位,分别,为:第一行,0X000X27,、第二行,0X400X67),(,2,)命令功能说明,下面介绍可写入命令寄存器的,11,个命令,。, 清屏。,命令格式如下:,功能:清除屏幕显示,并把地址计数器,AC,置“,0”,。, 返回,。命令格式如下:,功能:置,DDRAM,(显示数据,RAM,)及显示,RAM,的地址为“,0”,,显示返回到原始位置。,数据没有被清空,,屏幕仍会显示!下一次显示从第一行第一位开始。,输入方式设置,。命令格式如下:,功能:,i),设置光标移动方向,(,I/D=1,,为增量方式:每读,/,写一个字符后地址加,1,,光标加,1,;,I/D=0,,为减量方式:每读,/,写一个字符后地址减,1,,光标减,1,;),ii),指定屏幕是否移动(,S=1,,表示移位,,每写一个字符后整个屏幕显示移动(,I/D=1,,屏幕左移;,I/D=0,,屏幕右移 )而光标不动,;,S=0,,屏幕显示不移动。, 显示开关控制,。命令格式如下:,功能:,D,位,(DB2),控制整体显示的开关,,D=1,,开显示;,D=0,,关显示。,C,位,(DB1),控制光标的开关,,C=1,,光标开;,C=0,,光标关。,B,位,(DB0),控制光标处字符的闪烁,,B=1,,光标闪烁;,B=0,,光标不闪烁。, 光标移位。,命令格式如下:,功能:移动光标或整体显示,,DDRAM,中内容不变。其中:,S/C=1,时,显示移位(屏幕移位、显示范围移位);,S/C=0,时,光标移位。,R/L=1,时,向右移位,,R/L=0,时,向左移位。, 功能设置,。命令格式如下:,功能:,DL,位设置接口数据位数,,DL=1,为,8,位数据接口;,DL=0,为,4,位数据接口。,N,位设置显示行数,,N=0,单行显示;,N=1,双行显示。,F,位设置字型大小,,F=1,时为,5,10,点阵,,F=0,时为,5,7,点阵。,CGRAM,(自定义字符,RAM,)地址设置。格式如下:,功能:设置,CGRAM,的地址,地址范围为,0,63,。,DDRAM,(数据显示存储器)地址设置。命令格式如下:,功能:设置,DDRAM,的地址,地址范围为,0,127,。, 读忙标志,BF,及地址计数器。命令格式如下:,功能:,BF,位为忙标志。,BF=1,,表示忙,此时,LCM,不能接收命令和数据;,BF=0,,则表示,LCM,不忙,可接收命令和数据。,AC,位为地址计数器的值,范围为,0,127,。,向,CGRAM/DDRAM,写数据。命令格式如下:,功能:将数据写入,CGRAM,或,DDRAM,中,应与,CGRAM,或,DDRAM,地址设置命令结合使用。,从,CGRAM/DDRAM,中读数据。,命令格式如下:,功能:从,CGRAM,或,DDRAM,中读出数据,应与,CGRAM,或,DDRAM,地址设置命令结合使用。,(,3,)有关说明, 显示位与,DDRAM,地址的对应关系,如,表,10-12,所示。,(,3,)有关说明, 读写时序,(相对单片机而言,LCM,速度很慢,所以一定要,LCM,的操作时序,否则会导致错误),大家要学会看时序图,以后会用到更多的部件,使用时都要注意它们的时序,看时序图的方法都是一样的。,(,3,)有关说明, 读写时序,(,3,)有关说明, 读写时序,i),厂家在做时序图时一般会把信号按照信号有效的时间顺序从上到下排列,所以操作顺序也就变成了先操作最上边的信号,接着依次操作后面的。,ii),读操作的时序应该是:,、,RS=0,(读忙标志,BF,和地址计数器,AC,)或,RS=1,(读数据寄存器);,、(延时,tSP1,,等待地址建立,再发读命令),RW=1,(读操作);,、,E=1,,,LCM,将数据输出到数据线上,并保持,一直到,E=0,为止;,、(延时,tD,,等待数据建立,稳定,)从数据线上读取数据,、,E=0,,撤销数据。,(,3,)有关说明, 读写时序,(,3,)有关说明, 读写时序,iii),写操作的时序应该是:,、,RS=0,(写指令寄存器)或,RS=1,(写数据寄存器);,、,(延时,tSP1,,等待地址建立,再发写命令),RW=0,(写操作);,、由于,LCM,是在,E,的下降沿将数据送入内部控制器锁存,为了产生下降沿,在将数据送到总线之前,,E=1,;,、,MCU,将数据送到数据线上;,、,(延时,tHD2,,数据在总线上保持一段时间),E=0,,产生下降沿,将数据锁存,即写操作时,E,下降沿有效。,(,3,)有关说明, 读写时序,AT89S51,单片机与,LCD,的接口及软件编程,1,AT89S51,单片机与,1602 LCD,模块的接口,AT89S51,与,1602 LCD,模块(,LCM,)的接口电路如,图,10-20,所示,通过对数据总线的读写实现对,LCM,的控制。,图,10-20,AT89S51,单片机与,LCD,模块的接口电路,2,读,LCM,状态(测试忙,/,闲),/,函数名称:,DectectBusyBit(),/,函数功能:检测状态标志位(判断是忙,/,闲),/,入口参数:无,/,出口参数:忙时返回,1,,闲时返回,0,/* * */,unsigned char DectectBusyBit(void)/,状态判断函数,(,忙,/,闲,?,忙时返回,1,,闲时返回,0),bit result;,P0 = 0xff; /,*读状态值时,先赋高电平,因为数据线上之前的值可能为,0,,会误认为,LCM,空闲,*/,RS = 0;,delay(5);,RW = 1;,LCDEN = 1;,delay(5); /,延时,等待数据稳定,result=BF;,LCDEN = 0;,return result;,3,写命令,/,函数名称:,WrComLCD(),/,函数功能:为,LCD,写指令,/,入口参数:指令(,ComVal,),/,出口参数:无,/* * */,void WrComLCD(unsigned char ComVal),while(DectectBusyBit()=1); /,先检测,LCM,是否空闲,RS = 0;,delay (1);,RW = 0;,LCDEN = 1;,P0 = ComVal;,delay (1);,LCDEN = 0;,4,写数据,/,函数名称:,WrDatLCD(),/,函数功能:为,LCD,写数据,/,入口参数:数据(,DatVal,),/,出口参数:无,/* * */,void WrDatLCD(unsigned char DatVal),while(DectectBusyBit()=1);,RS = 1;,delay(1);,RW = 0;,LCDEN = 1;,P0 = DatVal;,delay(1);,LCDEN = 0;,5,初始化,0FH,:开显示,光标闪烁,5,初始化,/,函数名称:,LCD_Init(),/,函数功能:初始化,LCD,/,入口参数:无,/,出口参数:无,/* * */,void LCD_Init(void),WrComLCD(0x38); /,功能设定:,16*2,行显示、,5*7,点阵、,8,位数据接口,WrComLCD(0x38);,WrComLCD(0x38);,/,多次重复设定指令,是因为,LCD,启动后并不知道您使用的是,4,位数据通信方式还是,8,位方式,所以它总是先执行高,4,位的指令,也就是说第一次写入该指令时,低四位的数据可能被忽略,为了可靠,最好多写几遍该指令。,WrComLCD(0x01); /,显示清屏,WrComLCD(0x06); /,光标自增、画面不动,delay(1); /,稍作延时,等待上面的设置生效,防止下面显示乱码,WrComLCD(0x0C); /,开显示、关光标,【,例,1】1602,液晶显示实例,实现在,1602,液晶的第一行显示“,Welcome,!”,在第二行显示“,MCU-STUDY-BOARD”,。,电路,源程序,【,例,2】1602,液晶显示实例,返回指令与清屏指令的比较,电路,源程序,【,例,3】1602,液晶显示实例,按键控制,1602,液晶上光标移动、整屏移动,可以让光标移动到任何位置改写,电路,源程序,【,例,4】1602,液晶显示实例,实现在,1602,液晶上滚动显示,电路,源程序,12864,概述(,64,行,128,列点阵),我们学习是采用的,LCD,为,STN,类,像素为,128*64,黑白字符图形式,12864,液晶屏。买,LCD,的时候会配带相应的驱动控制器,虽然对应的驱动控制其型号很多,不过使用方法大同小异。,12864,有带字库的和不带字库两种,不带字库的需要自己用专用软件取模,现在市面上常用的驱动控制器都带字库。,JHD529M1,是一个,128*64,的,LCD,驱动控制器,可显示汉字及图形。内置,8192,个中文汉字,CGROM,(,16*16,)、,128,个字符(,ASCII,码),HCGROM,(,8*16,)及,128*64,点阵显示,RAM,(,GDRAM,)。,12864,点阵液晶显示屏有三种控制器,分别是,KS0108,、,T6963C,和,ST7920,。三种控制器主要区别是:,KS0108,不带任何字库、,T6963C,带,ASCII,码、,ST7920,带国标二级字库(,8,千多个汉字)。,采用不同的控制芯片,其管脚定义不一样,控制方式也不一样,请大家一定要注意!,ST7920,功能描述,ST7920,是一个集成,LCD,控制器和驱动器的芯片,能够显示字母、数字、中文和自定义字符。支持,8,位、,4,位,并行及串行,总线接口。包括,RAM,、,ROM,、,LCD,显示驱动和控制电路的所有功能都集成在一块芯片上。最小的系统配置就能实现中文字符的显示。,ST7920,包含的字符,ROM,支持,8192,个,1616,点阵的中文字模,和,126,个,168,点阵的字母数字字模,,也包含,支持图形显示,的,GDRAM,(最高支持,64256,),这使得,ST7920,能够支持字符和图形的混合显示。,ST7920,也内嵌了,4,个,1616,的软件可编程的,CGRAM,。,ST7920,有着很宽的工作电压范围(,2.7V5.5V,)。,ST7920,的低功耗设计,适合于电池供电的便携设备。,ST7920 LCD,驱动器是一个,32,行,64,列的驱动电路。通过扩展段驱动器,ST7921,,,ST7920,能支持高达,32,行,256,列(,64*128,),的显示能力。,ST7920,功能描述,PSB,是,ST7920,类液晶的标志性引脚(,并行及串行,总线接口),教材上的例子就是采用,ST7920,控制器。,分上下,2,个半屏操作: 上,32*128,下,32*128,KS0108,功能描述,KS0108,是一种带有列输出的液晶显示控制器,与行驱动,KS0107,配合使用组成液晶显示驱动控制系统。,KS0108,是列驱动器,有,64,路列驱动输出。最多支持,64*192,(,3,个列驱动器,对应,3,个片选,CS1,、,CS2,、,CS3,,每个,64,列),在,64*128,中只有,2,个列驱动器,对应,2,个片选信号,CS1,、,CS2,。,CS1,和,CS2,是,KS0108,类液晶的标志性引脚,分左右,2,个半屏操作,左,64*64-,右,64*64,本章以,不带字库的,KS0107,(,KS0108,)控制器,为例进行介绍。,ST7920,功能描述,ST7920,是一个集成,LCD,控制器和驱动器的芯片,能够显示字母、数字、中文和自定义字符。支持,8,位、,4,位,并行及串行,总线接口。包括,RAM,、,ROM,、,LCD,显示驱动和控制电路的所有功能都集成在一块芯片上。最小的系统配置就能实现中文字符的显示。,ST7920,包含的字符,ROM,支持,8192,个,1616,点阵的中文字模,和,126,个,168,点阵的字母数字字模,,也包含,支持图形显示,的,GDRAM,(最高支持,64256,),这使得,ST7920,能够支持字符和图形的混合显示。,ST7920,也内嵌了,4,个,1616,的软件可编程的,CGRAM,。,ST7920,有着很宽的工作电压范围(,2.7V5.5V,)。,ST7920,的低功耗设计,适合于电池供电的便携设备。,ST7920 LCD,驱动器是一个,32,行,64,列的驱动电路。通过扩展段驱动器,ST7921,,,ST7920,能支持高达,32,行,256,列(,64*128,),的显示能力。,基本特征,低电源电压,,2MHZ,时钟频率,通讯方式为串并行可选,工作温度为,0-55,度。,显示内容,可以构成全中文人机互交图形界面。可以显示,8*4,行,16*16,点阵汉字,也可以完成图形显示。并且可以实现光标显示,画面移动,自定义字符、睡眠模式。,通信接口,并行:,8,位数据线,DB0-DB7,、,3,位控制线,RS,,,R/W,,,E,串行:,I2C,接口,CS,,,SCLK,,,SDA,下面先以,带字库的,ST7920,控制器,为例进行介绍。,字符显示(带中文字库,可显示字符、汉字),用户可直接将汉字字符送到指定地址显示(,DDRAM,),(下面的地址需要加,0X80H,),第,1,个字,第,2,个字,第,3,个字,第,4,个字,第,5,个字,第,6,个字,第,7,个字,第,8,个字,第一行,00H,01H,02H,03H,04H,05H,06H,07H,第二行,10H,11H,12H,13H,14H,15H,16H,17H,第三行,08H,09H,0AH,0BH,0CH,0DH,0EH,0FH,第四行,18H,19H,1AH,1BH,1CH,1DH,1EH,1FH,第一行和第三方其实属于一行,第二行和第四方其实属于一行,图形显示,按照点阵绘图显示图片,画点、线、面,可按点阵图来显示汉字,用户需编程将点阵图送到,GDRAM,指定地址显示,图形显示,(,下面的地址需要加,0X80H),64,行,128,列,点阵,水平地址,X,(,07,),0(16,列,),1,2,3,4,5,6,7,垂,直,地,址,Y,(031),上,半,屏,0,31,水平地址,X,(,815,),8,(16,列,),9,10,11,12,13,14,15,下,半,屏,0,31,注意:,(1),一个水平地址对应,16,列点阵。水平地址有,16,个,上半屏的水平地址为,0-7,,下半屏的水平地址为,8-15,,所以可通过水平地址来区分上、下半屏。每写入,16,位数据,(,先写高,8,位,再写低,8,位,),后,水平地址,X,会自加,1,。,(2),一个垂直地址对应一行点阵,上、下半屏共用水平地址。垂直地址,Y,不会自加,1,,每写完一行后,需人为的加,1,。,LCD12864,在点阵的物理排列上是,12864,但在地址排列上却是,25632,管脚定义:,管脚号,管脚名称,LEVER,管脚功能描述,1,VSS(GND),0,电源地,2,VDD(VCC),+5.0V,电源电压,3,V0,-,液晶显示器驱动电压,4,RS(CS),H/L,RS,为数据,/,指令选择,(1,数据,0,指令,),CS,为串行片选线,5,R/W(SID),H/L,R/W,为读,/,写选择,(1,读,0,写,),SID,为串行数据线,6,E(SCLK),H/L,E,为使能信号,(,与读写配合使用,),SCLK,为串行同步时钟信号,714,DB07,H/L,数据线,15,PSB,H/L,PSB,为并,/,串选择,(1,并,0,串,),16,NC,空脚,17,RST,H/L,复位信号,低电平复位,18,NC,空脚,19,LED+,-,LED,背光板电源,+,20,LED-,-,LED,背光板电源,-,指令,指令码,说明,执行时间,RS,RW,DB7,DB6,DB5,DB4,DB3,DB2,DB1,DB0,清除显示,0,0,0,0,0,0,0,0,0,1,将,DDRAM,填满“,20H”,,并且设定,DDRAM,的地址计数器(,AC,)到“,00H”,(同,1602,),4.6ms,地址归位,0,0,0,0,0,0,0,0,1,X,设定,DDRAM,的地址计数器(,AC,)到“,00H”,,并且将游标移到开头原点位置;这个指令并不改变,DDRAM,的内容(同,1602,),4.6ms,输入方式设定,0,0,0,0,0,0,0,1,I/D,S,指定在资料的读取与写入时,设定游标移动方向及指定显示的移位(同,1602,),72us,显示状态开,/,关,0,0,0,0,0,0,1,D,C,B,D=1,:整体显示开,C=1,:游标开,B=1,:游标位置反白允许,72us,游标或显示移位控制,0,0,0,0,0,1,S/C,R/L,X,X,设定游标的移动与显示的移位控制位元;这个指令并不改变,DDRAM,的内容(同,1602,),72us,基本指令集,指令,指令码,说明,执行时间,RS,RW,DB7,DB6,DB5,DB4,DB3,DB2,DB1,DB0,功能设定,0,0,0,0,1,DL,X,RE,X,X,DL=1(8,位,),,,DL=0(4,位,),RE=1:,扩充指令集,RE=0:,基本指令集,72us,设定,CGRAM,地 址,0,0,0,1,AC5,AC4,AC3,AC2,AC1,AC0,设定,CGRAM,地址到地址计数器,AC,:,00-3F,(预留,64,个自定义字型码),72us,设定,DDRAM,地址,0,0,1,0,AC5,AC4,AC3,AC2,AC1,AC0,设定,DDRAM,地址到地址计数器,AC,第一,/,三行,(80-8F),,第二,/,四行,(90-9F),72us,读取忙碌标志(,BF,)和地址,0,1,BF,AC6,AC5,AC4,AC3,AC2,AC1,AC0,读取忙碌标志(,BF,)可以确认内部动作是否完成,同时可以读出地址计数器(,AC,)的值,0us,写资料到,RAM,1,0,D7,D6,D5,D4,D3,D2,D1,D0,写入资料到内部的,RAM,72us,读出,RAM,的值,1,1,D7,D6,D5,D4,D3,D2,D1,D0,从内部,RAM,读取资料,72us,基本指令集,:,指令,指令码,说明,执行,时间,RS,RW,DB7,DB6,DB5,DB4,DB3,DB2,DB1,DB0,待命模式,0,0,0,0,0,0,0,0,0,1,将,DDRAM,填满“,20H”,,并且设定,DDRAM,的地址计数器,AC,到“,00H”,72us,卷动地址或,IRAM,地址选择,0,0,0,0,0,0,0,0,1,SR,SR=1,:允许输入垂直卷动地址,SR=0,:允许输入,IRAM,地址,、,CGRAM,地址,72us,反白选择,0,0,0,0,0,0,0,1,R1,R0,选择,4,行中的任一行作反白显示,并可决定反白与否,72us,睡眠模式,0,0,0,0,0,0,1,SL,X,X,SL=1,:脱离睡眠模式,SL=0,:进入睡眠模式,72us,扩充指令集,:,初始化时一般采用基本指令,这样可以显示字符和汉字,(,带字库的话,),,需要绘图时才打开扩充指令,绘图完后又要恢复到基本指令以显示字符、汉字。,指令,指令码,说明,执行,时间,RS,RW,DB7,DB6,DB5,DB4,DB3,DB2,DB1,DB0,扩充功能设定,0,0,0,0,1,DL,X,RE,G,0,DL=1(8,位,),,,DL=0(4,位,),RE=1,: 扩充指令集动作,RE=0,: 基本指令集动作,G=1,:绘图显示,ON,G=0,:绘图显示,OFF,72us,设定,IRAM,地址或卷动地址,0,0,0,1,AC5,AC4,AC3,AC2,AC1,AC0,SR=1,:,AC5-AC0,为垂直卷动地址,SR=0,:,AC3-AC0,为,IRAM,地址,72us,设定绘图,RAM,地址,0,0,1,0,0,0,AC3,AC2,AC1,AC0,设定绘图,GDRAM,地址,(2,个字节,先送一个字节的垂直地址(,0X80+031,),再送一个字节的水平地址(,0X80+015,),):,垂直地址:,AC4-AC0,水平地址:,AC3-AC0,72us,0,0,AC4,AC3,AC2,AC1,AC0,扩充指令集,:,并行方式传输:,LCD12864,和单片机并口连接图,并行时序(将,PSB,接,H,为并行模式),1.,写时序,写时序流程如图所示:,RS,为命令,/,数据选择信号,,R/W,为读写选择信号,,E,微操作驱动信号,,DB0-DB7,为数据总线。上图为写操作,所以,R/W,则表明当前进行的是写操作。,DB0-DB7,为单片机向,JHD529M1,写数据。,2.,读时序,读时序流程如图所示:,RS,为命令,/,数据选择信号,,R/W,为读写选择信号,,E,为操作驱动信号,,DB0-DB7,为数据总线。当写入命令,11111100B,时,,R/W,为,H,,,RS,为,L,,不需要延时,控制器会马上读出当前的,AC,值。然后进行判忙等操作。当发送,11111110B,时,,R/W,为,H,,,RS,为,H,,驱动控制器会把当前地址计数器的数据发送出来。读数据要延时,72us,。,串行模式,LCD12864,和单片机串行模式连接图(将,PSB,接,L,为串行模式,串行模式只需三根线),串行模式写时序和读时序是一样的流程,串行口时序图如下图:,串行模式下输入,11111100,后,驱动控制器会输出两个字节的数据,分别为,DDDD0000,和,0000DDDD,,最高位为判忙状态位。,读,LCM,状态(测试忙,/,闲),unsigned char DectectBusyBit(void)/,状态判断函数,(,忙,/,闲,?,忙时返回,1,,闲时返回,0),写命令,void WrComLCD(unsigned char ComVal),写数据,void WrDatLCD(unsigned char DatVal),坐标定位(设置,DDRAM,地址,AC,),/,函数名称:,PosLCD(),/,函数功能:输入定位,/,入口参数:无,/,出口参数:无,/* * */,void PosLCD(uChar8 X,uChar8 Y)/,设置显示汉字的行列坐标(,X,:,1-4,行、,Y,:,0-7,列),uChar8 ucPos;,if(X = 1), X = 0x80; /,第一行,else if(X = 2), X = 0x90; /,第二行,else if(X = 3), X = 0x88; /,第三行,else if(X = 4), X = 0x98; /,第四行,ucPos = X + Y;/,计算地址,WrComLCD(ucPos); /,显示地址,初始化,/,函数名称:,LCD_Init(),/,函数功能:初始化,LCD,/,入口参数:无,/,出口参数:无,/* * */,void LCD_Init(void),WrComLCD(0x30); /,功能设定:,8,位数据接口、选择基本指令,delay(10);,WrComLCD(0x01); /,显示清屏,delay(10);,WrComLCD(0x0C); /,显示设置:开显示、游标关、不反白,delay(10);,【,例,1】12864,液晶显示实例,(,基于,ST7920),实现在,12864,液晶(带字库)上显示汉字,要求如下:,第一行显示,天生我才必有用,,第二行显示,千金散尽还复来。,第三行显示, -,李白,第四行显示,单片机爱好者共勉,源程序,绘图,RAM(GDRAM),绘图显示,RAM,提供,6432,个位元组的记忆空间,在更改绘图,RAM,时,先连续写入水平与垂直的坐标值,再写入两个,8,位元的资料到绘图,RAM,,而地址计数器(,AC,)会自动加一;在写入绘图,RAM,的期间,绘图显示必须关闭,整个写入绘图,RAM,的步骤如下:,1,关闭绘图显示功能。,2,先将水平的位元组坐标(,X,)写入绘图,RAM,地址;,3,再将垂直的坐标(,Y,)写入绘图,RAM,地址;,4,将,D15D8,写入到,RAM,中;,5,将,D7D0,写入到,RAM,中;,6,打开绘图显示功能。,按点阵显示汉字、图片,若,LCM,模块自带汉字字库,该字库中的字型码均为宋体的,无法按照其他字体显示。,若,LCM,模块不带汉字字库时要想显示汉字的话,需将汉字当成点阵图形来显示,可以得到汉字多种字体的点阵图,能按照不同字体显示汉字。,首先要去取汉字对应的点阵图形,将其写入,GDRAM,,按照绘图显示。这里需要用到取模软件,该软件既可以取汉字的点阵数据,也可以取图片的点阵数据。,ST7920,是按行写的,应该选择横向取模,KS0108,是按列写的,应该选择纵向取模,程序的编写与取模顺序有很大的关系,一定要注意,要搞清楚取模顺序,汉字取模,01,。单击“模式”菜单设置为“字符模式”,02,。单击“选项”菜单设置为“取模方式”为逐列方式,“,C51,格式”,03,。在“生成字模”左边的文本框中输入汉字。,04,。单击“生成字模”,05,。单击“保存字模”将点阵数据保存到,TXT,文件,图片取模,01,。单击“模式”菜单设置为“图形模式”,02,。单击“选项”菜单设置为“取模方式”为逐列方式,“,C51,格式”,03,。单击“文件”中的“打开”,选择图片(图片类型:单色,BMP,(因为,128*64,只能显示单色的图像),像素,128*64,(像素大了则一屏显示不完,要编程移屏,),04,。单击“生成字模”,05,。单击“保存字模”将点阵数据保存到,TXT,文件,LCD,绘制图片,void LcdDrawPicture(unsigned char *pPicture),unsigned char i, j ;,WrComLCD(0x34); /,写数据时,选择扩充指令,关闭图形显示,/* =,先操作上半屏,= */,for(i = 0;i 32;i+) /i,用来控制垂直地址,Y,(,031,),WrComLCD(0x80 + i); /,先写垂直坐标值,WrComLCD(0x80 + 0); /,再写水平坐标值,上半屏水平地址,X,是,(0-7),/,每写入一帧数据,(16,位,),后自动增加,1,for(j = 0;j 16;j+) /,一帧数据分两次写,共,8,帧,WrDatLCD(*pPicture+); /,先高,8,位,后低,8,位,/* =,后操作下半屏,= */,for(i = 0;i 32;i+), WrComLCD(0x80 + i);,WrComLCD(0x80 + 8); /,下半屏水平地址,X,是,(8-15),for(j = 0;j 16;j+),WrDatLCD(*pPicture+);,WrComLCD(0x36); /,写完数据,开图形显示,源程序,【,例,2】12864,液晶显示实例,(,基于,ST7920),实现在,12864,液晶(不带字库)上显示汉字,要求如下:,第一行显示,天生我才必有用,,第二行显示,千金散尽还复来。,第三行显示, -,李白,第四行显示,单片机爱好者共勉,源程序,【,例,3】12864,液晶显示实例,(,基于,ST7920),实现在,12864,液晶上显示图片汉字,?,总结:,写字符:先初始化清屏,紧接着设置指令类别为基本指令集,再写字符到,DDRAM,中,然后打开显示。,绘图:将指令类别设置为基本指令集,然后清屏,再设置指令类别为扩充指令集将图像数据写入绘图显示,RAM,(,GDRAM,)中,打开显示。注意清屏命令必须在基本指令集设置下完成。,在,PROTEUS,中有,2,款,128*64,液晶模块:,AMPIRE128*64,、,LGM12641BS1R,,它们均不带中文字库,也不是采用,ST7920,控制芯片,而是采用,KS0108,控制芯片。这里有必要向大家介绍一下,128*64,的,KS0108,液晶模块管脚、指令、及驱动方法。,管脚定义:,管脚号,管脚名称,LEVER,管脚功能描述,1,VSS(GND),0,电源地,2,VDD(VCC),+5.0V,电源电压,3,V0,-,液晶显示器驱动电压,4,D/I(RS),H/L,D/I=“H”,,,表示,DB7DB0,为显示数据,D/I=“L”,,,表示,DB7DB0,为显示指令,5,R/W,H/L,R/W=“H”,,,读,R/W=“L”,,,写,6,E,H/L,R/W=“L”,,,E,信号下降沿锁存,DB7DB0,R/W=“H”,,,E=“H”,时,DDRAM,数据读到,DB7DB0,714,DB07,H/L,数据线,15,CS1,H/L,H:,选择芯片,(,右半屏,),信号,16,CS2,H/L,H:,选择芯片,(,左半屏,),信号,17,RST,H/L,复位信号,低电平复位,18,VOUT,-10V,LCD,驱动负电压,19,LED+,-,LED,背光板电源,20,LED-,-,LED,背光板电源,12864,点阵型,LCD,屏幕(半屏)显示与,DD RAM,地址映射关系,读写数据是纵向的,XY,地址计数器,XY,地址计数器是一个,9,位计数器,其高,3,位是,X,地址(页,每,8,行为,1,页)计数器,低,6,位是,Y,地址计数器。,XY,地址计数器实际上是作为,DDRAM,的地址指针,,X,地址计数器为,DDRAM,的页指针,,Y,地址计数器为,DDRAM,的,Y,(列)地址指针。,X,地址计数器没有记数功能,只能用指令设置。,Y,地址计数器具有循环记数功能,各显示数据写入后,,Y,地址自动加,1,,,Y,地址指针从,0,到,63,。,Z,地址计数器,Z,地址(行)计数器是一个,6,位计数器,此计数器具备循环记数功能,用于显示行扫描同步。当一行扫描完成,此地址计数器自动加,1,,指向下一行扫描数据,,RST,复位后,,Z,地址计数器为,0,。,Z,地址计数器可以用指令“,DISPLAY START LINE”,预置。因此,显示屏幕的起始行就由此命令控制,即,DDRAM,的数据从哪一行开始显示在屏幕的第一行。此模块的,DDRAM,共,64,行,屏幕可以循环滚动显示,64,行。,X,:页地址,Y,:列地址,Z,:行地址,指令描述(完全不同的一套指令,不要和,ST7920,的指令混淆),起始行地址为:,0XC0+063,该指令设置了对应液晶屏最上一行的显示,RAM,的行号,有规律地改变显示起始行,可以使,LCD,实现显示滚屏的效果。,指令描述,页地址为:,0XB8+07,指令描述,列地址为:,0X40+063,设置了页地址、列地址,就唯一确定了,DDRAM,中的一个单元,才可以用读,/,写命令操作该单元。一次读写一列的,8,位后列地址自动加,1,,先将一页的第,0,列的上半部分,(8,位,),写完,再写该页的第,1,列的上半部分,(8,位,),一直到该页的第,15,列的上半部分,(8,位,),;这一页写完后就可以显示一个汉字的上半部分,(,因为一个汉字占两页,),,再人工设置页地址加,1,,一次写该列的下半部分,(8,位,),,这样才能显示整个汉字,指令描述,时序,(a),写操作时序图,(b),读操作时序图,时序参数表,12864,点阵型,LCD,与,AT89S51,单片机的接口设计,源程序,【,例,1】12864,液晶显示实例,(,基于,KS0108),实现在,12864,液晶(不带字库)上显示汉字,要求如下:,第一行显示,天生我才必有用,,第二行显示,千金散尽还复来。,第三行显示, -,李白,第四行显示,单片机爱好者共勉,“,方法一:生成字模显示,几种不同的取模形式:按列,a,:整列整列的取,b,:半列半列的取,显示形式:,a,半列半列的显示,b,整列整列的 显示,电路,源程序,【,例,2】12864,液晶显示实例,(,基于,KS0108),实现在,12864,液晶上显示图片,电路,源程序,【,例,3】12864,液晶显示实例,(,基于,KS0108),实现在,12864,液晶(不带字库)上显示汉字,要求如下:,第一行显示,天生我才必有用,,第二行显示,千金散尽还复来。,第三行显示, -,李白,第四行显示,单片机爱好者共勉,“,方法二:将要显示的整屏汉字内容截屏保存为图片,按照图片显示,电路,实验,十(选作),1.,显示一段汉字在,LCD12864,屏中。,2.,显示一幅图像在,LCD12864,屏中。,课后练习,1.,显示一段汉字和图像实现换页。(先显示一屏汉字,在显示一幅图像硬件结合本章串行并行传输方式电路图),
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 办公文档 > PPT模板库


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!