單片機(jī)與液晶顯示器_第1頁(yè)
單片機(jī)與液晶顯示器_第2頁(yè)
單片機(jī)與液晶顯示器_第3頁(yè)
單片機(jī)與液晶顯示器_第4頁(yè)
單片機(jī)與液晶顯示器_第5頁(yè)
已閱讀5頁(yè),還剩70頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、講座四 1.多位LED顯示 2.鍵盤管理模塊 3.點(diǎn)陣、字符液晶顯示器 4.字模提取軟件 LED的工作原理 (a)典型的七段式LED器件 (b) 共陽(yáng)極LED (c) 共陰極LED 四位數(shù)七段LED數(shù)碼管模塊 (左為正面圖、右為背面圖) LED數(shù)碼管和單片機(jī)的連接1 單片機(jī) P2.0 P2.7 a b c d e f g dp +5v +5v a b c d e f g dp P0.0 P0.7 編程:(以共陽(yáng)極為例) MOVP2,#11111001B(0F9H) MOVP0,#10100100B(0A4H) SJMP$ 靜態(tài)連接 靜態(tài)顯示 LED數(shù)碼管和單片機(jī)的連接2 單片機(jī) P2.0 P2

2、.7 a b c d e f g dp P0.0 P0.1 P0.2 P0.3 想一想:和靜態(tài)連接的區(qū)別在哪里? 單片機(jī) P2.0 P2.7 a b c d e f g dp P0.0 P0.1 P0.2 P0.3 靜態(tài)、動(dòng)態(tài)顯示方式總結(jié)靜態(tài)、動(dòng)態(tài)顯示方式總結(jié) q靜態(tài)顯示連接 q所有LED的位選均共同連接到+VCC或GND,每個(gè)LED的8根 段選線分別連接一個(gè)8位并行I/O口。 q原理簡(jiǎn)單;顯示無閃爍;占用I/O資源較多。 動(dòng)態(tài)顯示連接 所有LED的段選線共同連接在一起共用一個(gè) 8位I/O口 而每個(gè)LED的位選分別由一根相應(yīng)的I/O口線控制。 因此必須采用動(dòng)態(tài)掃描顯示方式。 例:74ls164

3、+led(proteus) 獨(dú)立鍵盤 case 0 x01: key1(); /鍵盤1功能函數(shù)。 break; case 0 x02: key2();/鍵盤2功能函數(shù)。 break; case 0 x04: key3(); /鍵盤3功能函數(shù)。 break; case 0 x08: key4();/鍵盤4功能函數(shù)。 break; case 0 x10: key5(); /鍵盤5功能函數(shù)。 break; case 0 x20: key6();/鍵盤6功能函數(shù)。 break; case 0 x40: key7(); /鍵盤7功能函數(shù)。 break; case 0 x80: key8();/鍵盤8功能

4、函數(shù)。 break; default:break; 說明 :采用輪詢方式查詢P1口,采用延時(shí)法消除鍵盤抖 動(dòng) */ #include /* 函數(shù)名稱:delay() 功能:用于鍵盤消抖的延時(shí)函數(shù) 說明:無 入口參數(shù):無 返回值 :無 */ void delay() unsigned char i; for (i=400;i0;i-); / 主函數(shù) main() void main(void) unsigned char key; while(1) P1=0 xff; /要想從P1口讀數(shù)據(jù)必須先給P1口寫1 key=P1; /讀入P1口的數(shù)據(jù),賦值給變量key if(key!=0 x00) /判

5、斷是否有鍵按下,當(dāng)沒有鍵按下時(shí), P1口的數(shù)據(jù)為0 x00 delay(); /延時(shí)去抖 key=P1; /再次讀入P1口的數(shù)據(jù),賦值給變量key if(key!=0 x00) /再次判斷是否有鍵按下 switch(key) 矩陣式鍵盤控制 4x4 鍵盤的內(nèi)部結(jié)構(gòu) 市售一體成型的4x4鍵盤 低電平掃描按下“0”鍵 X3X2X1X0Y3Y2Y1Y0動(dòng)作按鍵 11 10 1110Key 0 1101Key 1 1011Key 2 0111Key 3 11 01 1110Key 4 1101Key 5 1011Key 6 0111Key 7 10 11 1110Key 8 1101Key 9 101

6、1Key A 0111Key B 01 11 1110Key C 1101Key D 1011Key E 0111Key F xx xx1111無按鍵按下 低電平動(dòng)作鍵盤動(dòng)作分析表 高電平掃描按下“0”鍵 X3X2X1X0Y3Y2Y1Y0動(dòng)作按鍵 00 01 0001Key 0 0010Key 1 0100Key 2 1000Key 3 00 10 0001Key 4 0010Key 5 0100Key 6 1000Key 7 01 00 0001Key 8 0010Key 9 0100Key A 1000Key B 10 00 0001Key C 0010Key D 0100Key E 10

7、00Key F xx xx0000無按鍵按下 高電平動(dòng)作鍵盤動(dòng)作分析表 44鍵盤掃描電路 基本原理: 分行掃描 檢查是否有鍵按下 若有,確定哪個(gè)鍵被按下 1. 行掃描法的原理 判斷哪一個(gè)鍵被按下的流程 P1=0 xfe; n=P1; n if(n!=0 xf0) delay(); P1=0 xfe; n=P1; n if(n!=0 xf0) switch(n) case(0 xe0):display(0);break; case(0 xd0):display(1);break; case(0 xb0):display(2);break; case(0 x70):display(3);break

8、; P1=0 xfd; n=P1; n if(n!=0 xf0) delay(); P1=0 xfd; n=P1; n if(n!=0 xf0) switch(n) case(0 xe0):display(4);break; case(0 xd0):display(5);break; case(0 xb0):display(6);break; case(0 x70):display(7);break; P1=0 xfb; n=P1; n if(n!=0 xf0) delay(); P1=0 xfb; n=P1; n if(n!=0 xf0) switch(n) case(0 xe0):disp

9、lay(8);break; case(0 xd0):display(9);break; case(0 xb0):display(10);break; case(0 x70):display(11);break; P1=0 xf7; n=P1; n if(n!=0 xf0) delay(); P1=0 xf7; n=P1; n if(n!=0 xf0) switch(n) case(0 xe0):display(12);break; case(0 xd0):display(13);break; case(0 xb0):display(14);break; case(0 x70):display(

10、15);break; void display(unsigned char i) unsigned char table=0 xC0,0 xF9,0 xA4,0 xB0,0 x99,0 x92,0 x82,0 xF8,0 x80,0 x90,0 x88,0 x83,0 x C6,0 xA1,0 x86,0 x8E; P2=0 xfe; P0=tablei; 2. 行反轉(zhuǎn)法的原理 行線、列線分別接并行口 行線輸出,列線輸入 列線輸出讀得的值,行線輸入 行反轉(zhuǎn)法的流程 uchar keyscan(void)/鍵盤掃描函數(shù),使用行列反轉(zhuǎn)掃描法 uchar cord_h,cord_l;/行列值 P3=

11、0 x0f; /行線輸出全為0 cord_h=P3 /讀入列線值 if(cord_h!=0 x0f) /先檢測(cè)有無按鍵按下 delay(100); /去抖 if(cord_h!=0 x0f) cord_h=P3 /讀入列線值 P3=cord_h|0 xf0; /輸出當(dāng)前列線值 cord_l=P3 /讀入行線值 return(cord_h+cord_l);/鍵盤最后組合碼值 此處仿真 測(cè)控系統(tǒng)中必不可少的組成人機(jī)界面 圖1 測(cè)控系統(tǒng)的組成部分 液晶顯示器的原理 字符型液晶(1602) 方法:通過向指定顯示位置對(duì)應(yīng)的DDRAM中寫數(shù)據(jù)來顯示字符。 例如:在第2行第2列顯示字符 a,查表1 可知a對(duì)

12、應(yīng)的代碼 為01100001即0 x31,則可向地址0 x41中寫入數(shù)據(jù)0 x31即可顯示。 圖2 1602的顯示地址與DDRAM地址 點(diǎn)陣型液晶(12864) 在點(diǎn)陣型LCD上顯示一幅圖片或是字符,如上圖所示,只需黑色的部分點(diǎn)亮,空白 的點(diǎn)置0即可??梢詫CD看成128*64個(gè)LED燈來幫助理解。 正面圖 背面圖 12864分類 12864點(diǎn)陣液晶顯示屏有三種控制器,分別是KS0107(KS0108)、T6963C和 ST7920,三種控制器主要區(qū)別是:KS0107(KS0108)不帶任何字庫(kù)、T6963C 帶ASCII碼,ST7920帶國(guó)標(biāo)二級(jí)字庫(kù)(8千多個(gè)漢字)。 圖3 12864的D

13、DRAM地址 XY地址計(jì)數(shù)器實(shí)際上是作為DDRAM的地址指針,X地址計(jì)數(shù)器為DDRAM的頁(yè) 指針,Y地址計(jì)數(shù)器為DDRAM的Y(列)地址指針。 X地址計(jì)數(shù)器沒有記數(shù)功能,只能用指令設(shè)置。Y地址計(jì)數(shù)器具有循環(huán)記數(shù)功能, 各顯示數(shù)據(jù)寫入后,Y地址自動(dòng)加1,Y地址指針從0到63。 從上圖可以看出數(shù)據(jù)按字節(jié)在屏幕上是豎向排列的。上方為低位,下方為高位。 因此在橫向上(也就是Y)就一共是128列數(shù)據(jù)。分為CS1和CS2兩個(gè)64列來寫入。 在豎方向上(也就是X)一字節(jié)數(shù)據(jù)顯示8個(gè)點(diǎn),豎向64個(gè)點(diǎn)分為8個(gè)字節(jié),稱做8頁(yè) (X=0-7)。了解這些后我們就知道要滿屏顯示一張圖就要從y=0127、X=07一 共寫

14、1288=1024個(gè)字節(jié)的數(shù)據(jù)。同樣在AT89S51中存一張圖就要1024個(gè)字節(jié)的 空間。 圖片在12864上的顯示 簡(jiǎn)單來說,主要分為兩步: 1)將一幅圖片轉(zhuǎn)化為一系列二進(jìn)制數(shù)據(jù) 2)將數(shù)據(jù)按字節(jié)(8位)寫入液晶對(duì)應(yīng)的 DDRAM 由圖3可知,12864的DDRAM有 128*8=1024個(gè)地址,只需將圖片轉(zhuǎn)化的數(shù) 據(jù)按字節(jié)寫入這其對(duì)應(yīng)的DDRAM地址即可。 字符在12864上的顯示 上圖中,漢字為16*16點(diǎn)陣,ASCII碼為8*16點(diǎn)陣,同圖 片一樣,一個(gè)漢字(ASCII)由16*2(8*2)個(gè)字節(jié)數(shù)據(jù) 組成,字符顯示原理與圖片一致,只需將字符代碼寫入相 應(yīng)DDRAM地址。字體大小可以根

15、據(jù)需要改變。 小結(jié) 簡(jiǎn)而言之,無論是字符型還是點(diǎn)陣型LCD,其基本原理都是通過將數(shù)據(jù)寫入所對(duì)應(yīng)的DDRAM地址中來顯示 所需要的圖形或是字符。 12864點(diǎn)陣型液晶對(duì)應(yīng)的DDRAM有1024個(gè)地址,當(dāng)需顯示的字符或圖片已轉(zhuǎn)為二進(jìn)制數(shù)據(jù)時(shí),確定將數(shù) 據(jù)寫入對(duì)應(yīng)的DDRAM地址就是你所要做的工作! 單片機(jī)與液晶顯示器的硬件連接 液晶顯示器(12864)主要包含了以下接口(圖6) : 1)使能E(51的RD和WR經(jīng)或非門接LCD的使能E) 2)片選CS1(左半屏)、CS2(右半屏),見圖3 3)命令/數(shù)據(jù)選擇RS(0命令,1數(shù)據(jù)) 4)讀/寫選擇R/W(0寫,1讀) 5)數(shù)據(jù)總線DB0DB7 6)負(fù)

16、壓產(chǎn)生和負(fù)壓輸入(對(duì)比度)調(diào)整 7)復(fù)位RST 8)電源與地和背景光電源 軟件編程 注意:程序的編寫與硬件是分不開的。以圖6為例, A11A8對(duì)應(yīng)CS2、CS1、R/W、RS,未用的地址線為 高。見圖5 則當(dāng)向12864的左半屏(CS1=1,CS2=0)寫(R/W=0) 數(shù)據(jù)(RS=1)時(shí),總線地址為0 x1111010111111111。 即0 xF5FF。 C文件中定義如下:#define WD1 XBYTE0 xF5FF 定義了總線地址后,對(duì)外部地址的操作變得非常簡(jiǎn)單。 如向左半屏寫數(shù)據(jù)0 xFF : WD1=0 xFF 讀左半屏數(shù)據(jù) : data=RD1(data存儲(chǔ)讀 取到的數(shù)據(jù))

17、舉例 下面簡(jiǎn)單介紹程序編寫的流程 1)定義所有總線地址 #define WI1 XBYTE0 xF4FF/向左半屏寫命令 #define WD1 XBYTE0 xF5FF /向左半屏寫數(shù)據(jù) #define RI1 XBYTE0 xF6FF /讀左半屏命令 #define RD1 XBYTE0 xF7FF /讀左半屏數(shù)據(jù) #define WI2 XBYTE0 xF8FF /向右半屏寫命令 #define WD2 XBYTE0 xF9FF/向右半屏寫數(shù)據(jù) #define RI2 XBYTE0 xFAFF /讀右半屏命令 #define RD2 XBYTE0 xFBFF/讀右半屏數(shù)據(jù) 2)編寫底層程

18、序(查忙,寫數(shù)據(jù),讀數(shù)據(jù)) 查忙(讀BF標(biāo)志即DB7總線,亦即讀命令) BF=1表示模塊在內(nèi)部操作,此時(shí)模塊不接受外部指令和數(shù)據(jù); BF=0時(shí)模塊為準(zhǔn)備狀態(tài),隨時(shí)可接受外部指令和數(shù)據(jù); b=RI1 或者 b=RI2,觀察b中最高位是否為0,否則忙。 寫數(shù)據(jù)a WD1=a或者WD2=a 讀數(shù)據(jù)到data data=RD1或者data=RD2 注意:無論是寫數(shù)據(jù)還是讀數(shù)據(jù)一定要先查忙(對(duì)左 右半屏讀命令),只有在BF=0時(shí)才能對(duì)LCD進(jìn)行操作 3)LCD初始化 包含開顯示(0 x3F),起始行(0 xC0),設(shè)置 起始頁(yè)地址(0 xB8)和Y地址(0 x40),即分 別向LCD的左右半屏寫命令???/p>

19、按括號(hào)內(nèi)的數(shù) 據(jù)進(jìn)行初始化。具體可查閱12864的PDF資料。 4)清屏(向DDRAM所有地址寫0) 顯示一幅新圖片前必須清屏,否則之前顯示的 數(shù)據(jù)仍存在于液晶上。 5)指定位置顯示一個(gè)ASCII 碼 首先將起始頁(yè)地址和起始Y 地址設(shè)置好,寫入ASCII碼的 上半部分(8個(gè)字節(jié)數(shù)據(jù)) 重新設(shè)置起始頁(yè)地址和起 始Y地址,寫入ASCII碼的下 半部分(另8個(gè)字節(jié)數(shù)據(jù)) 注意:在對(duì)DDRAM進(jìn)行讀寫操作后,Y地址指針 自動(dòng)加1,指向下一個(gè)DDRAM 單元。 6)指定位置顯示漢字 同顯示ASCII碼基本相似,只是上下部分分別有16個(gè) 字節(jié)數(shù)據(jù)需要寫入DDRAM。 7)顯示一張圖片 對(duì)于圖片,必然從第0

20、頁(yè)第0列開始,可以一頁(yè)一頁(yè) (不分左右屏)顯示,也可以先寫左半屏后寫右半屏。所 謂的兩種方法差別正在設(shè)置的起始頁(yè)地址和Y地址的不同。 圖3 小結(jié) 12864點(diǎn)陣型液晶對(duì)應(yīng)的DDRAM有1024個(gè)地址,無論是顯示字符還是 圖片,靈活設(shè)置起始頁(yè)地址和Y地址,可以達(dá)到想要的結(jié)果。 C語言中用到總線操作必須添加頭文件“absacc.h”,另如使用仿真器, 需在debug中的setting里選擇使用xbus(數(shù)據(jù)總線)。 可使用取字模軟件將字符或圖片轉(zhuǎn)為一系列二進(jìn)制數(shù)據(jù)。 寫程序: 附件 3)寫數(shù)據(jù)dat void WriteData(uchar dat,bit side) CheckBusy(side

21、); if(side=Left) WD1=dat; else WD2=dat; 寫命令cmd(side0為左,1為右) void WriteCmd(uchar cmd, bit side) CheckBusy(side); if(side=Left)/Left=0(宏定義) WI1=cmd; else WI2=cmd; 讀操作時(shí)序 v1)查忙程序 vvoid CheckBusy(bit side)/side0為左1為右 v v unsigned char buf=0 xFF; v while(buf) vif(!side) vbuf=RI1;/單片機(jī)命令 velse vbuf=RI2; v b

22、uf /取D7若為1則忙,忙則buf != 0(LCD回信號(hào)) v v 初始化: 4)初始化程序 void LCD_Init() WriteCmd(0 x3F,Left);/顯示開 WriteCmd(0 x3F,Right); WriteCmd(0 xC0,Left);/起始行 WriteCmd(0 xC0,Right); WriteCmd(0 xB8,Left); WriteCmd(0 xB8,Right);/起始x,y坐標(biāo)(0,0) WriteCmd(0 x40,Left); WriteCmd(0 x40,Right); 5)清屏(一般dat=0) void LCD_Clear(uchar

23、 dat) uchar i,j; for(i=0;i8;i+) WriteCmd(0 xB8+i,Left); WriteCmd(0 xB8+i,Right); WriteCmd(0 x40,Left); WriteCmd(0 x40,Right); for(j=0;j64;j+) WriteData(dat,Left); WriteData(dat,Right); 總結(jié) 理解12864是如何顯示字符和圖形的 知曉單片機(jī)與12864的硬件連接 根據(jù)硬件接線,確定所有的總線地址(8個(gè)) 明白如何通過總線操作對(duì)12864進(jìn)行數(shù)據(jù)與命令的交換 參考12864的命令字進(jìn)行軟件編程 學(xué)會(huì)如何使用取字模軟

24、件 圖6 AT89C51與12864的硬件連接 LCD12864模塊的20個(gè)引腳定義如下: 1.Vss 邏輯電源地 2.VDD邏輯電源正5v 3.V0LCD驅(qū)動(dòng)電壓 4.RS 數(shù)據(jù)/指令選擇:高電平為數(shù)據(jù), 低電平為指令 5.R/W讀/寫選擇:高電平為讀數(shù)據(jù), 低電平為寫數(shù)據(jù) 6.E讀寫使能,高電平有效, 下降沿鎖定數(shù)據(jù) 7.DB0數(shù)據(jù)輸入輸出引腳 8.DB1數(shù)據(jù)輸入輸出引腳 9.DB2數(shù)據(jù)輸入輸出引腳 10.DB3數(shù)據(jù)輸入輸出引腳 11.DB4數(shù)據(jù)輸入輸出引腳 12.DB5數(shù)據(jù)輸入輸出引腳 13.DB6數(shù)據(jù)輸入輸出引腳 14.DB7數(shù)據(jù)輸入輸出引腳 15.CS1片選擇號(hào),低電平時(shí)選擇前64列

25、 16.CS2片選擇號(hào),低電平時(shí)選擇后64列 17.RET復(fù)位信號(hào),低電平有效。 18.VEE輸出15v電源給V0提供驅(qū)動(dòng)電源 19.A背光電源LED正極 20.K背光電源LED負(fù)極 圖5.LCD引腳圖 帶字庫(kù)12864 帶字庫(kù)的12864的基本特性: (1)顯示分辨率:12864點(diǎn) (就是64行,每行128個(gè)點(diǎn)) (2)內(nèi)置漢字字庫(kù),提供8192個(gè)1616點(diǎn)陣漢字(12864內(nèi)部有一個(gè) CGROM,內(nèi)容掉電可以存儲(chǔ),所以漢字字庫(kù)會(huì)存放在里面。滿屏最多 顯示4*8=32個(gè)漢字)。 (3)內(nèi)置 128個(gè)168點(diǎn)陣ASCII字符(12864一次最多可以顯示 4*16=64個(gè)ASCII字符)。 (4

26、)通訊方式:串行、并口可選 (數(shù)據(jù)寫入和讀出可以是以串行的方式, 也可以是以并行的方式。) 所以只要我們寫入指令0 x01,整個(gè)屏幕就被清空了。 LCD初始化: 一般用指令0 x0c,開顯示,關(guān)閉光標(biāo) 既可以控制擴(kuò)展功能,又可以控制繪圖顯示的指令!用0X30,基本指令集 指令0X06光標(biāo)右移 1.漢字顯示坐標(biāo) 顯示漢字一屏可以顯示4*8=32 個(gè)16*16的漢字。實(shí)物圖對(duì)照 下,把地址也表到實(shí)物圖上去 了。 操作的具體流程: A進(jìn)入基本指令模式(指令16,指令為0 x30) B寫入xy地址(地址需要查上表,用指令8,也就是寫入DDRAM) C寫入欲寫入的漢字的編碼(一般定義一個(gè)數(shù)組,直接把漢字

27、存放在里面即可, 存儲(chǔ)的時(shí)候它就是以編碼的形式。例如:uchar code dis1=“南京師范大學(xué);) 例程代碼: uchar code dis3 = “南京師范大學(xué); void display_hz() Uchar I; Write_comd(0 x30);/基本指令 Write_comd(0 x80);/寫在第一個(gè)位置上 For(i=0;i8;i+) Write_da(dis3i);/把數(shù)據(jù)送到端口 Delay_ms(5);/延時(shí)一會(huì) 2.ASCII顯示坐標(biāo): 它的坐標(biāo)和漢字的坐標(biāo)是一樣的,只不過一個(gè)漢字的位置可以放兩個(gè)ASCII碼 字符。因?yàn)榍罢邽?6*16后者為16*8,這樣一行可以

28、顯示16個(gè)ASCII碼了。在 顯示一串字符穿的時(shí)候,給一個(gè)起始地址,屏幕就會(huì)依次顯示出來(自動(dòng)加 一功能)。 操作的具體流程: A進(jìn)入基本指令模式(指令16,指令為0 x30) B寫入xy地址(地址需要查上表,用指令8,也就是寫入DDRAM) C寫入欲寫入的漢字的編碼(一般定義一個(gè)數(shù)組,直接把ASACII碼存放在里面即 可,存儲(chǔ)的時(shí)候它就是以編碼的形式。例如:uchar code dis1=SH;) 例程代碼: uchar code dis2 = SH; void display_ascii() Uchar I; Write_comd(0 x30);/基本指令 Write_comd(0 x80

29、);/寫在第一個(gè)位置上 For(i=0;i2;i+) Write_da(dis2i);/把數(shù)據(jù)送到端口 Delay_ms(5);/延時(shí)一會(huì) 并行寫資料到模塊: 時(shí)序圖: 寫指令: void write_cmd(uchar cmd) lcdrs = 0;/低電平表命令 lcdrw = 0;/ 低電平表寫 P0 = cmd;/把命令送給P0 lcden = 0;/產(chǎn)生一個(gè)高脈沖 delay_ms(5); lcden = 1; delay_ms(5);/不用的時(shí)候把en拉低,12864不使能 lcden = 0; (2)寫數(shù)據(jù): void write_dat(uchar dat) lcdrs = 1

30、;/高電平表示數(shù)據(jù) lcdrw = 0;/低電平表示寫 P0 = dat;/把數(shù)據(jù)送到端口 lcden = 0;/產(chǎn)生一個(gè)高脈沖 delay_ms(5); lcden = 1; delay_ms(5); lcden = 0; /不用時(shí)不使能 根據(jù)這個(gè)時(shí)序圖可以從12864液晶模塊內(nèi)部RAM中讀出相應(yīng)的數(shù)據(jù),忙檢測(cè)函數(shù)就是根據(jù)這個(gè) 時(shí)序圖寫出來的。 帶中文字庫(kù)的128X64顯示模塊時(shí)應(yīng)注意以下幾點(diǎn): 欲在某一個(gè)位置顯示中文字符時(shí),應(yīng)先設(shè)定顯示字符位置,即先設(shè)定顯示 地址,再寫入中文字符編碼。 顯示ASCII字符過程與顯示中文字符過程相同。不過在顯示連續(xù)字符時(shí), 只須設(shè)定一次顯示地址,由模塊自動(dòng)對(duì)

31、地址加1指向下一個(gè)字符位置,否則, 顯示的字符中將會(huì)有一個(gè)空ASCII字符位置。 當(dāng)字符編碼為2字節(jié)時(shí),應(yīng)先寫入高位字節(jié),再寫入低位字節(jié)。 模塊在接收指令前,向處理器必須先確認(rèn)模塊內(nèi)部處于非忙狀態(tài),即讀取 BF標(biāo)志時(shí)BF需為“0”,方可接受新的指令。如果在送出一個(gè)指令前不檢查 BF標(biāo)志,則在前一個(gè)指令和這個(gè)指令中間必須延遲一段較長(zhǎng)的時(shí)間,即等待 前一個(gè)指令確定執(zhí)行完成。指令執(zhí)行的時(shí)間請(qǐng)參考指令表中的指令執(zhí)行時(shí)間 說明。 “RE”為基本指令集與擴(kuò)充指令集的選擇控制位。當(dāng)變更“RE”后,以后 的指令集將維持在最后的狀態(tài),除非再次變更“RE”位,否則使用相同指令 集時(shí),無需每次均重設(shè)“RE”位。 低

32、電平掃描按下“0”鍵 X3X2X1X0Y3Y2Y1Y0動(dòng)作按鍵 11 10 1110Key 0 1101Key 1 1011Key 2 0111Key 3 11 01 1110Key 4 1101Key 5 1011Key 6 0111Key 7 10 11 1110Key 8 1101Key 9 1011Key A 0111Key B 01 11 1110Key C 1101Key D 1011Key E 0111Key F xx xx1111無按鍵按下 低電平動(dòng)作鍵盤動(dòng)作分析表 X3X2X1X0Y3Y2Y1Y0動(dòng)作按鍵 00 01 0001Key 0 0010Key 1 0100Key 2 1000Key 3 00 10 0001Key 4 0010Key 5 0100Key 6 1000Key 7 01 00 0001Key 8 0010Key 9 0100Key A 1000Key B 10 00 0001Key C 0010Key D 0100Key E 1000Key F xx xx0000無按鍵按下 高電平動(dòng)作鍵盤動(dòng)作分析表 XY地址計(jì)數(shù)器實(shí)際上是作為DDRAM的地址指針,X地址計(jì)數(shù)器為DDRAM的頁(yè) 指針,Y地址計(jì)數(shù)器為DDRAM的Y(列)地址指針。 X地址計(jì)數(shù)器沒有記數(shù)功能,只能用指令設(shè)置。Y地址計(jì)數(shù)器具有循環(huán)記數(shù)功能, 各顯示數(shù)據(jù)寫入后,Y地址

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論