带汉字库液晶显示模块在单片机系统的应用
带汉字库液晶显示模块在单片机系统的应用:
液晶显示器(LCD)作为当代高新技术的结晶产品,不但具有超薄平台、显示信息丰富的特点,而且还具有体积小、耗电省、寿命长、无辐射、抗震、防爆等其它类型显示器无可比拟的优点,因而是单片机应用系统中理想的显示器件,近年来已被广泛应用于单片机控制的工控仪表、机电设备、**仪器仪表、信息家电、工控产品、数据采集等系统中。带字库液晶显示器因它的编程快捷、方便、接口方式比较灵活等特点在单片机领域将会应用更广泛,本文将以介绍了一种内含GB2312**、二级简体汉字字库的图形点阵液晶显示模块,文中选用长沙太阳人电子有限公司的SMG16032ZK带汉字库液晶显示器(LCD),该模块具有8位并行、4位并行和2/3线串行三种硬件接口方式,利用其串行接口方式,可节省大量单片机硬件资源。本文重点介绍其在接口方式上灵活性的解析。
关键词 液晶显示器(LCD) 中文字库 串行接口 并行接口
Abstract
The liquid crystal display (LCD ) as the crystallizationproducts of the contemporary new and high technology, not only haveultrathin platforms , show the characteristic with abundantinformation, and still have small , power consumptive provinces ,longe-lived , there are no such incomparable advantages of othertype displays as radiation , antidetonation , explosion-proof,etc., it is the ideal display device in the application system ofthe one-chip computer, widely used in worker that one-chip computercontrol accuse of instrument , electromechanical equipment ,top-grade instrument and apparatus , infromation householdappliances , worker accuse of products , data person who gathersystem already in recent years. Bring word storehouse liquidcrystal display swift programming because of it have , help ,interface way getting flexible characteristic use extensive in thefield of one-chip computer, in order to recommend one implicitGB2312 one , second simplified Chinese character figure latticeliquid crystal , word of storehouses show the module this text,select for use Changsha the sun SMG16032ZK , people of ElectronicsCo., Ltd. bring Chinese character base liquid crystal display inthe article (LCD), this module has 8 running side by side , 4running side by side and three kinds of serial hardware interfaceways of Line 2/3, utilize its serial interface way, can save alarge number of one-chip computer hardware resources . This textintroduces its analysis of the flexibility in interface wayespecially.
Keyword Liquid-crystal display (LCD) Chinesefonts serial connection parallel connection
目录
一, 引言 ……………………………………………………………………………… 4
二, 带汉字库液晶显示器与不带字库液晶显示器优越性………………… 4
三, SMG16032ZK液晶显示器(LCD)的结构与工作原理…………………… 5
四, SMG16032ZK液晶显示器(LCD)与单片机的接口…………………… 7
五, SMG16032ZK液晶显示器(LCD)在串口方式上的应用……………… 7
六, SMG16032ZK液晶显示器(LCD)在并行接口上的应用……………… 16
七, 结束语…………………………………………………………………………… 24
参考文献
一、引言
液晶显示器(LCD)作为当代高新技术的结晶产品,不但具有超薄平台、显示信息丰富的特点,而且还具有体积小、耗电省、寿命长、无辐射、抗震、防爆等其它类型显示器无可比拟的优点,因而是单片机应用系统中理想的显示器件,近年来已被广泛应用于单片机控制的工控仪表、机电设备、**仪器仪表、信息家电、工控产品、数据采集等系统中。带字库液晶显示器因它的编程快捷、方便、接口方式比较灵活等特点在单片机领域将会应用更广泛,本文介绍一种新型的可与单片机串行接口也可并行接口且内部含有中文字库的中文图形点阵液晶显示模块。本文以长沙太阳人电子有限公司的SMG16032ZK带汉字库液晶显示器为例,比较带字库与不带字库点阵液晶显示器件的优越性,阐述SMG16032ZK汉字液晶显示器的结构与工作原理、SMG16032ZK汉字液晶显示器与单片机的接口技术,阐述、分析串行接口和并行接口两种接口方式在SMG16032ZK汉字液晶显示器的应用。通过阐述和分析为应用带字库液晶显示器(LCD)系统提供比较完善的参考。
二、带汉字库液晶显示器与不带字库液晶显示器优越性
目前国内在单片机系统中使用的普通的液晶显示器(LCD)大多数都是不自带汉字字库,以太阳人电子公司的SMG12864及其兼容产品使用比较多。此类普通的液晶显示器(LCD)占有ROM的容量大,因以图形方式显示汉字,每个汉字将占用32个字节的ROM,每个西文字符记录占用32字节,其中前16个字节为点阵数据,后16个字节无效,这对内部的FLASH闪存数量不是很大的单片机来说,使用起来就很受限制,而且在实际的应用过程中,如果要调用大量的显示内容,这时还要根据显示内容,运用汉字库生成程序生成字库文件,在应用时再加以调用,所以在实际应用当中编程比较烦琐。再加上这样所生成字库文件占用的内存空间比较大,对于内部的FLASH闪存数量较小的单片机,影响尤为重要。而带字库的液晶显示器(LCD),在实际应用当中可以直接调用它内部汉字地址即可,所以在编程时比普通的液晶显示器(LCD)更方便。此类普通的液晶显示器(LCD)与单片机的硬件接口电路复杂,而且只有一种接口方式。该类型液晶显示器(LCD)除使用8根数据线外,尚需使用片选、寄存器选择、读/写选择、使能控制等控制线来加以控制,使得对单片机的硬件资源占用较为严重,对于端口比较少的单片机,应用就非常受限制,同时该类液晶显示器(LCD)对近年来广为流行的小体积非总线型单片机硬件的不支持。软件编程繁复,通常的汉字显示方式是先根据所需要的汉字提取汉字点阵(如16×16点阵),将点阵文件存入ROM,形成新的汉字编码,而在使用时刚需要先根据新的汉字编码组成语句,再由MCU根据新编码提取相应的点阵进行汉字显示。在这种显示方式中,如果使用的流字数量较大或语句较多时,利用汉字的新编码组成语句将是一件十分繁琐而枯燥的工作。从而限制了液晶显示技术在许多领域的应用。
SMG16032ZK带字库的液晶显示器(LCD)其接口方式有8位并行、4位并行和2/3线串行模式三种方式来供选择,接口选择可以由硬件直接控制也可以由程序来控制,使用非常方便。此款液晶模块因自带汉字库对单片机的内存没有太多的要求而且在软件编程时只需调用汉字地址码即可。非常适用于现在市面上应用广泛的非总线型单片机的应用。因而带字库的液晶显示器(LCD)比普通的液晶显示器(LCD)在接口和软件编程上有更大的优越性,在应用时对单片机的选择空间更大。
三、SMG16032ZK液晶显示器(LCD)的结构与工作原理
SMG16032ZK的点阵数160X32(见图1:),可以显示两行,每行显示10个汉字。该模块的内部的字形ROM内含GB2312**、二级16X16点阵简体中文字库(8129个汉字)及128个16X8点阵半宽的ASCⅡ码英文字库。另外绘图显示画面提供一个64X256点的绘图区域。可用于绘制任意复杂的图形,同时内部还含有CGRAM可提供4组软件可编程规划的16X16点阵的造字功能,用于内部字库所没有的字形自建,该模块与单片机的硬件接口具有三种模式分别是8位并行、4位并行和2/3线串行模式。同时该模块还具有电源电压范围宽(2.7V~5.5V)、低功耗的特点。低电压、低功耗特性使得该模块非常适用于便携式系统的应用。SMG16032ZK模块可实现汉字,ASCⅡ码、点阵图形、曲线的同屏显示,并具有上、下、左、右移动当前显示屏幕及**屏幕的命令,具有光标显示、闪烁控制命令及液晶睡眠、唤醒、关闭显示命令。该模块内部还提供显示驱动负电压,而无须外接负电压故简化系统电源设计,同时模块内部还具有LED背光源。由上述特性可知该模块适用于各种单片机为核心构成的仪器仪表及家用电器作为器件显示。
表1 引脚说明
引脚 名称 方向 说明 引脚 名称 方向 说明
1 VSS - GND(0V) 11 DB4 I/O 数据4
2 VDD - Supply Voltage For Logic (+5v) 12 DB5 I/O 数据5
3 NCO - (悬空) 13 DB6 I/O 数据6
4 RS(CS) H/L H: Data L: Instruction Code 14 DB7 I/O 数据7
5 R/W(STD) H/L H: Read L:Write 15 PSB H/L H: Parallel Mode L: Serial Mode
6 E(SCLK) H,H/L EnableSignal
16 NC - NC
7 DB0 I/O 数据0 17 /REST H/L Reset Signal 低电平有效
8 DB1 I/O 数据1 18 NC - NC
9 DB2 I/O 数据2 19 A - LED+
10 DB3 I/O 数据3 20 K - LED-
图1 模块外型图
SMG16032ZK液晶显示器(LCD)的工作原理:
此款带字库的液晶显示器(LCD)采用台湾矽创电子的一款ST7920为主控芯片。此芯片为点阵LCD控制/驱动IC,可以显示字母、数字字符、中文字型及自定图象显示,它可以提供三种控制界面,分别是8位元微处理器界面,4位元微处理器界面及串行界面,所以的功能包含显示RAM,字型产生器,以及液晶驱动电路和控制器,都包含在一个单晶片里面,只要一个*小的微处理系统,就可以操作本LCD控制/驱动IC。ST7920的字型ROM包括8129个16X16点的中文字形以及126个16X8点半宽的字符字型,另外绘图显示画面提供一个64X256点的绘图区域(GDRAM)。可以和文字画面混合显示,而且ST7920内含CGRAM提供四组软体可程式规划的16X16造字功能。ST7920LCD驱动器由32个Common及64个Segment所组成,Segment驱动器的扩充可以视需要有ST7921Segment驱动器来提供扩充显示范围的任务。SMG16032ZK液晶显示器(LCD)由一颗ST7920和一颗ST7921两颗芯片来控制,其控制见原理图(图2)。
图2 控制原理图
四、SMG16032ZK液晶显示器(LCD)与单片机的接口
SMG16032ZK液晶显示器(LCD)有三种接口方式,分别为8位元微处理器界面,4位元微处理器界面(8/4并行接口)及串行界面
8/4并行接口,可以按照以下方式设定。
当 DL=“1”时,为8BIT MPU控制界面即8BIT并行接口
当 DL=“0”时,为4BIT MPU控制界面即4BIT并行接口
当 RE=“1”为扩充指令集(有特殊用途时需要设定)
当 RE=“0”为基本指令集
注意:同一指令之动作,不可同时改变DL及RE,要改变时需先改变DL以后再改变RE,这样才能确保标识正确设定。
串行接口与并行接口有PSB的高低电平来控制,既可以由硬件来控制也可以通过软件来控制。当PSB为高电平时,系统接收为并行接口方式;当PSB为低电平时,系统接收为串行接口方式。
五、SMG16032ZK液晶显示器(LCD)在串口方式上的应用
SMG16032ZK的2/3线串行接口方式非常适合于与硬件资源紧张的非总线型单片机接口,下面以AT89C2051单片机为例给出该模块与单片机的2/3线串行接口方式及时序。AT89C2051单片机与SMG16032ZK的硬件接口电路如(图3:)所示,可知SMG16032ZK与AT89C2051单片机接口时仅需占用任意两根I/O口线,除此之外还需要将模块的PSB端接低电平或由软件控制置低,模块即进入到串行接口方式。在串行模式下模块的SID引脚做数据线。SLCK引脚做时钟线,单片机通过SID数据并配合同步时钟线SCLK达到数据传输的目的。模块的RS(CS)引脚在这里接固定的高电平即片选始终有效状态,当系统中连接多个显示模块时,可以通过RS端选择不同的显示模块,构成3线串行接口方式。单片机与液晶显示模块的串行接口时序(如图4)。
图3 串行硬件接口
图4 串行接口时序
由图4可以看到单片机与液晶模块之间传送一个字节的数据共需24个时钟脉冲。首先单片机要给出数据传输起始位,这里以5个连续的“1”则内部传输被重置并且串行传输将被同步,紧接RW位用于选择数据的传输方向(读或写),RS位用于选择内部数据寄存器或指令寄存器,*后第8位固定为“0”,在接收到起始位及RW/RS的第1个字节后,一个字节的数据或指令将被分为两个字节来串行传送或接收,数据或指令的高4位,被放在第2个字节串行数据的高4位,其低4位则为“0”,数据或指令的低4位被放在第3个字节的高4位,其低4位也为0,如此完成一个字节指令或数据的传送。需要注意的是当有多个数据或指令要传送时,必须要等到一个指令完全执行完毕或数据的丢失,这是因为液晶模块内部没有发送/接收缓冲区。
具体参考程序如下:
;*cs----P3.1* *std---P3.3* *sclk-----------P3.0*
;*PSB----------P3.4 *(可由硬件直接控制)
;*RESET----------P3.5 (可由硬件直接控制)
;注:AT89C2051的晶振频率为12MHz
PSB BIT P3.4
RES BIT P3.5
CS BIT P3.1
STD BIT P3.3 ;串行数据线
SCLK BIT P3.0 ;串行时钟线
START EQU 30H ;起始字节
COM EQU 31H ;命令/数据
HDATA EQU 32H ;命令/数据字节高位
LDATA EQU 33H ;命令/数据字节低位
ASC EQU 34H ;ASCII数据单元
XPOS EQU 35H
YPOS EQU 36H
ORG 0000H
MAIN:
MOV SP,#60H
CLR RES
SETB RES
SETB CS ; 可以直接接电源VDD
CLR PSB ; 可以直接接地VSS
CALL LCDRESET ; 模块系统初始化
CALL HZKDIS
MOV START,#0F8H ; 写入命令(11111000)
MOV COM,#80H ;设定显示位置
CALL LCDWRITE
MOV START,#0FAH ;写数据 (11111010)
MOV COM,#10H ;显示字符
CALL LCDWRITE
MOV COM,#11H ;显示字符
CALL LCDWRITE
MOV START,#0F8H ; 写入命令(11111000)
MOV COM,#34H ;扩充功能设定
CALL LCDWRITE
MOV COM,#05H ;反白选择
CALL LCDWRITE
CALL DL40MS ;延时
CALL DL40MS
CALL DL40MS
MOV A,#055H ;绘图方式下写55数据
CALL LCDFILL
CALL CLEAR ;清屏
JMP MAIN
CLEAR: ;清屏子程序
MOV A,#00H
CALL LCDFILL
RET
LCDRESET:
LCALL DL1MS ;延时等待内部复位
MOV START,#0F8H ; 写入命令(11111000)
MOV COM,#30H ;使用基本指令集
LCALL LCDWRITE
MOV COM,#0CH
LCALL LCDWRITE ;整体显示ON
MOV COM,#01H ;清屏
LCALL LCDWRITE
LCALL DL1MS
MOV COM,#06H ;显示右移
LCALL LCDWRITE
LCALL DL1MS
RET
LCDWRITE: ;模块写入子程序
MOV A,COM ;送待发数据命令A
ANL A,#0F0H ;屏蔽低4位
MOV HDATA,A ;将高4位送HDATA单元
MOV A,COM ;取低4位
SWAP A ;高低4位互换
ANL A,#0F0H
MOV LDATA,A ;将低4位送LDATA单元
MOV A,START ;取起始字节
LCALL SENDBIT ;发送
LCALL DL1MS ;延时1ms
MOV A,HDATA
LCALL SENDBIT
LCALL DL1MS
MOV A,LDATA
LCALL SENDBIT
LCALL DL1MS
RET
HZKDIS: ;显示汉字子程序
MOV R5,#2
MOV START,#0F8H ; 写入命令(11111000)
MOV COM,#80H ;设定显示位置
LCALL LCDWRITE
MOV DPTR,#TAB ;指向文字型代码表
MOV A,#00H ;取汉字代码低位
DIS_1: MOV R6,#8 ;每行十个汉字
DIS_2: MOV START,#0FAH ;写数据 (11111010)
CLR A
MOVC A,@A+DPTR
MOV COM,A
CALL LCDWRITE ;写入显示模块
INC DPTR ;取汉字代码高位
CLR A
MOVC A,@A+DPTR
MOV COM,A
CALL LCDWRITE ;写入显示模块
INC DPTR
CALL DL40MS
DJNZ R6,DIS_2 ;未显示完则继续
MOV START,#0F8H ; 写入命令(11111000)
MOV COM,#90H ;**行地址
CALL LCDWRITE
DJNZ R5,DIS_1
MOV R5,#2
MOV START,#0F8H ; 写入命令(11111000)
MOV COM,#88H ;第三地址
CALL LCDWRITE
DIS_4: MOV R6,#08H
DIS_3:
MOV START,#0FAH ;写数据 (11111010)
CLR A
MOVC A,@A+DPTR
MOV COM,A
CALL LCDWRITE ;写入显示模块
INC DPTR ;取汉字代码高位
CLR A
MOVC A,@A+DPTR
MOV COM,A
CALL LCDWRITE ;写入显示模块
INC DPTR
CALL DL40MS
DJNZ R6,DIS_3 ;未显示完则继续
MOV START,#0F8H ; 写入命令(11111000)
MOV COM,#98H ;第四行地址
CALL LCDWRITE
DJNZ R5,DIS_4 ;遇“0”结束显示
RET ;写完两行则结束
LCDFILL: ;绘图
MOV R4,A
MOV XPOS,#0
MOV YPOS,#0
MOV START,#0F8H
MOV COM,#30H ;重新选择基本指令
CALL LCDWRITE
MOV COM,#01H ;清屏
CALL LCDWRITE
MOV COM,#36H ;扩充功能设定
CALL LCDWRITE
LCD_A1:
MOV YPOS,#0
LCD_A2:
MOV START,#0F8H
MOV A,XPOS ;设定绘图首地址
ADD A,#80H ;X坐标
MOV COM,A
CALL LCDWRITE
MOV A,YPOS ;Y坐标
ADD A,#80H
MOV B,A
MOV COM,A
CALL LCDWRITE
MOV START,#0FAH
MOV COM,R4
CALL LCDWRITE
CALL LCDWRITE
LCALL DL1MS
INC YPOS
MOV A,B
CJNE A,#87H,LCD_A2 ;*后一列地址为87H
INC XPOS
MOV A,XPOS
CJNE A,#20H,LCD_A1 ;*后行地址为80H+20H=0A0H
MOV XPOS,#0
LCD_A3:MOV YPOS,#0
LCD_A4:
MOV START,#0F8H
MOV A,XPOS ;设定绘图首地址
ADD A,#80H ;X坐标
MOV COM,A
CALL LCDWRITE
MOV A,YPOS ;Y坐标
ADD A,#80H
MOV B,A
MOV COM,A
CALL LCDWRITE
MOV START,#0FAH
MOV COM,R4
CALL LCDWRITE
CALL LCDWRITE
INC YPOS
MOV A,B
CJNE A,#8FH,LCD_A4 ;*后一列地址为8FH
INC XPOS
MOV A,XPOS
CJNE A,#20H,LCD_A3 ;*后行地址为80H+20H=0A0H
RET
SENDBIT: ;串行字节数据发送子程序
MOV R7,#08H ;发送8位
SEND_1: RLC A
MOV STD,C ;数据送数据线
CLR SCLK ;产生同步时钟
SETB SCLK
DJNZ R7,SEND_1 ;未发送完8位继续
RET
DL1MS: ;延时子程序
PUSH 00H ;0.1MS
PUSH 01H
PUSH 02H
MOV R2,#01H
WA_PA: MOV R0,#0FH
WA_PB: MOV R1,#0FH
DJNZ R1,$
DJNZ R0,WA_PB
DJNZ R2,WA_PA
POP 02H
POP 01H
POP 00H
RET
NOP
RET
DL40MS: ;延时子程序
PUSH 00H ;40MS
PUSH 01H
PUSH 02H
MOV R2,#01H
DL_PA: MOV R0,#0FFH
DL_PB: MOV R1,#0FFH
DJNZ R1,$
DJNZ R0,DL_PB
DJNZ R2,DL_PA
POP 02H
POP 01H
POP 00H
RET
NOP
NOP
NOP
RET
TAB:
DB " 中南大学欢迎您 "
DB "为需要学习为未来学习"
DB 00H
END
六、SMG16032ZK液晶显示器(LCD)在并行接口上的应用
SMG16032ZK液晶显示器(LCD)在并行接口方式上有两种方式,8位元微处理器界面,4位元微处理器界面(8/4并行接口),当PSB脚接高电平时(也可有程序控制),模块进入并行模式,在并行模式下可有指令DLFAAG来选择8-位或是4-位接口,主控系统将配合(RS,RW,E,DB0……DB7)来达成传输动作,从一个完整的流程来看,当设定地址指令后(CGRAM,DDRAM)若要读取数据时需要先DUMMYREAD一次,才会读取到正确数据**次读取时则不需DUMMY READ 除非又下设定地址指令才需要再次DUMMYREAD.在4-位传输模式中,没有一个八位的指令或数据将被分为两个字节来操作:较高4位(DB7-DB4)的资料将会被放在**个字节的(DB7-DB4)部分,而较低4位(DB3-DB0)的资料则会被放在**个字节(DB7-DB4)部分,至于相关的另4-位传输模式中的DB3-DB0接口未使用,相关时序具体见下图(如图:5)。
图5(a) 8-bit并行时序
图5(b) 4-bit并行时序
图5(c) MPU写资料到ST7920
5(d) MPU从ST7920读出资料
并行接口参考连接见(图6):
图6 并行硬件接口
具体参考程序如下:
;*RS--P3.1* *RW---P3.3* *E-----------P3.0*
;*PSB----------P3.4 *(可由硬件直接控制)
;*RESET----------P3.5 (可由硬件直接控制)
;注:AT89C2051的晶振频率为12MHz
RS equ P3.1 ;定义数据与指令线
RW equ P3.3 ;定义读写线
E equ P3.0 ;定义使能控制线
PSB equ P3.4 ;定义串并口选择线
RESET equ P3.5 ;定义复位线
XPOS EQU 20H ;定义列地址
YPOS EQU 21H ;定义行地址
FIRST_COL EQU 30H ;定义字符/汉字显示起始行
FIRST_ROW EQU 31H ;定义字符/汉字显示起始列
HZK_WID EQU 32H ;定义字符/汉字显示长度
HZK_LIN EQU 33H ;定义字符/汉字显示行数
FIRST_ADD EQU 34H ;定义字符/汉字显示起始位置
START_ADD EQU 35H ;起始位置缓存单元
FIRST_LIN EQU 36H ;起始行位置缓存单元
G_COLUMN EQU 37H ;定义图形显示起始行
G_ROW EQU 38H ;定义图形显示起始列
G_WID EQU 39H ;定义图形显示宽度
ORG 0000H
LJMP START
ORG 0100H
START: MOV SP,#60H
MOV G_WID,#00H
MOV G_ROW,#00H
SERB RESET
SETB PSB
CLR RW
QIU1:LCALL INITIL ;调用系统初始化程序
MOV A,#0CH ;开显示,关游标
LCALL INPUT
LCALL DELAY01
MOV A,#01H ;DDRAM清零,DDRAM地址计数器到00H
LCALL INPUT
LCALL DELAY01
MOVFIRST_ADD,#00H ;设定字符/汉字显示起始位置为**个显示单元
MOVFIRST_LIN,#01H ;设定字符/汉字显示起始位置为**行
MOV DPTR,#TAB ;需要显示汉字机内码数据表
MOVword_WID,#08H ;每行显示汉字个数
MOVword_LIN,#03H ;显示行数
MOV START_ADD,#00H ;清头个显示地址缓存单元
LCALL WORD_DISP ;调用汉字显示子程序
LCALL DELAY
LCALL DELAY
LCALL DELAY
;-----------------
;汉字显示子程序
;---------------
WORD_DISP:
MOV R1,WORD_WID
WORD10: LCALL DEADD ;调用调整地址单元子程序
MOV A,START_ADD ;设定DDRAM地址,显示位置地址
LCALLINPUT
WORD11:CLRA ;因为要连续输入机内码高位(区码)、低位(位码)
MOVC A,@A+DPTR ;所以要输入两次数据,如果是字符就是输入两个字符字符代码可以看说明书
LCALLDISPL ;DATA INPUT
INCDPTR ;显示地址会自动加一,如果连续写就不用再输入地址,空白可用某空白汉字或字符代替
CLR A
MOVC A, @A+DPTR
LCALLDISPL ;DATA INPUT
LCALL DELAY01
INC DPTR
DJNZ R1,WORD11
MOV R1,WORD_WID ;调整显示长度
INC FIRST_LIN ;跳到下一行
DJNZ WORD_LIN,WORD10
RET
INITIL: LCALLDELAY ;延时
;首先选择基本指令集
MOV A,#30H ;30---基本指令操作
LCALL INPUT
LCALL DELAY01
MOV A,#01H ;指令#01H为:**屏幕文字,把地址指针指向00H单元
LCALL INPUT ;
LCALL DELAY01
MOV A,#06H ;指定在资料写入或读取时,设定游标的移动方向及指定显示的移位
LCALL INPUT
LCALL DELAY01
MOV A,#0EH
LCALL INPUT
LCALL DELAY01
RET
;-----------------
;SEARCH ADDRESS
;目的是为了转换地址单元为DDRAM地址单元,以方便
;定义显示位置
;汉字显示DDRAM位置为:**行:80H----87H
; **行:90H----97H
;-----------------
DEADD: PUSH DPH ;地址转换子程序
PUSH DPL
PUSH A
MOV DPTR,#LINE_ADD ;LINE-ADD为地址表指针
MOV A,FIRST_LIN
MOVC A,@A+DPTR
ADD A,FIRST_ADD
MOV START_ADD,A
POP A
POP DPL
POP DPH
RET
LINE_ADD:
DB 00H,80H,90H,88H,98H.00H
READ: ;读数据子程序
MOV P3,#0FBH ;P3--CONTRAL I/O
NOP ;P3=11111011B RS=1 R/W=1 READDATA
SETBE ;E=E(I/O)
LCALL DELAY01
MOV A,P1 ;P1=DATA(I/O)
NOP
CLR E
RET
;--------------------------------------
CHK_BUSY: CLR RS ;读忙状态子程序
SETB RW
SETB E
HEHE1: JB P1.7,HEHE1
CLR E
RET
;--------------------------------------
;写数据子程序
;----------------------------
DISPL: LCALL CHK_BUSY ;P3--CONTRAL I/O
NOP ;P3=11111001B RS=1 WRITE DATA
SETB RS
CLR RW
SETBE ;E=E(I/O)
MOV P1,A ;P1=DATA(I/O)
LCALL DELAY01
NOP
CLR E
NOP
MOV P1,#0FFH
RET
;--------------------------------------
;写指令子程序
;----------------------------
INPUT: LCALL CHK_BUSY ;以确保上一指令/数据模块已经接收处理完
;P3--CONTRAL I/O
NOP ;P3=11111000B RS=0 WRITE INSTRUTION
CLR RS
CLR RW
SETBE ;E=E(I/O)
MOV P1,A ;P1=DATA(I/O)
LCALL DELAY01
NOP
CLR E
NOP
MOV P1,#0FBH
RET
;----------------------
;DELAY TIME
;---------------------
DELAY: MOV R5,#03H
C0: MOV R6, #0FFH
C1: MOV R7, #0FFH
C2: DJNZ R7, C2
DJNZ R6, C1
NOP
NOP
DJNZ R5, C0
RET
DELAY01: MOV R6, #6
D5: MOV R7, #08h
D6: DJNZ R7, D6
DJNZ R6, D5
RET
;------------------
DELAY02: MOV R6, #6
D52: MOV R7, #18h
D62: DJNZ R7, D62
DJNZ R6, D52
RET
TAB:
DB " 中南大学欢迎您 "
DB "为需要学习为未来学习"
DB 00H
END
七、结束语
通过对SMG16032ZK带字库的液晶显示器(LCD)在串行接口和并行接口上的解析,此系列的液晶显示器(LCD)跟不带字库液晶显示器(LCD)在接口上有无法比拟的优越性。其中串行接口方式可大量节省单片机的I/O口线且由于内含中文字库使得该模块显示汉字变得非常容易。同时也使非总线型单片机可使用图形点阵液晶显示模块作显示器件,从而拓宽了液晶显示器(LCD)的应用范围。相信此系列带中文字库的液晶显示器(LCD)将会成为国内单片机系统的*佳显示方案,并将获得越来越广泛的应用。
参考文献
1,李维諟 郭强:《液晶显示应用技术》,电子工业出版社 ,2000年3月
2,陆爱明:《单片机和图形液晶显示器接口应用技术》,电子产品世界,2001年9月
3,李华 李红青:《MCS-51系列单片机实用接口》,北京航空航天大学出版社,1993年8月
4,台湾矽创电子 《ST7920C33系列的芯片资料》,2005年3月
5,《SMG16032ZK使用说明书》,长沙太阳人电子有限公司 ,2005年1月
6,作者:刘国华