首 页文档资料下载资料维修视频包年699元
请登录  |  免费注册
当前位置:精通维修下载 > 文档资料 > 家电技术 > 维修教程知识 > 单片机栏
图形点阵LCD液晶模块显示界面的可视化编程方案与实践
来源:本站整理  作者:佚名  2010-02-11 09:10:15



关键词:LCD显示模块,可视化编程,单片机,RS232串行通讯

随着图形点阵LCD液晶显示模块在各行各业的逐步使用,使得人机界面变得越来越直观形象,尤其对于国内大多数需要有汉字和图形显示的用户来说,显示界面的友好与否,将直接影响到其产品的形象和市场竞争力,但一般涉及有关图形点阵液晶模块显示界面开发的技术人员由于缺乏经验而往往感到力不从心,尤其当用户的控制电路资源非常缺乏的条件下(如家用电器),图形点阵液晶模块则更是望尘莫及,而市面上所能见到的仍是那些“不顾客户死活而又自认清高”的传统型液晶显示模块,虽然其成本已经降到普遍能接受的地步,但还是因其控制方法的特殊性和复杂性严重阻碍液晶显示器的推广应用。

针对目前的这种状况,深圳联合电子有限公司开发出一种图形点阵液晶模块,将LCD所有的底层操作集成于模块内的MCU中,这样其控制就变得极为容易,占用户资源最少,并且所有显示界面的编辑及调试全部在电脑上独立完程,整个过程一目了然,极大地方便用户编写显示界面的控制软件,从而也提高了LCD液晶显示模块在产品中的附加值。

可视化编程LCD模组技术特性:

1.模块显示点阵数(分辨率)128X64192X64256X64三种可选;

2.内含高速MCU64KB用户显示资料现场可编程FLASH

3.标准RS232串行通讯控制,只占用户两根口线,小马拉大车成为可能;

4.配备仿真调试软件,在电脑上独立完成显示界面的编辑,资料下载,仿真调试;

5.简单又丰富的控制命令使模块显示的控制易如控制一只LED

6.用户可随时改写显示资料,现场编程易如反掌,显示界面无限升级;

7.模块提供忙信号输出,以检测模块状态;

用户首先在电脑上完成LCD显示界面的编辑,资料下载及仿真调试工作,所配仿真调试软件可使用户方便的进行上述工作,在硬件上除可视化编程LCD模组之外还配有一块电脑RS232电平转换转接板,此板负责模块与联接和对模块的供电,模块与电脑联接图示如下。

 

1 模块与电脑的联接

将所配仿真调试软件Visual LCM1.0安装在电脑上(运行附带软盘中INSTALL.BAT),安装前注意要先将电脑里正在运行且占用串口的程序关闭,安装完毕屏幕上即出现如下软件主界面:

                              2 仿真调试软件主画面

    当鼠标移动到某可操作对象上停留一会儿,就会有相应的操作提示,建议操作前请先将各功能浏览一遍,以便先对操作有个感性认识。

在模块与电脑联接之前,用“图文编辑”将LCD预显示位图画好存档,注意所作位图必需是黑白的单色位图且需旋转270度,将画好的位图通过“添加”一一列入“下载位图排序”中,把模块设为编程模式(JP1选择)与电脑由RS232转换板相接并通电,在“串口选择”中选好模块所接串口,用“状态测试”检查连线和串口号及电源是否正常,若联机成功,模块资料下载界面则显示“联机测试OK!”,同时主画面中“下载资料”激活,点击后电脑将排序列表中的位图按序号由小到大一一下载到模块内FLASH中,下载时间与列表中位图总和大小成正比,结束时模块显示“下载资料OK!”,此时将模块断电,设其为正常模式再加电,用“状态测试”告电脑模块此时已为正常模式,通过点击“浏览资料”可在LCD屏上以点(0000)为顶点一一观察刚刚下载的所有位图,且顺序与排序列表中的相同,也可直接点击排序列表中的位图进行浏览,所有位图无误后,可进行LCD显示界面的仿真调试。

LCD显示界面的生成用六种命令来实现,在主画面的“发送命令”下边的命令列表框中罗列出这六种

命令的含义及语法规则,若输入错误的命令将会提示错误信息,命令及各参数说明如下:              

1  命令功能说明 

LCD

BMPnxy

在以点(xy)为顶点处显示位图n

  CLR

清除LCD屏上所有显示(该命令无参数)

  CLSxywh

清除以点(xy)为顶点,宽wh的距形

  INVxywh

反色以点(xy)为顶点,宽wh的距形

  SDTxy CDTxy

在点(xy)处画点(在点(xy)处灭点)

 

2  命令参数说明

参数

取值范围

含义

进制

举例

n

0=<n<=序号最大值<=0FF

位图序号

十六进制

0B

x

0=<x<=FFH

显示区域顶点横坐标

十六进制

12

y

0=<y<=3FH

显示区域顶点纵坐标

十六进制

09

w

0<w<=FFH

显示区域横向宽度点数

十六进制

0F

h

0<h<=3FH

显示区域纵向高度点数

十六进制

0E

各参数在128X64LCD显示屏上图示如下:

       

                  3 命令参数在128X64模块显示屏上示意

在主画面的“发送命令”左边的命令输入框中输入正确的命令后点击“发送命令”,此时LCD屏上会有相应的显示动作,若在调试过程中发现要修改某位图时可以用“图文编辑”

重新修改后按前述步骤再一次下载位图,直到对显示界面满意为止。

    最终要将模块脱离电脑通过模块上的SIO接入用户控制电路中运行,SIO定义如下:

PIN1:(LED+)模块背光电极1LED背光时为负极,EL背光时为交流驱动电极1);

PIN2:(LED-)模块背光电极2LED背光时为直流正5伏,EL背光时为交流驱动电极2);

PIN3PIN5:(VSS)模块逻辑电源地;

PIN4:(VDD)模块逻辑电源直流正5伏;

PIN6:(RESET)模块内MCU外部复位,高有效,防死机时用;

PIN7:(BUSY)模块忙信号,低为忙,高为闲;

PIN8:(RXD)模块显示控制命令串行输入,通讯协议为(9600,n,8,1),9600波特率,无校验位,8

数据位,1个停止位。

现举例说明模块如何与PHILIPS公司的单片机P87LPC762接口,为保证波特率的准确,建议用11.0592MHz的晶体,联接图示如下:

                    4   P87LPC762单片机与模块128X64的联接

在编写单片机P87LPC762的控制软件时需注意以下事项:

1.串行口模式设为模式11个起始位,8个数据位,1个停止位);

2.波特率设为9600TH1=TL1=0FDHSMOD1=0;TH1=TL1=0FAHSMOD1=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汇编语言编写简单的显示控制源程序如下(实际运行已通过):

BUSY      BIT           P1.0   ;定义忙信号口线,当然也可定义为其他口线

X_V        EQU        30H   ;定义各参数单元

Y_V        EQU        31H

     NUBER  EQU         32H

WIDTH     EQU        33H

HIGHT      EQU        34H

 

REG_ASC_XH  EQU  35H                               ;定义参数x高四位ASCII码单元

REG_ASC_XL EQU  36H                                 ;定义参数x低四位ASCII码单元

REG_ASC_YH EQU  37H                                ;定义参数y高四位ASCII码单元

REG_ASC_YL EQU  38H                                 ;定义参数y低四位ASCII码单元

REG_ASC_NH           EQU  39H                               ;定义参数n高四位ASCII码单元

 

REG_ASC_NL   EQU  3AH                             ;定义参数n低四位ASCII码单元

REG_ASC_WH   EQU  3BH                            ;定义参数w高四位ASCII码单元

REG_ASC_WL   EQU  3CH                            ;定义参数w低四位ASCII码单元

REG_ASC_HH   EQU  3DH                            ;定义参数h高四位ASCII码单元

REG_ASC_HL   EQU  3EH                            ;定义参数h低四位ASCII码单元

 

ORG    00H                                       ;程序开始

AJMP   MAIN

ORG    80H

MAIN:     

MOV    SP,#60H                            ;设堆栈指针

LCALL  INIT_SIO                          ;初始化串口

      MOV   X_V, #0CH                                  ;x=12,y=13为顶点处显示位图11

      MOV   Y_V, #0DH

      MOV   NUBER, #0BH

      LCALL  ORDER_BMP                      ;发送位图显示子程,其它命令编写类似

      AJMP   $                        ;观察LCD显示屏                

INIT_SIO:  

MOV   SCON,#50H                          ;串行口:方式1

         MOV   TMOD,#21H                          ;定时器T1为波特率发生器,方式2

         MOV   TH1,#0FDH                          ;波特率=9600, Fosc=11.0592MHz

         MOV   TL1,#0FDH                          ;SMOD=0

         SETB   TR1                                 ;启动T1

         RET

ORDER_BMP:  

MOV   A,X_V

         MOV   R0, #REG_ASC_XH

         LCALL  H_ASC                              ;将参数x转换为两个字节的ASCII

               MOV   A,Y_V

         MOV   R0, #REG_ASC_YH

              LCALL  H_ASC                             ;将参数y转换为两个字节的ASCII

              MOV   A,NUBER

         MOV   R0, #REG_ASC_NH

              LCALL  H_ASC                             ;将参数n转换为两个字节的ASCII

LCALL  BUSY_CK                           ;检测模块状态

MOV   A, #B                 ;先发送命令码BMPASCII

              MOV   SBUF, A

              JNB    TI, $

              CLR    TI

MOV   A,#M

              MOV   SBUF, A

              JNB    TI, $

              CLR    TI

MOV   A, #P

              MOV   SBUF, A

              JNB    TI, $

              CLR    TI

MOV   R0, #REG_ASC_NH

              LCALL  SEND_CS                     ;发参数nASCII

              MOV   R0, #REG_ASC_XH

              LCALL  SEND_CS                     ;发参数xASCII

              MOV   R0, #REG_ASC_YH

              LCALL  SEND_CS                     ;发参数yASCII

              MOV    A,#0DH

              MOV    SBUF, A                               ;发送命令结束标志“0DH

              JNB     TI, $

              CLR     TI

RET

BUSY_CK:   

JNB     BUSY, $                     ;等待模块为闲状态

              RET

SEND_CS:         

MOV   A,@R0                                 ; 发送参数高四位的ASCII

              MOV   SBUF, A

              JNB    TI, $

              CLR    TI

INC    R0

              MOV   A,@R0                        ; 发送参数低四位的ASCII

MOV   SBUF, A

              JNB    TI, $

              CLR    TI

RET          

H_ASC:

        MOV    B, A                                        ;将一字节的十六进制数转换为两字节的ASCII

ANL    A, #0F0H

         SWAP   A

         CJNE   A, #9, PD_G

XY9:             

ADD    A, #30H

TURN_LOW:      

MOV   @R0, A

         INC R0

              AJMP   LOW_BIT

PD_G:            

JC      XY9

         ADD    A, #37H

         AJMP   TURN_LOW

LOW_BIT:         

MOV    A, B

         ANL     A, #0FH

         CJNE    A, #9, PD_G1

XY_9:              

ADD    A, #30H

TURN_LOW1:      

MOV   @R0, A

         RET

PD_G1:            

JC      XY_9

         ADD    A, #37H

         AJMP   TURN_LOW1

                   END

结束语:对那些正准备用图形点阵LCD模块来完善人机界面和提高产品档次的广大用户来说,我们真诚盼望您的产品构思能迅速变成实物,其实这也正是您所希望的,可视化编程LCD模块必然能助您一臂之力。

关键词:

文章评论评论内容只代表网友观点,与本站立场无关!

   评论摘要(共 0 条,得分 0 分,平均 0 分)
Copyright © 2007-2017 down.gzweix.Com. All Rights Reserved .
页面执行时间:19,390.63000 毫秒