第七章MCS-51與鍵盤、顯示器的接口_第1頁
第七章MCS-51與鍵盤、顯示器的接口_第2頁
第七章MCS-51與鍵盤、顯示器的接口_第3頁
第七章MCS-51與鍵盤、顯示器的接口_第4頁
第七章MCS-51與鍵盤、顯示器的接口_第5頁
已閱讀5頁,還剩25頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領

文檔簡介

1、第七章 MCS-51與鍵盤、顯示器的接口 第七章第七章 MCS-51與鍵盤、顯示器的接口與鍵盤、顯示器的接口 7.1 MCS-51單片機與鍵盤接口單片機與鍵盤接口7.1.1 鍵盤的工作原理鍵盤的工作原理鍵盤實際上是一組按鍵開關的集合,平時按鍵開關總是處于斷開狀態(tài),當按下鍵時它才閉合。它的結構和產(chǎn)生的波形如圖所示。P1.1VCCGND斷開閉合斷開P1.1( a )( b )第七章 MCS-51與鍵盤、顯示器的接口 鍵盤的處理主要涉及三個方面: 1按鍵的識別按鍵的識別2抖動的消除抖動的消除消除按鍵盤抖動通常有兩種方法:硬件消抖和軟件消抖。 硬件消抖是通過在按鍵輸出電路上加一定的硬件線路來消除抖動,

2、一般采用RS觸發(fā)器或單穩(wěn)態(tài)電路。如圖。 斷開閉合+5V+5V輸出軟件消抖是利用延時來跳過抖動過程 第七章 MCS-51與鍵盤、顯示器的接口 3鍵位的編碼鍵位的編碼通常有兩種方法編碼。 (1)用連接鍵盤的I/O線的二進制組合進行編碼。如(a)圖 (2)順序排列編碼。如(b)圖,處理方法如下:編碼值=行首編碼值X+列號Y。 P1.0P1.1P1.2P1.3P1.4P1.5P1.6P1.788 84 82 8148 44 42 4128 24 22 2118 14 12 11P1.0P1.1P1.2P1.3P1.4P1.5P1.6P1.7F E D CB A 9 87 6 5 43 2 1 0( a

3、 )( b )第七章 MCS-51與鍵盤、顯示器的接口 7.1.2 獨立式鍵盤與單片機的接口獨立式鍵盤與單片機的接口鍵盤的結構形式一般有兩種:獨立式鍵盤與矩陣式鍵盤。 獨立式鍵盤就是各按鍵相互獨立,每個按鍵各接一根I/O口線,每根I/O口線上的按鍵都不會影響其它的I/O口線。 G NDVCCG NDVCC或( b )8051( a )I N T08051P1.0P1.1P1.2P1.3P1.4P1.5P1.6P1.7P1.0P1.1P1.2P1.3P1.4P1.5P1.6P1.7第七章 MCS-51與鍵盤、顯示器的接口 圖(a)為中斷方式工作的獨立式鍵盤的結構形式,(b)為查詢方式工作的獨立式

4、鍵盤的結構形式 下面是針對圖7.4(b)圖查詢方式的匯編語言形式的鍵盤程序??偣灿?個鍵位,KEY0KEY7為8個鍵的功能程序。START:MOV A,#0FFH;MOV P1,A ;置P1口為輸入狀態(tài)MOV A,P1 ;鍵狀態(tài)輸入CPL AJZ START ;沒有鍵按下,則轉(zhuǎn)開始JB ACC.0,K0 ;檢測0號鍵是否按下,按下轉(zhuǎn)JB ACC.1,K1 ;檢測1號鍵是否按下,按下轉(zhuǎn)JB ACC.2,K2 ;檢測2號鍵是否按下,按下轉(zhuǎn)JB ACC.3,K3 ;檢測3號鍵是否按下,按下轉(zhuǎn)JB ACC.4,K4 ;檢測4號鍵是否按下,按下轉(zhuǎn)JB ACC.5,K5 ;檢測5號鍵是否按下,按下轉(zhuǎn)JB

5、ACC.6,K6 ;檢測6號鍵是否按下,按下轉(zhuǎn)JB ACC.7,K7 ;檢測7號鍵是否按下,按下轉(zhuǎn)JMP START ;無鍵按下返回,再順次檢測第七章 MCS-51與鍵盤、顯示器的接口 K0:AJMP KEY0K1:AJMP KEY1K7:AJIMP KEY7KEY0: ;0號鍵功能程序JMP START ;0號鍵功能程序執(zhí)行完返回KEY1: ;0號鍵功能程序JMP START ;1號鍵功能程序執(zhí)行完返回KEY7: ;7號鍵功能程序JMP START ;7號鍵功能程序執(zhí)行完返回7.1.3 矩陣鍵盤與單片機的接口矩陣鍵盤與單片機的接口 矩陣式鍵盤又叫行列式鍵盤。用I/O口線組成行、列結構,鍵位設

6、置在行列的交點上。例如44的行、列結構可組成16個鍵的鍵盤,比一個鍵位用一根I/O口線的獨立式鍵盤少了一半的I/O口線。 第七章 MCS-51與鍵盤、顯示器的接口 矩陣鍵盤的連接方法有多種,可直接連接于單片機的I/O口線;可利用擴展的并行I/O口連接;也可利用可編程的鍵盤、顯示接口芯片(如8279)進行連接等等。其中,利用擴展的并行I/O口連接方便靈活,在單片機應用系統(tǒng)中比較常用。下圖就是通過8255A芯片擴展的并行I/O口連接48的矩陣鍵盤。PA7PA6PA5PA4PA3PA2PA1PA0PC0PC1PC2PC30 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 31

7、6 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 CS74LS373WR RDA1A0P2.7WRRDALEP0.0P0.7D0D7RESET1K20F+5V+5V82555.1K48051第七章 MCS-51與鍵盤、顯示器的接口 一矩陣鍵盤的工作過程一矩陣鍵盤的工作過程 對矩陣鍵盤的工作過程可分兩步:第一步是CPU首先檢測鍵盤上是否有鍵按下;第二步是再識別是哪一個鍵按下。1檢測鍵盤上是否有鍵按下處理方法是:將列線送入全掃描字,讀入行線的狀態(tài)來判別。其具體過程如下:PA口輸出00H,即所有列線置成低電平,然后將行線電平狀態(tài)讀入累加器A中。如果有鍵按下

8、,總會有一根行線電平被拉至低電平,從而使行輸入狀態(tài)不全為1。2識別鍵盤中哪一個鍵按下處理方法是:將列線逐列置低電平,檢查行輸入狀態(tài),稱為逐列掃描。其具體過程如下:從PA0開始,依次輸出“0”,置對應的列線為低電平,然后從PC口讀入行線狀態(tài),如果全為“1”,則按下的鍵不在此列;如果不全為“1”,則按下的鍵必在此列,而且是該列與“0”電平行線相交的交點上的那個鍵。為求取編碼,在逐列掃描時,可用計數(shù)器記錄下當前掃描列的列號,檢測到第幾行有鍵按下,就用該行的首鍵碼加列號得到當前按鍵的編碼。二矩陣鍵盤的工作方式二矩陣鍵盤的工作方式第七章 MCS-51與鍵盤、顯示器的接口 1查詢工作方式查詢工作方式 這種

9、方式是直接在主程序中插入鍵盤檢測子程序,主程序每執(zhí)行一次則鍵盤檢測子程序被執(zhí)行一次,對鍵盤進行檢測一次,如果把沒有鍵按下,則跳過鍵識別,直接執(zhí)行主程序;如果有鍵按下,則通過鍵盤掃描子程序識別按鍵,得到按鍵的編碼值,然后根據(jù)編碼值進行相應的處理,處理完后再回到主程序執(zhí)行。鍵盤掃描子程序流程如圖 。開始有鍵按下否?調(diào)用6ms延時子程序?調(diào)用12ms延時子程序?有鍵按下否?判閉合鍵,編碼入棧保護閉合鍵釋放否?編碼A返回否否否是是是第七章 MCS-51與鍵盤、顯示器的接口 鍵盤掃描子程序如下:(硬件線路如圖7.4,8255A的A口、B口、C口和控制口地址分別為7F00H、7F01H、7F02H、7F0

10、3H,設8255A已在主程序中初始化。已設定為A口方式0輸出,C口的低4位方式0輸入。)KEY1:ACALL KS1 ;調(diào)用判斷有無鍵按下子程序JNZ LK1 ;有鍵按下時,(A)0轉(zhuǎn)消抖延時KEY2:ACALL TM6msAJMP KEY1 ;無鍵按下返回LK1:ACALL TM12ms ;調(diào)12 ms延時子程序ACALL KS1 ;查有無鍵按下,若有則真有鍵按下JNZ LK2 ;鍵(A) 0逐列掃描AJMP KEY2 ;不是真有鍵按下,返回LK2:MOV R2,#0FEH ;初始列掃描字(0列)送入R2MOV R4,#00H ;初始列(0列)號送入R4LK4:MOV DPTR,#7F00H

11、 ;DPTR指向8155PA口MOV A,R2 ;列掃描字送至8155PA口MOVX DPTR,AINC DPTR ;DPTR指向8155PC口INC DPTR 第七章 MCS-51與鍵盤、顯示器的接口 MOVX A,DPTR ;從8155 PC口讀入行狀態(tài)JB ACC.0,LONE ;查第0行無鍵按下,轉(zhuǎn)查第1行MOV A,#00H ;第0行有鍵按下,行首鍵碼#00HAAJMP LKP ;轉(zhuǎn)求鍵碼LONE:JB ACC.1,LTWO ;查第1行無鍵按下,轉(zhuǎn)查第2行MOV A,#08H ;第1行有鍵按下,行首鍵碼#08HAAJMP LKP ;轉(zhuǎn)求鍵碼LTWO:JB ACC.2,LTHR ;查第

12、2行無鍵按下,轉(zhuǎn)查第3行MOV A,#10H ;第2行有鍵按下,行首鍵碼#10HAAJMP LKP ;轉(zhuǎn)求鍵碼LTHR:JB ACC.3,NEXT ;查第3行無鍵按下,轉(zhuǎn)該查下一列MOV A,#18H ;第3行有鍵按下,行首鍵碼#18HALKP:ADD A,R4 ;求鍵碼,鍵碼=行首鍵碼+列號PUSH ACC ;鍵碼進棧保護LK3:ACALL KS1 ;等待鍵釋放JNZ LK3 ;鍵未釋放,等待POP ACC ;鍵釋放,鍵碼ARET ;鍵掃描結束,出口狀態(tài)(A)=鍵碼第七章 MCS-51與鍵盤、顯示器的接口 NEXT:INC R4 ;準備掃描下一列,列號加1MOV A,R2 ;取列掃描字送累加

13、器AJNB ACC.7,KEND ;判斷8列掃描否?掃描完返回RL A ;掃描字左移一位,變?yōu)橄乱涣袙呙枳諱OV R2,A ;掃描字送入R2保存AJMP LK4 ;轉(zhuǎn)下一列掃描KEND:AJMP KEY1 KS1:MOV DPTR,#7F00H ;DPTR指向8155PA口MOV A,#00H ;全掃描字AMOVX DPTR,A ;全掃描字送往8155PA口INC DPTR ;DPTR指向8155PC口INC DPTR MOVX A,DPTR ;讀入PC口行狀態(tài)CPL A ;變正邏輯,以高電平表示有鍵按下ANL A,#0FH ;屏蔽高4位,只保留低4位行線值RET ;出口狀態(tài):(A)0時有鍵按

14、下第七章 MCS-51與鍵盤、顯示器的接口 TM12ms:MOV R7,#18H ;延時12 ms子程序TM:MOV R6,#0FFHTM6:DJNZ R6,TM6DJNZ R7,TMRETTM6ms:MOV R7,#0CH ;延時6 ms子程序TM2:MOV R6,#0FFHTM62:DJNZ R6,TM6DJNZ R7,TMRETC語言鍵盤掃描子程序:略2定時掃描工作方式定時掃描工作方式3中斷處理方式中斷處理方式第七章 MCS-51與鍵盤、顯示器的接口 7.2 MCS-51單片機與單片機與LED顯示器接口顯示器接口7.2.1 LED顯示器的結構與原理顯示器的結構與原理在單片機應用系統(tǒng)中通常

15、使用的是8段式LED數(shù)碼管顯示器,它有共陰極和共陽極兩種,如圖所示。abcdefgdpcomabcdefgdpcomabcdefgdp10 9 8 7 61 2 3 4 5 g f com a be d com c dp( a )( b )(c )第七章 MCS-51與鍵盤、顯示器的接口 其中:(a)為共陰極結構。(b)為共陽極結構。(c)圖為管腳圖,從ag管腳輸入不同的8位二進制編碼,可顯示不同的數(shù)字或字符。共陰極和共陽極的字段碼互為反碼 。顯示字符共陰極字段碼共陽極字段碼顯示字符共陰極字段碼共陽極字段碼03FHC0HC39HC6H106HF9HD5EHA1H25BHA4HE79H86H34

16、FHB0HF71H8EH466H99HP73H8CH56DH92HU3EHC1H67DH82HT31HCEH707HF8HY6EH91H87FH80HL38HC7H96FH90H8FFH00HA77H88H“滅”00FFHB7CH83H第七章 MCS-51與鍵盤、顯示器的接口 7.2.2 LED數(shù)碼管顯示器的譯碼方式一硬件譯碼方式一硬件譯碼方式譯碼方式是指由顯示字符轉(zhuǎn)換得到對應的字段碼的方式 硬件譯碼方式是指利用專門的硬件電路來實現(xiàn)顯示字符到字段碼的轉(zhuǎn)換,這樣的硬件電路有很多,比如MOTOTOLA公司生產(chǎn)的MC14495芯片就是其中的一種,MC14495是共陰極一位十六進制數(shù)字段碼轉(zhuǎn)換芯片,能

17、夠輸出用四位二進制表示形式的一位十六進制數(shù)的七位字段碼,不帶小數(shù)點。它的內(nèi)部結構如圖。 4鎖存器地址譯碼和字段碼ROM陣列ABCDLE569107Vss VDD8 16abcdefgh+iV CR11121314151234第七章 MCS-51與鍵盤、顯示器的接口 二軟件譯碼方式二軟件譯碼方式 軟件譯碼方式就是通過編寫軟件譯碼程序,通過譯碼程序來得到要顯示的字符的字段碼。 7.2.3 LED數(shù)碼管的顯示方式一一LED靜態(tài)顯示靜態(tài)顯示 LED靜態(tài)顯示時,其公共端直接接地(共陰極)或接電源(共陽極),各段選線分別與I/O口線相連。要顯示字符,直接在I/O線送相應的字段碼。 a b c d e f

18、g dpI/O(1)a b c d e f g dpI/O(2)第七章 MCS-51與鍵盤、顯示器的接口 二二LED動態(tài)顯示方式動態(tài)顯示方式 LED動態(tài)顯示是將所有的數(shù)碼管的段選線并接在一起,用一個I/O口控制,公共端不是直接接地(共陰極)或電源(共陽極),而是通過相應的I/O口線控制。 D3D2D1D0I/O(1)I/O(2)第七章 MCS-51與鍵盤、顯示器的接口 設數(shù)碼管為共陽極,它的工作過程為:第一步使右邊第一個數(shù)碼管的公共端D0為1,其余的數(shù)碼管的公共端為0,同時在I/O(1)上送右邊第一個數(shù)碼管的字段碼,這時,只有右邊第一個數(shù)碼管顯示,其余不顯示;第二步使右邊第二個數(shù)碼管的公共端D

19、1為1,其余的數(shù)碼管的公共端為0,同時在I/O(1)上送右邊第二個數(shù)碼管的字段碼,這時,只有右邊第二個數(shù)碼管顯示,其余不顯示,依此類推,直到最后一個,這樣四個數(shù)碼管輪流顯示相應的信息,一個循環(huán)完后,下一循環(huán)又這樣輪流顯示,從計算機的角度看是一個一個的顯示,但由于人的視覺滯留,只要循環(huán)的周期足夠快,看起來所有的數(shù)碼管都是一起顯示的了。這就是動態(tài)顯示的原理。而這個循環(huán)周期對于計算機來說很容易實現(xiàn)。所以在單片機中經(jīng)常用到動態(tài)顯示。 7.2.4 LED顯示器與單片機的接口顯示器與單片機的接口 LED顯示器從譯碼方式上有硬件譯碼方式和軟件譯碼方式。從顯示方式上有靜態(tài)顯示方式和動態(tài)顯示方式。在使用時可以把

20、它們組合起來。在實際應用時,如果數(shù)碼管個數(shù)較少,通常用硬件譯碼靜態(tài)顯示,在數(shù)碼管個數(shù)較多時,則通常用軟件譯碼動態(tài)顯示。 第七章 MCS-51與鍵盤、顯示器的接口 一硬件譯碼靜態(tài)顯示一硬件譯碼靜態(tài)顯示下圖是一個兩位數(shù)碼管硬件譯碼靜態(tài)顯示的接口電路圖。 a b c d e f gMC14495a b c d e f ga b c d e f gA B C DLEMC14495a b c d e f gA B C DLEP1.0P1.1P1.2P1.3P1.4P1.58051第七章 MCS-51與鍵盤、顯示器的接口 二軟件譯碼動態(tài)顯示二軟件譯碼動態(tài)顯示下圖是一個8位軟件譯碼動態(tài)顯示的接口電路圖。圖中

21、用8255A擴展并行I/O口接數(shù)碼管,數(shù)碼管采用動態(tài)顯示方式,8位數(shù)碼管的段選線并聯(lián)與8255A的A口通過74LS373相連,8位數(shù)碼管的公共端通過74LS373分別與8255A的B口相連。也即8255A的B口輸出位選碼選擇要顯示的數(shù)碼管,8255A的A口輸出字段碼使數(shù)碼管顯示相應的字符,8255A的A口和B口都工作于方式0輸出。A口、B口、C口和控制口的地址分別為7F00H、7F01H、7F02H和7F03H。 第七章 MCS-51與鍵盤、顯示器的接口 D0D1D2D7Q0Q1Q2Q3Q4Q5Q6Q7D0D1D2D3D4D5D6D7G OEVCC74LS373Q0Q1Q2Q3Q4Q5Q6Q7

22、D0D1D2D3D4D5D6D7G OEVCC74LS373PA0PA1PA2PA3PA4PA5PA6PA7PB0PB1PB2PB3PB4PB5PB6PB7CSWRRD74LS373P2.7WRRDALEP0.0P0.78051D0D7A1A0GA1A08255第七章 MCS-51與鍵盤、顯示器的接口 軟件譯碼動態(tài)顯示匯編語言程序為:(設8個數(shù)碼管的顯示緩沖區(qū)為片內(nèi)RAM的57H50H單元)DISPLAY:MOV A,#10000000B ;8255初始化MOV DPTR,#7F03H ;使DPTR指向8155控制寄存器端口MOVX DPTR,AMOV R0,#57H ;動態(tài)顯示初始化,使R0

23、指向緩沖區(qū)首址MOV R3,#7FH ;首位位選字送R3MOV A,R3LD0: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延時子程序DEC R0 ;指向緩沖區(qū)下一單元MOV A,R3 ;位選碼送累加器A第七章 MCS-51與鍵盤、顯示器的接口 JNB ACC.0,LD1 ;判斷8位是否顯示完畢,顯

24、示完返回RR A ;未顯示完,把位選字變?yōu)橄乱晃贿x字MOV R3,A ;修改后的位選字送R3AJMP LD0 ;循環(huán)實現(xiàn)按位序依次顯示LD1:RETTAB:DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H ;字段碼表DB: 7FH,6FH,77H,7CH,39H,5EH,79H,71HDL1:MOV R7,#02H ;延時子程序DL: MOV R6,#0FFHDL0:DJNZ R6,DL0DJNZ R7,DLRET第七章 MCS-51與鍵盤、顯示器的接口 軟件譯碼動態(tài)顯示C語言程序為:#include #include /定義絕對地址訪問#define uchar unsi

25、gned char#define uint unsigned intvoid delay(uint); /聲明延時函數(shù)void display(void); /聲明顯示函數(shù)uchar disbuffer8=0,1,2,3,4,5,6,7; /定義顯示緩沖區(qū)void main(void)XBYTE0 x7f03=0 x80; /8255A初始化while(1)display(); /設顯示函數(shù)/*延時函數(shù)*void delay(uint i) /延時函數(shù)uint j;for (j=0;ji;j+)第七章 MCS-51與鍵盤、顯示器的接口 /*顯示函數(shù)void display(void) /定義顯示函數(shù)uchar codevalue16=0 x3f,0 x06,0 x5b,0

溫馨提示

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

評論

0/150

提交評論