摘要:VLCM320240是一款具有可视化编程图形界面、采用串行控制、内含GB2312简体中文字库及64kB自造图库的液晶图形显示模块。该模块采用台湾EDT公司的蓝膜负显EW32F10BCW?具有320×240的点阵分辨率和CCFT背光源。文中介绍了该模块的性能特点、接口管脚说明、用户命令及主要参数,同时给出了VLCM320240与单片机的接口电路及相应显示程序。
关键词:可视化编程;串行控制;中文字库;单片机 1 引言 图形点阵液晶显示模块由于具有显示信息丰富、功耗低、体积小、重量轻、寿命长、不产生电磁辐射污染等优点而成为单片机系统中理想的显示器件,并被广泛应用于单片机控制的智能仪器仪表、工业控制领域、通信器材和家用电器中。但普通图形点阵液晶显示模块用于显示图形界面时是非常困难的,首先图形显示要占用大量的用户ROM空间。以320×240点阵液晶模块为例,显示一幅图片(全屏幕)占用的ROM空间为?320×240?/8=9.6k Byte,这对片内仅有几k字节的FLASH闪存单片机来说是不可能的;其次,显示图片过程极其复杂,应根据待显示的图形计算好各点阵的位置,再以字节为单位写入数据来控制各点阵的亮灭。如果显示多幅图片,复杂程度更加令人生畏。 另外,图形点阵液晶显示模块在显示汉字时也存在着占用ROM容量大、与单片机的硬件接口电路复杂以及接口时序复杂,软件编程繁复等问题。 正是由于上述几点不足限制了图形点阵液晶显示模块在生成复杂精美的中文人机界面时的应用。而中文界面及图形显示又是电子产品人机界面发展的必然趋势。实际上任何一种显示界面本质上都是由若干像素排列组合生成,若能将图形点阵液晶模块显示控制的底层操作集成在模块内的单片机中,并将生成显示界面中所用到的各种图形界面和标准汉字库预先存入模块中,用户使用时就可以仅通过串口向其发送简单的控制命令以生成图文显示界面,从而使得复杂的图形界面生成变得简单容易,最终解决电子产品开发过程中难以生成精美的人机界面的难题。 VLCM320240即是一款具有上述功能的图形点阵液晶模块。该模块是由深圳研安佳公司推出的。 VLCM320240图形点阵液晶显示模块具有如下主要特点: ● 该液晶显示模块采用台湾EDT公司的蓝膜负显EW32F10BCW?它具有320×240的点阵分辨率和CCFT背光源; ● 内部含有台湾华邦公司生产的高速单片机W78E516BP; ● 内含GB2312 16×16点阵国标一级、二级简体字库,字库中的汉字可显示在液晶屏的任意位置; ● 内含ASCⅡ 8×16点阵英文字库; ● 内含64kB自造图库或美术字库、显示资料现场可在线编程FLASH; ● 内含SED1330F LCD控制器及32kB显示缓冲区; ● 配套Visual LCM仿真调试软件可在电脑上独立完成显示界面的编辑、资料下载及界面生成; ● 具有标准RS232串行通信控制,可方便地由上位计算机或单片机进行控制; ● 具有最小的硬件资源占用,使用单片机做上位机时,可使用两根I/O口线模拟串口,而使用TTL电平控制时,仅需一根I/O口线。 VLCM320240留给用户的接口有两个,即电源口POWER和RS232通信口。 其中电源口包括以下几个端口: ●+9V电源:稳压后供给单片机; ●GND:模块电源地; ●+5V电源:供逆变器使用。 RS232口定义如下: ●BUSY:忙标志输出,低电平时为忙; ●RX:控制命令输入,其中有8位数据位,1个起始位,一个停止位; ●GND:信号地。 在具体使用时,可通过上位机的用户命令来控制VLCM320240的显示. 汉字或ASCII字符显示命令中的参数为所显示汉字的两个字节国标码或ASCII字符代码。 VLCM320240可视化编程液晶显示模块可广泛应用于显示信息内容丰富或显示信息容量巨大的应用场合,如信息家电,通信器材、工业控制、智能仪器仪表等领域,模块在使用时可分为显示界面生成及实时显示两个步骤。 4.1 显示界面的模拟生成 显示界面的生成在上位计算机上完成,利用可视化编程软件Visual LCM可将系统设计中用到的各种图形或文字进行归纳并编辑成图案,但图案的大小不得超过320×240像素,同时图案必须选为黑白两色。然后将编辑好的图案下载到模块ISP FLASH存储器中,图案的数量应小于256幅。对于显示较多的文字信息,也应尽量生成美观的艺术字体并保存为图案。这样可大大加快文字信息的显示速度。图案下载到模块后,可通过串口发送BMP命令以便将任意一张图片在液晶模块的任意位置上显示。 4.2 实时信息显示 由上位计算机生成的各种图形信息最终要在单片机的控制下实现相应信息的显示。图1所示是以AT89C52为例给出的单片机与VLCM320240的接口电路。 在图1所示的电路中,AT89C52的RXD端与VLCM320240RS232通信口的BUSY端相连,而将单片机TXD端与模块RX端相连,为保证波特率的准确性,应将AT89C52的晶振选取为11.0592MHz。此外,在编制相应的显示控制软件时,还应注意以下几点: ●串行口模式应设为模式1(1个起始位,8个数据位,1个停止位); ●波特率设应当为19200(TH1=TL1=0FDH,SMOD=1); ●在发送命令之前应检测模块为闲态(BUSY=1)?否则所发的命令可能失效; ●串口发送的必须是完整命令的ASCII码(汉字为其机内码,ASCII字符为其ASCII码),如命令“BMP0B000C0D”,实际由串口发送的内容是“424D503042303030433044”,顺序为: “B→M→P→0→B→0→0→0→C→0→D”; ●在每条命令的首末还要加上命令结束码“回车键"的ASCII码“0DH”,以表明该命令的结束。 ●若单片机AT89C52的串口已被占为它用,那么用一根口线来摸拟生成一个通讯协议为(19200,N,8,1)的软串口发送命令即可。 下面给出与上述电路配套的显示控制子程序: ; 位定义 BUSY BIT P3 ; 定义忙信号线 ; 数据字节定义 X V EQU 30H; 定义参数x XH V EQU 31H; 定义参数xH Y V EQU 32H; 定义参数y NUBER EQU 33H; 定义参数n WIDTH EQU 34H; 定义参数w HIGHT EQU 35H; 定义参数h ASC XH EQU 36H; 定义参数x高四位 ASC XL EQU 37H; 定义参数x低四位 ASC XHH EQU 38H; 定义参数xH高四位 ASC XHL EQU 39H; 定义参数xH低四位 ASC YH EQU 3AH; 定义参数y高四位 ASC YL EQU 3BH; 定义参数y低四位 ASC NH EQU 3CH; 定义参数n高四位 ASC NL EQU 3DH; 定义参数n低四位 ASC WH EQU 3EH; 定义参数w高四位 ASC WL EQU 3FH; 定义参数w低四位 ASC HH EQU 40H; 定义参数h高四位 ASC HL EQU 41H; 定义参数h低四位 ;初始化子程序 INIT SIO:MOV SCON,#50H;串行口方式1 MOV TMOD,#21H MOV TH1,#0FDH;波特率=19200? MOV TL1?#0FDH ORL PCON?#80H;SMOD=1 SETB TR1 ; 启动T1 RET ;设置汉字或ASCII字符显示首地址命令 ORDER HZA:MOV A? X V MOV R0? #REG ASC XH LCALL H ASC ;将参数x转换为 两个字节的ASCII码 MOV A?XH V MOV R0? #REG ASC XHH LCALL H ASC ; 将参数xH转换为 两个字节的ASCII码 MOV A?Y V MOV R0? #REG ASC YH LCALL H ASC ;将参数y转换为 两个字节的ASCII码 LCALL BUSY CK MOV A? #“H” ;发送命令码HZA 的ASCII码 LCALL SEND BYTE MOV A?#“Z” LCALL SEND BYTE MOV A? #“A” LCALL SEND BYTE MOV R0? #REG ASC XHH LCALL SEND CS;发参数H的ASCII码 MOV R0? #REG ASC XH LCALL SEND CS;发参数x的ASCII码 MOV R0? #REG ASC YH LCALL SEND CS;发参数y的ASCII码 LJMP ORDER END ;显示汉字串子程序 ORDER HZ? LCALL BUSY CK;检测模块闲状态 MOV A? #“H” LCALL SEND BYTE MOV A?#“Z” LCALL SEND BYTE MOV A? #“D” LCALL SEND BYTE NEXT HZ: CLR A; 取汉字的高八位内码 MOVC A,@A+DPTR INC DPTR;调整内码指针 LCALL SEND BYTE CLR A; 取汉字的低八位内码 MOVC A,@A+DPTR INC DPTR;调整内码指针 LCALL SEND BYTE DJNZ R7,NEXT HZ MOV A,#0DH;命令结束 LCALL SEND BYTE RET ;显示ASCII字符串子程序 ORDER ASCII: LCALL BUSY CK MOV A,#“H”; LCALL SEND BYTE MOV A,#“Z” LCALL SEND BYTE MOV A?#“D” LCALL SEND BYTE NEXT ASCII? CLR A ?取ASCII码 MOVC A?@A+DPTR INC DPTR LCALL SEND BYTE DJNZ R7?NEXT ASCII MOV A?#0DH LCALL SEND BYTE RET ;清屏子程序 ORDER CLR:LCALL BUSY CK MOV A,#“C” LCALL SEND BYTE MOV A?#“L” LCALL SEND BYTE MOV A? #“R” LCALL SEND BYTE LJMP ORDER END ;显示下载到模块内图形子程序 ORDER BMP:MOV A,X V MOV R0, #REG ASC XH LCALL H ASC ;将参数x转换为两个 字节的ASCII码 MOV A,XH V MOV R0?#REG ASC XHH LCALL H ASC ;将参数xH转换为两 个字节的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” ; 先发送命令码 BMP的ASCII码 LCALL SEND BYTE MOV A,#“M” LCALL SEND BYTE MOV A?#“P” LCALL SEND BYTE MOV R0, #REG ASC NH LCALL SEND CS;发参数n的ASCII码 MOV R0, #REG ASC XHH LCALL SEND CS;发参数xH的ASCII码 MOV R0,#REG ASC XH LCALL SEND CS;发参数x的ASCII码 MOV R0, #REG ASC YH LCALL SEND CS;发参数y的ASCII码 ORDER END:MOV A,#0DH ;发送命令结标 志“0DH” MOV SBUF,A JNB TI,$ CLR TI RET ;结束上次命令子程序 BUSY CK: MOV A,#0DH MOV SBUF,A JNB TI,$ CLR TI JNB BUSY?$ RET ;发送参数子程序 SEND CS: MOV A,@R0 LCALL SEND BYTE INC R0 MOV A,@R0 LCALL SEND BYTE RET ;发送字节数据子程序 SEND BYTE: MOV SBUF,A JNB TI,$ CLR TI RET TAB HZ: DB “汉字内码表” TAB ASCII: DB “ASCII字符表” VLCM320240可视化编程液晶显示模块由于可将系统中用到的画面预置到液晶显示模块内部,因而使得图形界面与中文界面的生成变得非常容易,因此,该模块无疑将是显示信息要求较高的应用领域中理想的显示器件选择之一。 |