帶漢字庫液晶顯示模塊在單片機系統(tǒng)的應用
帶漢字庫液晶顯示模塊在單片機系統(tǒng)的應用:
液晶顯示器(LCD)作為當代高新技術的結晶產(chǎn)品,不但具有超薄平臺、顯示信息豐富的特點,而且還具有體積小、耗電省、壽命長、無輻射、抗震、防爆等其它類型顯示器無可比擬的優(yōu)點,因而是單片機應用系統(tǒng)中理想的顯示器件,近年來已被廣泛應用于單片機控制的工控儀表、機電設備、**儀器儀表、信息家電、工控產(chǎn)品、數(shù)據(jù)采集等系統(tǒng)中。帶字庫液晶顯示器因它的編程快捷、方便、接口方式比較靈活等特點在單片機領域將會應用更廣泛,本文將以介紹了一種內(nèi)含GB2312**、二級簡體漢字字庫的圖形點陣液晶顯示模塊,文中選用長沙太陽人電子有限公司的SMG16032ZK帶漢字庫液晶顯示器(LCD),該模塊具有8位并行、4位并行和2/3線串行三種硬件接口方式,利用其串行接口方式,可節(jié)省大量單片機硬件資源。本文重點介紹其在接口方式上靈活性的解析。
關鍵詞 液晶顯示器(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
二, 帶漢字庫液晶顯示器與不帶字庫液晶顯示器優(yōu)越性………………… 4
三, SMG16032ZK液晶顯示器(LCD)的結構與工作原理…………………… 5
四, SMG16032ZK液晶顯示器(LCD)與單片機的接口…………………… 7
五, SMG16032ZK液晶顯示器(LCD)在串口方式上的應用……………… 7
六, SMG16032ZK液晶顯示器(LCD)在并行接口上的應用……………… 16
七, 結束語…………………………………………………………………………… 24
參考文獻
一、引言
液晶顯示器(LCD)作為當代高新技術的結晶產(chǎn)品,不但具有超薄平臺、顯示信息豐富的特點,而且還具有體積小、耗電省、壽命長、無輻射、抗震、防爆等其它類型顯示器無可比擬的優(yōu)點,因而是單片機應用系統(tǒng)中理想的顯示器件,近年來已被廣泛應用于單片機控制的工控儀表、機電設備、**儀器儀表、信息家電、工控產(chǎn)品、數(shù)據(jù)采集等系統(tǒng)中。帶字庫液晶顯示器因它的編程快捷、方便、接口方式比較靈活等特點在單片機領域將會應用更廣泛,本文介紹一種新型的可與單片機串行接口也可并行接口且內(nèi)部含有中文字庫的中文圖形點陣液晶顯示模塊。本文以長沙太陽人電子有限公司的SMG16032ZK帶漢字庫液晶顯示器為例,比較帶字庫與不帶字庫點陣液晶顯示器件的優(yōu)越性,闡述SMG16032ZK漢字液晶顯示器的結構與工作原理、SMG16032ZK漢字液晶顯示器與單片機的接口技術,闡述、分析串行接口和并行接口兩種接口方式在SMG16032ZK漢字液晶顯示器的應用。通過闡述和分析為應用帶字庫液晶顯示器(LCD)系統(tǒng)提供比較完善的參考。
二、帶漢字庫液晶顯示器與不帶字庫液晶顯示器優(yōu)越性
目前國內(nèi)在單片機系統(tǒng)中使用的普通的液晶顯示器(LCD)大多數(shù)都是不自帶漢字字庫,以太陽人電子公司的SMG12864及其兼容產(chǎn)品使用比較多。此類普通的液晶顯示器(LCD)占有ROM的容量大,因以圖形方式顯示漢字,每個漢字將占用32個字節(jié)的ROM,每個西文字符記錄占用32字節(jié),其中前16個字節(jié)為點陣數(shù)據(jù),后16個字節(jié)無效,這對內(nèi)部的FLASH閃存數(shù)量不是很大的單片機來說,使用起來就很受限制,而且在實際的應用過程中,如果要調用大量的顯示內(nèi)容,這時還要根據(jù)顯示內(nèi)容,運用漢字庫生成程序生成字庫文件,在應用時再加以調用,所以在實際應用當中編程比較煩瑣。再加上這樣所生成字庫文件占用的內(nèi)存空間比較大,對于內(nèi)部的FLASH閃存數(shù)量較小的單片機,影響尤為重要。而帶字庫的液晶顯示器(LCD),在實際應用當中可以直接調用它內(nèi)部漢字地址即可,所以在編程時比普通的液晶顯示器(LCD)更方便。此類普通的液晶顯示器(LCD)與單片機的硬件接口電路復雜,而且只有一種接口方式。該類型液晶顯示器(LCD)除使用8根數(shù)據(jù)線外,尚需使用片選、寄存器選擇、讀/寫選擇、使能控制等控制線來加以控制,使得對單片機的硬件資源占用較為嚴重,對于端口比較少的單片機,應用就非常受限制,同時該類液晶顯示器(LCD)對近年來廣為流行的小體積非總線型單片機硬件的不支持。軟件編程繁復,通常的漢字顯示方式是先根據(jù)所需要的漢字提取漢字點陣(如16×16點陣),將點陣文件存入ROM,形成新的漢字編碼,而在使用時剛需要先根據(jù)新的漢字編碼組成語句,再由MCU根據(jù)新編碼提取相應的點陣進行漢字顯示。在這種顯示方式中,如果使用的流字數(shù)量較大或語句較多時,利用漢字的新編碼組成語句將是一件十分繁瑣而枯燥的工作。從而限制了液晶顯示技術在許多領域的應用。
SMG16032ZK帶字庫的液晶顯示器(LCD)其接口方式有8位并行、4位并行和2/3線串行模式三種方式來供選擇,接口選擇可以由硬件直接控制也可以由程序來控制,使用非常方便。此款液晶模塊因自帶漢字庫對單片機的內(nèi)存沒有太多的要求而且在軟件編程時只需調用漢字地址碼即可。非常適用于現(xiàn)在市面上應用廣泛的非總線型單片機的應用。因而帶字庫的液晶顯示器(LCD)比普通的液晶顯示器(LCD)在接口和軟件編程上有更大的優(yōu)越性,在應用時對單片機的選擇空間更大。
三、SMG16032ZK液晶顯示器(LCD)的結構與工作原理
SMG16032ZK的點陣數(shù)160X32(見圖1:),可以顯示兩行,每行顯示10個漢字。該模塊的內(nèi)部的字形ROM內(nèi)含GB2312**、二級16X16點陣簡體中文字庫(8129個漢字)及128個16X8點陣半寬的ASCⅡ碼英文字庫。另外繪圖顯示畫面提供一個64X256點的繪圖區(qū)域。可用于繪制任意復雜的圖形,同時內(nèi)部還含有CGRAM可提供4組軟件可編程規(guī)劃的16X16點陣的造字功能,用于內(nèi)部字庫所沒有的字形自建,該模塊與單片機的硬件接口具有三種模式分別是8位并行、4位并行和2/3線串行模式。同時該模塊還具有電源電壓范圍寬(2.7V~5.5V)、低功耗的特點。低電壓、低功耗特性使得該模塊非常適用于便攜式系統(tǒng)的應用。SMG16032ZK模塊可實現(xiàn)漢字,ASCⅡ碼、點陣圖形、曲線的同屏顯示,并具有上、下、左、右移動當前顯示屏幕及**屏幕的命令,具有光標顯示、閃爍控制命令及液晶睡眠、喚醒、關閉顯示命令。該模塊內(nèi)部還提供顯示驅動負電壓,而無須外接負電壓故簡化系統(tǒng)電源設計,同時模塊內(nèi)部還具有LED背光源。由上述特性可知該模塊適用于各種單片機為核心構成的儀器儀表及家用電器作為器件顯示。
表1 引腳說明
引腳 名稱 方向 說明 引腳 名稱 方向 說明
1 VSS - GND(0V) 11 DB4 I/O 數(shù)據(jù)4
2 VDD - Supply Voltage For Logic (+5v) 12 DB5 I/O 數(shù)據(jù)5
3 NCO - (懸空) 13 DB6 I/O 數(shù)據(jù)6
4 RS(CS) H/L H: Data L: Instruction Code 14 DB7 I/O 數(shù)據(jù)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 數(shù)據(jù)0 17 /REST H/L Reset Signal 低電平有效
8 DB1 I/O 數(shù)據(jù)1 18 NC - NC
9 DB2 I/O 數(shù)據(jù)2 19 A - LED+
10 DB3 I/O 數(shù)據(jù)3 20 K - LED-
圖1 模塊外型圖
SMG16032ZK液晶顯示器(LCD)的工作原理:
此款帶字庫的液晶顯示器(LCD)采用臺灣矽創(chuàng)電子的一款ST7920為主控芯片。此芯片為點陣LCD控制/驅動IC,可以顯示字母、數(shù)字字符、中文字型及自定圖象顯示,它可以提供三種控制界面,分別是8位元微處理器界面,4位元微處理器界面及串行界面,所以的功能包含顯示RAM,字型產(chǎn)生器,以及液晶驅動電路和控制器,都包含在一個單晶片里面,只要一個*小的微處理系統(tǒng),就可以操作本LCD控制/驅動IC。ST7920的字型ROM包括8129個16X16點的中文字形以及126個16X8點半寬的字符字型,另外繪圖顯示畫面提供一個64X256點的繪圖區(qū)域(GDRAM)。可以和文字畫面混合顯示,而且ST7920內(nèi)含CGRAM提供四組軟體可程式規(guī)劃的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為高電平時,系統(tǒng)接收為并行接口方式;當PSB為低電平時,系統(tǒng)接收為串行接口方式。
五、SMG16032ZK液晶顯示器(LCD)在串口方式上的應用
SMG16032ZK的2/3線串行接口方式非常適合于與硬件資源緊張的非總線型單片機接口,下面以AT89C2051單片機為例給出該模塊與單片機的2/3線串行接口方式及時序。AT89C2051單片機與SMG16032ZK的硬件接口電路如(圖3:)所示,可知SMG16032ZK與AT89C2051單片機接口時僅需占用任意兩根I/O口線,除此之外還需要將模塊的PSB端接低電平或由軟件控制置低,模塊即進入到串行接口方式。在串行模式下模塊的SID引腳做數(shù)據(jù)線。SLCK引腳做時鐘線,單片機通過SID數(shù)據(jù)并配合同步時鐘線SCLK達到數(shù)據(jù)傳輸?shù)哪康摹DK的RS(CS)引腳在這里接固定的高電平即片選始終有效狀態(tài),當系統(tǒng)中連接多個顯示模塊時,可以通過RS端選擇不同的顯示模塊,構成3線串行接口方式。單片機與液晶顯示模塊的串行接口時序(如圖4)。
圖3 串行硬件接口
圖4 串行接口時序
由圖4可以看到單片機與液晶模塊之間傳送一個字節(jié)的數(shù)據(jù)共需24個時鐘脈沖。首先單片機要給出數(shù)據(jù)傳輸起始位,這里以5個連續(xù)的“1”則內(nèi)部傳輸被重置并且串行傳輸將被同步,緊接RW位用于選擇數(shù)據(jù)的傳輸方向(讀或寫),RS位用于選擇內(nèi)部數(shù)據(jù)寄存器或指令寄存器,*后第8位固定為“0”,在接收到起始位及RW/RS的第1個字節(jié)后,一個字節(jié)的數(shù)據(jù)或指令將被分為兩個字節(jié)來串行傳送或接收,數(shù)據(jù)或指令的高4位,被放在第2個字節(jié)串行數(shù)據(jù)的高4位,其低4位則為“0”,數(shù)據(jù)或指令的低4位被放在第3個字節(jié)的高4位,其低4位也為0,如此完成一個字節(jié)指令或數(shù)據(jù)的傳送。需要注意的是當有多個數(shù)據(jù)或指令要傳送時,必須要等到一個指令完全執(zhí)行完畢或數(shù)據(jù)的丟失,這是因為液晶模塊內(nèi)部沒有發(fā)送/接收緩沖區(qū)。
具體參考程序如下:
;*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 ;串行數(shù)據(jù)線
SCLK BIT P3.0 ;串行時鐘線
START EQU 30H ;起始字節(jié)
COM EQU 31H ;命令/數(shù)據(jù)
HDATA EQU 32H ;命令/數(shù)據(jù)字節(jié)高位
LDATA EQU 33H ;命令/數(shù)據(jù)字節(jié)低位
ASC EQU 34H ;ASCII數(shù)據(jù)單元
XPOS EQU 35H
YPOS EQU 36H
ORG 0000H
MAIN:
MOV SP,#60H
CLR RES
SETB RES
SETB CS ; 可以直接接電源VDD
CLR PSB ; 可以直接接地VSS
CALL LCDRESET ; 模塊系統(tǒng)初始化
CALL HZKDIS
MOV START,#0F8H ; 寫入命令(11111000)
MOV COM,#80H ;設定顯示位置
CALL LCDWRITE
MOV START,#0FAH ;寫數(shù)據(jù) (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數(shù)據(jù)
CALL LCDFILL
CALL CLEAR ;清屏
JMP MAIN
CLEAR: ;清屏子程序
MOV A,#00H
CALL LCDFILL
RET
LCDRESET:
LCALL DL1MS ;延時等待內(nèi)部復位
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 ;送待發(fā)數(shù)據(jù)命令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 ;取起始字節(jié)
LCALL SENDBIT ;發(fā)送
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 ;寫數(shù)據(jù) (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 ;未顯示完則繼續(xù)
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 ;寫數(shù)據(jù) (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 ;未顯示完則繼續(xù)
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: ;串行字節(jié)數(shù)據(jù)發(fā)送子程序
MOV R7,#08H ;發(fā)送8位
SEND_1: RLC A
MOV STD,C ;數(shù)據(jù)送數(shù)據(jù)線
CLR SCLK ;產(chǎn)生同步時鐘
SETB SCLK
DJNZ R7,SEND_1 ;未發(fā)送完8位繼續(xù)
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-位接口,主控系統(tǒng)將配合(RS,RW,E,DB0……DB7)來達成傳輸動作,從一個完整的流程來看,當設定地址指令后(CGRAM,DDRAM)若要讀取數(shù)據(jù)時需要先DUMMYREAD一次,才會讀取到正確數(shù)據(jù)**次讀取時則不需DUMMY READ 除非又下設定地址指令才需要再次DUMMYREAD.在4-位傳輸模式中,沒有一個八位的指令或數(shù)據(jù)將被分為兩個字節(jié)來操作:較高4位(DB7-DB4)的資料將會被放在**個字節(jié)的(DB7-DB4)部分,而較低4位(DB3-DB0)的資料則會被放在**個字節(jié)(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 ;定義數(shù)據(jù)與指令線
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 ;定義字符/漢字顯示行數(shù)
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 ;調用系統(tǒng)初始化程序
MOV A,#0CH ;開顯示,關游標
LCALL INPUT
LCALL DELAY01
MOV A,#01H ;DDRAM清零,DDRAM地址計數(shù)器到00H
LCALL INPUT
LCALL DELAY01
MOVFIRST_ADD,#00H ;設定字符/漢字顯示起始位置為**個顯示單元
MOVFIRST_LIN,#01H ;設定字符/漢字顯示起始位置為**行
MOV DPTR,#TAB ;需要顯示漢字機內(nèi)碼數(shù)據(jù)表
MOVword_WID,#08H ;每行顯示漢字個數(shù)
MOVword_LIN,#03H ;顯示行數(shù)
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 ;因為要連續(xù)輸入機內(nèi)碼高位(區(qū)碼)、低位(位碼)
MOVC A,@A+DPTR ;所以要輸入兩次數(shù)據(jù),如果是字符就是輸入兩個字符字符代碼可以看說明書
LCALLDISPL ;DATA INPUT
INCDPTR ;顯示地址會自動加一,如果連續(xù)寫就不用再輸入地址,空白可用某空白漢字或字符代替
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: ;讀數(shù)據(jù)子程序
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 ;讀忙狀態(tài)子程序
SETB RW
SETB E
HEHE1: JB P1.7,HEHE1
CLR E
RET
;--------------------------------------
;寫數(shù)據(jù)子程序
;----------------------------
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 ;以確保上一指令/數(shù)據(jù)模塊已經(jīng)接收處理完
;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)在接口上有無法比擬的優(yōu)越性。其中串行接口方式可大量節(jié)省單片機的I/O口線且由于內(nèi)含中文字庫使得該模塊顯示漢字變得非常容易。同時也使非總線型單片機可使用圖形點陣液晶顯示模塊作顯示器件,從而拓寬了液晶顯示器(LCD)的應用范圍。相信此系列帶中文字庫的液晶顯示器(LCD)將會成為國內(nèi)單片機系統(tǒng)的*佳顯示方案,并將獲得越來越廣泛的應用。
參考文獻
1,李維諟 郭強:《液晶顯示應用技術》,電子工業(yè)出版社 ,2000年3月
2,陸愛明:《單片機和圖形液晶顯示器接口應用技術》,電子產(chǎn)品世界,2001年9月
3,李華 李紅青:《MCS-51系列單片機實用接口》,北京航空航天大學出版社,1993年8月
4,臺灣矽創(chuàng)電子 《ST7920C33系列的芯片資料》,2005年3月
5,《SMG16032ZK使用說明書》,長沙太陽人電子有限公司 ,2005年1月
6,作者:劉國華