LM016L详解

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

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

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

资源描述

基于Proteus的液晶模块仿真李东勋,沈文浩,陈小泉(华南理工大学制浆造纸工程国家重点实验室,广东广州510640)摘要:本文介绍了Proteus中字符型液晶模块LM016L的结构及其控制器HD44780的指令系统,完成了LM016L与单片机80C51的硬件接口电路设计及HD44780控制器的驱动编程,实现了LM016L自定义字符的显示。最后简要介绍了Proteus仿真调试单片机的方法和步骤。关键字:Proteus;HD44780;液晶;单片机中图分类号:TP368.2文献标示码:BSimulationofLCDModuleBasedonProteusLiDongxun,ShenWenhao,ChenXiaoquan(StateKeyLaboratoryofPulp&PaperEngineering,SouthChinaUniversityofTechnology,Guangzhou,Guangdong,510640)Abstract:ThispaperhasintroducedthestructureofLM06L,andtheinstructionsofHD44780whichisadot-matrixliquidcrystaldisplaycontroller.Inthispaper,theinterfacebetweenLM06LandMCU80C51,thedriverofHD44780andthedisplayofourowndefinedcharactersareintroduced.Finally,thedebugstepsbyProteusaredescribedinanutshell.Keywords:Proteus,HD44780,LCD,MCU1.引言Proteus[2]软件是由英国LabCenterElectronics公司开发的EDA工具软件。由ISIS和ARES两个软件组成,其中ISIS是一款便捷的电子系统仿真平台,ARES是一款高级的布线编辑软件。Proteus与其它EDA软件相比,其最具特点的功能是电路仿真的互动性,特别是单片机的仿真,不仅可以直接在原理图的虚拟元件上编程,而且可以实时调试。液晶显示器(LCD)具有功耗低、体积小、质量轻、功耗小的特点。点阵字符型液晶显示器把LCD控制器、点阵驱动器、字符存储器集成在一块印刷电路板上,构成便于应用的液晶模块。这类液晶模块不仅可以显示数字、字符,还可以显示各种图形符号以及少量自定义符号,并且可以实现屏幕的上下左右滚动、文字的闪烁等功能;人机界面友好,使用操作也更加灵活、方便,使其日益成为各种仪器仪表等设备的首选。本文以介绍HD44780为控制器的LM016L液晶模块的引脚结构、功能的基础上,介绍LM016L与MCS51单片机的硬件接口电路、自定义字符的显示以及Proteus的仿真。2.液晶模块简介2.1LM016L的结构及功能[1]LM016L液晶模块采用HD44780控制器。HD44780具有简单而功能较强的指令集,可以实现字符移动、闪烁等功能。LM016L与单片机MCU(MicrocontrollerUnit)通讯可采用8位或者4位并行传输两种方式。HD44780控制器由两个8位寄存器、指令寄存器(IR)和数据寄存器(DR)、忙标志(BF)、显示数据RAM(DDRAM)、字符发生器ROM(CGROM)、字符发生器RAM(CGRAM)、地址计数器(AC)。IR用于寄存指令码,只能写入不能读出;DR用于寄存数据,数据由内部操作自动写入DDRAM和CGRAM,或者暂存从DDRAM和CGRAM读出的数据。BF为1时,液晶模块处于内部处理模式,不响应外部操作指令和接受数据。DDRAM用来存储显示的字符,能存储80个字符码。CGROM由8位字符码生成5*7点阵字符160种和5*10点阵字符32种,8位字符编码和字符的对应关系,可以查看参考文献[3]中的表4。CGRAM是为用户编写特殊字符留用的,它的容量仅64字节。可以自定义8个5*7点阵字符或者4个5*10点阵字符。AC可以存储DDRAM和CGRAM的地址,如果地址码随指令写入IR,则IR自动把地址码装入AC,同时选择DDRAM或者CGRAM单元。LM016L液晶模块的引脚功能见表1[1]:表1LM016L引脚说明2.2控制指令[3]通过对HD44780写入控制指令,HD44780产生显示驱动信号来驱动LM016L。HD44780的控制指令主要有:清除显示(ClearDisplay)、地址归位(ReturnHome)、输入模式设定(EntryModeSet)、显示开/关控制(DisplayOn/OffControl)、功能设定(FunctionSet)、设定CGRAM的地址(SetCGRAMAddress)、设定DDRAM的地址(SetDDRAMAddress)、写DDRAM/CGRAM(WriteDatetoDDRAM/CGRAM)、读忙标志和地址(ReadBusyFlagandAddress)以及从DDRAM和CGRAM中读数据(ReadDatefromDDRAM/CGRAM)。以上指令的具体格式及功能可以参阅文献[3]的24页~28页。3.基于ProteusISIS7的液晶模块仿真3.1接口设计运行ProteusISIS7进入设计界面,依照图1所示在元件库中选择需要的元件。80C51的P0口作为8位数据的输出端,P2.0、P2.1、P2.2作为控制信号的输出端,连接完成的电路如图1所示。图1电路原理图管脚号名称电平功能描述1VSS0V2VDD5.0V3VEE—4RSH/LH:数据线上为数据信号;L:数据线上为指令信号5RWH/LH:读数据模式;L:写数据模式6EH/L使能信号端7~14DB0~DB7H/L数据线3.2软件设计电路图绘制好之后,就可以编写LM016L的驱动程序。LM016L的操作有两大类:读操作和写操作。一般情况下不需要从液晶中读取数据,所以对液晶操作主要是写指令和写数据两个写操作,对于忙标志(BF),采用延时的方法,保证液晶模块有足够时间进行内部数据处理。在写源程序时,需要根据液晶模块的时序图编写程序。LM016L的时序如图2所示[3]。图2LM016L写数据时序图根据电路图1定义引脚:RSBITP2.0;RWBITP2.1;LCDEBITP2.2下面是写指令和写数据的源代码:(1)写指令子程序WRITE_COMMAND入口参数:指令字放在累加器A中WRITE_COMMAND:;写指令子程序CLR[4]LCDE;清使能信号CLRRS;RS=0,RW=0写指令CLRRWMOVP0,A;送指令字SETBLCDE;设置使能信号LCALLDELAY;延时CLRLCDERET(2)写数据子程序WRITE_DATA入口参数:数据放在累加器A中WRITE_DATA:;写数据子程序CLRLCDE;清使能信号SETBRS;RS=1,RW=0写数据CLRRWMOVP0,A;送数据SETBLCDE;设置使能信号LCALLDELAY;延时CLRLCDERET液晶模块初始化主要包括:功能设定(FunctionSet)、显示开/关控制(DisplayOn/OffControl)、清除显示(ClearDisplay)、进入点设定(EntryModeSet)。INITIAL_LCD:;液晶模块初始化;8位接口,两行显示,5*7点阵字符MOVA,#38HLCALLWRITE_COMMANDMOVA,#0EH;显示开关设置LCALLWRITE_COMMANDMOVA,#06H;输入方式设置LCALLWRITE_COMMANDMOVA,#01H;清屏指令LCALLWRITE_COMMANDRET3.3自定义字符及其显示CGRAM是用户编写特殊字符用的,它的容量仅64字节,地址为00~3FH。定义一个有效数据RSR/WEDB0-DB7T2T3T1T45*7点阵字符需要8个字节,这8个字节由CGRAM地址的高3位确定,相同的为一组。例如:地址为000XXX(二进制形式)的为一组。因此CGRAM可以定义8个5*7点阵字符。每个字节的高3位可以留作数据存储器,低5位用来存储字模信息。定义字模时,液晶显示的点为1,不显示的点为0。自定义字符对应的8位编码规则是高4位为0,低3位为CGRAM的高3位,编码中第4位可以任意,不影响显示。对于自定义的5*10字符也有类似的规则。利用3.2提供的三个子程序,让LM016L显示“学习MCU”。程序清单如下:MAIN:;显示“学习MCU”RSBITP2.0RWBITP2.1LCDEBITP2.2LCALLINITIAL_LCD;初始化液晶LCALLWRITE_CGRAMMOVA,#80H;设置DDRAM地址LCALLWRITE_COMMANDLCALLWRITE_CHARSJMP$DELAY:;延时子程序:DELAYMOVR6,#0AHLOOP2:MOVR7,#27HLOOP1:DJNZR7,LOOP1DJNZR6,LOOP2RET;在CGRAM写“学习”字模子程序WRITE_CGRAM:MOVA,#40H;设置CGRAM地址LCALLWRITE_COMMANDMOVR1,#10hMOVDPTR,#TABLELOOP_CGRAM:MOVA,#00HMOVCA,@A+DPTRLCALLWRITE_DATAINCDPTRDJNZR1,LOOP_CGRAMRET;显示5个字符子程序WRITE_CHAR:MOVR1,#5HMOVDPTR,#TABLE_DISPLOOP_MAIN:MOVA,#00HMOVA,@A+DPTRINCDPTRLCALLWRITE_DATADJNZR1,LOOP_MAINRETTABLE:DB15H,1FH,11H,0EH,02H,1FH,02H,00H;学字模DB1FH,01H,09H,05H,09H,11H,03H,00H;习字模TABLE_DISP:;“学习MCU”字符码DB00H,01H,4DH,43H,55HEND;程序结束3.4Proteus仿真首先建立源程序文件,然后选择Source/BuildAll进行源程序文件的编译。如果源程序有语法错误,编译系统会给出可能出错的地方,改正后,重新编译,一直到没有错误为止。最后打开80C51的属性面板,在ProgramFile的属性栏中添加编译完成的HEX文件。在工作区的左下方可以看到交互式仿真的控制按钮。控制按钮如图3所示。图3交互式控制按钮单击运行按钮,启动ProteusISIS仿真。仿真结果如图4。图4仿真结果单击暂停按钮或者选择Debug菜单下的Start/RestartDebug就可以进行程序的调试。Proteus处于调试状态时,在Debug菜单下可以选择查看80C51单片机内部数据存储区和特殊功能寄存器区。点击单步执行,可以观察各寄存器和内部数据存储区的变化情况,方便程序的查错和调试。4.结束语利用Proteus实现了对LM016L液晶模块的仿真,实现了“学习MCU”的显示。Proteus为学习单片机提供了很好的软件平台,使初学者可以抛开电路设计中的一些细枝末节,快速掌握单片机的核心内容。本文的创新点:由于HD44780的字库中没有汉字字符,所以在实际运用中有一定的局限。本文介绍了如何自定义汉字字模及如何确定自定义汉字的编码,并给出自定义字符显示程序实例和运行结果。参考文献:[1]公茂法,马宝甫,孙晨.单片机人机接口实例集[M].北京航空航天大学出版社,1998[2]周润景,张丽娜,刘印群.Proteus入门实用教程[M].机械工业出版社,2007[3]HITACHI.HD44780U(LCD-II)英文参考手册[4]薛钧义,张彦斌.MCS-51(96)系列单片微型计算机及其应用[M].西安交通大学出版社,1997[5]刘红,覃光华,汪道辉.基于不带字库的图形LCD模块汉子显示解决方案[J].微计算机信息,2004,12。[6]王伟,卢博友,刁修慧,刘平.基于嵌入式系统的LCD汉字显示[J].微

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

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

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

×
保存成功