13 、14 第九章 51單片機(jī)與顯示器、鍵盤接口及編程_第1頁
13 、14 第九章 51單片機(jī)與顯示器、鍵盤接口及編程_第2頁
13 、14 第九章 51單片機(jī)與顯示器、鍵盤接口及編程_第3頁
13 、14 第九章 51單片機(jī)與顯示器、鍵盤接口及編程_第4頁
13 、14 第九章 51單片機(jī)與顯示器、鍵盤接口及編程_第5頁
已閱讀5頁,還剩52頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、第九章 51單片機(jī)與顯示器、鍵盤接口及編程,9.1 51單片機(jī)與LED顯示器接口,9.1.1 LED顯示器的結(jié)構(gòu)與原理,在單片機(jī)應(yīng)用系統(tǒng)中通常使用的是8段式LED數(shù)碼管顯示器,它有共陰極和共陽極兩種,如圖所示。,其中:(a)為共陰極結(jié)構(gòu)。(b)為共陽極結(jié)構(gòu)。(c)圖為管腳圖,從ag管腳輸入不同的8位二進(jìn)制編碼,可顯示不同的數(shù)字或字符。共陰極和共陽極的字段碼互為反碼 。,9.1.2 LED數(shù)碼管顯示器的譯碼方式,一硬件譯碼方式,譯碼方式是指由顯示字符轉(zhuǎn)換得到對應(yīng)的字段碼的方式,硬件譯碼方式是指利用專門的硬件電路來實(shí)現(xiàn)顯示字符到字段碼的轉(zhuǎn)換,這樣的硬件電路有很多,比如MOTOTOLA公司生產(chǎn)的MC

2、14495芯片就是其中的一種,MC14495是共陰極一位十六進(jìn)制數(shù)字段碼轉(zhuǎn)換芯片,能夠輸出用四位二進(jìn)制表示形式的一位十六進(jìn)制數(shù)的七位字段碼,不帶小數(shù)點(diǎn)。它的內(nèi)部結(jié)構(gòu)如圖。,二軟件譯碼方式,軟件譯碼方式就是通過編寫軟件譯碼程序,通過譯碼程序來得到要顯示的字符的字段碼。,9.1.3 LED數(shù)碼管的顯示方式,一LED靜態(tài)顯示,LED靜態(tài)顯示時(shí),其公共端直接接地(共陰極)或接電源(共陽極),各段選線分別與I/O口線相連。要顯示字符,直接在I/O線送相應(yīng)的字段碼。,二LED動(dòng)態(tài)顯示方式,LED動(dòng)態(tài)顯示是將所有的數(shù)碼管的段選線并接在一起,用一個(gè)I/O口控制,公共端不是直接接地(共陰極)或電源(共陽極),而

3、是通過相應(yīng)的I/O口線控制。,設(shè)數(shù)碼管為共陽極,它的工作過程為:第一步使右邊第一個(gè)數(shù)碼管的公共端D0為1,其余的數(shù)碼管的公共端為0,同時(shí)在I/O(1)上送右邊第一個(gè)數(shù)碼管的字段碼,這時(shí),只有右邊第一個(gè)數(shù)碼管顯示,其余不顯示;第二步使右邊第二個(gè)數(shù)碼管的公共端D1為1,其余的數(shù)碼管的公共端為0,同時(shí)在I/O(1)上送右邊第二個(gè)數(shù)碼管的字段碼,這時(shí),只有右邊第二個(gè)數(shù)碼管顯示,其余不顯示,依此類推,直到最后一個(gè),這樣四個(gè)數(shù)碼管輪流顯示相應(yīng)的信息,一個(gè)循環(huán)完后,下一循環(huán)又這樣輪流顯示,從計(jì)算機(jī)的角度看是一個(gè)一個(gè)的顯示,但由于人的視覺滯留,只要循環(huán)的周期足夠快,看起來所有的數(shù)碼管都是一起顯示的了。這就是動(dòng)

4、態(tài)顯示的原理。而這個(gè)循環(huán)周期對于計(jì)算機(jī)來說很容易實(shí)現(xiàn)。所以在單片機(jī)中經(jīng)常用到動(dòng)態(tài)顯示。,9.1.4 LED顯示器與單片機(jī)的接口,LED顯示器從譯碼方式上有硬件譯碼方式和軟件譯碼方式。從顯示方式上有靜態(tài)顯示方式和動(dòng)態(tài)顯示方式。在使用時(shí)可以把它們組合起來。在實(shí)際應(yīng)用時(shí),如果數(shù)碼管個(gè)數(shù)較少,通常用硬件譯碼靜態(tài)顯示,在數(shù)碼管個(gè)數(shù)較多時(shí),則通常用軟件譯碼動(dòng)態(tài)顯示。,一硬件譯碼靜態(tài)顯示,下圖是一個(gè)兩位數(shù)碼管硬件譯碼靜態(tài)顯示的接口電路圖。,二軟件譯碼動(dòng)態(tài)顯示,下圖是一個(gè)8位軟件譯碼動(dòng)態(tài)顯示的接口電路圖。圖中用8255A擴(kuò)展并行I/O口接數(shù)碼管,數(shù)碼管采用動(dòng)態(tài)顯示方式,8位數(shù)碼管的段選線并聯(lián)與8255A的A口

5、通過74LS373相連,8位數(shù)碼管的公共端通過74LS373分別與8255A的B口相連。也即8255A的B口輸出位選碼選擇要顯示的數(shù)碼管,8255A的A口輸出字段碼使數(shù)碼管顯示相應(yīng)的字符,8255A的A口和B口都工作于方式0輸出。A口、B口、C口和控制口的地址分別為7F00H、7F01H、7F02H和7F03H。,G,G,OE,OE,軟件譯碼動(dòng)態(tài)顯示匯編語言程序?yàn)椋海ㄔO(shè)8個(gè)數(shù)碼管的顯示緩沖區(qū)為片內(nèi)RAM的57H50H單元) DISPLAY:MOV A,#10000000B ;8255初始化 MOV DPTR,#7F03H ;使DPTR指向8155控制寄存器端口 MOVX DPTR,A MOV

6、R0,#57H ;動(dòng)態(tài)顯示初始化,使R0指向緩沖區(qū)首址 MOV R3,#7FH ;首位位選字送R3 MOV A,R3 LD0:MOV DPTR,#7F00H ;使DPTR指向PA口 MOVX DPTR,A ;選通顯示器低位(最右端一位) INC DPTR ;使DPTR指向PB口 MOV A,R0 ;讀要顯示數(shù) ADD A,#0DH ;調(diào)整距段選碼表首的偏移量 MOVC A,A+PC ;查表取得段選碼 MOVX DPTR,A ;段選碼從PB口輸出 ACALL DL1 ;調(diào)用1 ms延時(shí)子程序 DEC R0 ;指向緩沖區(qū)下一單元 MOV A,R3 ;位選碼送累加器A,JNB ACC.0,LD1 ;

7、判斷8位是否顯示完畢,顯示完返回 RR A ;未顯示完,把位選字變?yōu)橄乱晃贿x字 MOV R3,A ;修改后的位選字送R3 AJMP LD0 ;循環(huán)實(shí)現(xiàn)按位序依次顯示 LD1:RET TAB:DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H ;字 段碼表 DB: 7FH,6FH,77H,7CH,39H,5EH,79H,71H DL1:MOV R7,#02H ;延時(shí)子程序 DL: MOV R6,#0FFH DL0:DJNZ R6,DL0 DJNZ R7,DL RET,軟件譯碼動(dòng)態(tài)顯示C語言程序?yàn)椋?#include #include /定義絕對地址訪問 #define ucha

8、r unsigned char #define uint unsigned int void delay(uint); /聲明延時(shí)函數(shù) void display(void); /聲明顯示函數(shù) uchar disbuffer8=0,1,2,3,4,5,6,7; /定義顯示緩沖區(qū) void main( ) XBYTE0 x7f03=0 x80; /8255初始化 while(1) display( ); /設(shè)顯示函數(shù) /*延時(shí)函數(shù)* void delay(uint i) /延時(shí)函數(shù) uint j; for (j=0;ji;j+) ,/*顯示函數(shù)* void display(void) /定義顯示函

9、數(shù) uchar codevalue16=0 x3f,0 x06,0 x5b,0 x4f,0 x66,0 x6d,0 x7d,0 x07, 0 x7f,0 x6f,0 x77,0 x7c,0 x39,0 x5e,0 x79,0 x71; /0F的字段碼表 uchar chocode8=0 xfe,0 xfd,0 xfb,0 xf7,0 xef,0 xdf,0 xbf,0 x7f; /位選碼表 uchar i,p,temp; for (i=0;i8;i+) p=disbufferi; /取當(dāng)前顯示的字符 temp=codevaluep; /查得顯示字符的字段碼 XBYTE0 x7f00=temp;

10、 /送出字段碼 temp=chocodei; /取當(dāng)前的位選碼 XBYTE0 x7f01=temp; /送出位選碼 delay(20); /延時(shí)1ms ,9.2 51單片機(jī)與鍵盤接口,9.2.1 鍵盤的工作原理,鍵盤實(shí)際上是一組按鍵開關(guān)的集合,平時(shí)按鍵開關(guān)總是處于斷開狀態(tài),當(dāng)按下鍵時(shí)它才閉合。它的結(jié)構(gòu)和產(chǎn)生的波形如圖所示。,圖9.1,鍵盤的處理主要涉及三個(gè)方面:,1按鍵的識(shí)別,2抖動(dòng)的消除,消除按鍵盤抖動(dòng)通常有兩種方法:硬件消抖和軟件消抖。,硬件消抖是通過在按鍵輸出電路上加一定的硬件線路來消除抖動(dòng),一般采用RS觸發(fā)器或單穩(wěn)態(tài)電路。如圖。,軟件消抖是利用延時(shí)來跳過抖動(dòng)過程,圖9.2,3鍵位的編碼

11、,通常有兩種方法編碼。,(1)用連接鍵盤的I/O線的二進(jìn)制組合進(jìn)行編碼。如(a)圖,(2)順序排列編碼。如(b)圖,處理方法如下:編碼值=行首編碼值X+列號(hào)Y。,圖9.3,9.2.2 獨(dú)立式鍵盤與單片機(jī)的接口,鍵盤的結(jié)構(gòu)形式一般有兩種:獨(dú)立式鍵盤與矩陣式鍵盤。,獨(dú)立式鍵盤就是各按鍵相互獨(dú)立,每個(gè)按鍵各接一根I/O口線,每根I/O口線上的按鍵都不會(huì)影響其它的I/O口線。,圖9.4,圖9.4(a)為中斷方式工作的獨(dú)立式鍵盤的結(jié)構(gòu)形式,(b)為查詢方式工作的獨(dú)立式鍵盤的結(jié)構(gòu)形式,下面是針對圖9.2(b)圖查詢方式的匯編語言形式的鍵盤程序??偣灿?個(gè)鍵位,KEY0KEY7為8個(gè)鍵的功能程序。 STAR

12、T:MOV A,#0FFH; MOV P1,A ;置P1口為輸入狀態(tài) MOV A,P1 ;鍵狀態(tài)輸入 CPL A JZ START ;沒有鍵按下,則轉(zhuǎn)開始 JB ACC.0,K0 ;檢測0號(hào)鍵是否按下,按下轉(zhuǎn) JB ACC.1,K1 ;檢測1號(hào)鍵是否按下,按下轉(zhuǎn) JB ACC.2,K2 ;檢測2號(hào)鍵是否按下,按下轉(zhuǎn) JB ACC.3,K3 ;檢測3號(hào)鍵是否按下,按下轉(zhuǎn) JB ACC.4,K4 ;檢測4號(hào)鍵是否按下,按下轉(zhuǎn) JB ACC.5,K5 ;檢測5號(hào)鍵是否按下,按下轉(zhuǎn) JB ACC.6,K6 ;檢測6號(hào)鍵是否按下,按下轉(zhuǎn) JB ACC.7,K7 ;檢測7號(hào)鍵是否按下,按下轉(zhuǎn) JMP ST

13、ART ;無鍵按下返回,再順次檢測,K0:AJMP KEY0 K1:AJMP KEY1 K7:AJIMP KEY7 KEY0: ;0號(hào)鍵功能程序 JMP START ;0號(hào)鍵功能程序執(zhí)行完返回 KEY1: ;0號(hào)鍵功能程序 JMP START ;1號(hào)鍵功能程序執(zhí)行完返回 KEY7: ;7號(hào)鍵功能程序 JMP START ;7號(hào)鍵功能程序執(zhí)行完返回,9.2.3 矩陣鍵盤與單片機(jī)的接口,矩陣式鍵盤又叫行列式鍵盤。用I/O口線組成行、列結(jié)構(gòu),鍵位設(shè)置在行列的交點(diǎn)上。例如44的行、列結(jié)構(gòu)可組成16個(gè)鍵的鍵盤,比一個(gè)鍵位用一根I/O口線的獨(dú)立式鍵盤少了一半的I/O口線。,矩陣鍵盤的連接方法有多種,可直接

14、連接于單片機(jī)的I/O口線;可利用擴(kuò)展的并行I/O口連接;也可利用可編程的鍵盤、顯示接口芯片(如8279)進(jìn)行連接等等。其中,利用擴(kuò)展的并行I/O口連接方便靈活,在單片機(jī)應(yīng)用系統(tǒng)中比較常用。下圖就是通過8255芯片擴(kuò)展的并行I/O口連接48的矩陣鍵盤。,圖9.5,一矩陣鍵盤的工作過程,對矩陣鍵盤的工作過程可分兩步:第一步是CPU首先檢測鍵盤上是否有鍵按下;第二步是再識(shí)別是哪一個(gè)鍵按下。以9.3圖為例: 1檢測鍵盤上是否有鍵按下處理方法是:將列線送入全掃描字,讀入行線的狀態(tài)來判別。其具體過程如下:PA口輸出00H,即所有列線置成低電平,然后將行線電平狀態(tài)讀入累加器A中。如果有鍵按下,總會(huì)有一根行線

15、電平被拉至低電平,從而使行輸入狀態(tài)不全為1。 2識(shí)別鍵盤中哪一個(gè)鍵按下處理方法是:將列線逐列置低電平,檢查行輸入狀態(tài),稱為逐列掃描。其具體過程如下:從PA0開始,依次輸出“0”,置對應(yīng)的列線為低電平,然后從PC口讀入行線狀態(tài),如果全為“1”,則按下的鍵不在此列;如果不全為“1”,則按下的鍵必在此列,而且是該列與“0”電平行線相交的交點(diǎn)上的那個(gè)鍵。為求取編碼,在逐列掃描時(shí),可用計(jì)數(shù)器記錄下當(dāng)前掃描列的列號(hào),檢測到第幾行有鍵按下,就用該行的首鍵碼加列號(hào)得到當(dāng)前按鍵的編碼。,二矩陣鍵盤的工作方式,1查詢工作方式,這種方式是直接在主程序中插入鍵盤檢測子程序,主程序每執(zhí)行一次則鍵盤檢測子程序被執(zhí)行一次,

16、對鍵盤進(jìn)行檢測一次,如果把沒有鍵按下,則跳過鍵識(shí)別,直接執(zhí)行主程序;如果有鍵按下,則通過鍵盤掃描子程序識(shí)別按鍵,得到按鍵的編碼值,然后根據(jù)編碼值進(jìn)行相應(yīng)的處理,處理完后再回到主程序執(zhí)行。鍵盤掃描子程序流程如圖 。,匯編鍵盤掃描子程序: (硬件線路如圖9.5,8255的A口、B口、C口和控制口地址分別為7F00H、7F01H、7F02H、7F03H,設(shè)8255A已在主程序中初始化。已設(shè)定為A口方式0輸出,C口的低4位方式0輸入。),KEY1:ACALL KS1 ;調(diào)用判斷有無鍵按下子程序 JNZ LK1 ;有鍵按下時(shí),(A)0轉(zhuǎn)消抖延時(shí) KEY2:ACALL TM6ms AJMP KEY1 ;無

17、鍵按下返回 LK1:ACALL TM12ms ;調(diào)12 ms延時(shí)子程序 ACALL KS1 ;查有無鍵按下,若有則真有鍵按下 JNZ LK2 ;鍵(A) 0逐列掃描 AJMP KEY2 ;不是真有鍵按下,返回 LK2:MOV R2,#0FEH ;初始列掃描字(0列)送入R2 MOV R4,#00H ;初始列(0列)號(hào)送入R4 LK4:MOV DPTR,#7F00H ;DPTR指向8255PA口 MOV A,R2 ;列掃描字送至8255PA口 MOVX DPTR,A INC DPTR ;DPTR指向8255PC口 INC DPTR,MOVX A,DPTR ;從8255 PC口讀入行狀態(tài) JB A

18、CC.0,LONE ;查第0行無鍵按下,轉(zhuǎn)查第1行 MOV A,#00H ;第0行有鍵按下,行首鍵碼#00HA AJMP LKP ;轉(zhuǎn)求鍵碼 LONE:JB ACC.1,LTWO ;查第1行無鍵按下,轉(zhuǎn)查第2行 MOV A,#08H ;第1行有鍵按下,行首鍵碼#08HA AJMP LKP ;轉(zhuǎn)求鍵碼 LTWO:JB ACC.2,LTHR ;查第2行無鍵按下,轉(zhuǎn)查第3行 MOV A,#10H ;第2行有鍵按下,行首鍵碼#10HA AJMP LKP ;轉(zhuǎn)求鍵碼 LTHR: JB ACC.3,NEXT ;查第3行無鍵按下,轉(zhuǎn)該查下一列 MOV A,#18H ;第3行有鍵按下,行首鍵碼#18HA LK

19、P: ADD A,R4 ;求鍵碼,鍵碼=行首鍵碼+列號(hào) PUSH ACC ;鍵碼進(jìn)棧保護(hù) LK3: ACALL KS1 ;等待鍵釋放 JNZ LK3 ;鍵未釋放,等待 POP ACC ;鍵釋放,鍵碼A RET ;鍵掃描結(jié)束,出口狀態(tài)(A)=鍵碼,NEXT:INC R4 ;準(zhǔn)備掃描下一列,列號(hào)加1 MOV A,R2 ;取列掃描字送累加器A JNB ACC.7,KEND ;判斷8列掃描否?掃描完返回 RL A ;掃描字左移一位,變?yōu)橄乱涣袙呙枳?MOV R2,A ;掃描字送入R2保存 AJMP LK4 ;轉(zhuǎn)下一列掃描 KEND:AJMP KEY1 KS1:MOV DPTR,#7F00H ;DPTR

20、指向8255PA口 MOV A,#00H ;全掃描字A MOVX DPTR,A ;全掃描字送往8255PA口 INC DPTR ;DPTR指向8255PC口 INC DPTR MOVX A,DPTR ;讀入PC口行狀態(tài) CPL A ;變正邏輯,以高電平表示有鍵按下 ANL A,#0FH ;屏蔽高4位,只保留低4位行線值 RET ;出口狀態(tài):(A)0時(shí)有鍵按下,TM12ms:MOV R7,#18H ;延時(shí)12 ms子程序 TM:MOV R6,#0FFH TM6:DJNZ R6,TM6 DJNZ R7,TM RET TM6ms:MOV R7,#0CH ;延時(shí)6 ms子程序 TM2:MOV R6,#

21、0FFH TM62:DJNZ R6,TM6 DJNZ R7,TM RET,#include #include #define uchar unsigned char #define uint unsigned int void delay (uint); uchar checkkey( ); uchar keyscan( ); void main ( ) uchar key; while(1); key=keyscan; delay(2000); ,C語言鍵盤掃描子程序:,/*延時(shí)函數(shù)* void delay(uint DelayTime) /延時(shí)1ms*DelayTime uint j=0;

22、 for(;DelayTime0;DelayTime-) for(j=0;j125;j+) ; /* 檢測有無鍵按下函數(shù)* uchar checkkey ( ) /檢測有無鍵按下,有返回0 xff,無返回0 uchar i; XBYTE0 x7f00=0 x00; i= XBYTE0 x7f02; i=i ,/*鍵盤掃描函數(shù)* uchar keyscan ( ) /鍵盤掃描,如果有鍵按下,則返回該鍵鍵值編 碼,無鍵按下,則返回0 xff uchar scancode; uchar codevalue; uchar m; uchar k; uchar i,j; if(checkkey=0) re

23、turn(0 xff); else delay(200); if(checkkey=0) return(0 xff); else scancode=0 xfe; m=0 x00; for (i=0;i8;i+) k=0 x01; XBYTE0 x7f00=scancode;,for (j=0;j4;j+) if(XBYTE0 x7f02 ,2定時(shí)掃描工作方式 定時(shí)掃描工作方式是利用單片機(jī)內(nèi)部定時(shí)產(chǎn)生中斷(例如10ms),當(dāng)定時(shí)時(shí)間到時(shí),CPU執(zhí)行定時(shí)器中斷服務(wù)程序,對鍵盤進(jìn)行掃描。如果有鍵位按下識(shí)別出該鍵位,并執(zhí)行相應(yīng)的鍵處理功能程序。定時(shí)掃描方式的硬件電路與查詢方式的電路相同。,3中斷處理方

24、式 在計(jì)算機(jī)應(yīng)用系統(tǒng)中,大多數(shù)情況下并沒有鍵輸入,但無論是查詢方式 還是定時(shí)掃描方式,CPU都在不斷對鍵盤進(jìn)行檢測,這樣會(huì)大量占用CPU執(zhí) 行時(shí)間。為了提高效率,可采用中斷方式,中斷方式通過增加一條中斷請求 信號(hào)線(可參考圖9.4(a),當(dāng)沒有按鍵按下時(shí),無中斷請求,有按鍵時(shí) ,向CPU提出中斷請求,CPU響應(yīng)后執(zhí)行中斷服務(wù)程序,在中斷服務(wù)程序中 對鍵盤進(jìn)行掃描。這樣在沒有鍵按下時(shí),CPU就不會(huì)執(zhí)行掃描程序,提高了 CPU的工作效率。中斷服務(wù)程序中的鍵盤掃描程序與查詢方式相同。,9.3 單片機(jī)與LCD接口,液晶顯示器簡稱LCD顯示器。它是利用液晶經(jīng)過處理后能改變光線的傳輸方向的特性實(shí)現(xiàn)顯示信息

25、。液晶顯示器按其功能可分為三類:筆段式液晶顯示器、字符點(diǎn)陣式液晶顯示器和圖形點(diǎn)陣式液晶顯示器。前兩種可顯示數(shù)字、字符和符號(hào)等,而圖形點(diǎn)陣式液晶顯示器還可以顯示漢字和任意圖形,達(dá)到圖文并茂的效果。,9.3.1 字符型LCD液晶顯示器,目前市面上常用的有16字1行、16字2行、20字2行和40字2行等的字符液晶顯示模塊。這些LCM雖然顯示字?jǐn)?shù)各不相同,但是都具有相同的輸入輸出界面。本節(jié)將以162字符型液晶顯示模塊RT-1602C為例,詳細(xì)介紹字符型液晶顯示模塊的應(yīng)用。,一字符型液晶顯示模塊RT-1602C的外觀與引腳,RT-1602C采用標(biāo)準(zhǔn)的16腳接口,各引腳情況如下:,第1腳:VSS,電源地

26、第2腳:VDD,+5V電源 第3腳:VL,液晶顯示偏壓信號(hào) 第4腳:RS,數(shù)據(jù)/命令選擇端,高電平時(shí)選擇數(shù)據(jù)寄存器、低電 平時(shí)選擇指令寄存器。,第5腳:R/W,讀/寫選擇端,高電平時(shí)進(jìn)行讀操作,低電平時(shí)進(jìn)行寫操作。當(dāng)RS和R/W共同為低電平時(shí)可以寫入指令或者顯示地址,當(dāng)RS為低電平R/W為高電平時(shí)可以讀忙信號(hào),當(dāng)RS為高電平R/W為低電平時(shí)可以寫入數(shù)據(jù)。,第6腳:E,端為使能端,當(dāng)E端由高電平跳變成低電平時(shí),液晶模塊執(zhí)行命令。 第714腳:D0D7,為8位雙向數(shù)據(jù)線。 第15腳:BLA,背光源正極 第16腳:BLK,背光源負(fù)極,二字符型液晶顯示模塊RT-1602C的內(nèi)部結(jié)構(gòu),液晶顯示模塊RT-

27、C1602C的內(nèi)部結(jié)構(gòu)可以分成三部份:一為LCD控制器,二為LCD驅(qū)動(dòng)器,三為LCD顯示裝置,如圖所示:,控制器采用HD44780,驅(qū)動(dòng)器采用HD44100。HD44780是集控制器,驅(qū)動(dòng)器于一體,專用于字符顯示控制驅(qū)動(dòng)集成電路。HD44100是作擴(kuò)展顯示字符位的。HD44780是字符型液晶顯示控制器的代表電路。 HD44780集成電路的特點(diǎn): 1、可選擇57或510點(diǎn)字符。 2、HD44780不僅作為控制器而且還具有驅(qū)動(dòng)4016點(diǎn)陣液晶像素的能力,并且HD44780的驅(qū)動(dòng)能力可通過外接驅(qū)動(dòng)器擴(kuò)展360列驅(qū)動(dòng)。 HD44780可控制的字符高達(dá)每行80個(gè)字,也就是580=400點(diǎn),HD44780

28、內(nèi)藏有16路行驅(qū)動(dòng)器和40路列驅(qū)動(dòng)器,所以HD44780本身就具驅(qū)動(dòng)有1640點(diǎn)陣LCD的能力(即單行16個(gè)字符或兩行8個(gè)字符)。如果在外部加一HD44100外擴(kuò)展多40路/列驅(qū)動(dòng),則可驅(qū)動(dòng)162LCD。 3、HD44780的顯示緩沖區(qū)DDRAM、字符發(fā)生存儲(chǔ)器(ROM)及用戶自定義的字符發(fā)生器CGRAM全部內(nèi)藏在芯片內(nèi)。 HD44780有80個(gè)字節(jié)的顯示緩沖區(qū),分兩行,地址分別00H27H,40H67H,它下實(shí)際顯示位置的排列順序跟LCD的型號(hào)有關(guān),液晶顯示模塊RT-1602C的顯示地址與實(shí)際顯示位置的關(guān)系如圖所示。,HD44780內(nèi)藏的字符發(fā)生存儲(chǔ)器(ROM)已經(jīng)存儲(chǔ)了160個(gè)不同的點(diǎn)陣字

29、符圖形,如圖所示:,這些字符有:阿拉伯?dāng)?shù)字、英文字母的大小寫、常用的符號(hào)、和日文假名等,每一個(gè)字符都有一個(gè)固定的代碼。比如數(shù)字“1”的代碼是00110001B(31H),又如大寫的英文字母“A”的代碼是01000001B(41H),可以看出英文字母的代碼與ASCII編碼相同。要顯示“1”時(shí),我們只需將ASCII碼31H存入DDRAM指定位置,顯示模塊將在相應(yīng)的位置把數(shù)字“1”的點(diǎn)陣字符圖形顯示出來,我們就能看到數(shù)字“1”了。,4、HD44780具有8位數(shù)據(jù)和4位數(shù)據(jù)傳輸兩種方式,可與4/8位CPU相連。 5、HD44780具有簡單而功能較強(qiáng)的指令集,可實(shí)現(xiàn)字符移動(dòng),閃爍等顯示功能。,三指令格式

30、與指令功能,LCD控制器HD44780內(nèi)有多個(gè)寄存器,通過RS和R/W引腳共同決定選擇哪一個(gè)寄存器,選擇情況如表,總共有11條指令,它們的格式和功能如下:,1清屏命令 格式:,功能:清除屏幕,將顯示緩沖區(qū)DDRAM的內(nèi)容全部寫入空格(ASCII20H)。 光標(biāo)復(fù)位,回到顯示器的左上角。 地址計(jì)數(shù)器AC清零。,2光標(biāo)復(fù)位命令 格式:,功能:設(shè)定當(dāng)寫入一個(gè)字節(jié)后,光標(biāo)的移動(dòng)方向以及后面的內(nèi)容是否移動(dòng)。 當(dāng)I/D=1時(shí),光標(biāo)從左向右移動(dòng);I/D=0時(shí),光標(biāo)從右向左移動(dòng)。 當(dāng)S=1時(shí),內(nèi)容移動(dòng),S=0時(shí),內(nèi)容不移動(dòng)。,3輸入方式設(shè)置命令,功能:設(shè)定當(dāng)寫入一個(gè)字節(jié)后,光標(biāo)的移動(dòng)方向以及后面的內(nèi)容是否移動(dòng)

31、。 當(dāng)I/D=1時(shí),光標(biāo)從左向右移動(dòng);I/D=0時(shí),光標(biāo)從右向左移動(dòng)。 當(dāng)S=1時(shí),內(nèi)容移動(dòng),S=0時(shí),內(nèi)容不移動(dòng)。,4顯示開關(guān)控制命令,功能:控制顯示的開關(guān),當(dāng)D=1時(shí)顯示,D=0時(shí)不顯示。 控制光標(biāo)開關(guān),當(dāng)C=1時(shí)光標(biāo)顯示,C=0時(shí)光標(biāo)不顯示。 控制字符是否閃爍,當(dāng)B=1時(shí)字符閃爍,B=0時(shí)字符不閃爍。,格式:,格式:,5光標(biāo)移位置命令 格式:,功能:移動(dòng)光標(biāo)或整個(gè)顯示字幕移位。 當(dāng)S/C=1時(shí)整個(gè)顯示字幕移位,當(dāng)S/C=0時(shí)只光標(biāo)移位。 當(dāng)R/L=1時(shí)光標(biāo)右移,R/L=0時(shí)光標(biāo)左移。,6功能設(shè)置命令 格式:,功能:設(shè)置數(shù)據(jù)位數(shù),當(dāng)DL=1時(shí)數(shù)據(jù)位為8位,DL=0時(shí)數(shù)據(jù)位為4位。 設(shè)置顯示

32、行數(shù),當(dāng)N=1時(shí)雙行顯示,N=0時(shí)單行顯示。 設(shè)置字形大小,當(dāng)F=1時(shí)510點(diǎn)陣,F(xiàn)=0時(shí)為57點(diǎn)陣。,7設(shè)置字庫CGRAM地址命令,格式:,功能:設(shè)置用戶自定義CGRAM的地址,對用戶自定義CGRAM訪問時(shí),要先設(shè)定CGRAM的地址,地址范疇063。,8顯示緩沖區(qū)DDRAM地址設(shè)置命令,格式:,功能:設(shè)置當(dāng)前顯示緩沖區(qū)DDRAM的地址,對DDRAM訪問時(shí),要先設(shè)定DDRAM的地址,地址范疇0127。,9讀忙標(biāo)志及地址計(jì)數(shù)器AC命令,格式:,功能:讀忙標(biāo)志及地址計(jì)數(shù)器AC, 當(dāng)BF=1時(shí)則表示忙,這時(shí)不能接收命令和數(shù)據(jù);BF=0時(shí)表示不忙。 低7位為讀出的AC的地址,值為0127。,10寫DD

33、RAM或CGRAM命令,功能:向DDRAM或CGRAM當(dāng)前位置中寫入數(shù)據(jù)。對DDRAM或CGRAM寫入數(shù)據(jù)之前須設(shè)定DDRAM或CGRAM的地址。,格式:,11讀DDRAM或CGRAM命令 格式:,功能:從DDRAM或CGRAM當(dāng)前位置中讀郵數(shù)據(jù)。當(dāng)DDRAM或CGRAM讀出數(shù)據(jù)時(shí),先須設(shè)定DDRAM或CGRAM的地址。,四LCD顯示器的初始化 LCD使用之前須對它進(jìn)行初始化,初始化可通過復(fù)位完成,也可在復(fù)位后完成,初始化過程如下: 1清屏。 2功能設(shè)置。 3開/關(guān)顯示設(shè)置。 4輸入方式設(shè)置。,9.3.2 LCD顯示器與單片機(jī)的接口與應(yīng)用,下圖是LCD顯示器與8051單片機(jī)的接口圖,圖中RT-

34、1602C的數(shù)據(jù)線與8051的P1口相連,RS與8051的P2.0相連,R/ W與8051的P2.1相連,E端與8051的P2.7相連。編程在LCD顯示器的第一行、第一列開始顯示“GOOD”,第二行、第6列開始顯示“BYE”。,匯編語言程序: RS BIT P2.0 RW BIT P2.1 E BIT P2.7 ORG 00H AJMP START ORG 50H ;主程序 START:MOV SP,#50H ACALL INIT MOV A,#10000000B ;寫入顯示緩沖區(qū)起始地址為第1行第1列 ACALL WC51R MOV A,“G” ;第1行第1列顯示字母“G”。 ACALL W

35、C51DDR MOV A,“O” ;第1行第2列顯示字母“O”。 ACALL WC51DDR MOV A,“O” ;第1行第3列顯示字母“O”。 ACALL WC51DDR MOV A,“D” ;第1行第4列顯示字母“D”。 ACALL WC51DDR,MOV A,#11000101B ;寫入顯示緩沖區(qū)起始地址為第2行第6列。 ACALL WC51R MOV A,“B” ;第2行第6列顯示字母“B”。 ACALL WC51DDR MOV A,“Y” ;第2行第7列顯示字母“Y”。 ACALL WC51DDR MOV A,“E” ;第2行第8列顯示字母“E”。 ACALL WC51DDR LOO

36、P:AJMP LOOP ;初始化子程序 INIT:MOV A,#00000001H ;清屏 ACALL WC51R MOV A,#00111000B ;使用8位數(shù)據(jù),顯示兩行,使用5*7的字型。 LCALL WC51R MOV A,#00001110B ;顯示器開,光標(biāo)開,字符不閃爍。 LCALL WC51R MOV A,#00000110B ;字符不動(dòng),光標(biāo)自動(dòng)右移一格。 LCALL WC51R RET,;檢查忙子程序 F_BUSY:PUSH ACC ;保護(hù)現(xiàn)場 PUSH DPH PUSH DPL PUSH PSW WAIT:CLR RS SETB RW CLR E SETB E MOV A,P1 CLR E JB ACC.7,WAIT ;忙,等待 POP PSW ;不忙,恢復(fù)現(xiàn)場 POP DPL POP DPH POP ACC ACALL DELAY RET,;寫入命令子程序。 WC51R:ACALL F_BUSY CLR E CLR RS CLR RW SETB E MOV P1,ACC CLR E ACALL DELAY RET ;寫入數(shù)據(jù)子程序。 WC51DDR:A

溫馨提示

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

最新文檔

評論

0/150

提交評論