版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、第第9章章 液晶顯示控制系統(tǒng)設計實例液晶顯示控制系統(tǒng)設計實例Proteus實例教程實例教程 常用的液晶顯示器有兩種,一種是“Alphanumeric LCDs”,只能顯示字符和數字;另一種是“Graphical LCDs”,既能顯示字符和數字,又能顯示漢字和圖形。液晶顯示器由液晶顯示屏及控制器兩部分組成,不同的液晶顯示器所對應的控制器不盡相同。 本章主要介紹字符液晶顯示器(HD44780控制器)和圖形液晶顯示器(T6963C控制器)的工作原理和漢字顯示控制實例。通常,控制器和液晶屏制作在一起。弄清液晶顯示控制器的工作原理是應用液晶顯示器的第一個步驟。本章主要內容本章主要內容9.1 HD4478
2、0的工作原理9.2 基于HD44780的液晶顯示應用實例9.3 T6963C控制器的工作原理9.4 基于T6963C的漢字顯示應用實例9.1 HD44780的工作原理的工作原理 HD44780是一種點陣字符液晶顯示控制器,具有以下特點: (1) 內置CGROM字符發(fā)生器,含192個固定字符,可供用戶顯示調用。 (2) 內置CGRAM字符發(fā)生器,用戶通過編寫程序最多可設計8個自定義字符,存放其中,供顯示調用。 (3) 內置DDRAM顯示數據存儲器,可以存放最多80個顯示字符。把CGROM或CGRAM中的顯示數據調入DDRAM,便可在顯示屏上顯示。DDRAM中的單元和顯示屏的位置存在一一對應關系。
3、 (4) 自動復位上電功能。 (5) 雙向8位或4位總線接口。 (6) 豐富的控制指令:清顯存、光標位置設置、數據輸入時光標或數據移位設置、開或關顯示屏等。 HD44780的三個內存之間的關系如圖9-1所示。 圖9-1 HD44780內存之間的關系 其中,192個常用的字符和數字都存在CGROM中,需顯示時由單片機把要顯示字符的顯示代碼從CGROM中調出寫入DDRAM,便可顯示在LCD顯示屏上;用戶自定義的字符由用戶編程先把自定義字符的點陣寫入CGRAM,然后再從CGRAM中讀出對應的顯示代碼,由單片機寫入DDRAM便可顯示了。 下面詳細介紹HD44780的各項功能。 9.1.1 初始化初始化
4、 HD44780模塊有兩個寄存器,一個用來輸入指令,另一個用來讀寫數據。指令用來告訴模塊怎樣存放或哪里存放數據。 如果模塊上電時,上升沿時間滿足圖9-2所示的要求,則模塊缺省執(zhí)行內置的上電初始化程序。 (1) 清顯存; (2) 功能設置(DL=1,8位接口;N=0,單行顯示;F=0,57點陣字體); (3) 顯示開關控制(D=0,關閉顯示;C=0,關閉光標;B=0,字符閃爍關閉); (4) 輸入方式設置(I/D=1,設DDRAM計數器為自動加1方式);DDRAM被選擇。 上電之后,顯示器將會忙大約15ms,用以模塊內部初始化。 如果上電時,上升沿時間trcc不能滿足圖9-2中的要求,或系統(tǒng)有不
5、同于缺省設置的參數需求(如顯示屏需雙行顯示等),則初始化程序必須從主機(比如單片機)發(fā)出。圖9-2 內部初始化的供電時序需求 推薦初始化指令如下:(1) 單行顯示,57點陣字體 30H,30H,06H,0EH,01H(十六進制)(2) 單行顯示,510點陣字體 34H,34H,06H,0EH,01H(十六進制)(3) 雙行顯示,57點陣字體 38H,38H,06H,0EH,01H(十六進制) LCD初始化具體應用程序舉例如下:INIT_LCD1: (初始化子程序)MOV A,#3CH; 送初始化指令到累加器,8位接口,雙行顯示, 510字體CALL WCOM ; 調指令寫入子程序MOV A,#
6、0EH ; 送初始化指令到累加器,開顯示,開光標,關字符 閃爍CALL WCOM ; 調指令寫入子程序MOV A,#06H ; DDRAM計數器自動加1,數據輸入時顯示不移位CALL WCOM ; 調指令寫入子程序MOV A,#01H ; 清顯示,光標返回顯示屏左上角CALL WCOM ; 調指令寫入子程序RET ; 返回 為了確保初始化程序的執(zhí)行,在調用初始化程序后,應調用一個15ms延時子程序。15ms的延時子程序如下,供讀者參考: MOV R5,#10 CALL DELAYDELAY: MOV R6,#50D1: MOV R7,#100 DJNZ R7,$ DJNZ R6,D1 DJNZ
7、 R5,DELAY RET 9.1.2 四位總線操作四位總線操作 HD44780模塊的數據線D0D7與主機接口可以選擇8位或4位兩種通訊方式,在初始化時指定。4位總線操作方式使用D4D7,D0D3懸空。8位十六進制代碼或顯示數據分兩次傳送,一次4位,高4位先傳送。4位總線操作方式編程時比8位稍復雜,但可以節(jié)省主機資源,模塊初始化時,按以下指令操作: 雙行顯示,57點陣字體: 28H,28H,06H,0EH,01H(十六進制) 9.1.3 顯示存儲器地址顯示存儲器地址 HD44780模塊的顯示RAM共可存放80個字符。如果顯示內容不多于80個字符,顯示屏上要顯示的內容與顯示RAM之間是一對一的映
8、射關系,顯示內容取決于輸入模式設置指令。 HD44780支持以下幾種字符液晶顯示屏: (1) 單行或雙行16字符顯示; (2) 四行16或20字符顯示; (3) 四行40字符顯示。 HD44780的顯示存儲器采用固定地址分配方案,即控制不同的液晶顯示屏,采用不同的顯存地址,而且顯存地址不能由用戶來改變。 下面以常用的字符液晶顯示器1602C為例,來說明HD44780的顯存地址分配。 表9-1是HD44780的一個四行16個字符的液晶顯示屏所對應的顯存地址表。 表9-1 HD44780 416顯示屏DDRAM地址分配一覽表 要想把一個字符顯示在液晶屏的某個位置,只需要把該字符的顯示代碼送到該位置
9、所對應地址指向的DDRAM中去即可。比如,要把某個字符顯示在屏幕的左上角位置,則把該字符的顯示數據送到80H中去。 對于1602C來說,它是一個兩行16字符的液晶顯示器,顯存地址的分配應該對應表9-1的前兩行。即第一行的16個字符顯示位置分別對應于DDRAM的80H8FH,第二行的16個字符顯示位置分別對應于DDRAM的C0HCFH。顯示一個字符時,應該先由主機通過8位或4位接口把顯存地址以命令方式送出,再由主機通過8位或4位接口把顯示字符代碼以數據方式送出。 9.1.4 指令表指令表 HD44780模塊有11條專用控制指令。認識各條指令的功能及用法,是使用液晶控制器HD44780的關鍵。 表
10、9-2是HD44780控制指令一覽表。 查看指令表 9.1.5 讀寫時序讀寫時序 HD44780模塊的讀操作主要完成主機從模塊內讀取狀態(tài)字或讀取顯示數據。只有主機判斷HD44780處于不忙狀態(tài)才能發(fā)送其他指令,如果主機與模塊匹配較好或模塊運行速度快時,也可以不進行判斷操作。寫操作主要完成主機向HD44780進行指令傳送或顯示數據傳送。圖9-3是HD44780的寫操作時序。圖9-3 HD44780的寫操作時序圖讀寫操作讀寫操作一定要按一定要按照照HD44780內部的讀內部的讀寫時序寫時序編編程程才能正才能正常進行。常進行。 圖9-3中,EN是模塊HD44780的使能端,必須給一個周期的脈沖信號才
11、能有效,不能為固定的高電平。EN為高電平的寬度不少于450ns,在程序實現上,可以調用一個周期為1000ns、占空比為50%的脈沖子程序產生,也可以用SETB和CLR指令搭配來完成。RS為命令或數據選擇端,當RS=0時,總線上傳送的是命令;當RS=1時,總線上傳送的是數據。RW為讀/寫選擇端,當RW=0時,為寫操作(主機向LCD傳送數據為寫);當RW=1時,為讀操作。D0D7為總線數據,可以傳送命令,也可以傳送數據,由RS來控制。 HD44780的讀操作時序可以參考寫操作時序,區(qū)別在于讀操作時RW=1。初學者暫時只掌握寫操作時序即可。 通常,在程序設計時,按照讀、寫時序分別編寫讀操作和寫操作子
12、程序。當需要寫入命令或數據時,只需調用相應的子程序即可。 下面是寫操作子程序(又分為寫命令和寫數據)的例子,請大家認真分析并牢記,在本章的實例中要頻繁使用。 WCOM: ; 寫命令子程序 MOV P0,A ; A中存放命令字 CLR RS ; RS=0,說明總線P0上傳送的為命令 CLR WWR ; R/W=0,為寫操作 CALL EN1 ; 調使能脈沖產生子程序 RETWDATA: ; 寫數據子程序MOV P0,ASETB RS ; RS=1,說明總線P0上傳送的為數據CLR WWRCALL EN1RETEN1: ; 使能脈沖產生子程序SETB EN ; E=1 CALL DE ; 延時 C
13、LR EN ; E=0CALL DE ; 延時RETDE: MOV R7,#5 ; 延時子程序DJNZ R7,$RET HD44780模塊的CGROM中存放的字符以及字符的顯示代碼如表9-3所示。用戶只能選擇192個字符中的字符來顯示,另外可以通過編程自定義8個字符來顯示。 在表表9-3中,有兩種字體,一種是57點陣字體,其實是88點陣字體,左右留3列,下方留一行;另一種是510點陣字體,每個字實際占用816點陣。 顯示數據按照表中的行、列坐標可以查出。高四位是列坐標,低四位是行坐標。比如第一行第二列的空格字符(即不顯示任何字符),它的顯示數據為00100000,即20H;第二行第四列的大寫A
14、,它的顯示數據為01000001,即41H。不過,在顯示固定字符時,一般不采用查表方式,而是在程序中以數據塊中存放字符串的形式來表示,具體見下一節(jié)實例。 9.1.6 CGROM 9.2 基于基于HD44780的的液晶顯示應用實例液晶顯示應用實例 任務:任務: 在Proteus中設計一個由單片機AT89C51控制的字符液晶顯示器LM016L顯示電路,完成以下功能: (1) 把程序中存放的兩個數據塊中的字符分別顯示在LM016L的第一行和第二行。顯示數據塊為: DBAT89C51-LM016L DBZhu Qinghui Test (2) 自定義一個特殊字符“ ”,寫入LCD的CGRAM,并取出該
15、字符使之顯示在LM016L的首行第16列。 訓練目的:訓練目的: (1) 了解HD44780的各引腳的功能; (2) 掌握HD44780的常用命令及編程方法; (3) 能夠把希望顯示的字符顯示在指定位置,能夠自定義字符并顯示。 LM016L是是Proteus ISIS中的一中的一個個2行行16列字符液晶列字符液晶顯示器件,相當于顯示器件,相當于實際器件實際器件1602C,它的控制器是它的控制器是HD44780。在第。在第8章章中,我們已經知道中,我們已經知道了了LM016L在在Proteus中存放的位中存放的位置和如何取出該元置和如何取出該元件。下面直接給出件。下面直接給出系統(tǒng)電路原理圖,系統(tǒng)
16、電路原理圖,如圖如圖9-4所示。所示。 9.2.1 Proteus電路設電路設計 XTAL218XTAL119ALE30EA31PSEN29RST9P0.0/AD039P0.1/AD138P0.2/AD237P0.3/AD336P0.4/AD435P0.5/AD534P0.6/AD633P0.7/AD732P1.01P1.12P1.23P1.34P1.45P1.56P1.67P1.78P3.0/RXD10P3.1/TXD11P3.2/INT012P3.3/INT113P3.4/T014P3.7/RD17P3.6/WR16P3.5/T115P2.7/A1528P2.0/A821P2.1/A922
17、P2.2/A1023P2.3/A1124P2.4/A1225P2.5/A1326P2.6/A1427U1AT89C51D714D613D512D411D310D29D18D07E6RW5RS4VSS1VDD2VEE3LCD1LM016L234567891RP11K圖圖9-4 Proteus中的電路原理圖中的電路原理圖 9.2.2 程序程序設設計 圖9-5 主程序流程圖 1. 主程序設計主程序設計 系統(tǒng)主程序設計流程如圖9-5所示,主要完成LCD初始化、DB塊顯示內容以及對CGRAM的讀、寫。LM016L上電后15ms內進行內部初始化,此時不能完成對部分命令的操作,所以在主程序中初始化后調用一個
18、延時子程序,以等待初始化的完成。LM016L的初始化程序如下:MOV A,#3CH; 設LCD為兩行顯示,字體 57,8線輸入方式CALL WCOM ; 調用寫命令子程序MOV A,#0EH ; 設置光標顯示方式CALL WCOM MOV A,#06H ; 設置顯示存儲器地址計數 器為自動加1方式CALL WCOM MOV A,#01H ; 清顯示屏并使光標位于 LCD首行首列 CALL WCOM 在主程序流程圖中,判斷累加器A中的數據為1時,把第一個DB塊中的字符顯示在LM016L的第一行,否則把第二個DB塊中的字符顯示在LM016L的第二行。顯示完DB塊內容后,向CGRAM中寫入用戶自定義
19、字符,并把該字符顯示在LCD首行末位。 2. 子程序設計子程序設計 子程序模塊設計的主要內容有顯示子程序、寫命令子程序、寫數據子程序、使能脈沖產生子程序、延時子程序、寫CGARM子程序和讀CGRAM子程序。 顯示子程序流程圖如圖9-6(a)所示。首先判斷累加器A的內容是否為1,如果為1,把LM016L的DDRAM首行首列地址80H送入累加器A中,調命令寫入子程序,把DDRAM的首地址80H通過AT89C51的P0口送給LM016L。如果累加器中的內容不為1,則把LM016L的DDRAM第二行首地址0C0H送入累加器A中,調命令寫入子程序,把0C0H通過AT89C51的P0口送給LM016L。即
20、先指定顯示數據應顯示的位置,再調用顯示數據寫入子程序,把DB塊內容逐字符送出。圖9-6 子程序流程圖圖9-6 子程序流程圖 寫命令子程序完成一個命令由單片機寫入LCD,本設計主要用來完成LCD顯示地址的寫入。先把顯示地址送入P0,再設RS=0、WR=0,即置LM016L為寫命令狀態(tài),最后調用使能脈沖產生子程序,即把指定的顯示地址送給LM016L。流程圖如圖9-6(b)所示。 寫數據子程序流程圖如圖9-6(c)所示。寫數據和寫命令子程序結構相似,不同的是寫數據子程序中送給P0口的是顯示數據(字符或數字的顯示代碼,見表9-3),LM016L的狀態(tài)設為RS=1、WR=0。 使能脈沖產生子程序流程圖如
21、圖9-6(d)所示,主程序中已經對E清零,所以子程序中置E為1,延時500ns,然后清E,再延時500ns,產生一個占空比為50%的使能脈沖信號。每次寫命令或寫數據時,必須調用該子程序才能完成相應的操作。兩個延時子程序,一個在主程序中調用,完成對LM016L的初始化延時,時間要在15ms以上。另一個在使能脈沖子程序中調用,時間要求大于450ns。流程圖略。 3. CGRAM的讀寫實現的讀寫實現 如果想顯示一個特殊的、CGROM中不存在的字符,可以向CGRAM中寫入自定義字符,然后再調入DDRAM中即可顯示。CGRAM共64字節(jié),可存入用戶自定義的57特殊字符8個或510特殊字符4個。CGRAM
22、地址為40H7FH。40H47H存放用戶的第一個57字符,依次類推。而40H中存放自定義字符的第一行編碼,47H中存放該字符的第八行編碼。如自定義字符“ ”,57(寬高),可以分8行向CGRAM中寫入數據。每行寫入一個字節(jié),高3位不用,設為000。LCD中對應顯示的點為1,不顯示的點為0,則40H47H中應分別寫入的低5位二進制編碼為:0 0 1 0 0 (04H)0 1 0 1 0 (0AH)1 0 0 0 1 (11H)0 1 0 1 0 (0AH)0 0 1 0 0 (04H)0 1 0 1 0 (0AH)0 0 1 0 0 (04H)0 0 0 0 0 (00H) 從數據的排列即可看出
23、該字符的形狀。寫CGRAM的具體程序如下: MOV A,#40H ; 設CGRAM首字符首行地址 CALL WCOM ; 調命令寫入子程序 SETB RS ; 設RS為1 MOV A,#04H ; 字符首行編碼值送累加器 CALL WDATA ; 調數據寫入子程序 MOV A,#0AH ; 字符第二行編碼值送累加器 CALL WDATA ; 調數據寫入子程序 MOV A,#11H ; 字符第三行編碼值送累加器 CALL WDATA ; 調數據寫入子程序 MOV A,#0AH ; 字符第四行編碼值送累加器CALL WDATA ; 調數據寫入子程序MOV A,#04H ; 字符第五行編碼值送累加器
24、CALL WDATA ; 調數據寫入子程序MOV A,#0AH ; 字符第六行編碼值送累加器CALL WDATA ; 調數據寫入子程序MOV A,#04H ; 字符第七行編碼值送累加器CALL WDATA ; 調數據寫入子程序MOV A,#00H ; 字符第八行編碼值送累加器CALL WDATA ; 調數據寫入子程序 由于LCD初始化時已設CGRAM地址指針為自動加1方式,所以只需設CGRAM的首行地址,以后順序寫入編碼即可。因為是57字符,所以寫入最后一行47H中的是#00H,即不顯示任何點。 上述自定義字符分別存入了CGRAM中的40H47H中,讀者還可以再自定義7個字符,分別存入CGRA
25、M中的48H4FH、50H57H、58H5FH、60H67H、68H6FH、70H77H、78H7FH中。只要模仿上段程序,先指定CGRAM首地址,順序寫入即可。 以上只是完成了字符的創(chuàng)建和存儲任務,如果想把自定義字符顯示在LCD上,還需要再編一小段程序才能實現。HD44780內部已定義好,CGRAM中40H47H、48H4FH、50H57H、58H5FH、60H67H、68H6FH、70H77H、78H7FH存入的自定義字符無論是什么,這8個字符對應的顯示代碼分別為00H、01H、02H、03H、04H、05H、06、07H。在上段程序中,因為我們把自定義字符存入了CGRAM的40H中,因此
26、,只要把顯示代碼00H寫入DDRAM的8FH中,上述自定義的符號“ ”就會顯示在LM016L的右上角位置。讀CGRAM或顯示自定義字符子程序的流程圖如圖9-7所示。 圖9-7 讀CGRAM子程序 在程序中用以下語句實現自定義字符的顯示:MOV A, #00H ; 把自定義自符顯示代碼送累加器AMOV B, #15 ; 設置顯示位置為第“1”行的第16列CALL LCDP1 ; 調第一行顯示子程序LCDP1 在子程序LCDP1中,執(zhí)行80H+15,即把第一行DDRAM首地址加15,計算出第一行第16列的DDRAM地址,然后再把自定義符號的顯示代碼寫入該顯示單元。 4. 匯編語言源程序匯編語言源程
27、序 查看源程序查看源程序 在Proteus ISIS 中雙擊單片機元件AT89C51,出現編輯元件對話框,在“Program File”一項中選擇已經編譯好的16進制程序文件“LM016L.hex”,單擊“OK”按鈕,程序即虛擬下載到了單片機AT89C51中。 程序下載到AT89C51后,選擇Proteus ISIS 的仿真運行控制按鈕 中的“Play”鍵即可進行系統(tǒng)軟、硬件的交互仿真。本例的仿真結果如圖9-8所示??梢钥吹剑谠O計中我們把自定義的特殊符號“ ”顯示在了LM016L的首行最后一列上。 9.2.3 Proteus調試與仿真調試與仿真 通過仿真結果可見,已成功實現了原設計目的。如果
28、要改變顯示信息,只需改變主程序中的顯示數據塊內容或向CGRAM寫入新的自定義字符即可。另外,LM016L的光標顯示方式多樣化,通過LCD初始化程序設置,可變換出不同的顯示方式。D714D613D512D411D310D29D18D07E6RW5RS4VSS1VDD2VEE3LCD1LM016L圖9-8 系統(tǒng)在Proteus ISIS中的仿真結果9.3 T6963C控制器的工作原理控制器的工作原理 T6963C是一種專用的、和LCD驅動電路以及數據顯示存儲器一起控制圖形液晶顯示的控制器,具有8位并行數據總線和幾位控制線,具有128字符的字符發(fā)生器ROM,能夠控制64KB的外部數據存儲器。在RAM
29、中,文本、圖形和外部字符發(fā)生器可方便地配制,顯示窗口可自由地移動。T6963C支持的LCD格式很寬泛,編程靈活,具有文本顯示方式、圖形顯示方式以及文本圖形相結合的顯示方式。 在Proteus中,LM3229是內置T6963C控制器的128240點陣的圖形液晶顯示器。接下來以LM3229為例來說明T6963C在液晶顯示器結構中所處的位置及作用。圖9-9是LM3229的內部結構圖。 9.3.1 LM3229內部結構內部結構 LM3229的核心部件是控制器T6963C,還有行列驅動電路、8KB顯示RAM、液晶面板和電源電路。 T6963C主要完成各種命令控制、數據讀寫等功能,內含CGROM字符產生器
30、,存儲了128種58字體的ASCII字符字??晒╋@示調用。8KB的顯示RAM主要用來存放顯示數據,它分為圖形區(qū)、文本區(qū)、CGRAM區(qū)及文本屬性區(qū),由用戶定義各區(qū)的容量。文本區(qū)和圖形區(qū)的首地址必須通過程序指定,它們都對應于LCD顯示屏的左上角位置。只要把顯示數據寫入文本區(qū)或圖形區(qū),便會在LCD屏的對應位置上顯示。CGRAM是在顯示RAM中建立的一個字符發(fā)生區(qū),由用戶寫入自定義字符并調入文本區(qū)來顯示。 T6963C的控制線有 、 、 、 、 、FS1和FS0。 和 是讀、寫控制端,低電平有效; 是使能端,低電平有效; 是命令/數據選擇端,當此端為高電平時,D0D7上傳送的是命令,當此端為低電平時,
31、D0D7上傳送的是數據; 是復位端,低電平有效;FS1和FS0是字體選擇端,共有四種字體可以選擇,即58、68、78、88,分別對應于FS1和FS0的以下取值:11、10、01、00。如果只有FS1一個端子,則認為FS0為0,這種情況下,通常把FS1接地,即選擇88字體。字體的選擇有兩個含義:一是當文本方式顯示時,顯存中所放的顯示數據一個字節(jié)對應于顯示屏上一個88點陣;二是當圖形方式顯示時,顯存中所放的顯示數據一個字節(jié)對應于顯示屏上一個81點陣,即一行8個點。WRRDCEC/DRESETRDWRCEC/DRESET T6963C的外部RAM主要用來存儲顯示數據(文本、圖形和外部字符發(fā)生數據)。
32、對于單屏LCD,文本、圖形和外部字符發(fā)生數據可以在64KB RAM顯存中自由分配存儲區(qū)。對于雙屏來說,LCDI分配的顯存地址為00007FFFH(最大32k),LCDII分配的顯存地址為8000FFFFH(最大32k)。 和HD44780不一樣,T6963C的外部顯存地址與顯示屏的對應關系不是固定不變的,而是存在一種靈活的對應關系,需在程序初始化中指定。了解顯示RAM中文本區(qū)和圖形區(qū)的編址方式是顯示控制的關鍵。因為外部RAM最大為64k,故顯示RAM的地址為16位,由單片機分兩字節(jié)寫入LCD,先送入低字節(jié),再送入高字節(jié),最后送入寫顯示地址命令代碼24H。顯示RAM區(qū)可分為文本顯示區(qū)和圖形區(qū)以及
33、文本屬性區(qū)(如必要)。 9.3.2 顯示顯示RAM的編址方式的編址方式 1. 文本顯示區(qū)文本顯示區(qū) 在程序中,必須先指定文本顯示區(qū)的首地址,它與顯示屏左上角位置對應,占據顯示屏上一個字符位,即88點陣。每行240個點可顯示30(通常用20H來表示)個字符,每列128個點可顯示16行。文本區(qū)的編址方式如表9-4所示。其中,TH是用戶通過程序定義的文本區(qū)首地址,TA是字符寬度(FS1接地時為8),CL為列數1,m為行數1。在程序中設定了TH、TA和m、CL值后,即可計算出文本顯示區(qū)的地址。表9-4 文本顯示區(qū)編址方式 2. 圖形顯示區(qū)圖形顯示區(qū) 圖形顯示區(qū)首地址的設置應和文本區(qū)不一樣,但它也對應于
34、LCD顯示屏的左上角位置。地址的編址方式和表9-4基本一致,不同的是這里的m指的是點行數。另外通常使用GH代替TH,GA代替TA。 當文本顯示區(qū)和圖形顯示區(qū)同時使用時,圖形和文字重疊顯示,重疊的方式可選擇“與”、“或”、“異或”邏輯進行點對點的運算。 1. 寫操作寫操作 T6963C有一套專用指令,如讀狀態(tài)字、顯示RAM區(qū)域設置、顯示地址設置、顯示方式和光標形狀設置、數據一次讀寫和自動讀寫設置以及位操作等。T6963C的命令共有三種格式:一種是單字節(jié)命令,無參數;另一種是雙字節(jié)命令,除了命令代碼還帶有單字節(jié)參數;還有一種是三字節(jié)命令,即帶有雙字節(jié)參數,比如寫顯示RAM地址命令。帶雙字節(jié)參數的命
35、令從單片機通過P0口發(fā)送給LCD的順序是:先發(fā)送低字節(jié)參數D1,再發(fā)送高字節(jié)參數D2,最后發(fā)送命令代碼字節(jié)COM。參數和命令寫入時靠LM3229的 口來區(qū)分應存入T6963C的是命令寄存器還是數據寄存器。 9.3.3 T6963C的讀、寫操作的讀、寫操作 C/DC/DC/D寫操作程序流程如圖9-10所示。 2. 讀操作讀操作 讀操作分兩種,一種是單片機從LCD中讀取狀態(tài)字,另一種是單片機從LCD的顯存中讀取數據。讀狀態(tài)字是必須的,因為單片機每次寫指令或讀寫數據時,都需要判斷LCD是否準備好。只有狀態(tài)字的低兩位S0和S1同時為1,才認為可以執(zhí)行讀寫命令和數據。讀數據操作則應先判斷狀態(tài)位,再讀入數
36、據。在一次讀數據操作時,將當前顯示地址指針所指的單元的數據取出到寫入數據棧中,讀數據時將該數據提出送入數據總線上供單片機獲取。在自動讀操作時,連續(xù)的讀操作將連續(xù)地從顯示存儲器中讀取數據,顯示地址自動加1。 由于T6963C使用了硬件初始化設置,使得其指令功能集中于顯示功能的設置上,從而加強了T6963C的顯示控制能力。 T6963C的指令表如表9-5所示。 下面對表9-5中的指令進行詳細講解,以便讀者在編程時能正確應用這些指令。 1. 讀狀態(tài)字讀狀態(tài)字(STATUS READ)格式格式:單字節(jié):單字節(jié) 9.3.4 T6963C的的指令指令 C/DC/DS7S6S5S4S3S2S1S0狀 態(tài) 字
37、含 義取值及含義S0(STA0)指令讀寫狀態(tài)1:準備好 0:忙S1(STA1)數據讀寫狀態(tài)1:準備好 0:忙S2(STA2)數據自動讀狀態(tài)1:準備好0:忙S3(STA3)數據自動寫狀態(tài)1:準備好0:忙S4(STA4)未用S5(STA5)控制器運行檢測可能性1:可能0:不能S6(STA6)屏讀/拷貝出錯狀態(tài)1:出錯0:正確S7(STA7)閃爍狀態(tài)檢測1:顯示0:關顯示 T6963C的狀態(tài)字由七位標志位組成,如表9-6所示。 表9-6 T6963C狀態(tài)字 每次對每次對T6963C的軟件操作之前都要進行判的軟件操作之前都要進行判“忙忙”。僅在不。僅在不“忙忙”狀態(tài)下,狀態(tài)下,計算機對計算機對T696
38、3C的操作才有效。的操作才有效。但但Proteus仿真時可以省去。仿真時可以省去。 2. 地址指針設置地址指針設置(REGISTER SET)格式格式:D1D2(1字節(jié)字節(jié))+指令(指令(1字節(jié))字節(jié)) 其中,D1D2為地址參數,指令各位分布如下:C/DC/D00100N2N1N0 該指令為雙參數(D1,D2)指令。指令代碼中的N2、N1、N0取值“1”為有效,“0”為無效,而且不能同時為“1”,根據N的取值,該指令有三種含義,如表9-7所示。D1D2指 令 代 碼功 能水平位置(低7位有效)垂直位置(低5位有效)21H(N0=1)光標地址設置偏置地址(低5位有效)00H22H(N1=1)CG
39、RAM偏置地址設置低字節(jié)高字節(jié)24H(N2=1)顯示地址設置 (1) 光標地址設置 D1-D2-21H。 T6963C的光標控制是獨立于顯示地址控制的。它專門有一個光標指針寄存器存放當前的光標地址,而且光標地址不會自動修改。該指令設置或修改了光標在顯示屏上的位置。光標的地址以二維坐標形式,以字符為單位設置。水平方向的位置由D1參數確定,取值范圍為00H4FH(180字符位),表示顯示屏左起第幾個字符位;垂直方向由D2參數確定,取值范圍為00H1FH(132字符行),表示顯示屏上起第幾個字符行。光標在雙屏結構顯示屏上的垂直方向位置的規(guī)定為上半屏為00H0FH,下半屏為10H1FH。這個規(guī)定不考慮
40、顯示屏的實際點行數。 (2) CGRAM偏置地址設置D1-D2-22H。 T6963C可以管理2KB的CGRAM。在顯示存儲器內要劃出2KB的區(qū)域作CGRAM使用,只需確定16位地址的高5位(ad15ad11)即可。CGRAM偏置地址寄存器就是用來存儲這個地址值的。用戶可以通過將這個寄存器的內容與自定義字符代碼值組合出顯示存儲器中該字符模數組所在的地址: ad15 ad14 ad13 ad12 ad11 ad10 ad9 ad8 ad7 ad6 ad5 ad4 ad3 ad2 ad1 ad0 偏置地址值(5位) 字符代碼值(8位) 0 0 0 ad2ad0從07指向該字符8個字節(jié)的字模。 偏置
41、地址的設置由參數D1的低5位值來實現,D2設置為00H。例如:指令03H-00H-22H 設置字符代碼為80H。那么該字符字模組在顯示存儲器的首地址為1C00H,字模存放在1C00H1C07H單元內。 (3) 顯示地址設置D1-D2-24H。 該指令將計算機要訪問的顯示存儲器的地址寫入T6963C的地址指針計數器中。該地址指針計數器為16位字長,需要兩個字節(jié)。D1為低8位地址,D2為高8位字地址。 3. 顯示區(qū)域設置顯示區(qū)域設置(CONTROL WORD SET) 該指令為雙參數指令,它將在顯示存儲器內劃分出各顯示區(qū)域的范圍。它由設定顯示區(qū)域的首地址和寬度來確定該顯示區(qū)域的范圍,同時也確定了顯
42、示存儲器單元與顯示屏上各點像素的對應關系。格式格式:D1D2(1字節(jié)字節(jié))+指令(指令(1字節(jié))字節(jié)) 其中,D1D2為地址參數,指令各位分布如下:C/DC/D010000N1N0 該指令中N1、N0有四種組合,每個組合有不同的含義。具體功能如表9-8所示。N1 N0D1D2指 令 代 碼功 能0 0低字節(jié)高字節(jié)40H文本顯示區(qū)首地址0 1字節(jié)數00H41H文本顯示區(qū)寬度1 0低字節(jié)高字節(jié)42H圖形顯示區(qū)首地址1 1字節(jié)數00H43H圖形顯示區(qū)寬度表9-8 指令功能 (1) 文本顯示區(qū)首地址設置 D1-D2-40H。該指令設置了文本顯示區(qū)在顯示存儲器中的始地址。該地址對應顯示屏上左上角的第一個
43、字符位(home)。定時間定間隔地修改這個地址將會產生顯示畫面的平滑滾動。參數D1為該地址的低8位,D2為該地址的高8位。 (2) 文本顯示區(qū)寬度設置D1-00H-41H。該指令規(guī)定了在文本顯示區(qū)作為一行顯示所占的單元(字節(jié))數。該數據與文本顯示首地址一起確定了顯示單元與顯示屏上各點像素的對應關系。具體見表9-4所示。 當設置的顯示區(qū)寬度超過了實際顯示屏上顯示所需的單元數時,超出的部分不顯示。但是要注意的是這里使用軟件設置的顯示區(qū)域寬度僅是T6963C作為計算每行顯示數據傳輸的起始單元地址的參數,實際傳輸的字節(jié)數已由硬件引腳設置完成。比如MGLS240128T模塊,通常為了計算地址方便,設置文
44、本顯示區(qū)域寬度為20H(32字節(jié)),但T6963C實際一行傳輸數據為40個字節(jié),也就是說T6963C將所設置的下一行單元的數據也作為這一行的數據傳輸了,只是由于屏點陣數小于所傳輸的數據量不顯示而已。但是T6963C在傳輸下一行數據時要使用這個寬度參數計算起始單元的地址。 (3) 圖形顯示區(qū)寬度設置 D1-00H-43H。 該指令規(guī)定了在圖形顯示區(qū)中作為一行顯示所占的單元(字節(jié))數。該數據與圖形顯示首地址一起確定了顯示單元與顯示屏上各像素組(字節(jié))的對應關系。 4. 顯示方式設置顯示方式設置(MODE SET) 該指令為顯示方式的設置,無參數。它的幾個設置位功能如下: CG位:字符發(fā)生器選擇位。
45、當CG=0時,啟用內部字符發(fā)生器CGROM,該字符庫有128種字符,其代碼為00H7FH;同時可以建立具有128種88點陣的自定義字符發(fā)生器CGRAM,其字符代碼規(guī)定在80HFFH范圍內;當CG=1時,禁止內部CGROM,字符顯示完全取自自定義字符發(fā)生器CGRAM,該字符庫為2KB容量,字符代碼為00HFFH。 指令格式如下,其中,N2、N1、N0三位為顯示方式設置位。C/DC/D00100N2N1N0 N2、N1、N0組合所產生的顯示方式如表9-9所示。 表9-9 顯示方式設置位N2 N1 N0顯 示 方 式說 明0 0 0邏輯“或”文本與圖表以邏輯“或”的關系合成顯示0 0 1邏輯“異或”
46、文本與圖表以邏輯“異或”的關系合成顯示0 1 1邏輯“與”文本與圖表以邏輯“與”的關系合成顯示1 0 0文本屬性文本顯示特征以雙字節(jié)表示 設置文本屬性顯示方式后,圖形顯示區(qū)將轉換成文本屬性區(qū),用于存儲字符的屬性代碼,其地址與顯示屏上的對應關系與文本顯示區(qū)相同。因此,在顯示屏某位置上顯示的字符由雙字節(jié)數據組成。第一字節(jié)為字符代碼,存儲在文本顯示區(qū)內;第二字節(jié)為屬性代碼,存儲在文本屬性區(qū)內。這種表示方法與計算機的字符顯示數據相似。在文本屬性顯示方式下,字符的屬性代碼由一字節(jié)的低4位組成:D7D6D5D4D3D2D1D0d3d2d1d0 其中,d3位是字符閃爍控制位。d3=1為閃爍。 d2、d1、d
47、0組合功能如表9-10所示。d2 d1 d0顯顯 示示 數數 據據0 0 0正向顯示正向顯示1 0 1負向顯示負向顯示0 1 1禁止顯示禁止顯示(正向正向)1 0 0禁止顯示禁止顯示(負向負向)表9-10 d2、d1、d0組合功能 5. 顯示狀態(tài)設置顯示狀態(tài)設置(DISPLAY MODE) 該指令設置了當前的顯示狀態(tài),無參數。該指令有4個設置位,每一位都代表一種顯示狀態(tài)的設置,它們可以同時有效,也可以部分有效,也可以都無效。 指令格式如下,其中,N2、N1、N0三位為顯示方式設置位。C/DC/D1001N3N2N1N0 這4個設置位的功能如下:N0:光標閃爍設置開關N0=1為啟用光標閃爍,N0
48、=0為禁止光標閃爍。N1:光標顯示設置開關N0=1為啟用光標顯示,N0=0為禁止光標顯示。N2:文本顯示設置開關N0=1為啟用文本顯示,N0=0為禁止文本顯示。N3:圖形顯示設置開關N0=1為啟用圖形顯示,N0=0為禁止圖形顯示。 在文本顯示與圖形顯示合成顯示時,文本顯示開關與圖形顯示開關應同時啟用,在文本屬性顯示方式下,圖形顯示開關也應啟用,只是特性不同。光標顯示及光標閃爍功能的啟用要在文本顯示啟用時進行,否則無效。 6. 光標形狀設置光標形狀設置(CURSOR PATTERN SELECT) 該指令設置光標的顯示形狀,無參數補充。指令中的三個設置位設置了光標點數。光標以8點列N行顯示,行的
49、取值由設置位N2、N1、N0組合完成,指令格式如下:C/DC/D10100N2N1N0 光標設置位的取值與光標顯示形狀的對應關系如圖9-11所示。圖圖9-11 光標顯示的形狀設置光標顯示的形狀設置 7. 數據自動讀寫設置數據自動讀寫設置(DATA AUTO READ/WRITE) 使用該指令將進入或退出數據的自動讀或自動寫方式。在自動讀或自動寫方式中,計算機連續(xù)地將顯示數據寫入顯示存儲器中或從顯示存儲器中讀取數據。在每次讀或寫操作后,顯示地址自動加1。進入自動讀方式或自動寫方式時,狀態(tài)位將由S2(自動讀方式)或S3(自動寫方式)代替S1和S0。在自動讀或自動寫方式完成時要輸入退出自動讀寫方式的
50、指令。在自動讀寫方式中寫入其他指令是無效的。指令格式如下:C/DC/D101100N1N0 該指令中有兩位設置位N1、N0。這兩位將產生三個子指令,如表9-11所示。C/DC/D表9-11 數據自動讀寫方式選擇位功能N1 N0指 令 代 碼功 能0 0B0H進入自動寫方式0 1B1H進入自動讀方式0 *B2H/B3H退出自動讀寫方式自動讀寫方式的操作流程圖如圖9-12所示。C/DC/D圖9-12 自動讀寫方式操作流程圖 8. 數據一次讀寫設置數據一次讀寫設置(DATA READ/WRITE) 該指令是一次讀寫數據操作指令。在每次讀寫數據操作后,顯示地址都要根據指令代碼的設置而修正:加1、減1或
51、不變。該指令在寫入數據時,所帶的參數就是所要寫入的顯示數據。當讀數據操作時,該指令不帶參數,直接寫入指令代碼,T6963C在接收到該指令后將當前顯示地址計數器所指的顯示存儲器單元的內容送入接口部的數據棧內,緊接著計算機的讀數據操作將其讀出。指令格式如下:C/DC/D11000N2N1N0 該指令有三個設置位N2、N1、N0,它們的組合功能如表9-12所示。C/DC/D表9-12 數據一次讀寫方式選擇位功能參數D1N2 N1 N0指 令 代 碼功 能數據0 0 0C0H數據寫,地址加10 0 1C1H數據讀,地址加1數據0 1 0C2H數據寫,地址減10 1 1C3H數據讀,地址減1數據1 0
52、0C4H數據寫,地址不變1 0 1C5H數據讀,地址不變 9. 屏讀屏讀(一字節(jié)一字節(jié))設置設置(SCREEN PEEK) 所謂屏讀,就是指把顯示屏上顯示的內容取出來作為數據提供給計算機使用,這個內容為一個字節(jié)的當前顯示數據,它有可能是圖形顯示數據,也可能是文本顯示的某一個字符上的某一行字模數據,更多的是文本與圖形合成顯示的內容。屏讀指令將使計算機能夠直接獲得顯示屏上的數據,這是其他控制器所沒有的功能。屏讀指令要求當前顯示地址指針指在圖形顯示區(qū)內,所以屏讀指令只有在圖形顯示功能有效時才能使用。在屏讀指令寫入后要立即檢查狀態(tài)S6,判斷該指令的執(zhí)行是否正確。如果執(zhí)行正確,就可以讀取數據。 該指令是
53、無參數指令,且不能應用在文本屬性顯示方式下。 C/DC/D屏讀指令的執(zhí)行流程如圖9-13所示。C/DC/D圖9-13 屏讀操作流程圖 10. 屏拷貝屏拷貝(一行一行)設置設置(SCREEN COPY) 所謂屏拷貝,是指把顯示屏上某一行顯示的內容取出來作為圖形顯示數據返回圖形顯示區(qū)相應的顯示單元內,這個內容為一行數個字節(jié)的當前顯示數據,它有可能是圖形顯示數據,也可能是文本顯示的某一個字符上的某一行字模數據,更多的是文本與圖形合成顯示的內容。屏讀指令將使計算機能夠直接獲得顯示屏上的數據,這是其他控制器所沒有的功能。屏拷貝指令要求當前顯示地址指針指在圖形顯示區(qū)內,所以屏拷貝指令只有在圖形顯示功能有效
54、時才能使用。在屏拷貝指令寫入后要立即檢查狀態(tài)S6,判斷該指令執(zhí)行是否正確。如果執(zhí)行正確,就可以讀取數據。屏拷貝指令的執(zhí)行流程和圖9-12類似。 該指令是無參數指令,不能應用在文本屬性顯示方式下,也不能應用在雙屏結構的液晶顯示器件的控制上。指令格式如下:C/DC/D11101000 11. 位操作位操作(BIT SET/RESET) 該指令可以對當前顯示地址指針所指的顯示單元中的數據的任一位寫“0”或寫“1”。操作位由N2、N1、N0確定,它們的取值為07,對應著數據的D0D7位。N3為寫入的數據,是“1”表示該位將置“1”;是“0”表示該位將清“0”。該指令一次僅能操作一位。該指令無參數。指令
55、格式如下:C/DC/D1111N3N2N1N0 12. 數據寫操作數據寫操作(DATA WRITE) 數據寫操作是向數據通道里寫數據,指令后所帶參數的寫入也同樣是這樣操作的。一次寫數據或參數時,該數據將寫入到數據棧中,再由緊接著寫入的指令代碼決定該數據是作為數據寫入當前的顯示地址所指的單元內,還是作為參數寫入相應的寄存器中。C/DC/D 13. 數據數據讀讀操作操作(DATA READ) 數據讀操作是從數據通道里讀取數據,在一次讀數據操作時,讀數據指令將當前顯示地址指針所指的單元的數據取出寫入數據棧中,讀數據操作將該數據提出送入數據總線上供計算機獲取。在自動讀操作時連續(xù)讀操作將連續(xù)從顯示存儲器
56、內讀取數據,顯示地址將自動加1。9.4 基于基于T6963C的漢字顯示應用實例的漢字顯示應用實例 以圖形液晶顯示器LM3229為例,來說明T6963C的漢字顯示原理和應用。首先給出系統(tǒng)硬件電路,如圖9-14所示。 單片機采用AT89C51,單片機與圖形液晶顯示器之間采用直接訪問方式。AT89C51的P0口接LM3229的D0D7,傳送數據或控制命令,同時P0口作為對外尋址的低8位地址。AT89C51的P2口接LM3229的控制端,即P2.7通過反相器后接LM3229的使能端 ,P2.0接LM3229的命令/數據選擇端 ,P2口作為對外尋址的高8位地址。當傳送命令時,P2、P0構成的16位地址為
57、8100H;當傳送數據時,P2、P0構成的16位地址為8000H。具體的命令或數據在P0和D0D7之間傳送。LM3229的 和 分別接AT89C51的 和 。這種直接訪問方式可使編程簡單化。圖9-14 Proteus中電路原理圖DB0DB1DB2DB3DB4DB5DB6DB7DB0DB7DB1DB2DB3DB4DB5DB6CE15RD5C/D4VSS1VDD2VO3WR6D07FS119D18D29D310D411D512D613D714RST16MD218HALT20VEE17LCD1LM3229XTAL218XTAL119ALE30EA31PSEN29RST9P0.0/AD039P0.1/
58、AD138P0.2/AD237P0.3/AD336P0.4/AD435P0.5/AD534P0.6/AD633P0.7/AD732P1.01P1.12P1.23P1.34P1.45P1.56P1.67P1.78P3.0/RXD10P3.1/TXD11P3.2/INT012P3.3/INT113P3.4/T014P3.7/RD17P3.6/WR16P3.5/T115P2.7/A1528P2.0/A821P2.1/A922P2.2/A1023P2.3/A1124P2.4/A1225P2.5/A1326P2.6/A1427U1AT89C51VCCRV110k-18VC10.1uFR110k12U2:
59、A74LS04 LM3229的其他控制端如下連接:Vss接地,Vdd接5V直流電源,Vo是背光調整端,接一個10k的滑動變阻器,電阻兩端分別接-18V5V的電源。 是復位端,通過10k電阻和0.1F電容上電自動復位。其余端全部接地。9.4.1 直接訪問方式驅動程序設計直接訪問方式驅動程序設計 在上述直接訪問方式下,我們來設計系統(tǒng)驅動子程序,以便在后面的實例設計中可直接拿來使用。直接訪問驅動程序主要包括宏指令、讀狀態(tài)字子程序、判斷狀態(tài)位子程序、寫指令和數據子程序以及讀數據子程序。程序如下: 宏指令部分: DAT1EQU30H;指令第一參數存儲單元 DAT2EQU31H;指令第二參數/數據存儲單元
60、 COM EQU 32H;指令代碼存儲單元 C_ADDEQU8100H ;指令通道地址 D_ADDEQU8000H ;數據通道地址 讀狀態(tài)字子程序: R_ST: MOV DPTR,#C_ADD ;設置指令通道地址 MOVX A,DPTR ;讀狀態(tài)字 RET 判斷狀態(tài)位S1,S0子程序(判忙): ST01: LCALLR_ST JNB ACC.0,ST01 JNB ACC.1,ST01 RET判斷狀態(tài)位S2子程序(數據自動讀狀態(tài)):ST2:LCALL R _STJNB ACC.2,ST2RET判斷狀態(tài)位S3子程序(數據自動寫狀態(tài)):ST3:LCALL R _STJNB ACC.3,ST2RET判
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五年度城鎮(zhèn)土地使用權轉讓及配套設施建設合同協(xié)議3篇
- 二零二五年度小額貸款個人信用借款合同范本2篇
- 二零二五年度電子商務銷售結算合同3篇
- 二零二五年度建筑施工安全環(huán)保事故處理協(xié)議3篇
- 二零二五年度個人住宅買賣合同示范范本
- 酒店管理工作中的風險管控
- 醫(yī)院行業(yè)美工的醫(yī)療廣告
- 培訓行業(yè)課程安全操作指南
- 電子工程師的領域探索
- 二零二五年度農產品直銷銷售合同范本
- 《帶一本書去讀研:研究生關鍵學術技能快速入門》筆記
- 知識圖譜智慧樹知到答案2024年浙江大學
- 2024年度-美團新騎手入門培訓
- 高一數學寒假講義(新人教A專用)【復習】第05講 三角函數(學生卷)
- 農村高中思想政治課時政教育研究的中期報告
- 醫(yī)院定崗定編方案文檔
- 4-熔化焊與熱切割作業(yè)基礎知識(一)
- 2023年200MW儲能電站儲能系統(tǒng)設計方案
- 個人安全與社會責任的基本知識概述
- 簡易勞務合同電子版
- 明代文學緒論
評論
0/150
提交評論