哈工大單片機課件.ppt_第1頁
哈工大單片機課件.ppt_第2頁
哈工大單片機課件.ppt_第3頁
哈工大單片機課件.ppt_第4頁
哈工大單片機課件.ppt_第5頁
已閱讀5頁,還剩95頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、第10章 MCS-51與鍵盤、顯示器、撥盤、打印機的接 口設計,輸入外設:鍵盤、BCD碼撥盤等;,輸出外設:LED顯示器、LCD顯示器、打印機等。,10.1 LED顯示器接口原理,LED(Light Emitting Diode):發(fā)光二極管的縮寫。 顯示器前面冠以“LED”。,10.1.1 LED顯示器的結構,常用的LED顯示器為8段(或7段,8段比7段多了一 個小數(shù)點“dp”段)。,有共陽極和共陰極兩種。如圖10-1所示。,為使LED顯示不同的符號或數(shù)字,要為LED提供段碼 (或稱字型碼)。,提供給LED顯示器的段碼(字型碼)正好是一個字 節(jié)(8段)。各段與字節(jié)中各位對應關系如下:,按上述

2、格式,8段LED的段碼如表10-1所示。,表10-1 LED段碼(8段),表10-1只列出了部分段碼,可根據(jù)實際情況選用。,另外,段碼是相對的,它由各字段在字節(jié)中所處的 位決定。例如表10-1中8段LED段碼是按格式:,而形成的, “0”的段碼為3FH(共陰)。反之,如 將格式改為下列格式:,則 “0”的段碼為7EH(共陰)。,字型及段碼由設計者自行設定,習慣上還是以“a” 段對應段碼的最低位。,N個LED顯示塊有N位位選線和8N根段碼線。,10.1.2 LED顯示器工作原理,圖10-2是4位 LED顯示器的結構原理圖。,段碼線控制顯示的字型,,位選線控制該顯示位的亮或暗。,靜態(tài)顯示和動態(tài)顯示

3、兩種顯示方式。,1. 靜態(tài)顯示方式,各位的公共端連接在一起(接地或+5V)。,每位的段碼線(adp)分別與一個8位的鎖存器 輸出相連。,顯示字符一確定,相應鎖存器的段碼輸出將維持 不變,直到送入另一個段碼為止。顯示的亮度高。,圖10-3: 4位靜態(tài)LED顯示器電路。該電路各位可獨立顯示。,2. 動態(tài)顯示方式,所有位的段碼線相應段并在一起,由一個8位I/O 口控制,形成段碼線的多路復用,各位的公共端分別由 相應的I/O線控制,形成各位的分時選通。,圖10-4:4位8段LED動態(tài)顯示電路。其中段碼線占用一個8位I/O口,而位選線占用一個4位I/O口。,圖10-5為8位LED動態(tài)顯示2003.10.

4、10的過程。,圖(a)是顯示過程,某一時刻,只有一位LED被選通 顯示,其余位則是熄滅的;,圖(b)是實際顯示結果,人眼看到的是8位穩(wěn)定的 同時顯示的字符。,10.2 鍵盤接口原理,1. 鍵盤輸入的特點,鍵盤:一組按鍵開關的集合。,行線電壓信號通過鍵盤開關機械觸點的斷開、閉合, 輸出波形如圖10-6。,2. 按鍵的確認,檢測行線電平 高電平:斷開;低電平:閉合,,常用軟件來消除按鍵抖動。,基本思想:檢測到有鍵按下,鍵對應的行線為低,軟 件延時10ms后,行線如仍為低,則確認該行有鍵按下。,3.如何消除按鍵的抖動,當鍵松開時,行線變高,軟件延時10ms后,行線仍為 高,說明按鍵已松開。,采取以上

5、措施,躲開了兩個抖動期t1和t3的影響。,10.2.2 鍵盤接口的工作原理,獨立式按鍵接口和行列式鍵盤接口。,1.獨立式鍵盤接口,各鍵相互獨立,每個按鍵各接一根輸入線,通過檢 測輸入線的電平狀態(tài)可很容易判斷那個鍵被按下。,此種接口適于鍵數(shù)較少或操作速度較高的場合。,圖10-7(a)為中斷方式的獨立式鍵盤工作電路,圖10-7(b)為查詢方式的獨立式鍵盤工作電路。,圖10-8為8255A擴展I/O口的獨立式按鍵接口電路。,圖10-9用三態(tài)緩沖器擴展的I/O口的按鍵接口電路。,對圖10-9獨立式鍵盤編程,軟件消抖,查詢方式檢測鍵的狀態(tài)。僅有一鍵按下時才有效才處理。,KEYIN:MOV DPTR,#0

6、BFFFH;鍵盤端口地址BFFFH MOVX A,DPTR;讀鍵盤狀態(tài) ANL A,#1FH;屏蔽高三位,MOV R3,A;保存鍵盤狀態(tài)值 LCALL DELAY10;延時10ms去鍵盤抖動 MOVX A,DPTR;再讀鍵盤狀態(tài),ANL A,#1FH;屏蔽高三位,CJNE A,R3,RETURN ;兩次不同,抖動引起轉(zhuǎn)RETURN,CJNE A,#1EH,KEY2 ;相等,有鍵按下,不等轉(zhuǎn)KEY2,LJMP PKEY1;是K1鍵按下,轉(zhuǎn)K1鍵處理 ;子程序PKEY1 KEY2: CJNE A,#1DH,KEY3 ;S2鍵未按下,轉(zhuǎn)KEY3 LJMP PKEY2 ;S2鍵按下,轉(zhuǎn)PKEY2處理

7、KEY3:CJNE A,#1BH,KEY4;S3未按下,轉(zhuǎn)KEY4 LJMP PKEY3 ;S3按下,轉(zhuǎn)PKEY3處理 KEY4: CJNE A,#17H,KEY5 ;S4鍵未按下,轉(zhuǎn)KEY5 LJMP PKEY4 ;S4按下,轉(zhuǎn)PKEY4處理 KEY5:CJNE A,#0FH,PASS ;S5未按下,轉(zhuǎn)RETURN LJMP PKEY5 ;S5按下,轉(zhuǎn)PKEY5處理 RETURN:RET ;重鍵或無鍵按下,從子程序返回,識別和編程簡單,用在按鍵數(shù)較少的場合。,2. 行列式(矩陣式)鍵盤接口,用于按鍵數(shù)目較多的場合,由行線和列線組成, 按鍵位于行、列的交叉點上。如圖10-10所示。,按鍵數(shù)目較

8、多的場合,行列式鍵盤與獨立式鍵盤 相比,要節(jié)省很多的I/O口線。,(1)行列式鍵盤工作原理,無鍵按下,該行線為高電平,當有鍵按下時,行線電平由列線的電平來決定。,由于行、列線為多鍵共用,各按鍵彼此將相互發(fā) 生影響,必須將行、列線信號配合起來并作適當?shù)奶?理,才能確定閉合鍵的位置。,(2)按鍵的識別方法,a. 掃描法,圖10-10(b)中3號鍵被按下為例,來說明此鍵 時如何被識別出來的。,識別鍵盤有無鍵被按下的方法,分兩步進行:,第1步:識別鍵盤有無鍵按下;,第2步:如有鍵被按下,識別出具體的按鍵。,把所有列線置0,檢查各行線電平是否有變化,如有變化,說明有鍵按下,如無變化,則無鍵按下。,上述方

9、法稱為掃描法,即先把某一列置低電平, 其余各列為高電平,檢查各行線電平的變化,如果某 行線電平為低,可確定此行列交叉點處的按鍵被按 下。,b. 線反轉(zhuǎn)法,只需兩步便能獲得此按鍵所在的行列值,線反轉(zhuǎn) 法的原理如圖10-11。,第1步:列線輸出為全低電平,則行線中電平由高變低 的所在行為按鍵所在行。,第2步:行線輸出為全低電平,則列線中電平由高變低 所在列為按鍵所在列。,結合上述兩步,可確定按鍵所在行和列。,(3)鍵盤的編碼,根據(jù)實際需要靈活編碼。,10.2.3 鍵盤的工作方式,單片機在忙于各項工作任務時,如何兼顧鍵盤的輸 入,取決于鍵盤的工作方式。,原則:即要保證能及時響應按鍵操作,又不要過多占

10、 用CPU的工作時間。,通常,鍵盤工作方式有3種,即編程掃描、定時掃 描和中斷掃描。,1. 編程掃描方式,只有當單片機空閑時,才調(diào)用鍵盤掃描子程序, 掃描鍵盤。,工作過程:,(1)在鍵盤掃描子程序中,先判斷有無鍵按下。,方法:PA口8位輸出全0,讀PC口低4位狀態(tài),若PC0 PC3為全1,則說明鍵盤無鍵按下;若不全為1,則說明 鍵盤可能有鍵按下。,(2)用軟件來消除按鍵抖動的影響。如有鍵按下,則 進行下一步。,(3)求按下鍵的鍵號。,(4)等待按鍵釋放后,再進行按鍵功能的處理操作。,2. 定時掃描工作方式,利用單片機內(nèi)的定時器,產(chǎn)生10ms的定時中斷,對 鍵盤進行掃描。,3.中斷工作方式,只有

11、在鍵盤有鍵按下時,才執(zhí)行鍵盤掃描程序,如 無鍵按下,單片機將不理睬鍵盤。,鍵盤所做的工作分為三個層次,如圖10-13。,第1層:單片機如何來監(jiān)視鍵盤的輸入。三種工作方 式:編程掃描定時掃描中斷掃描。,第2層:確定具體按鍵的鍵號。體現(xiàn)在按鍵的識別方 法上就是:掃描法;線反轉(zhuǎn)法。,第3層:執(zhí)行鍵處理程序。,10.3 鍵盤/顯示器接口設計實例,一般把鍵盤和顯示器放在一起考慮。,10.3.1 利用并行I/O芯片實現(xiàn)鍵盤/顯示器接口,圖10-14:8031用擴展I/O接口芯片8155H實現(xiàn)的 6位LED顯示和32鍵的鍵盤/顯示器接口電路。圖中 8155H也可用8255A來替代。,8031外擴一片8155

12、H。RAM地址:7E00H7EFFH。 I/O口地址:7F00H7F05H。,PA口為輸出口,控制鍵盤列線的掃描,同時又是6位共陰極顯示器的位掃描口。,PB口作為顯示器段碼輸出口,PC口作為鍵盤的行線狀態(tài)的輸入口。,75452:反相驅(qū)動器,7407:同相驅(qū)動器。,1動態(tài)顯示程序設計,內(nèi)部RAM 6個顯示緩沖單元:79H7EH,存放要顯示的 6位數(shù)據(jù)。,8155H的PB口輸出相應位的段碼,依次改變PA口輸出為 高的位使某一位顯示某一字符,其它位為暗。 動態(tài)地顯示出由緩沖區(qū)中顯示數(shù)據(jù)所確定的字符。程 序流程如圖10-15 。,參考程序:,DIR: MOV R0,79H;置緩沖器指針初值,MOV R

13、3,01H;位選碼的初值送R3,MOV A,R3,LD0: MOV DPTR,7F01H ;位選碼PA口(PA.0位),;最左邊LED亮,MOVX DPTR,A,INC DPTR ;數(shù)據(jù)指針指向PB口,MOV A,R0 ;顯示數(shù)據(jù)A,ADD A,0DH ;加偏移量(下條指令到表首間 ;所有指令占的單元數(shù)),MOVC A,APC ;根據(jù)顯示數(shù)據(jù)來查表取段碼,DIR1: MOVX DPTR,A ;段碼8155H PB口,ACALL DL1ms ;該位顯示1ms,INC R0 ;指針指向下一個數(shù)據(jù)單元,MOV A,R3 ;位選碼送入A中,JB Acc.5,LD1 ;判斷是否掃描到最右邊的 ; LED

14、,如到最右邊則返回,RL A ;位選碼向左移一位,準備讓 ; 右邊的下一位LED亮,MOV R3,A ;位選碼送R3中保存,AJMP LD0 ;,LD1: RET ;,DSEG: DB 3FH,06H,5BH,4FH,66H,6DH ;共陰極段碼表 DB 7DH,07H,7FH,6FH,77H,7CH DB 39H,5EH,79H,71H,73H,3EH,DB 31H,6EH,1CH,23H,40H,03H,DB 18H,00H,DL1ms: MOV R7,02H;延時1ms子程序,DL: MOV R6,0FFH,DL6: DJNZ R6,DL6,DJNZ R7,DL,RET,2鍵盤程序設計,

15、(1)判別鍵盤上有無鍵閉合,(2)去除鍵的機械抖動,(3)判別閉合鍵的鍵號,(4)使CPU對鍵的一次閉合僅作一次處理,鍵盤程序的流程如圖10-16。,鍵盤子程序如下:,KEYI:ACALL KS1 ;調(diào)用判有無鍵閉合子程序,JNZ LK1 ;有鍵閉合,跳LK1,NI: ACALL DIR ;無鍵閉合,調(diào)用顯示子程序,延,;遲6ms后,跳KEYI,AJMP KEYI,LK1: ACALL DIR ;可能有鍵閉合,軟件延遲12ms去抖,ACALL DIR,ACALL KS1 ;調(diào)用判有無鍵閉合子程序,JNZ LK2 ;經(jīng)去抖,判鍵確實閉合,跳LK2,ACALL DIR;調(diào)用顯示子程序延遲6ms,A

16、JMP KEYI;抖動引起,跳KEYI,LK2: MOV R2,0FEH;列選碼R2,MOV R4,00H;R4為列號計數(shù)器,LK4: MOV DPTR,7F01H ;列選碼8155H的PA口,MOV A,R2 ;,MOVX DPTR,A ;,INC DPTR ;數(shù)據(jù)指針增2,指向PC口,INC DPTR ;,MOVX A,DPTR ;讀8155H PC口,JB Acc.0,LONE ;0行線為高,無鍵閉合,跳 LONE,轉(zhuǎn)判1行,MOV A,00H ;0行有鍵閉合,首鍵號0A,AJMP LKP ;跳LKP,計算鍵號,LONE:JB Acc.1,LTW0 ;1行線為高,無鍵閉合,跳LTW0,

17、;轉(zhuǎn)判2行,MOV A,08H ;1行有鍵閉合,首鍵號8A,AJMP LKP,LTW0:JB A.2,LTHR ;2行線為高,無鍵閉合,跳 ;LTHR,轉(zhuǎn)判3行,MOV A,10H ;2行有鍵閉合,首鍵號10HA,AJMP LKP;跳LKP,計算鍵號,LTHR:JB Acc.3,NEXT ;3行線為高,無鍵,;閉合,跳NEXT,準備下一列掃描,MOV A,18H;3行有鍵閉合,首鍵號18HA,LKP: ADD A,R4 ;計算鍵號:首鍵號列號=鍵號,PUSH A ;鍵號進棧保護,LK3: ACALL DIR;調(diào)用顯示子程序,延時6ms,ACALL KS1;調(diào)用判有無鍵閉合子程序,延時;6ms,

18、JNZ LK3 ;判鍵釋放否,未釋放,則循環(huán),POP A ;鍵已釋放,鍵號出棧A,RET,NEXT:INC R4 ;列計數(shù)器加1,為下一列掃描作準備,MOV A,R2 ;判是否已掃到最后一列(最右一列),JNB Acc.7,KND ;鍵掃描已掃到最后一列,跳KND, ;重新進行整個鍵盤掃描,RL A ;鍵掃描未掃到最后一列,位選碼左移 ;一位,MOV R2,A ;位選碼R2,AJMP LK4 ;,KND: AJMP KEYI ;,KS1: MOV DPTR ,#7F01H;判有無鍵閉合子程序,全“0” ;掃描口(PA口),MOV A,00H ;即列線全為低電平,MOVX DPTR,A ;,IN

19、C DPTR ;DPTR增2,指向PC口,INC DPTR ;指針增1,指向PC口,MOVX A,DPTR ;從PC口讀行線的狀態(tài),CPL A ;行線取反,如無鍵按下,則A為0;,ANL A,0FH ;屏蔽無用的高4位,RET,10.3.2 利用8031的串行口實現(xiàn)鍵盤/顯示器接口,串口未作它用,可用來外擴鍵盤/顯示器。,串口為方式0輸出,串口外接移位寄存器74LS164。,接口電路如圖10-17。,74LS164(0)74LS164(7):作為8位LED的段碼輸出,,8031的P3.4、P3.5:兩行鍵的行狀態(tài)輸入,P3.3(TXD):同步移位脈沖輸出控制線,,優(yōu)點:亮度大,容易做到顯示不閃

20、爍,且CPU不必 頻繁的為顯示服務,從而使單片機有更多的時間處理 其它事務。,顯示子程序:,DIR: SETB P3.3 ;P3.3=1允許TXD腳同步移位 ;脈沖輸出,MOV R7,08H ;送出的段碼個數(shù),R7為段 ;碼個數(shù)計數(shù)器,MOV R0,7FH ;7FH78H為顯示數(shù)據(jù)緩沖區(qū),DL0: MOV A,R0 ;取出要顯示的數(shù)送A,ADD A,0DH ;加上偏移量,MOVC A,APC ;查段碼表SEGTAG,取出段碼,MOV SBUF ,A ;將段碼送SBUF,DL1: JNB TI,DL1;輸出段碼,查詢TI狀態(tài),1個字節(jié) ;的段碼輸出完否?,CLR TI ;1個字節(jié)的段碼輸出完,清

21、TI標志,DEC R0;指向下一個顯示數(shù)據(jù)單元,DJNZ R7,DL0;段碼個數(shù)計數(shù)器R7是否為0, 如不 ; 為0,繼續(xù)送段碼,CLR P3.3 ;8個段碼輸出完畢,關顯示器輸出,RET ;返回,SEGTAB:DB 0C0H,0F9H,0A4H,0B0H,99H ;共陽極段碼表, ;0,1,2,3,4,DB 92H,82H,0F8H,90H;5,6,7,8,9,DB 88H,83H,0C6H,0A1H,86H;A,B,C,D,E,DB 8FH,0BFH,8CH,0FFH,0FFH;F,P,暗,鍵盤掃描子程序:,KEYI:MOV A,00H;判有無鍵按下,使所有列線為0 ;的編碼送A,MOV

22、SBUF,A;掃描鍵盤的(8)號74LS164輸 ;出為00H,使所有列線為0,KL0: JNB TI,KL0;串行輸出完否?,CLR TI;串行輸出完畢,清TI,KL1: JNB P3.4,PK1;第1行有閉合鍵嗎?如有,跳 ;PK1進行處理,JB P3.5,KL1;在第2行鍵中有閉合鍵嗎?無閉 ;合鍵跳KL1,PK1: ACALL DL10;調(diào)用延時10ms子程序DL10,軟 ;件消除抖動,JNB P3.4,PK2;判是否抖動引起的?,JB P3.5,KL1 ;不是抖動引起的,往下執(zhí)行,PK2:MOV R7,08H ;R7為列計數(shù)器,掃一列減1,MOV R6,0FEH;判別是哪一個鍵按下,

23、FEH為最 ;左一列為低,MOV R3,00H ;R3為列號寄存器,MOV A,R6 ;,KL5: MOV SBUF,A;列掃描碼從串行口輸出,KL2: JNB TI,KL2;等待串行口發(fā)送完,CLR TI;串行口發(fā)送完畢,清TI標志,JNB P3.4,PKONE;讀第1行線狀態(tài),第1行有鍵閉,;合,跳PKONE處理,JB P3.5,NEXT ;讀第2行狀態(tài),是第2行某鍵否?,MOV R4,08H;第2行鍵中有鍵被按下,行首鍵 ;號08H送R4,AJMP PK3 ;,PKONE:MOV R4,00H ;第1行有鍵按下,行首鍵號00H送R4,PK3: MOV SBUF,00H ;等待鍵釋放,發(fā)送

24、00H使所有列 ;線為低,KL3: JNB TI,KL3 ;,CLR TI ;發(fā)送完畢,清標志,KL4: JNB P3.4,KL4 ;判行線狀態(tài),JNB P3.5,KL4 ;,MOV A,R4 ;兩行線均為高,說明鍵已釋放,ADD A,R3 ;計算得到鍵碼A,RET,NEXT: MOV A,R6 ;列掃描碼左移一位,判下列鍵,RL A ;,MOV R6,A ;記住列掃描碼于R6中,INC R3 ;列號增1,DJNZ R7,KL5 ;列計數(shù)器R7減1,8列鍵都檢查 ;完?,AJMP KEYI ;8列鍵掃描完畢,開始下一個鍵 ;盤掃描周期,DL10: MOV R7,0AH;延時10ms子程序,DL

25、: MOV R6,0FFH,DL6: DJNZ R6,DL6,DJNZ R7,DL,RET,10.3.3 利用通用鍵盤/顯示器接口芯片8279實現(xiàn)鍵盤/ 顯示器接口,Intel 8279芯片:通用可編程鍵盤/顯示器接口芯片。,對鍵盤部分提供掃描工作方式,能對64個鍵鍵盤陣 列不斷掃描,自動消抖,自動識別出閉合的鍵并得到鍵 號,能對雙鍵或N鍵同時按下進行處理。,掃描方式的顯示接口,可顯示多達16位的字符。,1.8279的引腳及內(nèi)部結構,2. 引腳功能介紹,(1)與CPU的接口引腳,DB0DB7:數(shù)據(jù)總線、雙向、三態(tài),與單片機數(shù)據(jù) 總線相連,在CPU和8279之間傳送命令或數(shù)據(jù)。,CLK:系統(tǒng)時鐘

26、,用于8279內(nèi)部定時,以產(chǎn)生其工作 所需的時序。,RESET:高電平時,8279被復位,復位后的狀態(tài)如下:,* 16個字符左邊輸入顯示方式,* 編碼掃描鍵盤、雙鍵鎖定方式,CS*:片選,A0:=1,寫入的是命令字節(jié); 讀出的是狀態(tài)字節(jié)。,=0,寫入或讀出的字節(jié)均為數(shù)據(jù)。,RD*、WR*:讀、寫控制引腳,IRQ:中斷請求線。在鍵盤方式中,當鍵盤RAM(先 進先出)中存有按下鍵的數(shù)據(jù)時,IRQ為高電平,向 CPU提出中斷申請。,(2)掃描信號輸出引腳,CPU每次從鍵盤RAM中讀出一個字節(jié)數(shù)據(jù)時,IRQ就變?yōu)榈碗娖?。如果鍵盤RAM中還有未讀完的數(shù)據(jù),IRQ將再次變?yōu)楦唠娖?,再次提出中斷請求?SL

27、0SL3,掃描輸出。用來掃描鍵盤和顯示器??删幊淘O定 為編碼輸出,即SL0SL3需外接4-16譯碼器,輸出16 取1的掃描信號,也可編程設定為譯碼輸出,即由SL0 SL3直接輸出4取1的掃描信號。,(3)與鍵盤連接的引腳,RL0RL7,鍵盤矩陣的行信號輸入線。,SHIFT,輸入線,通常用作鍵盤上、下檔功能的控制鍵。,CNTL/STB,輸入線,高電平有效。在鍵盤方式時,通常用來 作為鍵盤控制功能鍵使用。,(4)與顯示器連接的引腳,OUTA0OUTA3(A組顯示數(shù)據(jù))、OUTB0OUTB3(B 組顯示數(shù)據(jù)):向LED顯示器輸出的段碼, 與掃描信號 線SL0SL3同步。兩組可獨立使用,也可合并使用。

28、,BD*:消隱顯示控制。,3. 8279的基本功能部件,(1)掃描計數(shù)器,編碼方式:掃描線SL0SL3輸出,經(jīng)外部4-16譯碼器 譯碼后,為鍵盤和顯示器提供16取1的掃描線。,譯碼方式:計數(shù)器的最低二位在8279內(nèi)部譯碼后,從 SL0SL3輸出,為鍵盤和顯示器提供4取1掃描線。,(2)鍵盤去抖動及回復緩沖器,RL0RL7被接到鍵盤的行線。,在逐列掃描時,當某一鍵閉合,消抖電路延時等 待10ms之后,再檢驗該鍵是否仍閉合。若閉合,則該 鍵的行、列地址和附加的移位、控制狀態(tài)一起形成鍵 盤數(shù)據(jù),送入8279內(nèi)部的鍵盤RAM存儲器。格式為:,控制(CNTL)和移位(SHIFT)的狀態(tài)由兩個獨立 的附加

29、開關決定,而掃描(D5、D4、D3)是被按鍵的 列編碼,而回復(D2、D1、D0)則是被按鍵的行位置 數(shù)據(jù)。,(3)鍵盤RAM及其狀態(tài)寄存器,鍵盤RAM:8字節(jié)先進先出(FIFO)存儲器。內(nèi)部的FIFO 狀態(tài)寄存器存放FIFO的工作狀態(tài),如FIFO是空還是滿, 其中存有多少字符,是否操作出錯等等。,當FIFO存儲器空間不足時,狀態(tài)邏輯將產(chǎn)生IRQ=1 信號,向CPU發(fā)出中斷申請。,(4)顯示RAM和顯示地址寄存器,顯示RAM:存顯示數(shù)據(jù)。16個字節(jié),可存放16位顯示信 息。顯示RAM的輸出與顯示掃描配合,同時輪流驅(qū)動被選中的顯示位,使顯示器呈現(xiàn)穩(wěn)定的顯示(動態(tài)掃描)。,4. 8279的命令字和

30、狀態(tài)字,命令字:D7、D6、D5為命令特征位,來區(qū)分8條不同,的命令字。,狀態(tài)字:主要用于鍵盤工作方式,以指示鍵盤RAM中 的字符數(shù)和有無錯誤發(fā)生。,5. 8279與鍵盤/顯示器的接口,圖10-20為8279與8位顯示器,48鍵盤的接口電路。 行線接8279的RL0RL3,8279選用外部譯碼方式,SL0 SL2經(jīng)74LS138(1)譯碼輸出,接列線,實現(xiàn)鍵盤逐 列掃描。,SL0SL2又由74LS138(2)譯碼輸出到顯示器各位的公 共陰極,進行逐位掃描顯示。OUTB03、OUTA 03輸 出8位段碼。,當位切換時,BD*輸出為低電平,使74LS138(2)輸出 全為高電平,顯示消隱。,當鍵盤

31、上出現(xiàn)有效的閉合鍵時,鍵輸入數(shù)據(jù)自動進入,中斷讀取鍵盤RAM中的鍵輸入數(shù)據(jù)。若要更新顯示器輸 出,僅需改變8279中顯示RAM中的內(nèi)容。,圖10-20:8279的命令/狀態(tài)口地址為7FFFH,數(shù)據(jù)口 地址為7FFEH。 8279初始化程序:,INITI: SETB EX1 ; 允許外部中斷1中斷,MOV DPTR,#7FFFH ; 命令/狀態(tài)口地址寫入DPTR,MOV A,#0D1H ; 控制字D1H送A,MOVX DPTR,A ; 向命令/狀態(tài)口寫入控制字,LP: MOVX A,DPTR ; 讀8279的狀態(tài),JB Acc.7,LP,MOV A,#00H,MOVX DPTR,A,8279的鍵

32、盤RAM存儲器,并向8031請求中斷,8031響應,MOV A,2AH,MOVX DPTR,A,SETB EA,鍵輸入中斷服務程序:,PINT1:PUSH PSW,PUSH DPH,PUSH DPL,PUSH Acc,MOV DPTR,7FFFH ;向命令口寫入讀鍵盤RAM命令,MOV A,40H,MOVX DPTR,A,MOV DPTR,7FFEH ;讀鍵輸入值,MOVX A,DPTR,CJNE A,37H,PRI1 ;判輸入停機命令否,SETB 20H,PRI1:POP Acc,POP DPL,POP DPH,POP PSW,RETI,顯示子程序:,DIR: MOV DPTR,7FFFH

33、;輸出寫顯示RAM命令,MOV A,90H,MOVX DPTR,A,MOV R0,70H,MOV R7,08H;送顯示RAM數(shù)據(jù)的個數(shù),MOV DPTR,7FFEH,DL0: MOV A,R0,ADD A,05H;05H為查表偏移量,MOVC A,A+PC ;查表得到段碼,MOVX DPTR,A ;寫入顯示RAM,INC R0;顯示數(shù)據(jù)單元地址增1,DJNZ R7,DL0;8個顯示數(shù)據(jù)是否輸出完畢,RET,ADSEG:DB 3FH,06H,5BH,4FH,66H,6DH ;段碼表(共陰極) DB 7DH,07H,7FH,6FH,77H,7CH DB 39H,5EH,79H,71H,73H,3E

34、H DB 31H,6EH,1CH,23H,40H,03H DB 18H,38H,00H,10.4 MCS-51與液晶顯示器(LCD)的接口,LCD(Liquid Crystal Display):液晶顯示器 的縮寫,被動式顯示器-液晶本身并不發(fā)光,而是經(jīng)液晶經(jīng)過處理后能改變光線通過方向的特性,而達到白底黑字或黑底白字顯示的目的。,液晶顯示器具有功耗低、抗干擾能力強等優(yōu)點, 廣泛用在儀器儀表和控制系統(tǒng)中。,10.4.1 LCD顯示器的分類,按排列形狀分:字段型、點陣字符型和點陣圖形。,(1)字段型,廣泛用于電子表、數(shù)字儀表、計算器中。,(2)點陣字符型,顯示字母、數(shù)字、符號。它是由57或510點

35、陣 組成,廣泛應用在單片機應用系統(tǒng)中。,(3)點陣圖形型,筆記本電腦和彩色電視等設備中。,10.4.2 點陣字符型液晶顯示模塊介紹,點陣字符型LCD顯示器,需相應的LCD控制器、驅(qū) 動器,來對LCD顯示器進行掃描、驅(qū)動,以及一定空 間的RAM和ROM來存儲寫入的命令和顯示字符的點陣。,現(xiàn)在已將LCD控制器、驅(qū)動器、RAM、ROM和LCD顯 示器用PCB連接到一起,稱為液晶顯示模塊LCM(LCd Module)。,用戶只向LCM送入相應的命令和數(shù)據(jù)就可實現(xiàn)所需要 的顯示內(nèi)容,與單片機接口簡單,使用靈活方便。產(chǎn)品分為字符和圖形兩種。,1.基本結構,(1)液晶板,在液晶板上排列著若干57或510點陣

36、的字符顯 示位,從規(guī)格上分為每行8、16、20、24、32、40位, 有一行、兩行及四行三類,用戶可根據(jù)需要,來選擇 購買。,(2)模塊電路框圖,由控制器HD44780、驅(qū)動器HD44100及幾個電阻電 容組成。HD44100是擴展顯示字符位用的(例如:16字 符1行模塊就可不用HD44100,16字符2行模塊就要 用一片HD44100)。,表10-2 液晶顯示模塊的引腳,模塊14個引腳,其中有8條數(shù)據(jù)線,3條控制線,3 條電源線,見表10-2。通過單片機寫入模塊的數(shù)據(jù)和 指令,就可對顯示方式和顯示內(nèi)容作出選擇。,表10-3 寄存器的選擇,命令格式及命令功能說明,(1) 命令格式,控制器HD4

37、4780內(nèi)有多個寄存器,如表10-3所示。,RS位和R/W*引腳上的電平來選擇寄存器,而DB7DB0則決定命令功能。,命令共11種:清除,返回,輸入方式設置,顯示 開關控制,移位控制,功能設置,CGRAM(字符生成 RAM)地址設置,DDRAM(顯示數(shù)據(jù)RAM)地址設置, 讀忙標志和地址,寫數(shù)據(jù)到CGRAM或DDRAM,從CGRAM 或DDRAM讀數(shù)據(jù)。,這些命令功能強:可組合成各種輸入、顯示、移位方式以滿足不同的要求。,(2)標準字符庫,圖10-23:字符庫的內(nèi)容、字符碼和字型的對應 關系。例如“A”的字符碼為41H,“B”的字符碼為42H。,10.4.3 8031與LCD的接口及軟件編程,

38、1.8031與LCD模塊的接口,接口電路見圖10-24。將LCM掛接在8031的總線 上,通過對數(shù)據(jù)總線的讀寫實現(xiàn)對LCM的控制。,1.軟件編程,初始化,用戶所編的顯示程序,開始必須進行初始化,否 則模塊無法正常顯示。,顯示程序編寫(自己閱讀),10.5 MCS-51與微型打印機的接口,內(nèi)部有一個控制用單片機,固化有控打程序,智 能化程度高。,常用的微型打印機:TPP-40A/16A、GP16以及 XLF嵌入儀器面板上的漢字微型打印機。,10.5.1 MCS-51與TPP-40A/16A微型打印機的接口,1. TPP-40A/16A微型打印機,單片機控制的微型智能打印機。TPP-40A與 TP

39、P-16A的接口信號與時序完全相同,操作方式相 近,硬件電路及插腳完全兼容,只是指令代碼不完全 相同。TPP-40A每行打印40個字符,TPP-16A則每 行打印16個字符。,2. 主要性能、接口要求及時序,(1)TPP-40A主要技術性能,單片機控制, 2KB控打程序及標準的Centronics并 行接口。,可打印全部ASCII代碼字符及128個非標準字符和圖 符。1 6個代碼字符(67點陣)由用戶定義。,可打印出8240點陣的圖樣(漢字或圖案點陣)。,字符、圖符和點陣圖可在寬和高的方向放大為2、 3、4倍。,每行字符的點行數(shù)(包括字符的行間距)可用命令 更換。即字符行間距空點行在0256間

40、任選。,2接口信號,采用國際上流行的Centronics打印機并行接口, 與單片機間是通過一條20芯扁平電纜及接插件相連。 打印機有一個20線扁平插座,信號引腳排列如圖10- 26所示。,引腳介紹:,DB0DB7:數(shù)據(jù)線,單向傳輸,由單片機輸入給打 印機。,STB*:數(shù)據(jù)選通信號。在該信號的上升沿時,數(shù)據(jù) 線上的8位并行數(shù)據(jù)被打印機讀入機內(nèi)鎖存。,BUSY:打印機“忙”狀態(tài)信號。當該信號有效(高電 平)時,表示打印機正忙。此時,單片機不得向打印機 送入新的數(shù)據(jù)。,ACK*:打印機的應答信號。低電平有效,表明打印 機已取走數(shù)據(jù)線上的數(shù)據(jù)。,ERR*:“出錯”信號。當送入打印機的命令格式出錯 時,

41、打印機立即打印一行出錯信息,提示出錯。在打印 出錯信息之前,該信號線出現(xiàn)一個負脈沖,脈沖寬度 為30s。,3接口信號時序,接口信號時序如圖10-27所示。,選通信號STB*寬度需大于0.5s。應答信號ACK*可 與STB*信號作為一對應答聯(lián)絡信號,也可與BUSY作為一 對應答聯(lián)絡信號。,2. 字符代碼及打印命令,寫入的全部代碼共256個,其中00H無效。,代碼:01H0FH為打印命令;,代碼:10H1FH為用戶自定義代碼;,代碼:20H7FH為標準ASCII代碼;,代碼:80HFFH為非ASCII代碼,如圖10-28所示。其 中包括少量漢字、希臘字母、塊圖圖符和一些 特殊字符。,3. TPP-

42、40A/16A與MCS-51單片機接口設計,TPP-40A/16A內(nèi)部控制電路由單片機構成,在輸 入電路中有鎖存器,在輸出電路中有三態(tài)門控制。因此 可直接與單片機相接。,TPP-40A/16A只有握手線STB* 、BUSY(或ACK*), 接口電路如圖10-29所示。,圖10-30:并行I/O口連接的打印機接口電路。圖中 的擴展I/O口為8255A的PA口,采用查詢法,即通過讀 8255A 的PC0腳的狀態(tài)來判斷送給打印機的一個字節(jié)的 數(shù)據(jù)是否處理完畢。也可用中斷法(BUSY直接與單片機 的P3.3腳相連)。,例 把MCS-51單片機內(nèi)部RAM 3FH4FH單元中的ASCII碼 數(shù)據(jù)送到打印機

43、。8255A設置為方式0,即端口A與端口 C的上半部為輸出方式。端口C的下半部為輸入方式。,打印程序如下:,PRINT:MOV R0,#7FH ;控制口地址R0,MOV A ,#81H ;8255A控制字A,MOVX R0,A ;控制字控制口,MOV R1,#3FH;數(shù)據(jù)區(qū)首地址R1,MOV R2,#0FH ;打印數(shù)據(jù)個數(shù)的計數(shù),LOOP: MOV A,R1 ;打印數(shù)據(jù)單元內(nèi)容A,INC R1 ;指向下一個數(shù)據(jù)單元,MOV R0,#7CH ;8255A的端口A地址R0,MOVX R0,A ;打印數(shù)據(jù)送8255A的口A并 鎖存,MOV R0,#7FH ;8255A的控制口地址R0,MOV A,#

44、0EH ;PC7的復位控制字A,MOVX R0,A ;PC7=0,MOV A,#0FH ;PC7的置位控制字A,MOVX R0,A ;PC7由0變1,LOOP1: MOV R0,#7EH ;口C地址R0,MOVX A,R0 ;讀入C口的值,ANL A,#01H ;屏蔽C口的高7位,只留PC0位,JNZ LOOP1 ;查詢BUSY的狀態(tài),如為1跳LOOP1,DJNZ R2,LOOP;未打完,循環(huán),10.5.2 MCS-51與GP16微型打印機的接口,1. GP16微型打印機的接口信號,控制器為8031單片機。接口信號如下:,各信號的功能如下:,IO0IO7:雙向三態(tài)數(shù)據(jù)總線,是CPU與GP16打

45、印機之 間命令、狀態(tài)和數(shù)據(jù)信息傳輸線。,CS*:設備選擇線。,RD* 、WR*:讀、寫信號線。,BUSY:打印機狀態(tài)輸出,高電平表示GP16處于忙狀態(tài), 可供CPU查詢或作中斷請求線。,GP16控制器具有數(shù)據(jù)鎖存器,與單片機接口十分方便。,1打印命令及打印方式,GP16的打印命令占兩個字節(jié),其格式如下:,第一個字節(jié) D7-D4 D3-D0,操作碼 點行數(shù)n,第二個字節(jié) D7- D0,打印行數(shù)NN,GP16為微型針打,字符本身占據(jù)7個點行。命令字 中的點行數(shù)n是選擇字符行之間的行距的參數(shù),若n=10,則行距為3個點行數(shù),應大于或等于8。打印行數(shù)是執(zhí)行本條命令時打?。ɑ蚩兆呒垼┑淖址袛?shù)。,GP16的命令編碼如下表。,D7 D6 D5 D4 命令功能,1 0 0 0 空走紙,1 0 0 1 打印字符串,1 0 1 0十六進制數(shù)據(jù)打印,1 0 1 1圖形打印,3. MCS-51單片機和GP16的接口,GP16內(nèi)部有三態(tài)鎖存器, 能鎖存數(shù)據(jù)總線上的數(shù) 據(jù), ,故GP16可以直接與MCS-51數(shù)據(jù)總線相連而不須 外加鎖存器。圖10-32為GP16與8031數(shù)據(jù)總線口相連 的接口電路。,圖中BUSY接(P3.3),直接可用于中斷方式。如要以 查詢方式工作時,BUSY可以不連接,通過查詢狀態(tài)字來 獲取BUSY的狀態(tài)。,如果使用其它I/O或擴展I/O口,只須將P0口線換成 其他I/O或擴展I/

溫馨提示

  • 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

提交評論