您好,欢迎访问三七文档
当前位置:首页 > 行业资料 > 酒店餐饮 > 图形点阵LCD液晶模块显示界面的可视化编程方案与实践
图形点阵LCD液晶模块显示界面的可视化编程方案与实践关键词:LCD显示模块,可视化编程,单片机,RS232串行通讯随着图形点阵LCD液晶显示模块在各行各业的逐步使用,使得人机界面变得越来越直观形象,尤其对于国内大多数需要有汉字和图形显示的用户来说,显示界面的友好与否,将直接影响到其产品的形象和市场竞争力,但一般涉及有关图形点阵液晶模块显示界面开发的技术人员由于缺乏经验而往往感到力不从心,尤其当用户的控制电路资源非常缺乏的条件下(如家用电器),图形点阵液晶模块则更是望尘莫及,而市面上所能见到的仍是那些“不顾客户死活而又自认清高”的传统型液晶显示模块,虽然其成本已经降到普遍能接受的地步,但还是因其控制方法的特殊性和复杂性严重阻碍液晶显示器的推广应用。针对目前的这种状况,深圳联合电子有限公司开发出一种图形点阵液晶模块,将LCD所有的底层操作集成于模块内的MCU中,这样其控制就变得极为容易,占用户资源最少,并且所有显示界面的编辑及调试全部在电脑上独立完程,整个过程一目了然,极大地方便用户编写显示界面的控制软件,从而也提高了LCD液晶显示模块在产品中的附加值。可视化编程LCD模组技术特性:1.模块显示点阵数(分辨率)128X64,192X64,256X64三种可选;2.内含高速MCU及64KB用户显示资料现场可编程FLASH;3.标准RS232串行通讯控制,只占用户两根口线,小马拉大车成为可能;4.配备仿真调试软件,在电脑上独立完成显示界面的编辑,资料下载,仿真调试;5.简单又丰富的控制命令使模块显示的控制易如控制一只LED;6.用户可随时改写显示资料,现场编程易如反掌,显示界面无限升级;7.模块提供忙信号输出,以检测模块状态;用户首先在电脑上完成LCD显示界面的编辑,资料下载及仿真调试工作,所配仿真调试软件可使用户方便的进行上述工作,在硬件上除可视化编程LCD模组之外还配有一块电脑RS232电平转换转接板,此板负责模块与联接和对模块的供电,模块与电脑联接图示如下。图1模块与电脑的联接将所配仿真调试软件VisualLCM1.0安装在电脑上(运行附带软盘中INSTALL.BAT),安装前注意要先将电脑里正在运行且占用串口的程序关闭,安装完毕屏幕上即出现如下软件主界面:图2仿真调试软件主画面当鼠标移动到某可操作对象上停留一会儿,就会有相应的操作提示,建议操作前请先将各功能浏览一遍,以便先对操作有个感性认识。在模块与电脑联接之前,用“图文编辑”将LCD预显示位图画好存档,注意所作位图必需是黑白的单色位图且需旋转270度,将画好的位图通过“添加”一一列入“下载位图排序”中,把模块设为编程模式(JP1选择)与电脑由RS232转换板相接并通电,在“串口选择”中选好模块所接串口,用“状态测试”检查连线和串口号及电源是否正常,若联机成功,模块资料下载界面则显示“联机测试OK!”,同时主画面中“下载资料”激活,点击后电脑将排序列表中的位图按序号由小到大一一下载到模块内FLASH中,下载时间与列表中位图总和大小成正比,结束时模块显示“下载资料OK!”,此时将模块断电,设其为正常模式再加电,用“状态测试”告电脑模块此时已为正常模式,通过点击“浏览资料”可在LCD屏上以点(00,00)为顶点一一观察刚刚下载的所有位图,且顺序与排序列表中的相同,也可直接点击排序列表中的位图进行浏览,所有位图无误后,可进行LCD显示界面的仿真调试。LCD显示界面的生成用六种命令来实现,在主画面的“发送命令”下边的命令列表框中罗列出这六种命令的含义及语法规则,若输入错误的命令将会提示错误信息,命令及各参数说明如下:表1命令功能说明命令格式LCD显示效果功能说明BMPnxy在以点(x,y)为顶点处显示位图nCLR清除LCD屏上所有显示(该命令无参数)CLSxywh清除以点(x,y)为顶点,宽w高h的距形INVxywh反色以点(x,y)为顶点,宽w高h的距形SDTxy(CDTxy)在点(x,y)处画点(在点(x,y)处灭点)表2命令参数说明参数取值范围含义进制举例n0=n=序号最大值=0FF位图序号十六进制0Bx0=x=FFH显示区域顶点横坐标十六进制12y0=y=3FH显示区域顶点纵坐标十六进制09w0w=FFH显示区域横向宽度点数十六进制0Fh0h=3FH显示区域纵向高度点数十六进制0E各参数在128X64LCD显示屏上图示如下:图3命令参数在128X64模块显示屏上示意在主画面的“发送命令”左边的命令输入框中输入正确的命令后点击“发送命令”,此时LCD屏上会有相应的显示动作,若在调试过程中发现要修改某位图时可以用“图文编辑”重新修改后按前述步骤再一次下载位图,直到对显示界面满意为止。最终要将模块脱离电脑通过模块上的SIO接入用户控制电路中运行,SIO定义如下:PIN1:(LED+)模块背光电极1(LED背光时为负极,EL背光时为交流驱动电极1);PIN2:(LED-)模块背光电极2(LED背光时为直流正5伏,EL背光时为交流驱动电极2);PIN3,PIN5:(VSS)模块逻辑电源地;PIN4:(VDD)模块逻辑电源直流正5伏;PIN6:(RESET)模块内MCU外部复位,高有效,防死机时用;PIN7:(BUSY)模块忙信号,低为忙,高为闲;PIN8:(RXD)模块显示控制命令串行输入,通讯协议为(9600,n,8,1),即9600波特率,无校验位,8个数据位,1个停止位。现举例说明模块如何与PHILIPS公司的单片机P87LPC762接口,为保证波特率的准确,建议用11.0592MHz的晶体,联接图示如下:图4P87LPC762单片机与模块128X64的联接在编写单片机P87LPC762的控制软件时需注意以下事项:1.串行口模式设为模式1(1个起始位,8个数据位,1个停止位);2.波特率设为9600(TH1=TL1=0FDH,SMOD1=0;TH1=TL1=0FAH,SMOD1=1);3.在发送命令之前需检测模块为闲态(PIN7=1),否则所发的命令可能失效;4.串口发送的必须是完整命令的ASCII码,如命令“BMP0B0C0D”,实际由串口发送的内容是“424D50304230433044”,顺序为“B-M-P-0-B-0-C-0-D”;5.在每条命令末尾还要加上命令结束码“0D”,以表明命令结束。6.若单片机P87LPC762的串口已被占为他用,那么用一根口线来摸拟生成一个软串口发送命令即可。7.模块SIO接口中PIN6的作用是当模块内MCU由于干扰死机时,用户控制电路可强行外部复位,使模块脱离死机状态,判断模块是否死机可通过向其发送正确的显示命令后,PIN7电平是否有变化来得知,实际上模块在完成每条命令内部操作后即进入睡眠状态,死机的机率是极低的。在下面的软件中未考虑死机的情况。用MCS-51汇编语言编写简单的显示控制源程序如下(实际运行已通过):BUSYBITP1.0;定义忙信号口线,当然也可定义为其他口线X_VEQU30H;定义各参数单元Y_VEQU31HNUBEREQU32HWIDTHEQU33HHIGHTEQU34HREG_ASC_XHEQU35H;定义参数x高四位ASCII码单元REG_ASC_XLEQU36H;定义参数x低四位ASCII码单元REG_ASC_YHEQU37H;定义参数y高四位ASCII码单元REG_ASC_YLEQU38H;定义参数y低四位ASCII码单元REG_ASC_NHEQU39H;定义参数n高四位ASCII码单元REG_ASC_NLEQU3AH;定义参数n低四位ASCII码单元REG_ASC_WHEQU3BH;定义参数w高四位ASCII码单元REG_ASC_WLEQU3CH;定义参数w低四位ASCII码单元REG_ASC_HHEQU3DH;定义参数h高四位ASCII码单元REG_ASC_HLEQU3EH;定义参数h低四位ASCII码单元ORG00H;程序开始AJMPMAINORG80HMAIN:MOVSP,#60H;设堆栈指针LCALLINIT_SIO;初始化串口MOVX_V,#0CH;在x=12,y=13为顶点处显示位图11MOVY_V,#0DHMOVNUBER,#0BHLCALLORDER_BMP;发送位图显示子程,其它命令编写类似AJMP$;观察LCD显示屏INIT_SIO:MOVSCON,#50H;串行口:方式1MOVTMOD,#21H;定时器T1为波特率发生器,方式2MOVTH1,#0FDH;波特率=9600,Fosc=11.0592MHzMOVTL1,#0FDH;SMOD=0SETBTR1;启动T1RETORDER_BMP:MOVA,X_VMOVR0,#REG_ASC_XHLCALLH_ASC;将参数x转换为两个字节的ASCII码MOVA,Y_VMOVR0,#REG_ASC_YHLCALLH_ASC;将参数y转换为两个字节的ASCII码MOVA,NUBERMOVR0,#REG_ASC_NHLCALLH_ASC;将参数n转换为两个字节的ASCII码LCALLBUSY_CK;检测模块状态MOVA,#“B”;先发送命令码BMP的ASCII码MOVSBUF,AJNBTI,$CLRTIMOVA,#“M”MOVSBUF,AJNBTI,$CLRTIMOVA,#“P”MOVSBUF,AJNBTI,$CLRTIMOVR0,#REG_ASC_NHLCALLSEND_CS;发参数n的ASCII码MOVR0,#REG_ASC_XHLCALLSEND_CS;发参数x的ASCII码MOVR0,#REG_ASC_YHLCALLSEND_CS;发参数y的ASCII码MOVA,#0DHMOVSBUF,A;发送命令结束标志“0DH”JNBTI,$CLRTIRETBUSY_CK:JNBBUSY,$;等待模块为闲状态RETSEND_CS:MOVA,@R0;发送参数高四位的ASCII码MOVSBUF,AJNBTI,$CLRTIINCR0MOVA,@R0;发送参数低四位的ASCII码MOVSBUF,AJNBTI,$CLRTIRETH_ASC:MOVB,A;将一字节的十六进制数转换为两字节的ASCII码ANLA,#0F0HSWAPACJNEA,#9,PD_GXY9:ADDA,#30HTURN_LOW:MOV@R0,AINCR0AJMPLOW_BITPD_G:JCXY9ADDA,#37HAJMPTURN_LOWLOW_BIT:MOVA,BANLA,#0FHCJNEA,#9,PD_G1XY_9:ADDA,#30HTURN_LOW1:MOV@R0,ARETPD_G1:JCXY_9ADDA,#37HAJMPTURN_LOW1END结束语:对那些正准备用图形点阵LCD模块来完善人机界面和提高产品档次的广大用户来说,我们真诚盼望您的产品构思能迅速变成实物,其实这也正是您所希望的,可视化编程LCD模块必然能助您一臂之力。
本文标题:图形点阵LCD液晶模块显示界面的可视化编程方案与实践
链接地址:https://www.777doc.com/doc-3505466 .html