单片机原理及应用第四讲_第1页
单片机原理及应用第四讲_第2页
单片机原理及应用第四讲_第3页
单片机原理及应用第四讲_第4页
单片机原理及应用第四讲_第5页
已阅读5页,还剩87页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第四讲LCD液晶显示模块

LCD结构与原理

1、LCD(LiquidCrystalDisplay)的工作原理液晶面板包含了两片精致的玻璃,中间夹着一层液晶。液晶是一种具有规则性分子排列的有机化合物。当加电时导通,排列有秩序,使光线容易通过;不加电时排列混乱,阻止光线通过。由于液晶材料本身并不发光,所以在液晶显示屏背面有一块背光板和反光膜,背光板是由荧光物质组成的,可以发射光线,其作用主要是提供均匀的背景光源。背光板发出的光线在穿过第一层玻璃板之后进入包含成千上万水晶液滴的液晶层。液晶层中的水晶液滴都被包含在细小的单元格结构中,一个或多个单元格构成屏幕上的一个像素。在玻璃板与液晶材料之间是透明的电极,电极分为行和列,在行与列的交叉点上,通过改变电压而改变液晶的旋光(排列)状态,所以液晶材料的作用类似于一个个小的光阀。LCD显示器的分类当前市场上液晶显示器种类繁多,按排列形状可分为字段型、点阵字符型和点阵图形型。(1)字段型。它是以长条状组成字符显示。该类显示器主要用于数字显示,也可用于显示西文字母或某些字符,已广泛用于电子表、计算器、数字仪表中(类似于数码管)。(2)点阵字符型。它专门用于显示字母、数字、符号等。它由若干57或510的点阵组成,每一个点阵显示一个字符。此类显示模块广泛应用在各类单片机应用系统中。(3)点阵图形型。它是在平板上排列多行或多列,形成矩阵式的晶格点,点的大小可根据显示的清晰度来设计。这类液晶显示器可广泛应用于图形显示,如用于笔记本电脑、彩色电视和游戏机等。点阵字符型液晶显示模块介绍在单片机应用系统中,常使用点阵字符型LCD显示器。要使用点阵字符型LCD显示器,必须有相应的LCD控制器、驱动器来对LCD显示器进行扫描、驱动,还要有一定空间的RAM和ROM来存储单片机写入的命令和显示字符的点阵。由于LCD的面板较为脆弱,制造商已将LCD控制器、驱动器、RAM、ROM和LCD显示器用PCB连接到一起,称为液晶显示模块(LCdModule,LCM)。使用者只需购买现成的液晶显示模块即可。单片机控制LCM时,只要向LCM送入相应的命令和数据就可实现所需要的显示内容,这种模块与单片机接口简单,使用灵活方便。(1)液晶显示板在液晶显示板上排列着若干57或510点阵的字符显示位,从规格上分为每行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个57点阵字符,见图10-19。由该字符库可看出LCM显示的数字和字母部分的代码值,恰好与ASCII码表中的数字和字母相同。所以在显示数字和字母时,只需向LCM送入对应的ASCII码即可。② 模块内有64字节的自定义字符RAM(CGRAM),用户可自行定义8个57点阵字符。图10-19ROM字符库的内容(12*16=192个字符+4*16=64预留自定义字符)③模块内有80字节的数据显示存储器(DDRAM)即:缓存、显存注意:这里的地址属于片外地址,所以其实际地址要加上0x80(片内128B,地址范围:0X00~0X7F)2.LCM的引脚1602LCM通常有16个引脚,也有少数的LCM为14个引脚,其中包括8条数据线、3条控制线和3条电源线,如表10-10所示。通过单片机写入模块的命令和数据,就可对显示方式和显示内容做出选择。3.命令格式及功能说明(1)内部寄存器LCD控制器HD44780内有多个寄存器,寄存器的选择如表10-11所示。RS位和R/W*引脚上的电平决定对寄存器的选择和读/写,而DB7~DB0决定命令功能。忙标记和地址计数器(也称状态字寄存器)最高位(STA7)为忙标记:1忙(不能读写)0闲(可读写)低7位(STA6~STA0)为显存地址:显存为80B,其地址占7位,分别

为:第一行0X00~0X27、第二行0X40~0X67)(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时为510点阵,F=0时为57点阵。⑦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单片机与1602LCD模块的接口AT89S51与1602LCD模块(LCM)的接口电路如图10-20所示,通过对数据总线的读写实现对LCM的控制。图10-20AT89S51单片机与LCD模块的接口电路2.读LCM状态(测试忙/闲)//函数名称:DectectBusyBit()//函数功能:检测状态标志位(判断是忙/闲)//入口参数:无//出口参数:忙时返回1,闲时返回0/*******************************************************/unsignedcharDectectBusyBit(void)//状态判断函数(忙/闲?忙时返回1,闲时返回0){bitresult;P0=0xff;/*读状态值时,先赋高电平,因为数据线上之前的值可能为0,会误认为LCM空闲*/RS=0;delay(5);RW=1;LCDEN=1;delay(5);//延时,等待数据稳定result=BF;LCDEN=0;returnresult; } 3.写命令//函数名称:WrComLCD()//函数功能:为LCD写指令//入口参数:指令(ComVal)//出口参数:无/*******************************************************/voidWrComLCD(unsignedcharComVal){ while(DectectBusyBit()==1);//先检测LCM是否空闲 RS=0; delay(1);RW=0; LCDEN=1; P0=ComVal; delay(1); LCDEN=0; }4.写数据//函数名称:WrDatLCD()//函数功能:为LCD写数据//入口参数:数据(DatVal)//出口参数:无/*******************************************************/voidWrDatLCD(unsignedcharDatVal){ while(DectectBusyBit()==1); RS=1; delay(1);RW=0; LCDEN=1; P0=DatVal; delay(1); LCDEN=0; }5.初始化0FH:开显示,光标闪烁5.初始化//函数名称:LCD_Init()//函数功能:初始化LCD//入口参数:无//出口参数:无/*******************************************************/voidLCD_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)。128×64点阵液晶显示屏有三种控制器,分别是KS0108、T6963C和ST7920。三种控制器主要区别是:KS0108不带任何字库、T6963C带ASCII码、ST7920带国标二级字库(8千多个汉字)。采用不同的控制芯片,其管脚定义不一样,控制方式也不一样,请大家一定要注意!ST7920功能描述ST7920是一个集成LCD控制器和驱动器的芯片,能够显示字母、数字、中文和自定义字符。支持8位、4位并行及串行总线接口。包括RAM、ROM、LCD显示驱动和控制电路的所有功能都集成在一块芯片上。最小的系统配置就能实现中文字符的显示。

ST7920包含的字符ROM支持8192个16×16点阵的中文字模和126个16×8点阵的字母数字字模,也包含支持图形显示的GDRAM(最高支持64×256),这使得ST7920能够支持字符和图形的混合显示。ST7920也内嵌了4个16×16的软件可编程的CGRAM。

ST7920有着很宽的工作电压范围(2.7V~5.5V)。ST7920的低功耗设计,适合于电池供电的便携设备。

ST7920LCD驱动器是一个32行×64列的驱动电路。通过扩展段驱动器ST7921,ST7920能支持高达32行×256列(64*128)的显示能力。ST7920功能描述PSB是ST7920类液晶的标志性引脚(并行及串行总线接口)教材上的例子就是采用ST7920控制器。分上下2个半屏操作:上32*128下32*128KS0108功能描述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个16×16点阵的中文字模和126个16×8点阵的字母数字字模,也包含支持图形显示的GDRAM(最高支持64×256),这使得ST7920能够支持字符和图形的混合显示。ST7920也内嵌了4个16×16的软件可编程的CGRAM。

ST7920有着很宽的工作电压范围(2.7V~5.5V)。ST7920的低功耗设计,适合于电池供电的便携设备。

ST7920LCD驱动器是一个32行×64列的驱动电路。通过扩展段驱动器ST7921,ST7920能支持高达32行×256列(64*128)的显示能力。基本特征低电源电压4.5-5.5V,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个字第一行00H01H02H03H04H05H06H07H第二行10H11H12H13H14H15H16H17H第三行08H09H0AH0BH0CH0DH0EH0FH第四行18H19H1AH1BH1CH1DH1EH1FH第一行和第三方其实属于一行第二行和第四方其实属于一行图形显示按照点阵绘图显示图片,画点、线、面,可按点阵图来显示汉字用户需编程将点阵图送到GDRAM指定地址显示图形显示(下面的地址需要加0X80H)64行128列点阵水平地址X(0~7)0(16列)1234567垂直地址Y(0~31)上半屏0…31水平地址X(8~15)8(16列)9101112131415下半屏0…31注意:(1)一个水平地址对应16列点阵。水平地址有16个,上半屏的水平地址为0-7,下半屏的水平地址为8-15,所以可通过水平地址来区分上、下半屏。每写入16位数据(先写高8位,再写低8位)后,水平地址X会自加1。(2)一个垂直地址对应一行点阵,上、下半屏共用水平地址。垂直地址Y不会自加1,每写完一行后,需人为的加1。LCD12864在点阵的物理排列上是128×64但在地址排列上却是256×32管脚定义:管脚号管脚名称LEVER管脚功能描述1VSS(GND)0电源地2VDD(VCC)+5.0V电源电压3V0-液晶显示器驱动电压4RS(CS)H/LRS为数据/指令选择(1数据0指令)CS为串行片选线5R/W(SID)H/LR/W为读/写选择(1读0写)SID为串行数据线6E(SCLK)H/LE为使能信号(与读写配合使用)SCLK为串行同步时钟信号7~14DB0~7H/L数据线15PSBH/LPSB为并/串选择(1并0串)16NC空脚17RSTH/L复位信号,低电平复位18NC空脚19LED+-LED背光板电源+20LED--LED背光板电源-指令指令码说明执行时间RSRWDB7DB6DB5DB4DB3DB2DB1DB0清除显示0000000001将DDRAM填满“20H”,并且设定DDRAM的地址计数器(AC)到“00H”(同1602)4.6ms地址归位000000001X设定DDRAM的地址计数器(AC)到“00H”,并且将游标移到开头原点位置;这个指令并不改变DDRAM的内容(同1602)4.6ms输入方式设定00000001I/DS指定在资料的读取与写入时,设定游标移动方向及指定显示的移位(同1602)72us显示状态开/关0000001DCBD=1:整体显示开C=1:游标开B=1:游标位置反白允许72us游标或显示移位控制000001S/CR/LXX设定游标的移动与显示的移位控制位元;这个指令并不改变DDRAM的内容(同1602)72us基本指令集指令指令码说明执行时间RSRWDB7DB6DB5DB4DB3DB2DB1DB0功能设定00001DLXREXXDL=1(8位),DL=0(4位)RE=1:扩充指令集RE=0:基本指令集72us设定CGRAM地址0001AC5AC4AC3AC2AC1AC0设定CGRAM地址到地址计数器AC:00-3F(预留64个自定义字型码)72us设定DDRAM地址0010AC5AC4AC3AC2AC1AC0设定DDRAM地址到地址计数器AC第一/三行(80-8F),第二/四行(90-9F)72us读取忙碌标志(BF)和地址01BFAC6AC5AC4AC3AC2AC1AC0读取忙碌标志(BF)可以确认内部动作是否完成,同时可以读出地址计数器(AC)的值0us写资料到RAM10D7D6D5D4D3D2D1D0写入资料到内部的RAM72us读出RAM的值11D7D6D5D4D3D2D1D0从内部RAM读取资料72us基本指令集:指令指令码说明执行时间RSRWDB7DB6DB5DB4DB3DB2DB1DB0待命模式0000000001将DDRAM填满“20H”,并且设定DDRAM的地址计数器AC到“00H”72us卷动地址或IRAM地址选择000000001SRSR=1:允许输入垂直卷动地址SR=0:允许输入IRAM地址、CGRAM地址72us反白选择00000001R1R0选择4行中的任一行作反白显示,并可决定反白与否72us睡眠模式0000001SLXXSL=1:脱离睡眠模式SL=0:进入睡眠模式72us

扩充指令集:初始化时一般采用基本指令,这样可以显示字符和汉字(带字库的话),需要绘图时才打开扩充指令,绘图完后又要恢复到基本指令以显示字符、汉字。指令指令码说明执行时间RSRWDB7DB6DB5DB4DB3DB2DB1DB0扩充功能设定00001DLXREG0DL=1(8位),DL=0(4位)RE=1:扩充指令集动作RE=0:基本指令集动作G=1:绘图显示ONG=0:绘图显示OFF72us设定IRAM地址或卷动地址0001AC5AC4AC3AC2AC1AC0SR=1:AC5-AC0为垂直卷动地址SR=0:AC3-AC0为IRAM地址72us设定绘图RAM地址001000AC3AC2AC1AC0设定绘图GDRAM地址(2个字节,先送一个字节的垂直地址(0X80+0~31),再送一个字节的水平地址(0X80+0~15)):垂直地址:AC4-AC0水平地址:AC3-AC072us00AC4AC3AC2AC1AC0

扩充指令集:并行方式传输:

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状态(测试忙/闲)unsignedcharDectectBusyBit(void)//状态判断函数(忙/闲?忙时返回1,闲时返回0)写命令voidWrComLCD(unsignedcharComVal)写数据voidWrDatLCD(unsignedcharDatVal)坐标定位(设置DDRAM地址AC)//函数名称:PosLCD()//函数功能:输入定位//入口参数:无//出口参数:无/*******************************************************/voidPosLCD(uChar8X,uChar8Y)//设置显示汉字的行列坐标(X:1-4行、Y:0-7列){ uChar8ucPos; if(X==1) {X=0x80;} //第一行

elseif(X==2) {X=0x90;} //第二行

elseif(X==3) {X=0x88;} //第三行

elseif(X==4) {X=0x98;} //第四行

ucPos=X+Y; //计算地址

WrComLCD(ucPos); //显示地址}初始化//函数名称:LCD_Init()//函数功能:初始化LCD//入口参数:无//出口参数:无/*******************************************************/voidLCD_Init(void){ WrComLCD(0x30);//功能设定:8位数据接口、选择基本指令

delay(10);

WrComLCD(0x01);//显示清屏

delay(10);

WrComLCD(0x0C);//显示设置:开显示、游标关、不反白delay(10);}【例1】12864液晶显示实例(基于ST7920)实现在12864液晶(带字库)上显示汉字,要求如下:第一行显示"天生我才必有用,"第二行显示"千金散尽还复来。"第三行显示"--李白"第四行显示"单片机爱好者共勉"源程序绘图RAM(GDRAM)

绘图显示RAM提供64×32个位元组的记忆空间,在更改绘图RAM时,先连续写入水平与垂直的坐标值,再写入两个8位元的资料到绘图RAM,而地址计数器(AC)会自动加一;在写入绘图RAM的期间,绘图显示必须关闭,整个写入绘图RAM的步骤如下:

1关闭绘图显示功能。

2先将水平的位元组坐标(X)写入绘图RAM地址;

3再将垂直的坐标(Y)写入绘图RAM地址;

4将D15——D8写入到RAM中;

5将D7——D0写入到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绘制图片voidLcdDrawPicture(unsignedchar*pPicture){ unsignedchari,j; WrComLCD(0x34);//写数据时,选择扩充指令,关闭图形显示

/*====先操作上半屏====*/ for(i=0;i<32;i++)//i用来控制垂直地址Y(0~31)

{

WrComLCD(0x80+i); //先写垂直坐标值

WrComLCD(0x80+0); //再写水平坐标值,上半屏水平地址X是(0-7)//每写入一帧数据(16位)后自动增加1for(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管脚功能描述1VSS(GND)0电源地2VDD(VCC)+5.0V电源电压3V0-液晶显示器驱动电压4D/I(RS)H/LD/I=“H”,表示DB7∽DB0为显示数据D/I=“L”,表示DB7∽DB0为显示指令5R/WH/LR/W=“H”,读R/W=“L”,写6EH/LR/W=“L”,E信号下降沿锁存DB7∽DB0R/W=“H”,E=“H”时DDRAM数据读到DB7∽DB07~14DB0~7H/L数据线15CS1H/LH:选择芯片(右半屏)信号16CS2H/LH:选择芯片(左半屏)信号17RSTH/L复位信号,低电平复位18VOUT-1

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论