zxc2012第10章 鍵盤顯示接口課件_第1頁
zxc2012第10章 鍵盤顯示接口課件_第2頁
zxc2012第10章 鍵盤顯示接口課件_第3頁
zxc2012第10章 鍵盤顯示接口課件_第4頁
zxc2012第10章 鍵盤顯示接口課件_第5頁
已閱讀5頁,還剩59頁未讀 繼續免費閱讀

下載本文檔

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

文檔簡介

第10章:AT89S51與輸入/輸出外設的接口

內容概要

單片機應用系統通常都需要進行人機對話。這包括人對應用系統的狀態干預與數據輸入,還有應用系統向人顯示運行狀態與運行結果等。如鍵盤、顯示器就是用來完成人機對話活動的人機通道。大多數的單片機應用系統,都要配置輸入外設和輸出外設。常用的輸入外設有鍵盤、BCD碼撥盤等;常用的輸出外設有LED數碼管、LCD顯示器、打印機等。本章介紹AT89S51與各種輸入外設、輸出外設的接口設計以及軟件編程。10.1LED顯示器接口原理10.1.1LED顯示器的結構LED(LightEmittingDiode)

常用的LED顯示器為8段(或7段,8段比7段多了一個小數點“dp”段)。有共陽極和共陰極兩種。為使LED顯示不同的符號或數字,要把某些段發光二極管點亮,要為LED提供段碼(或稱七段碼、字型碼)。一個字節(8段)。各段與字節中各位對應關系如下(習慣上還是以“a”段對應段碼的最低位):顯示字符共陰極段碼共陽極段碼顯示字符共陰極段碼共陽極段碼03FHC0Hc39HC6H106HF9Hd5EHA1H25BHA4HE79H86H34FHB0HF71H8EH466H99HP73H8CH56DH92HU3EHC1H67DH82HT31HCEH707HF8Hy6EH91H87FH80HH76H89H96FH90HL38HC7HA77FH88H“滅”00HFFHb7CH83H………10.1LED顯示器接口原理10.1.2LED顯示器工作原理4位LED顯示器的結構圖。公共端10.1LED顯示器接口原理段碼線控制顯示的字型,位選線控制該顯示位的亮或暗。靜態顯示和動態顯示兩種顯示方式。N個LED顯示塊有N位位選線和8×N根段碼線。1.靜態顯示方式各位的公共端連接在一起(接地或+5V)。

每位的段碼線(a~dp)分別與一個8位的鎖存器輸出相連。顯示字符一經確定,相應鎖存器的段碼輸出將維持不變,直到送入另一個段碼為止。顯示的亮度高。10.1LED顯示器接口原理4位靜態LED顯示器電路。該電路各位可獨立顯示。靜態顯示方式的顯示無閃爍,亮度都較高,軟件控制比較容易。顯示器接口的數據輸出方式與電路形式

一般的單片機I/O接口不能直接驅動顯示器,需要在單片機和顯示器之間加接口電路實現譯碼和驅動。應根據顯示器的位數、電流大小(通過每個發光二極管的平均電流為5~20mA)來確定接口電路的形式。10.1LED顯示器接口原理10.1LED顯示器接口原理AT89S5110.1LED顯示器接口原理AT89S51因人眼的視覺暫留時間為0.1s(100ms),所以每位送顯示碼的間隔不能超過12.5ms;段選碼、位選碼每送入一次后延時1ms,保持延時一段時間(1ms)

,以造成視覺暫留效果;結果:看上去每個數碼管總在亮。靜態顯示器的亮度較高。這種顯示方式編程容易,管理也較簡單,但占用I/O口線資源較多。在顯示位數較多的情況下,一般都采用動態顯示方式。動態顯示器占用I/O口線資源較少,但亮度較低。這種顯示方式編程稍復雜,且占用CPU的時間多。只要有動態顯示,則主程序中必須不停的刷新顯示。下圖為8位LED動態顯示2009.10.10的過程。圖(a)是顯示過程,某一時刻,只有一位LED被選通顯示,其余位則是熄滅的;圖(b)是實際顯示結果,人眼看到的是8位穩定的“同時”顯示的字符。關注空間位置與位選線的關系共陰極AT89S51存儲器的規劃:待顯示數據存放在7EH~79H(對應空間位置從右至左)。內部存放的是0~9(或0~FH)的數。事先規劃好位選線的形式及產生方法。本題選中的位應輸出高電平。設初值為01H,左移獲得。待顯示數據(79H)(7AH)(7BH)(7CH)(7DH)(7EH)段選碼查表獲得位選碼20H10H08H04H02H01H逐位輪流點亮各個LED,每一位保持1ms,在10~20ms之內再一次點亮,重復不止。這樣,利用人的視覺暫留,好像6位LED同時點亮一樣。軟件描述18

動態顯示控制時的編程方法1)在內存區建立一個顯示緩沖區

2)建立一個待顯示的字形編碼表3)編寫顯示子程序分時循環輸出動態顯示子程序流程圖MOVCA,@A+DPTR

共陰極位選:P1.0=1開始取字型表首地址→DPTRR1.0=0?YN

位選初值00000001B→R1

取待顯示字符→A

取顯示字符查表轉換為字形碼→P0口

延時1ms(可調)

顯示緩沖區指針R0加1

修改選碼R1左移1位返回

顯示緩沖區初值→R0

送位選碼→P1口已顯示完最后一位嗎?緩沖區(R0)DIS顯示子程序清單如下:DIS: MOV R0,#7EH;顯示緩沖區末地址→R0MOV R2,#01H;位控字,先點亮最低位(右邊)MOV A,R2MOV DPTR,#TAB;字型表頭地址→DPTRLP0: MOV P1,AMOV A,@R0 ;取顯示數據MOVCA,@A+DPTR ;取出字形MOV P0,A ;送出顯示ACALL D1MS ;調延時子程序DEC R0 ;數據緩沖區地址減1MOV A,R2JB ACC.5,LP1;掃描到最左面的顯示器了嗎?RL A ;沒有到,左移1位MOV R2,AAJMP LP0LP1: RETAT89S51PA:7F01HPB:7F02H(一)鍵盤應解決的問題鍵盤具有向單片機輸入數據、命令等功能,是人與單片機對話的主要手段。1.鍵盤的任務(1)判別是否有鍵按下?若有,進入下一步工作。(2)識別哪一個鍵被按下,并求出相應的鍵值。(3)根據鍵值,找到相應鍵值的處理程序入口。10.2鍵盤接口原理2.鍵盤輸入的特點常見鍵盤:觸摸式鍵盤、薄膜鍵盤和按鍵式鍵盤,最常用的是按鍵式鍵盤。按鍵實質上就是一個開關。如圖(a)所示,按鍵開關的兩端分別連接在行線和列線上,通過鍵盤開關機械觸點的斷開、閉合,其行線電壓輸出波形如圖(b)所示。

t1和t3分別為鍵的閉合和斷開過程中的抖動期(呈現一串負脈沖),抖動時間長短與開關的機械特性有關,一般為5~10ms,t2為穩定的閉合期,其時間由按鍵動作確定,一般為十分之幾秒到幾秒,t0、t4為斷開期。10.2鍵盤接口原理

如果按鍵較多,常用軟件方法去抖動,即檢測出鍵閉合后執行一個延時程序,產生5~10ms的延時;讓前沿抖動消失后,再一次檢測鍵的狀態,如果仍保持閉合狀態電平,則確認為真正有鍵按下。當檢測到按鍵釋放后,也要給5~10ms的延時,待后沿抖動消失后,才能轉入該鍵的處理程序。延時等待10ms

仍有按鍵信號?Y

有按鍵信號?NYN鍵盤處理

按鍵釋放?NY

軟件去抖軟件去抖10.2鍵盤接口原理4.按鍵的識別鍵的閉合與否,行線輸出電壓上就是呈現高電平或低電平。高電平,表示鍵斷開,低電平則表示鍵閉合,通過對行線電平的高低狀態的檢測,可確認按鍵按下以及按鍵釋放與否。為了確保對一次按鍵動作只確認一次按鍵有效,必須消除抖動期t1和t3的影響。10.2鍵盤接口原理(二)非編碼鍵盤的工作原理按鍵按接口原理可分為鍵盤分編碼鍵盤和非編碼鍵盤。這兩類鍵盤的主要區別是識別鍵符及給出相應鍵碼的方法。鍵盤上閉合鍵的識別由專用的硬件譯碼器實現,并產生鍵編號或鍵值的稱為編碼鍵盤,如BCD碼鍵盤、ASCII碼鍵盤等;靠軟件識別的稱為非編碼鍵盤。

單片機常用的鍵盤結構形式有獨立式和矩陣式兩種,單片機實現鍵盤接口的常用方法和接口芯片有:①使用單片機本身的并行口;②使用單片機本身的串行口;③使用通用接口芯片(例如82C55、81C55等);④使用專用接口芯片(例如8279、ZLG7289A等)。

“n鍵同時按下”的情況:①只認為最后一個鍵按下為為有效;②將按鍵的信息存入鍵盤輸入緩沖器,逐個處理。“兩鍵同時按下”的情況:①只有一個鍵按下時才讀取鍵盤的輸出,最后仍被按下的鍵有效;②當第一個鍵未松開時,按第二個鍵不起作用(硬件實現)。“n鍵鎖定”技術——只處理一個健。10.2鍵盤接口原理識別某一鍵是否按下的子程序:KEYIN: MOV A,P1 ;讀入8個按鍵的狀態 CJNE A,#0FFH,QUDOU;有鍵按下,跳去抖動 LJMP RETURN ;無鍵按下,返回 QUDOU:MOVR3,A ;8個按鍵的狀態送R3保存 LCALLDELAY10 ;調用延時子程序,軟件去鍵抖動 MOV A,P1 ;再一次讀入8個按鍵的狀態 CJNE A,R3,RETURN;兩次鍵值比較,不同, ;是抖動引起,轉RETURN 2910.2鍵盤接口原理MOV P1,#0FFH;P1口寫入1,設置P1口為輸入狀態KEY0: MOV C,P1.0;有鍵按下,讀P1.0的按鍵狀態 JC KEY1 ;P1.0為高,該鍵未按下,跳KEY1, ;判下一個鍵 LJMP PKEY0 ;P1.0的鍵按下,跳PKEY0處理KEY1: MOV C,P1.1;讀P1.1的按鍵狀態 JC KEY2 ;P1.1為高,該鍵未按下,跳KEY2, ;判下一個鍵 LJMP PKEY1 ;P1.1的鍵按下,跳PKEY1處理 …… ……KEY7: MOV C,P1.7 ;讀P1.7的按鍵狀態 JC RETURN ;P1.7為高,該鍵未按下,跳

;RETURN處 LJMP PKEY7

;P1.7的鍵按下,跳PKEY7處理RETURN:RET ;子程序返回30注意,在進入鍵處理程序后,需要先等待按鍵釋放,再執行鍵處理功能。另外,在鍵處理程序完成后,一定要跳向RETURN標號處返回。10.2鍵盤接口原理下圖為8255A擴展I/O口的獨立式按鍵接口電路。PA10.2鍵盤接口原理32(2)矩陣式鍵盤矩陣式(也稱行列式)鍵盤用于按鍵數目較多的場合,由行線和列線組成,按鍵位于行、列的交叉點上。如圖所示,一個44的行、列結構可以構成一個16個按鍵鍵盤。在按鍵數目較多的場合,要節省較多的I/O口線。矩陣中無按鍵按下時,行線為高電平;當有按鍵按下時,行線電平狀態將由與此行線相連的列線的電平決定。列線的電平如果為低,則行線電平為低;列線的電平如果為高,則行線的電平也為高,這是識別鍵是否按下的關鍵所在10.2鍵盤接口原理由于矩陣式鍵盤中行、列線為多鍵共用,各按鍵彼此將相互發生影響,所以必須將行、列線信號配合,才能確定閉合鍵位置。矩陣式鍵盤按鍵的識別方法第2步,識別出哪個按鍵被按下。使某列為低電平,其余各列為高電平,再依次檢查各行線電平的變化,某行線電平變低,則此行、列交點處按鍵按下。第1步,識別鍵盤有無鍵按下。使所有列為低電平,檢查各行線電平是否有變化,有變化則有健按下;掃描法10.2鍵盤接口原理KEY:MOVP1,#0FH ;列輸出低電平,行輸出高電平

MOVA,P1 ;讀P1口狀態

ANLA,#0FH ;保留行狀態

CJNEA,#0FH,KEY0 ;有鍵按下轉KEY0SJMPKEY ;無鍵按下等待,轉鍵檢測KEY0:LCALLDELAY10 ;調10mS延時取抖

MOVA,P1ANLA,#0FHCJNEA,#0FH,KEY1 ;不是抖動轉鍵值判斷

SJMPKEY ;是抖動到鍵檢測KEY1:MOVP1,#11101111B;第一列鍵被按下判斷

MOVA,P1 ANLA,#0FHCJNEA,#0FH,KEY11;第一列鍵被按下轉KEY11處理

MOVP1,#11011111B;第二列鍵被按下判斷

MOVA,P1ANLA,#0FHCJNEA,#0FH,KEY11;第二列鍵被按下轉KEY11處理 ……MOVP1,#01111111B;第四列鍵被按下判斷

MOVA,P1ANLA,#0FHCJNEA,#0FH,KEY11;第四列鍵被按下轉KEY11處理

LJMPKEY;均不是轉到鍵檢測KEY11:MOVA,P1;讀鍵值鍵值處理··在掃描過程中,當發現某行有鍵按下,也就是輸入的列線中有一位為0時,便可判別閉合按鍵所在列的位置,根據行線位置和列線位置就能判斷按鍵在矩陣中的位置,知道是哪一個鍵按下。如何將你知道的第i行、第j列按鍵被按下的信息存放在A中?以什么形式存放?讀圖10-10讀圖并歸納,得出:按鍵的值=行號×每行的按鍵個數+列號。計數譯碼法第0行的鍵值為:

0行×4+列號(0~3)為0、1、2、3;第1行的鍵值為:1行×4+列號(0~3)為4、5、6、7;第2行的鍵值為:2行×4+列號(0~3)為8、9、A、B;第3行的鍵值為:3行×4+列號(0~3)為C、D、E、F。4×4鍵盤行首鍵號為0、4、8、C,列號為0,1,2,3。此公式是針對例圖,若行、列與掃描線、回讀線的對應關系改變了,公式要改變。行首鍵號鍵的位置碼及鍵值的譯碼過程規劃:行掃描過程結束后(發現有鍵按下)得到的行號存放在R0中,列號存放在R2中。按鍵掃描的工作過程如下:①判斷鍵盤中是否有鍵按下;②進行行掃描,判斷是哪一個鍵按下,若有鍵按下,則調用延時子程序去抖動;③讀取按鍵的位置碼;④將按鍵的位置碼轉換為鍵值(鍵的順序號)0、1、2…、F。這樣編鍵號有何好處?練習:設計一個2×2行列式鍵盤,并編寫鍵盤掃描子程序。解:原理如圖所示。①判斷是否有鍵按下:將列線P1.0、P1.1送全0,查P0.0、P0.1是否為0。②判斷哪一個鍵按下:逐列送0電平信號,再逐行掃描是否為0。③鍵號=行首鍵號+列號鍵盤掃描原理圖(2)線反轉法掃描法要逐列掃描查詢,有時則要多次掃描。而線反轉法則很簡練,無論被按鍵是處于第一列或最后一列,均只需經過兩步便能獲得此按鍵所在的行列值。第一步:讓行線編程為輸入線,列線編程為輸出線,并使輸出線輸出為全低電平,則行線中電平由高變低的所在行為按鍵所在行。第二步:把行線編程為輸出線,列線編程為輸入線,并使輸出線輸出為全低電平,則列線中電平由高變低所在列為按鍵所在列。40第1步,P1.0~P1.3輸出全為“0”,然后,讀入P1.4~P1.7線的狀態,第2步,讓P1.4~P1.7輸出全為0,然后,讀入P1.0~P1.3位,假設鍵5被按下41KEY: MOVP1,#0F0H ;列輸出低,行輸出高

MOVA,P1 ;讀P1口狀態

ANLA,#0F0H ;保留行狀態

CJNEA,#0F0H,KEY0 ;有鍵按下轉KEY0 SJMPKEY ;無鍵按下等待,轉鍵檢測第一步,P1.0~P1.3輸出全為“0”,然后,讀入P1.4~P1.7線的狀態,第二步,讓P1.4~P1.7輸出全為0,然后,讀入P1.0~P1.3位,41KEY1:MOVP1,#0FH ;行輸出低,列輸出高

MOVA,P1ANLA,#0FHORLA,B

鍵值處理KEY0:LCALLDELAY10 ;調10mS延時去抖

MOVA,P1ANLA,#0F0HMOVB,ACJNEA,#0F0H,KEY1 ;不是抖動轉鍵值判斷

SJMPKEY ;是抖動轉到鍵檢測10.2.3鍵盤的工作方式

單片機在忙于各項工作任務時,如何兼顧鍵盤的輸入,取決于鍵盤的工作方式。原則:即要保證能及時響應按鍵操作,又不要過多占用CPU的工作時間。通常,鍵盤工作方式有3種:編程掃描、定時掃描和中斷掃描。1.編程掃描方式(查詢方式)利用單片機空閑時,調用鍵盤掃描子程序,反復掃描鍵盤。一旦有鍵按下,子程序會把鍵值算好,放如A中,主程序中應有相應的程序去對鍵值作出反應。

如果單片機的查詢的頻率過高,雖能及時響應鍵盤的輸入,但也會影響其他任務的進行。查詢的頻率過低,可能會鍵盤輸入漏判。2.定時掃描方式每隔一定的時間對鍵盤掃描一次。在這種方式中,通常利用單片機內的定時器產生的定時中斷,進入中斷子程序來對鍵盤進行掃描,在有鍵按下時識別出該鍵,并執行相應鍵的處理程序。為了不漏判有效的按鍵,定時中斷的周期一般應小于100ms。3.中斷工作方式

只有在鍵盤有鍵按下時,才執行鍵盤掃描程序,如無鍵按下,單片機將不理睬鍵盤。圖10-11

采用線反轉法的矩陣式鍵盤圖中的鍵盤只有在鍵盤有按鍵按下時,發出中斷請求信號,單片機響應中斷,執行鍵盤掃描程序中斷服務子程序。如無鍵按下,單片機將不理睬鍵盤。此種方式的優點是,只有按鍵按下時,才進行處理,所以其實時性強,工作效率高。8輸入與非門第1層:單片機如何來監視鍵盤的輸入。三種工作方式:①編程掃描②定時掃描③中斷掃描。第2層:確定具體按鍵的鍵號。體現在按鍵的識別方法上就是:①掃描法;②線反轉法。第3層:執行鍵處理程序。非編碼矩陣式鍵盤所完成的工作分為3個層次。4610.3專用的鍵盤/顯示器接口芯片簡介用專用芯片,可省去編寫鍵盤/顯示器動態掃描程序以及鍵盤去抖動程序編寫的繁瑣工作。目前各種專用接口芯片種類繁多,各有特點,總體趨勢是并行接口芯片逐漸退出,串行接口芯片越來越多的得到應用。早期的較為流行的鍵盤/顯示器芯片8279,目前流行的鍵盤/顯示器接口芯片均采用串行通信方式,占用口線少。常見的芯片有:周立功公司的ZLG7289A、ZLG7290B、MAX7219、南京沁恒公司的CH451、HD7279和BC7281等。47專用鍵盤/顯示器芯片CH451可動態驅動8位LED數碼管顯示,具有BCD碼譯碼、閃爍、移位等功能。內置大電流驅動級,段電流不小于30mA,位電流不小于160mA。內置64(8×8)鍵鍵盤控制器,可對8×8矩陣鍵盤自動掃描,且有去抖動電路,并提供鍵盤中斷和按鍵釋放標志位,可供查詢按鍵按下與釋放狀態。片內內置上電復位和看門狗定時器。芯片性價比較高,是目前使用較為廣泛的專用的鍵盤/顯示器接口芯片之一。但抗干擾能力不是很強,不支持組合鍵識別。使用CH451擴展鍵盤顯示接口,具有接口簡單、占用CPU資源少、外圍器件簡單、性能價格比高等優點,在各種單片機系統中得以廣泛的應用。48兩種封裝形式:28腳的表貼型封裝(SOP型)以及24腳的雙列直插(DIP)封裝,如圖10-13所示。

圖10-13

CH451的封裝與引腳493.CH451與AT89S51單片機的接口接口電路如圖10-14所示,使用4線串行接口。其中DOUT腳連到外部中斷輸入

腳,用中斷方式響應有效按鍵。也可用查詢方式確定CH451是否檢測到有效按鍵,同時還可向單片機提供復位信號RESET,并帶有WatchDog功能。CH451的段驅動腳串200Ω電阻用于限制和均衡段驅動電流。在5V下,串接200Ω電阻對應的段電流為13mA。CH451具有64鍵的鍵盤掃描功能,為防止鍵按下后在SEG信號線與DIG信號線之間形成短路而影響數碼管顯示,一般應在CH451的DIG0~DIG7腳與鍵盤矩陣之間串接限流電阻,阻值1kΩ~10kΩ。505110.4AT89S51單片機與液晶顯示器(LCD)的接口 LCD(LiquidCrystalDisplay)液晶顯示器縮寫,被動顯示,本身并不發光,是利用液晶經過處理后能改變光線通過方向的特性,從而達到白底黑字或黑底白字顯示的目的。液晶顯示器具有省電、抗干擾能力強等優點,廣泛應用在智能儀器儀表和單片機測控系統中。當前市場上液晶顯示器種類繁多,按排列形狀可分為字段型、點陣字符型和點陣圖形型。52能夠同時顯示16x02即32個字符。12864是128*64點陣液晶模塊的點陣數簡稱常用點陣字符型LCD顯示器由于LCD的面板較為脆弱,制造商已將LCD控制器、驅動器、RAM、ROM和LCD顯示器用PCB連接到一起,稱為液晶顯示模塊(LCdModule,LCM)。詳細實驗步驟參考實驗教材實驗三:八段數碼管顯示實驗地點:西二樓202實驗室實驗時間:下周二

下午2:30~4:30,第一組(前30名學生)

晚上7:30~9:30,第二組(后30名學生)1.實驗目的:(1)了解數碼管動態顯示的原理。(2)了解74LS164擴展端口的方法。2.實驗要求:利用實驗儀提供的顯示電路,動態顯示一行數據.5455560e103H0e101H5758OUTBITequ0e101h;位控制口CLK164equ0e102h;段控制口(接164時鐘位)DAT164equ0e102h;段控制口(接164數據位)INequ0e103h;鍵盤讀入口LEDBufequ60h;顯示緩沖Numequ70h;顯示的數據DelayTequ75h;ljmpStart

LEDMAP:;八段管顯示碼db3fh,06h,5bh,4fh,66h,6dh,7dh,07hdb7fh,6fh,77h,7ch,39h,5eh,79h,71hDelay:;延時子程序movr7,#0DelayLoop:djnzr7,DelayLoopdjnzr6,DelayLoopret數碼管顯示程序59DisplayLED:movr0,#LEDBufmovr1,#6;共6個八段管

movr2,#00100000b;從左邊開始顯示Loop:movdptr,#OUTBITmova,#00hmovx@dptr,a;關所有八段管

mova,@r060movB,#8;送164模擬串口顯示程序,DLP: ;rlc a mov r3,a mov acc.0,c ANL A,#0FDH ;PB1清0 mov dptr,#D

溫馨提示

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

評論

0/150

提交評論