![單片機并行接口擴展技術第六章文檔_第1頁](http://file3.renrendoc.com/fileroot_temp3/2022-1/6/ec73e770-48ab-4274-887d-8078e966e4f2/ec73e770-48ab-4274-887d-8078e966e4f21.gif)
![單片機并行接口擴展技術第六章文檔_第2頁](http://file3.renrendoc.com/fileroot_temp3/2022-1/6/ec73e770-48ab-4274-887d-8078e966e4f2/ec73e770-48ab-4274-887d-8078e966e4f22.gif)
![單片機并行接口擴展技術第六章文檔_第3頁](http://file3.renrendoc.com/fileroot_temp3/2022-1/6/ec73e770-48ab-4274-887d-8078e966e4f2/ec73e770-48ab-4274-887d-8078e966e4f23.gif)
![單片機并行接口擴展技術第六章文檔_第4頁](http://file3.renrendoc.com/fileroot_temp3/2022-1/6/ec73e770-48ab-4274-887d-8078e966e4f2/ec73e770-48ab-4274-887d-8078e966e4f24.gif)
![單片機并行接口擴展技術第六章文檔_第5頁](http://file3.renrendoc.com/fileroot_temp3/2022-1/6/ec73e770-48ab-4274-887d-8078e966e4f2/ec73e770-48ab-4274-887d-8078e966e4f25.gif)
版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、第六章 AT89S51 單片機并行接口擴展技術6.1 鍵盤 / 顯示器接口擴展 鍵盤和顯示器是單片機系統(tǒng)的中最重要的組成部分,鍵盤為輸入設備,通過鍵盤可以設置系統(tǒng)的參數(shù)或輸命令;顯示器則為輸出設備,單片機通過顯示器顯示采集的數(shù)據(jù)或處理結果。本節(jié)首先介紹單片機系統(tǒng)擴展鍵盤和LED顯示技術。 6.1.1 鍵盤的工作原理 ( 1 )按鍵的去抖動處理。鍵盤是一組按鈕開關矩陣,通常情況下,按鈕開關處于斷開狀態(tài),當按下鍵時它們才閉合 ( 短路 ) ,如圖6.1所示。按照識別按鍵的方法不同,鍵盤可分為編碼鍵盤和非編碼鍵盤。按鍵的識別由專用的硬件
2、實現(xiàn),并能產生鍵值的稱為編碼鍵盤,自編軟件識別的鍵盤稱為非編碼鍵盤。由于采用非編碼鍵盤可以降低成本,在單片機系統(tǒng)中,當按鍵數(shù)量不多時,大家更喜歡采用非編碼鍵盤。 通常情況下,當按下和松開按鈕開關K1時,由于機械觸點的彈性作用,圖 6.1中O點的電壓變化如圖6.2所示。沒按鍵時,O點為高電平(t1);按下的瞬間,O點的電壓處于一種不穩(wěn)定(抖動)狀態(tài)(t2);然后,進入閉合期,O點電壓為低電平(t3);當松開的瞬間,O點的電壓再一次處于抖動狀態(tài)(t4);最后,O點電壓恢復為高電平(t5)。按一次鍵要經過兩個抖動期t1和t2,每次抖動的時間大約在51
3、0ms之間。由于單片機工作在微秒數(shù)量級,必須進行去抖動處理,否則,按鍵一次會造成單片機的多次響應。常用的去抖動方法有兩種,一種是采用硬件電路如濾波電路、雙穩(wěn)態(tài)電路等實現(xiàn)去抖;另一種是通過軟件實現(xiàn),即發(fā)現(xiàn)有鍵按下時,延時1020ms再查詢一次,若仍為低電平說明確實有鍵被按下,然后,等待按鍵的釋放,即查詢到圖6.1中的O點為高電平時,還要延時1020ms ,當O點仍為高電平時,才為一次按鍵結束。如果不檢測按鍵的釋放,當按鍵時間很長時,同樣可能一次按鍵造成單片機的多次處理。 ( 2 )鍵盤的結構與工作原理。 非編碼鍵盤按照結構的不同可分為:獨立式鍵盤和行列式鍵盤。獨立式鍵盤的
4、處理程序簡單,適合于鍵數(shù)較少的場合,行列式鍵盤處理程序稍復雜點,適合于鍵數(shù)較多的場合。 1 )獨立式鍵盤及其工作原理。獨立式鍵盤是各按鍵互相獨立,分別接一條輸入數(shù)據(jù)線,各按鍵的狀態(tài)互不影響,結構如圖6.3所示。 當沒有鍵被按下時,由于外邊有上拉電阻,讀得P1口的值為0FFH,當有鍵被按下時,如K4被按下,則讀得P1口的值為0F7H。只要讀得數(shù)據(jù)口的值即可知道是否有鍵被按下,或按下了哪個鍵。 2 )行列式鍵盤的結構與工作原理。鍵數(shù)較多時,獨立式鍵盤結構需要占用很多I/O口線
5、,會浪費許多資源,這時,常采用行列式鍵盤結構,即將鍵盤排列成行、列矩陣式,如圖6.4 所示。 圖6.4中,每一水平線(行線)與垂直線(列線)的交叉處連接一個按鈕開關,即開關的兩端分別接在行線和列線上,N個行線和M個列線可組成M×N個按鍵的鍵盤。工作原理為所有行線輸出為高電平,所有列線輸出為低電平,讀行線,若有鍵閉合,讀回的行線值不全為高。 對按鍵的識別方法如下: 第一步:確定是否有鍵被按下。具體方法為所有的行線輸出高電平,所有的列線輸出低電平,讀行線,若行線中有低電平,延時20
6、ms再讀一次行線(去抖動),若仍為低電平說明有鍵閉合,把讀到的四位行線狀態(tài)保存起來; 第二步:當確認有鍵閉合時,使所有的行線輸出低電平,所有的列線輸出高電平,然后,讀列線狀態(tài); 第三步:將第一次讀得的四位行線值作為低4位,第二次讀得的4位列線值做為高4位組成一個字節(jié),然后,將該字節(jié)取反得到的值稱為鍵值。 鍵值和鍵號是兩個不同的概念,鍵值即當有鍵按下時,單片機讀得的值,鍵號是印在鍵帽上的值,兩者存在一一對應的關系。如在圖6.4中,設鍵號為“6”的鍵閉合,則第一次讀的行線P1.3、P1.2、
7、P1.1、P1.0的狀態(tài)為1101;第二次的列線P1.7、P1.6、P1.5、P1.4的狀態(tài)為1011,列、行狀態(tài)組合后為10111101B,取反后為01000010B,以十六進數(shù)計為42H,即鍵號為“6”的鍵對應的鍵值為42H。同理可以求出圖6.4中的其它鍵號與鍵值的對應關系如表6.1 所示: 表6.1中的鍵值由兩位16進制數(shù)組成,高位和低位分別為閉合鍵所在列號和行號,1、2、 4、8分別表示第1、2、3、4行或列,如果需要可以通過軟件將鍵值轉成鍵號。 【 例 6.1 】 設某單片機系統(tǒng)的鍵盤電路如 圖6.4所示,編寫程序當有鍵閉
8、合時,將閉合鍵的鍵號存于鍵盤緩沖KEYBUFF單元,并將按鍵標志KPRESSED置1。 解:設鍵盤緩沖KEYBUFF為30H單元,按鍵標志KPRESSED的位地址為00H,系統(tǒng)的晶體振蕩器頻率為6MHz,子程序段如下: KEYBUFF EQU 30H KPRESS
9、ED EQU 00H KEYHAND: MOV P1, #0FH ;行線為高電平,列線為低電平 MOV A, P1
10、60; ANL A, #0FH XOR A, #0FH JZ NOKEY
11、; ;NO key pressed,退出 ACALL DLY20MS ;延時20ms , 執(zhí)行去抖動操作 MOV
12、 A, P1 ANL A, #0FH MOV KEYBUFF, A XOR
13、; A, #0FH JZ NOKEY ;沒鍵閉合,退出 MOV P1, #0F0H
14、60; ;列線為高電平,行線為低電平 MOV A, P1 ANL A, #0F0H ;
15、 ORL A, KEYBUFF CPL A ;得到鍵值 MOV B , A
16、 ;暫保存鍵值到寄存器B MOV KEYBUFF, #0 ;鍵號單元清0 ROW :CLR C
17、 RRC A JC LINE XCH A , KEYBUFF
18、 ADD A , #4 ;相鄰兩行同列鍵號相差為4 XCH A , KEYBUFF &
19、#160; SJMP ROW LINE :MOV A , B SWAP A LINE1 :CLR
20、 C RRC A JC KEY
21、60; INC KEYBUFF ;同一行相鄰兩列的鍵號差1 SJMP LINE1 KEY :SETB KPRESSED&
22、#160; WAIT : MOV A, P1 ;等待按鍵釋放 ANL A, #0F0H
23、; XOR A, #0F0H JNZ WAIT SJMP EXIT
24、60; NOKEY :CLR KPRESSED EXIT :RET ; ; ; ; DLY20ms:20ms延時程序 ; ; DLY20MS: MOV R7, #40 &
25、#160; DEL1 : MOV R6, #125 DEL2 : DJNZ R6, DEL2 ;4*125=500S DJNZ R7
26、, DEL1 RET6.1.2 數(shù)碼管顯示器 LED 簡介 顯示器單片機系統(tǒng)中最重要的輸出設備,用顯示系統(tǒng)的運行結果與運行狀態(tài)等。常見的顯示器主要有LED數(shù)碼管顯示器、LCD液晶顯示器和CRT顯示器。由于 LED 數(shù)碼顯示器具有顯示清晰、亮度高、使用電壓低、壽命長的特點,因此使用非常廣泛。本節(jié)一下 LED 顯示器的結構、工作原理。 ( 1 ) LED顯示器的結構與原理。LED顯示器是由發(fā)光二
27、極管組成的顯示器件,其外形、引腳及結構如圖6.5(a)、(b)所示。 8段LED顯示器由8個發(fā)光二極管組成,其中,7個條形發(fā)光二極管排列成“日”字形,另一個圓點形的發(fā)光二極管位于顯示器的右下角,用作顯示小數(shù)點。每個發(fā)通過不同的發(fā)光管的組合可以顯示數(shù)字09、AF、小數(shù)點“.”以及一些特殊的字樣。 LED顯示器可以分為兩種類型。一種是8個發(fā)光二極管的陽極連在一起,稱為共陽極LED顯示器;另一種是8個發(fā)光二極管的陰極連在一起的,稱為共陰極LED顯示器。如圖7.19(b)所示。兩種類型的LED顯示器各筆劃(段)的安排位置是相同的
28、,當二極管導通時相應的筆劃發(fā)光(發(fā)亮),由發(fā)亮的筆劃組合顯示各種字符。 為了顯示字符,必須給LED的a、b、c、d、e、f、g和dp端一個確定的電平,如對于共陰極LED,為了顯示0',則要求a、b、c、d、e、f端為高電平,g和dp端為低電平,用數(shù)據(jù)表示即為11111100。習慣上,大家常喜歡將D7連接至dp,D6連接至g,以次類推,將D0連接到a,這樣顯示0'時對應的“數(shù)據(jù)”為00111111(3FH),這里的數(shù)據(jù)“3FH”常被稱為字形碼,有的書上稱之為“段碼”,顯然,將共陽極LED的段碼按位取反即可得到共陽極LED的段碼。8段共陰LED的
29、段碼如表6.2所示: ( 2 ) LED顯示器的顯示方式有靜態(tài)顯示和動態(tài)顯示兩種。靜態(tài)顯示時,所有數(shù)碼管同時發(fā)亮,顯示字符清晰、穩(wěn)定,編程簡單,其缺點是需要的元件較多;動態(tài)顯示時,每一時刻只有一個LED發(fā)亮,多個LED按順序循環(huán)發(fā)亮,由于人的眼睛具有視覺暫留特性,只能分辨出時間大于40ms的變化,只要循環(huán)亮一次的時間小于40ms,則可以給人所有LED都在發(fā)亮的感覺。動態(tài)顯示需要元件個數(shù)少,其缺點是當刷新頻率不高時,LED顯示有點閃爍,關于LED靜態(tài)和動態(tài)顯示的例子見6.2節(jié)。 6.1.3 專用可編程鍵盤顯示器接口芯片 8279 及應用
30、; 8279是一種可編程鍵盤/LED顯示器接口器件,具有鍵盤、傳感器以及選通三種輸入方式和8位或16位LED顯示器控制功能,由于傳感器輸入或選通輸入方式很少使用,在本節(jié)只介紹其鍵盤輸入方式的使用方法。實際的應用系統(tǒng)中采用8279芯片,不僅可以大大地節(jié)省CPU處理鍵盤或顯示操作的時間,減輕CPU的負擔,而且,顯示穩(wěn)定,編程簡單。 ( 1 ) 8279的內部結構和工作原理。按功能分,8279的內部結構可分為3個部分,如圖6.6所示。 1 )接口、時序和控制部分。 數(shù)據(jù)緩沖器。8279中有一個雙向的數(shù)據(jù)緩
31、沖器,用于連接內、外部總線,實現(xiàn)單片機和8279之間交換信息(命令和數(shù)據(jù)); I/O 控制電路。I/O控制電路接收系統(tǒng)的/RD、/WR、/CS和A0信號,實現(xiàn)對8279進行讀寫操作。其中A0用于交換的區(qū)別信息類型,當A0=1時,表示寫入8279的信息為命令,從8279讀出的信息為狀態(tài);當A0=0時,表示寫入或讀出8279的信息均為數(shù)據(jù); 控制寄存器。8279中有多個控制寄存器,用于指定鍵盤和顯示器的工作方式,這些控制寄存器共用一個地址,由于8279的每個命令字中都含有特定的信息,使得寫入8279的命令會被送到不同的控制寄存
32、器中,然后,通過譯碼產生相應的信號,從而完成相應的功能。 時鐘預分頻器(Clock Pre Scaler)。8279 內部工作的時鐘頻率為100KHz,為了得到這個時鐘,有一個專門的時鐘分頻器(計數(shù)器),通過編程指定該分頻器對外部CLK信號進行 231級分頻,以便得到內部所需的100KHz時鐘。 掃描計數(shù)器。8279通過掃描計數(shù)器產生鍵盤和顯示器的掃描信號(SL3SL0),掃描計數(shù)器可輸出兩種不同的掃描信號。當鍵盤工作在編碼(encoded)方式時,掃描計數(shù)器作二進制計數(shù),從SL3SL0輸出的是4位二進制計數(shù)狀態(tài),必須通過外部譯碼電
33、路產生對鍵盤和顯示器的掃描信號;當鍵盤工作在譯碼 (decoded) 方式時,由8279的內部對計數(shù)器的最低兩位進行譯碼,從SL3SL0輸出的就是對鍵盤或顯示器的掃描信號,在這種情況下,只能有4位LED顯示器。 2 )顯示控制部分。顯示控制部分主要由顯示控制邏輯電路和16個字節(jié)的顯示RAM以及顯示寄存器組成。顯示RAM用來存放顯示數(shù)據(jù);顯示寄存器分為兩組,OUTA30和OUTB30可以單獨4位輸出,也可以合成為8位(一個字節(jié))輸出,以字節(jié)輸出時,OUTA3對應數(shù)據(jù)總線的D7, OUTB0對應數(shù)據(jù)總線的D0。8279工作時,顯示寄存器不停地從顯示
34、RAM中讀出顯示數(shù)據(jù),然后,從OUTA30和OUTB30輸出,與輸出的掃描信號(SL3SL0)配合實現(xiàn)多位LED的循環(huán)顯示。 3 )鍵盤控制部分。鍵盤控制部分主要由去抖動控制電路、8個字節(jié)的先進先出(FIFO) RAM和FIFO RAM狀態(tài)寄存器組成。 去抖動控制電路。鍵盤工作方式中,回復線(Retrun line)RL7RL0是行列式鍵盤的輸入線,當8279發(fā)現(xiàn)有鍵閉合時,就把回復線的狀態(tài)鎖存到回復緩沖器中,延時10ms(內部時鐘頻率為100KHz時),再一次檢測閉合鍵的狀態(tài),如果仍然閉合,就把閉合鍵的信息以及SHIFT
35、和CNTL引腳的狀態(tài)一起形成一個鍵盤數(shù)據(jù)送入FIFO RAM。 FIFO RAM。在鍵盤方式時,F(xiàn)IFO RAM用于存放鍵盤數(shù)據(jù)。鍵盤數(shù)據(jù)的格式如下: D2D0 :指出閉合鍵所在行號(RL7RL0 的狀態(tài)) D5D3 :指出閉合鍵所在列號(掃描計數(shù)器的值) D7、D6 :分別為控制線CNTL和移位線SHIFT的狀態(tài); CNTL線和SHIFT線外部可單獨接一個開關鍵,類似于計算機的鍵盤,通過CN
36、TL和SHIFT線可以使8279外接64個按鍵擴充到256個。 FIFO RAM狀態(tài)寄存器。在鍵盤輸入方式時,F(xiàn)IFO RAM狀態(tài)寄存器中含有FIFO RAM中閉合鍵的個數(shù)以及是否出錯等信息,其格式為: D2D0(NNN):表示FIFO RAM中鍵盤數(shù)據(jù)的個數(shù); D3(F) :當F=1時,表示FIFO RAM已滿(即FIFO RAM已有8個鍵盤數(shù)據(jù)) D4(U)
37、60; :當FIFO RAM中沒有數(shù)據(jù),單片機對FIFO RAM執(zhí)行讀操作時,則置U為 “1” D5(O) :當FIFO已滿,又有鍵閉合時,F(xiàn)IFO RAM溢出,置O為“1” D6(S/E) :用于傳感器方式時,當幾個傳感器同時閉合時被置“1”
38、60; D7(DU) :在執(zhí)行清除命令期間DU=1,當DU=1時,對顯示RAM的寫操作無效。因此, 在執(zhí)行清除命令后,需要讀FIFO RAM狀態(tài)寄存器,只有在清除命令執(zhí)行
39、60; 完成后(DU=0),才能進行對顯示RAM的寫操作。 當FIFO RAM中有鍵盤數(shù)據(jù)時,IRQ被8279置為高電平,程序可以通過查詢IRQ確認是否有鍵被按下;IRQ信號取反后也可以作為中斷請求信號,當有鍵閉合時,單片機通過中斷方式讀取鍵值。 ( 2 ) 8279的引腳定義。常見的8279芯片為40腳的DIP封裝,引腳的定義如圖6.7所示: D0D7(Pin 12 Pin 19):數(shù)據(jù)總線,用于傳送單片機和8279之間的數(shù)據(jù)、命令或狀態(tài)信息。
40、60; CLK(Pin 3):外部時鐘輸入,作于產生內部工作時序。8279內部有一個可編程的5位計數(shù)器,對外部時鐘進行231分頻,產生100KHz的內部定時信號。 RESET(Pin 9):復位信號,高電平有效。當8279復位后,8279工作于左入、16位LED顯示,譯碼鍵盤掃描,雙鍵互鎖,外部時鐘分頻為31。 /CS(Pin 22):選信號,低電平有效。當/CS有效時,允許對8279進行讀、寫操作。 A0(Pin 21):緩沖器地址。A0用于標識單片機和 8279 交換的信息特征,當A
41、0=1時,寫入8279的信息為命令,讀出的是狀態(tài);當A0=0時,寫入和讀出的信息均為數(shù)據(jù)。 /RD、/WR(Pin 10、Pin 11):讀、寫控制信號。 IRQ (Pin 4):中斷請求(Interrupt Request)。在鍵盤方式時,當FIFO RAM中有數(shù)據(jù)時,IRQ變?yōu)楦唠娖剑斪xFIFO RAM時, IRQ變?yōu)榈碗娖?,讀一次后,若FIFO RAM中仍有數(shù)據(jù),IRQ重新變?yōu)楦唠娖?;在傳感器方式,當檢測到一個傳感器變化時,IRQ變?yōu)楦唠娖健?#160; Vss、Vcc(Pin 20、Pin
42、 40):數(shù)字地和電源引腳。 SL0SL3(Pin 32 Pin 35):掃描線(Scan Line):掃描線用于對鍵盤和對LED顯示器的位進行掃描。 RL0RL7(Pin 38、Pin 39、Pin 1、Pin 2、Pin 5 Pin 8):反饋輸入線(Return Line )。RL0RL7為輸入引腳,外接鍵盤或傳感器陣列,內部有上拉電阻。當有鍵閉合時, 8279通過組合RL0RL7和SL0SL3的狀態(tài)可以確定閉合所在的行和列,并把閉合鍵的鍵位置送入鍵盤FIFO RAM中,同時設置IRQ為高電平。
43、; SHIFT(Pin 36)線:SHIFT為輸入引腳,內部有上拉電阻,外部常接一個獨立的開關按鍵,類似于計算機鍵盤上的換檔鍵(SHIFT),8279可以直接連接64個的開關按鍵,通過SHIFT線,可以將按鍵數(shù)量擴充到128個。SHIFT的狀態(tài)會被記錄在FIFO RAM中。 CNTL(Pin 37)控制線(Control):與SHIFT類似,通過CNTL也可以擴充按鍵數(shù)量。 SHIFT和CNTL共有4種組合,通過SHIFT和CNTL可使8279連接的按鍵數(shù)量增加到256個。 OUTA3 OUTA0、OUTB3
44、OUTB0(Pin 24 Pin27、Pin28 Pin31)顯示數(shù)據(jù)段碼(字形碼)輸出線。8279工作時,由OUTA3 OUTA0、OUTB3 OUTB0輸出顯示數(shù)據(jù)的段碼,OUTA3 對應8段LED的dp,OUTB0對應8段LED的a,由SL0 SL3輸出顯示的位,兩者配合實現(xiàn)8位或16 位LED的動態(tài)顯示。 /BD(pin 23)消隱輸出線(Blank Display),低電平有效。當顯示器切換或使用消隱命令時,輸出為低。 ( 3 ) 8279的操作命令字 8279共有8個命令字。每個命令字的
45、高3位D7、D6和D5為命令特征位,雖然所有的命令都送到同一的端口,但由于特征位不同,8279可以區(qū)別各個不同的命令。 1 )鍵盤顯示工作方式設置命令字。該命令字用于設置鍵盤和顯示器的工作方式,格式如下: 命令特征位:D7D6D5=000 D4D3位:用來設定顯示(Display)方式,定義如下: 00 :8個字符顯示,從左邊輸入。 0
46、1 :16個字符顯示,從左邊輸入。 10 :8個字符顯示,從右邊輸入。 11 :16個字符顯示,從右邊輸入。 8279最多可用來控制16位的LED顯示,當顯示位數(shù)超過8位時,均設定為16位字符顯示。LED有兩種顯示方式:即左邊輸入和右邊輸入。左邊輸入是較簡單的方式,顯示RAM單元0對應顯示器最左邊的位;顯示RAM單元7(或15)對應顯示器的最右邊的位。單片機寫入單元的地址和顯示的位之間的對應關系是固定的,單片機依次從
47、0地址或某一個地址開始將段碼數(shù)據(jù)寫入顯示緩沖區(qū)。 當寫完16個數(shù)據(jù)后,第17個數(shù)據(jù)將被寫到顯示RAM0,即顯示器的最左邊。從0地址寫入18 個數(shù)據(jù)的過程如下: 右面輸入方式是一種“移位”輸入方式,計算器一般都是采用這種顯示方式,當向顯示 RAM寫入第一個字符時,顯示在最右邊,寫入第二個字符時,第一次寫入的字符左移1位顯示,而第二次寫入的字符顯示在最右邊,每次寫入一個字符后,原來顯示的字符自動左移一位,最后寫入的字符總是顯示在最右邊,當寫入第9(或17)個字符后,原最左邊的顯示的字符被移出。從0地址寫入18個數(shù)據(jù)時,顯示RA
48、M中的內容與左邊輸入時相同,但右邊輸入時,顯示RAM的地址和顯示字符的位置并不存在對應關系,向顯示RAM的某指定單元寫入一個字符時,可能得到意想不到的結果,即字符顯示的位置不確定。因此,在右邊輸入方式時,建議第一次要從顯示RAM單元0開始寫入字符。 D2D1D0位:用來設定鍵盤(Keyboard)工作方式,定義如下: 000 :編碼掃描鍵盤方式,雙鍵互鎖。 001 :譯碼掃描鍵盤方式,雙鍵互鎖
49、。 010 :編碼掃描鍵盤方式,N鍵依次讀出。 011 :譯碼掃描鍵盤方式,N鍵依次讀出。 100 :編碼掃描傳感器矩陣。 101 :譯碼掃描傳感器矩陣。 110 :選通輸入,編碼顯示掃描。
50、 111 :選通輸入,譯碼顯示掃描。 編碼掃描鍵盤方式實際上是外部譯碼掃描鍵盤方式,8279內部的計數(shù)器做二進制計數(shù),四位二進制數(shù)從SL3SL0輸出,通過外部譯碼器(16選1)產生鍵盤/顯示器的掃描信號。譯碼掃描鍵盤方式為內部譯碼工作方式,此時,SL3SL0輸出已經是4選1的掃描信號,這種方式掃描線最多只能有4條。 雙鍵互鎖和N鍵依次讀出是兩種不同的多鍵同時按下的保護方式。雙鍵互鎖方式就是當鍵盤上同時有兩個鍵被按下時,任何鍵的信息都不送FI
51、FO RAM,只剩一個鍵閉合時,該鍵的信息編碼才被送到FIFO鍵盤RAM;N鍵依次讀出方式為:當有多個鍵同時按下時,鍵盤掃描根據(jù)發(fā)現(xiàn)它們的次序,依次將它們的狀態(tài)送入FIFO RAM。 在介紹了鍵盤的掃描方式后,再談談顯示器的“左邊輸入”和“右邊輸入”顯示問題。左邊輸入時,顯示RAM的單元0對應最左邊的顯示字符,這里所謂的“最左邊”顯示字符對應的SL30輸出狀態(tài)為0000(編碼鍵盤掃描方式),如外部用74LS138譯碼產生顯示掃描信號,則連接74LS138的Y0端的LED顯示器應為最左邊的顯示器,同學們在繪制PCB電路圖時一定要注意這個問題。當鍵盤工作在譯碼掃
52、描方式時,SL0接的LED為最左邊。右邊輸入時,最右邊顯示器亮時對應的SL30 為1111(編碼鍵盤掃描方式);當鍵盤工作在譯碼掃描方式時,SL3接的LED為最右邊。 2 )時鐘編程命令。8279內部定時信號(100KHz)由外部的輸入的時鐘經過分頻后產生,分頻系數(shù)由時鐘編程命令確定,命令格式如下: 命令特征位: D7D6D5=001 。 D4D0位(PPPPP)為分頻系數(shù),可在231中進行選擇。內部時鐘頻率控制著掃描時間和鍵盤去抖動時間的長短,當內部時鐘為100KHz時,則掃描時間為5
53、.1ms,去抖動時間為10.3ms 。例如,設外部時鐘頻率為1MHz,則要產生100KHz的內部定時信號,需要進行10分頻,即PPPPP=01010B=10,此時的時鐘命令字為:2AH 3 )讀FIFO RAM命令。讀FIFO RAM命令的格式為: 命令特征位:D7D6D5=010 。 在傳感器方式時,在CPU讀FIFO RAM之前,必須用這條命令設定要讀出的傳感器RAM地址。由于傳感器RAM的容量為8字節(jié),因此,需要用命令字中的3位二進制代碼AAA指定地址。命令字中的AI為自動增量
54、(Automatic Increacement)特征位。若AI=1,則每次讀出傳感器RAM 后,地址將自動加1,使地址指針指向按順序的下一個存儲單元,這樣,下一次讀數(shù)便從下一個地址讀出,而不必重新設置讀FIFO RAM命令。 在鍵盤工作方式中,由于讀出操作嚴格按照先入、先出(FIFO)的順序進行,命令中的 AI和AAA不起作用。 4 )讀顯示RAM命令。命令格式為: 命令的特征位:D7D6D5=011。 在CPU讀顯示RAM時,必須先執(zhí)行讀顯示RAM命
55、令。該命令字用來設定將要讀出的顯示RAM的地址,4位二進制代碼AAAA用來尋址16個字節(jié)的顯示RAM單元,如果自動增量位AI=1,則每次讀出后,地址自動加1。 5 )寫顯示RAM命令。命令格式為:命令特征位:D7D6D5=100 在CPU寫顯示RAM時,必須先執(zhí)行寫顯示RAM命令,該命令字用來設定第一次要寫入的顯示 RAM的地址,4位二進制代碼AAAA用來尋址顯示RAM,如果自動增量特征位AI=1,則每次寫入后,地址自動加1。 6 )顯示RAM禁止寫入消隱命令。命令格式為: &
56、#160; 命令特征位:D7D6D5=101 IW_A和IW_B為A組和B組顯示RAM寫入屏蔽位。例如,當IW_A=l時, A組的顯示RAM禁止寫入,即單片機寫入顯示器RAM的數(shù)據(jù)不會影響OUTA30的輸出,這種情況通常在采用雙4位顯示時使用,因為兩個4位顯示器是相互獨立的,為了給其中一個4位顯示器輸入數(shù)據(jù),而又不影響另一個4位顯示器,因此,必須對另一組的輸入實行屏蔽。 BL_A和BL_B位用于對兩組顯示輸出消隱(Blank),若BL_x=1,則8279的/BD引腳輸為低電平,對應的OUTx30被消隱(熄滅),
57、若BL_x=0,則恢復顯示。 7 )清除命令。清除命令用于清除FIFO RAM和顯示RAM,命令格式為: 命令特征位:D7D6D5=110 D4D3D2(CD、CD、CD)位用于設定清除顯示RAM的方式,意義如下: 10x :將顯示RAM全部清0 110 :將顯示RAM全部清為20H
58、160; 111 :將顯示RAM全部清為FFH 0xx :CA=0時,不清除;CA=1時,清除方式由D3D2決定 D1(CF)位用于清空FIFO RAM。當CF=1時,執(zhí)行清除命令后,F(xiàn)IFO RAM被清空,同時,使中斷請求輸出線IRQ復位。 D0(CA)位為總清位,當CA=1時,可同時完成對顯示RAM和FIFO RAM的清除,對顯示RAM 的清除方式由D3D2位決定。 執(zhí)行清除命令大約需要160S的時間,在此期間,
59、FIFO RAM的狀態(tài)寄存器的最高位DU=1,當清除命令執(zhí)行完成后,DU=0。在DU=1時,不能對顯示RAM寫數(shù)據(jù)。 8 )結束中斷/特定錯誤方式設置命令。此命令有兩種不同的作用,在傳感器方式時,作為中斷結束命令;在鍵盤方式時,作為特定錯誤方式設置命令。該命令的格式為: 命令特征位:D7D6D5=111 當鍵盤工作于N鍵依次讀出方式時,如果單片機給8279寫入特定方式設置命令字(E=1),則8279以一種特定的錯誤方式工作,這種方式的特點是在消抖動期間,如果發(fā)現(xiàn)多個鍵被同時按下,則FIF
60、O RAM狀態(tài)寄存器中的錯誤特征位S/E被置1,同時IRQ變?yōu)楦唠娖?。S/E位置 1會阻止對FIFO RAM的進一步寫操作。執(zhí)行清除命令時,S/E被復位。這個命令使用較少。 ( 4 )對8279的操作 8279有兩個端口,一個是命令端口一個是數(shù)據(jù)端口。對8279的操作有四種情況: 寫命令端口。寫入命令端口的信息為命令字,命令字規(guī)定了8279的工作方式; 讀命令端口。從命令端口讀出的信息為FIFO RAM狀態(tài)寄存器的內容。
61、160; 寫數(shù)據(jù)端口。寫入數(shù)據(jù)端口的信息為顯示字符的段碼,8279內部有16個字節(jié)的顯示RAM,寫入的顯示段碼被存儲在顯示RAM中。 讀數(shù)據(jù)端口。從數(shù)據(jù)端口讀入的是FIFO RAM中鍵盤數(shù)據(jù)或顯示RAM中的數(shù)據(jù)。 寫命令端口時,由于各命令字的特征位不同,向同一端口寫入的各種命令實際上是被寫到了8279內部的不同的命令寄存器中,因此,寫命令端口的操作可以直接進行;讀命令端口時,由于只有一個狀態(tài)寄存器,故讀命令端口的操作也可以直接進行。 而
62、讀、寫數(shù)據(jù)端口時,則不同,需要先執(zhí)行讀、寫數(shù)據(jù)端口的命令,然后,才能對數(shù)據(jù)端口進行讀寫,如在讀顯示RAM數(shù)據(jù)前,要先執(zhí)行讀顯示RAM的命令;讀FIFO RAM前,要先執(zhí)行讀FIFO RAM的命令;寫顯示RAM數(shù)據(jù)前,要先執(zhí)行寫顯示RAM的命令;如果不先執(zhí)行讀、寫數(shù)據(jù)端口的命令,當從8279的數(shù)據(jù)口進行讀數(shù)據(jù)時,8279便不知是從顯示RAM讀還是從FIFO RAM讀。 ( 5 ) 82C79與89S51單片機接口與編程 對8279的編程一般可分成三部分,第一部分對8279初始化編程,規(guī)定其鍵盤和顯示器的工作方式以及對外部CLK信號的分頻
63、系數(shù)等;第二部分為檢查鍵盤情況,當有鍵按下時,讀取鍵值,然后,進行相應的處理;第三部分為顯示部分,即將待顯示字符的段碼送寫入顯示RAM 進行顯示。相應地,8279的接口電路也大致可分為三部分,即與單片機的接口,與鍵盤的接口和與顯示器的接口。常見的由8279組成的8位LED顯示器、16個按鍵接口電路如圖6.8所示。 電路工作原理如下: 與單片機接口。DB7DB0直接邊至P0口;讀引腳/RD接單片機的讀信號(/RD);寫引腳接單片機的寫信號(/WR);CLK引腳接單片機的ALE信號,ALE信號的頻率為系統(tǒng)晶體振蕩器頻率的1/6
64、;A0接地址總線A0。當有鍵閉合時,IRQ變?yōu)楦唠娖?,可以通過中斷或查詢方式讀取鍵值。 與鍵盤的接口電路。16個按鍵接成矩陣形式,由RL7RL0組成行線,外部譯碼器74LS138的輸出Y0和Y1組成列線(或掃描線)。當有鍵閉合時,讀入的RL7RL0不全為零,根椐RL7RL0和SL2SL0的狀態(tài)即可確定閉合鍵所在的位置。各鍵值的確定方法如下:如前所述,當有鍵閉合時,8279會形成一個如圖6.9所示的鍵值數(shù)據(jù)存入FIFO RAM中。 由于圖6.8中,CNTL和SHIFT接地,鍵值字節(jié)的最高兩位為00;第一列(74LS138的
65、第15引腳Y0)對應的SCAN為000,第二列對應的SCAN為001;當RL7RL0的狀態(tài)分別為:11111110、11111101、11111011、11110111、11101111、11011111、10111111和01111111時,對應的RETURN分別為:000、001、010、011、100、101、110和111。如圖中的“5”號鍵閉合時, CNTL=0、SHIFT=0、SCAN=000、RETURN=101,組成一個字節(jié)后為:00000101B=5H,同理可以求出其它的鍵值如圖6.8所示。 與顯示器的接口。圖中的顯示器為8位共陰極LED顯示器,74L
66、S138輸出的8條線用于對顯示器進行位掃描, 75451和7407用于對LED進行驅動。 【例 6.1 】 電路如圖6.8所示。編程從鍵盤輸入一個十進制數(shù),并通過LED顯示出來,按0A 0F時,清除屏幕,輸入另一個十進制數(shù)。 解:設系統(tǒng)晶振頻率為6MHz,則CLK的頻率為1MHz,為了得到100KHz的內部時鐘,分頻系數(shù)為10。內部RAM單元30H37H為顯示緩沖區(qū)。程序如下: CS 8279C EQU 0FFFFH
67、; CS8279D EQU 0FFFEH KEYVALUE EQU 38H KEYFLAG BIT 00H ORG 0000H
68、; MOV SP,#60H MOV DPTR , #CS 8279C ;8279初始化 MOV A , #00H
69、160; ;8字符顯示,左入口,編碼掃描,雙鍵互鎖 MOVX DPTR , A MOV A , #2AH ;ALE/10=1MHz/10=100KHz
70、 MOVX DPTR , A ACALL CLRSCR MAINLP :ACALL READKEY JNB KEYFLAG , MAINLP
71、0; MOV A , KEYVALUE ;把鍵值送給ACC CJNE A , #0AH , NO_A ;判斷是否按下F1F6鍵 SJMP
72、160; KEY_AF NO_A :JC NUMKEY KEY_AF :ACALL CLRSCR SJMP MAINLP ;若按下F1F6鍵,則清除已輸入的數(shù)字 &
73、#160; NUMKEY :MOV R7 , #7 MOV R0 , #37H ;將30H36H的內容移至31H37H單元 MOV R1 , #
74、36H SHIFT :MOV A , R1 MOV R0 , A DEC R0 DEC
75、0; R1 DJNZ R7 , SHIFT MOV 30H , KEYVALUE ;把鍵值送入顯示緩存的第一個單元30H
76、 ACALL DISPLAY SJMP MAINLP ;* ; READKEY: 讀閉合鍵值 ; 出口參數(shù):有鍵閉合時,鍵值被存放在 KEYVALUE ,并置 KEYFLAG 為 1 ;* READKEY: CLR
77、160; KEYFLAG MOV DPTR , #CS 8279C ;讀8279狀態(tài)字 MOVX A , DPTR ANL A , #0F
78、H ;A中保留狀態(tài)字的低四位 JZ NOKEY ;A=0時無鍵按下,則返回
79、60; MOV A , #40H ;讀FIFO RAM的狀態(tài)寄存器命令字。 MOVX DPTR , A MOV DPTR , #CS8279D&
80、#160; MOVX A , DPTR ;讀鍵值 MOV KEYVALUE , A ;鍵值碼送入KEYVALUE單元
81、; SETB KEYFLAG ;設置鍵閉合標志 NOKEY :RET ; * 顯示子程序 * DISPLAY: MOV
82、160; DPTR , #CS 8279C MOV A , #90H ;寫顯示RAM命令字 MOVX DPTR , A
83、0; MOV R7 , #6 ;循環(huán)計數(shù)初值給 R7 MOV DPTR , #CS8279D MOV &
84、#160; R0 , #30H DISP1 :PUSH DPL PUSH DPH MOV A , R0 MOV DPTR ,
85、 #TAB ; 取段碼 MOVC A , A+DPTR POP DPH POP
86、 DPL MOVX DPTR , A ;送段碼顯示 INC R0
87、60; DJNZ R7 , DISP1 RET ;* ; CLRSCR: 功能 清除屏幕 ;* CLRSCR :MOV R0 , #30H MOV R7 , #8 &
88、#160; MOV A , #0AH ; 全滅的段碼偏移量給 ACC CS1 :MOV R0 , A INC
89、; R0 DJNZ R7 , CS1 ACALL DISPLAY RET TAB :DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,
90、7FH,6FH,00H ;09 全滅 END 6.2 邏輯門電路擴展 I/O 接口 AT89S51單片機理論上有4個8位并行I/O口,但在實際應用中,由于系統(tǒng)外擴有存儲器或其它接口芯片,P0口常復用作地址/數(shù)據(jù)總線,P2口用于提供高8位地址,P3口常工作在第二功能,真正用作I/O口的只有P1,而實際的應用系統(tǒng)又經常需要連接鍵盤、顯示器以及打印機等外設,大部分的單片機應用系統(tǒng)設計中都不可避免地要進行I/O口的擴展。在
91、單片機系統(tǒng)中,I/O端口和存儲器統(tǒng)一編址,擴展I/O口和擴展存儲器的方法相同,主要解決系統(tǒng)的三組總線(DB、AB、CB)與擴展的I/O芯片的連接問題。I/O口的擴展有應遵守兩條原則: 擴展輸出口時一般要有鎖存功能; 擴展的I/O口還要注意和系統(tǒng)數(shù)據(jù)總線的三態(tài)隔離; 單片機應用系統(tǒng)中,I/O口擴展主要有兩種方法,第一種是使用簡單的邏輯門電路和帶三態(tài)控制的緩沖器組成,用于擴展單個8位輸出或輸入口;另一種方法是用專門的可編程并行接口芯片如8155、8255等擴展I/
92、O口。第一種方法電路簡單、成本低、配置靈活方便,故在單片機應用系統(tǒng)中被廣泛采用,本節(jié)主要介紹一下使用簡單的邏輯門電路擴展I/O口的方法。 6.2.1 用74LS273擴展8位輸出口 單片機系統(tǒng)中需要擴展并行的8位輸出口時,最常用方法是使用74LS273、74LS373、74LS377等鎖存器實現(xiàn)。74LS273是一個帶公共端的高速8D觸發(fā)器,引腳定義和真值表如圖 6.10(a)、(b)所示: 由74LS273組成的2位LED靜態(tài)顯示電路如圖6.11所示:
93、60; 設待顯示的兩位BCD數(shù)存放在30H和31H單元,顯示子程序如下: DISPTWO : MOV A , 30H ;顯示十位數(shù) MOV
94、60; DPTR , #SEGTAB MOVC A , A+DPTR MOV DPTR , #0FFF0H MOV DPTR , A
95、60; MOV A , 31H ;顯示個位數(shù) MOV DPTR , #SEGTAB MOVC A , A+DPTR MOV DPTR , #0FFF2H MOV DPTR , A
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025-2030全球晶圓檢測用物鏡行業(yè)調研及趨勢分析報告
- 2025年全球及中國鉆頭修磨機行業(yè)頭部企業(yè)市場占有率及排名調研報告
- 2025-2030全球醫(yī)療器械用注塑機行業(yè)調研及趨勢分析報告
- 主講人鄭長花
- 第06講 我們生活的大洲-亞洲(解析版)
- 2025原料采購合同的模板
- 2025個人保證擔保借款合同
- 門面房房屋租賃合同范本
- 工地配餐合同協(xié)議書范本
- it運維外包服務合同
- 稅收流失論文-我國個人所得稅稅收流失問題及對策研究
- 長榮股份:投資性房地產公允價值評估報告
- 2022年菏澤醫(yī)學??茖W校單招綜合素質試題及答案解析
- 銀行內部舉報管理規(guī)定
- 平面幾何強化訓練題集:初中分冊數(shù)學練習題
- 項目獎金分配獎勵制度和方案完整版
- 支氣管鏡試題
- 送達地址確認書(訴訟類范本)
- 陰道鏡幻燈課件
- 現(xiàn)代漢語詞匯學精選課件
- 上海音樂學院 樂理試題
評論
0/150
提交評論