《基于AVR单片机的VRAM型彩色液晶显示模块设计.pdf》由会员分享,可在线阅读,更多相关《基于AVR单片机的VRAM型彩色液晶显示模块设计.pdf(6页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、第20卷 第5期2005年10月液 晶 与 显 示Chinese Journal of Liquid Crystals and DisplaysVol120,No15Oct.,2005文章编号:100722780(2005)0520434206基于AVR单片机的VRAM型彩色液晶显示模块设计褚东升1,亓庆刚1,岳成亮2(1.中国海洋大学 工程学院,山东 青岛 266071,E2mail:cluice ;2.青岛网通广电通信有限公司,山东 青岛 266071)摘 要:介绍一种基于AVR单片机和硬件汉字库的VRAM型彩色液晶显示模块的设计。给出彩色液晶显示器的显示原理、硬件接口设计框图以及硬件汉字
2、库的制作和应用,同时给出基于C语言的程序设计模块,实现了应用VRAM型液晶的模块化,便于移植在其他类型的单片机。关 键 词:彩色液晶;AVR单片机;硬件汉字库;VRAM中图分类号:TN873.93;TN402 文献标识码:A 收稿日期:2005201225;修订日期:2005202222 基金项目:教育部科学技术研究重点项目(No.02131)1 引 言随着电子技术的飞速发展,越来越多的领域应用到以单片机为控制核心、用液晶作为显示终端的数字化设备1,2。彩色液晶显示器作为当代高新技术的结晶产品,不但具有超薄平面、显示信息丰富、色彩逼真的特点,而且还具有体积小、耗电省、寿命长、无辐射、抗震、防爆
3、等其他类型显示器无可比拟的优点,因而是工控仪表、机电设备等行业更新换代的理想显示器件3。因此基于单片机系统的彩色液晶显示模块的使用也越来越广泛。本文介绍一种基于AVR单片机和硬件汉字库的彩色液晶显示模块,该模块实现了在彩色液晶显示器上显示不同颜色的中文、英文、数字及简单的画图功能。2 液晶显示器显示原理本模块采用的液晶显示器是河南友利华高科技有限公司生产的YD2502彩色液晶VRAM型显示器。它的点阵数是320240,VRAM容量是64 k8位,由于屏幕上的任何一点都是由R(红)、G(绿)、B(蓝)3种颜色组成,且灰度不可调节,因此显示颜色为8色。基本原理框图如图1所示。DC/DC转换器产生液
4、晶所用各种驱动电压,DC/AC逆变器则用来点亮冷阴极背光灯,显示驱动逻辑电路采用了优化逻辑电路,利用分时技术让显示与写入数据同时进行,实现了画面的高速更新,且互不干扰3。其显示原理是:在显示器内部含有一个显示缓冲区与屏幕显示一一对应,使用时只需向缓冲区里写入相应的数据,屏幕上即可显示出对应的彩色图形或文字,也就是说该显示器可作为单片机系统的一个外部存储器就可以实现彩色信息的显示。图1YD2502原理框图Fig.1YD2502 principle diagrm3 硬件系统设计3.1 硬件总体设计本模块中使用的单片机是AVR系列单片机中功能最强的ATmega128。该单片机具有丰富的片上资源如具有
5、128 kB在线可重复编程Flash、4 kB的E2PROM、4 kB的内部SRAM、48个第5期褚东升,等:基于AVR单片机的VRAM型彩色液晶显示模块设计435I/O端口、34个不同的中断源、可寻址64 kB的地址空间、ISP下载以及J TAG仿真等功能4。详细介绍请参考其数据手册。图2是该模块硬件系统总体设计框图。由于YD2502的显示缓冲区里的内容是不能读出的,为了保存写入内容,在该模块中还外扩了一片存储器芯片61LV5128,其存储容量为512 kB,除了保存YD2502显示缓冲区里的数据外,还为使用本模块的嵌入式系统提供了扩展应用。由于ATmega128的寻址范围只达到64 KB,
6、因此采用了分页管理技术来操作512 kB的存储空间。在具体电路设计时,将ATmega128的PB3PB0连接到61LV5128的高4位地址线上,将512 kB的存储空间分成16页,每页32 kB。硬件汉字库芯片AT29C040A的存储容量也是512 kB,与CPU的接口设计与61LV5128是类似的,只需将片选信号和高4位地址线接在不同的I/O口上就可以了。图2 硬件设计图Fig.2Hardware design diagram3.2YD2502的接口设计YD2502的接口方式采用总线方式,外部引线包括数据总线(DB7DB0)、片选信号(/CS)、读写输入(/RD、/WR)和寄存器选择信号(R
7、S),可以直接挂接到单片机的总线上,作为单片机的某部分内存来使用。接口采用16针插座,引脚定义请参阅其说明书。图3AT128与YD2502的接口Fig.3Interface between ATmega128 and YD2502 根据YD2502可以作为单片机的外部存储器使用的接口特性,将ATmega128的读写信号线与YD2502的读写信号线直接连接,具体接口设计原理如图3所示。3.3 硬件汉字库的制作本模块使用了硬件汉字库,省去了利用汉字取模软件获取点阵数据的麻烦,而且还避免了为保存这些数据而开辟的大量程序存储空间。汉字库中要烧写的点阵文件是UCDOS软件中的文件HZK16,该文件是16
8、16的国际汉字点阵文件,文件中按汉字区位码从小到大依次存放国标区位码表中的所有汉字,每个汉字占用32字节,每个区为94个汉字。汉字库芯片采用的是AT29C040A,该芯片是ATMEL公司生产的512 kB的Flash ROM。在制作时,烧写过程和普通的程序存储器的编程基本相同,只要注意选择正确的型号和在选择打开HZK16的方式时用二进制方式就可以了,编程校验成功后,取下备用,硬件汉字库芯片就制作好了5。实际上若显示HZK16的文件属性,其大小为262 kB,而AT29C040A的存储容量为512 kB,超出部分可以存储用户固定的汉字、字母和数字的代码2,从而使显示内容更加灵活丰富。4 软件系统
9、设计及实现4.1 操作YD2502的程序设计YD2502的指令码格式如下:其中:CA1,CA0组合功能为内部寄存器通道的选择,功能如下:CA1CA0功 能00显示地址低8位寄存器01显示地址高8位寄存器10显示数据读写通道11无效DISP:显示控制位。当DISP设置为“1”时,液晶显示模块为开显示状态。当DISP设置为“0”时,液晶显示模块为关显示状态。436液 晶 与 显 示第20卷X:表示未用位,可设为“0”。A Tmega128访问外部存储器的软件设计步骤是:先用extern声明一个外部变量,再用map2ping_init函数(外部存储地址分配函数)分配给此变量一个外部存储地址(因ATm
10、ega128内部有4 kB的SRAM所以外部存储地址范围为1000H0FFFFH),那么对该变量的操作就实现了CPU对相应地址的外部存储空间的访问6。根据此步骤,对YD2502写指令和写数据的具体函数如下:extern unsigned char LCD_DATA;voidmapping_init(void)asm(“.area memory(abs)n”“.org 0 x4000n”/分 配 给LCD_DATA的地址为4000H“_LCD_DATA:.blkb 1 n”/存储空间为1“.text/n”);写指令函数如下:voidLCD_writeinstr(unsigned char dat
11、a)PORTD&=0 xFC;/置/CS为低电平,并且置RS为低电平,处于写指令状态LCD_DATA=data;/送数据PORTD|=0 x03;/置/CS和RS为高电平写数据函数如下:voidLCD_writedata(unsigned char data)PORTD&=0 xFE;/置/CS为低,并且置RS为高电平,处于写数据状态LCD_DATA=data;/送数据PORTD|=0 x01;/置/CS为高电平除了上面两个基本的函数外,对YD2502最基本的操作是往VRAM里写数据,根据上面给出的指令码,具体函数如下:#defineHREG0 x09/显示地址高8位寄存器指令#defineL
12、REG0 x08/显示地址低8位寄存器指令#defineDATARW 0 x0A/显示数据读写通道指令voidLCD_filldata(unsigned int address,unsigned char data)unsigned char addrh,addrl;addrh=(char)(address 8);/取内存地址的高8位数据addrl=(char)(address&0 xFF);/取内存地址的低8位数据LCD_writeinstr(HREG);/送显示地址高8位寄存器指令LCD_writedata(addrh);/送内存地址的高8位数据LCD_writeinstr(LREG);/
13、送显示地址低8位寄存器指令LCD_writedata(addrl);/送内存地址的低8位数据LCD_writeinstr(DATARW);/送显示数据读写通道指令LCD_writedata(data);/送数据4.2 画点函数的实现要在液晶上实现显示字符和画图等功能,在屏幕上显示一个点是实现这些功能的基础。画点函数实现的步骤是:首先确定该点对应的VRAM中的内存位置,找到该点具体对应的数据位,填充显示颜色的数据,该点就按对应的颜色显示出来了。4.2.1 显示内存与屏幕点阵的对应关系3YD2502屏幕点阵为320240,每一个点对应3个像素(RGB),屏幕上8个点对应内存3个字节,一行对应320
14、/83=120个字节3,其对应关系如下:RGBRGBRGBRGBRGBRGBRGBRGBD7D6D5D4D3D2D1D0D7D6D5D4D3D2D1D0D7D6D5D4D3D2D1D0内存地址0 内存地址1 内存地址2其中R,G,B表示红、绿、蓝三原色,D7D0表示对应的数据位。对于屏幕上坐标为(X,Y)的点,其对应内存地址的计算方法为:当Y=0时 SRAM=0EFH100H+IN T(X/8)3第5期褚东升,等:基于AVR单片机的VRAM型彩色液晶显示模块设计437当Y 0时 SRAM=(Y-1)100H+INT(X/8)3通过(X/8)的余数得出具体的内存位置:当余数为0则 RAM=SRA
15、M1110,0000当余数为1则 RAM=SRAM0001,1100当余数为2 则 RAM1=SRAM0000,0011RAM2=SRAM+11000,0000当余数为3 则 RAM=SRAM+10111,0000当余数为4 则 RAM=SRAM+10000,1110当余数为5 则 RAM1=SRAM+10000,0001RAM2=SRAM+21100,0000当余数为6 则 RAM=SRAM+20011,1000当余数为7 则 RAM=SRAM+20000,0111其中 内为“1”的位表示应该填充颜色的位置,SRAM表示该点对应的基础地址,RAM、RAM1和RAM2表示该点对应的实际内存地址
16、。当数据位为“1”时,对应色点为亮;为“0”时,对应色点为暗。通过RGB三原色组合而得到的8种颜色代码如下:000001010011100101110111黑蓝绿青红粉黄白例1:若X、Y坐标为(7,0)SRAM=0EFH100H+0=0EF00H余数为7,则 RAM=0EF00H+2=0EF02H若此点为红色,则送入0EF02H内存单元里的数据为0EF02H&11111000B+00000100B例2:若X、Y坐标为(15,5)SRAM=(5-1)100H+13=403H余数为5,则 RAM1=403H+1=404HRAM2=403H+2=405H若此点为白色,则送入这两个单元的数据为404H
17、&11111110B+00000001B405H&00111111B+11000000B4.2.2画点函数的具体实现从例1和例2可以看出,要只显示一个色点,就必须知道该点对应的内存中的数据,而前面提到过内存中的数据是不能读出的,所以要将写入内存中的数据先保存起来,即在向YD2502的显示缓冲区里写数据之前,应先将此数据写入61LV5128。若在坐标(X,Y)处画颜色为color的点,其具体函数如下:voidLCD_disppixel(unsigned intX,un2signed intY,unsigned char color)unsigned int address;unsigned ch
18、ar data;address=LCD_pixeladdr(X,Y);/计算该点对应的内存地址switch(X%8)case 0:data=read_exram(ad2dress);/读取相应SRAM中的数据data&=0 x1F;/1110,0000保存其他点的数据data|=(color 5);/填充相应的颜色 write _ exram(data,ad2dress);/把修改好的数据写回到SRAMLCD_filldata(address,da2ta);/把数据写到液晶显示缓冲区break;case 7:;break;以上只给出了余数是0的情况,其他的情况可依此类推。计算内存地址的LCD_
19、pixeladdr函数可根据给出的内存地址计算方法编写,读写61LV5128的read_exram函数和write_exram函数可根据具体的硬件设计编写,这里不再给出。4.3 显示汉字和其他功能的实现在屏幕上显示1616点阵汉字的基本步骤是:首先取得该汉字的32个字节的点阵数据,再确定屏幕上显示的位置,利用画点函数即可显示该汉字。因本模块使用了硬件汉字库技术,所以汉字的点阵数据是从汉字库中获取的。在计算机汉字系统中,汉字是用机内码的形式存储的,将汉字机内码减去0A0A0H就得到该汉字的区位码,通过区位码就可以找到该汉字点438液 晶 与 显 示第20卷阵数据在汉字库中的位置。例如:汉字“中”
20、的机内码是十六进制的“D6D0”,其中前两位“D6”表示机内码的区码,后两位“D0”表示机内码的位码。所以“中”的区位码为0D6D0H-0A0A0H=3630H,将区码和位码分别转换为十进制,得汉字“中”的区位码为“5448”。即“中”的点阵位于第54区的第48个字的位置,在文件HZK16中的位置为第32(54-1)94+(48-1)=160928D以后的32个字节为“中”的点阵数据,用SUPER2PRO25编程器读入文件HZK16后利用其编辑功能中的缓冲区编辑查找到274A0H(160928D的十六进制表示)开始的32个字节:01H,00H,01H,00H,01H,04H,7FH,FEH,4
21、1H,04H,41H,04H,41H,04H,41H,04H,7FH,FCH,41H,04H,01H,00H,01H,00H,01H,00H,01H,00H,01H,00H,01H,00H。这些数据与其点阵图形的对应关系如图4所示,图中黑色方格表示二进制位“1”,即对应该显示的点,白色方格表示二进制位“0”,即不该显示的点。因此要在液晶屏幕上显示1616点阵的汉字,首先应找到该汉字在硬件汉字库中的位置,取出其后的32个字节数据。取这32个字节数据的函数如下:图4 汉字“中”的点阵图形Fig.4Lattice diagram of Chinese character“中”.unsignedcha
22、rchinese 2=“中”,“国”;unsignedcharbuffer32;voidLCD_ readdata(unsigned char num2ber)unsignedchartemp1,temp2,k;unsignedlongaddress,i;temp1=chinese number 0 -0 xA0;/把机内码转换成区位码temp2=chinesenumber1-0 xA0;address=323(long)temp1-1)394+(long)temp2-1);/计算该汉字在汉字库中的首地址k=0;for(i=address;i address+32;i+)data=read_e
23、xrom(i);bufferk=data;k+;读AT29C040A的read_exrom函数可根据硬件设计编写,这里不再给出。取得这32个字节数据后,下面的程序设计就比较容易了,这里只给出程序流程(如图5所示),具体函数可根据此流程编写。其中(X,Y)是该汉字显示的起始点,color是该汉字的显示颜色,number是该汉字在chinese数组中的位置。显示英文和数字的函数可根据显示汉字的函数稍加改造后即可得到,这里不再详细分析。图5 显示一个汉字程序流程图Fig.5Program flowchart of displaying a Chinesecharacter第5期褚东升,等:基于AVR
24、单片机的VRAM型彩色液晶显示模块设计439 在本模块中也实现了在屏幕上画斜线、圆等功能,其具体实现过程就是在画点函数的基础上通过相应的算法来编写这些函数。画线和画圆算法比较多,在这里画线算法采用的是整数数字微分分析法7,画圆算法采用的是贝森海姆算法7。鉴于篇幅所限,这里不再具体分析。由于YD2502是点阵式液晶显示器,还可以通过移植嵌入式GUI(如C/GUI)软件,使其显示多种曲线,各种窗口对象,如按钮、编辑框、滑动条等更加丰富灵活的图形界面。5 结 语以上程序均在ICCAVR编译器里调试通过,实现了在液晶屏幕上正常显示各种颜色的汉字、英文、数字及简单的图形功能。在笔者参与开发的油田探测爆炸
25、机设备中,采用了本液晶模块,达到了显示稳定,显示色彩丰富,人机界面友好的较理想的显示效果。参 考 文 献:1 李文江,张 岩,汪玉凤.内置HD61202点阵式液晶显示模块接口设计与编程J.液晶与显示,2004,19(2):1382142.2 吴平,龚彬,丁铁夫.液晶显示模块和MSP430单片机在显示终端上的应用J.液晶与显示,2003,18(6):4362440.3 友利华高科技开发有限公司.YD2502彩色液晶VRAM显示器使用说明书Z.2002.4 Atmel Corporation.ATmega128 Datasheet EB/OL.http:/,2001211204.5 綦声波,刘滨,
26、马志强.硬件汉字库设计原理与应用 EB/OL.http:/,2002205213.6 沈文,Eagle lee,詹卫前.AVR单片机C语言开发入门指导M.北京:清华大学出版社,2003.7 李维諟,郭强.液晶显示应用技术M.北京:电子工业出版社,2000.Design of VRAM Color LCD Display Module Based on AVRCHU Dong2sheng1,QI Qing2gang1,YUE Cheng2liang2(1.Engineering Institute of Ocean University of China,Qingdao266071,China,
27、E2mail:;2.Qingdao Netcom Broadcast&TV Communications Corp.Ltd.,Qingdao266071,China)AbstractThe paper introduces a design of VRAM color LCD display module based on AVR and the chipwith Chinese characters.It provides the principle of this kind of LCD,the hardware design diagramand the making method of
28、 chip with Chinese characters.It also provides the module of program designbased on C programmed language,which gives a module for applying to the VRAM color LCD so thatthe LCD is convenient for transplanting to other microcontrollers.Key words:color LCD;AVR;chip with Chinese characters;VRAM作者简介:褚东升(1956-),男,吉林省吉林市人,博士,现任中国海洋大学工程学院副院长,教授,研究方向:信号处理、自动控制和智能仪器。