MCS單片機的接口與應(yīng)用_第1頁
MCS單片機的接口與應(yīng)用_第2頁
MCS單片機的接口與應(yīng)用_第3頁
MCS單片機的接口與應(yīng)用_第4頁
MCS單片機的接口與應(yīng)用_第5頁
已閱讀5頁,還剩86頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、 MCS51單片機的接口與應(yīng)用 6.1 A/D轉(zhuǎn)換器接口6.2 D/A轉(zhuǎn)換器接口6.3 按鍵、鍵盤及其接口6.4 顯示及顯示器接口11 A/D轉(zhuǎn)換器接口1.1 A/D轉(zhuǎn)換器概述 在設(shè)計A/D轉(zhuǎn)換器與單片機接口之前,往往要根據(jù)A/D轉(zhuǎn)換器的技術(shù)指標選擇A/D轉(zhuǎn)換器。為此,先介紹一下A/D轉(zhuǎn)換器的主要技術(shù)指標。 量化間隔和量化誤差是A/D轉(zhuǎn)換器的主要技術(shù)指標之一。量化間隔可用下式表示。其中n為A/D轉(zhuǎn)換器的位數(shù)。2 量化誤差有兩種表示方法:一種是絕對誤差,另一種是相對誤差。 A/D轉(zhuǎn)換器芯片種類很多,按其轉(zhuǎn)換原理可分為逐次比較式、雙重積分式、量化反饋式和并行式A/D轉(zhuǎn)換器;按其分辨率可分為816位

2、的A/D轉(zhuǎn)換器芯片。目前最常用的是逐次逼近式和雙重積分式。3 逐次逼近式轉(zhuǎn)換器的常用產(chǎn)品有ADC0801ADC0805型8位MOS型A/D轉(zhuǎn)換器、ADC0808/0809型8位MOS型A/D轉(zhuǎn)換器、ADC0816/0817型8位MOS型A/D轉(zhuǎn)換器、AD574型快速12位A/D轉(zhuǎn)換器。 雙重積分式轉(zhuǎn)換器的常用產(chǎn)品有ICL7106/ICL7107/ICL7126、MC14433/5G14433、ICL7135等。 A/D轉(zhuǎn)換器與單片機接口具有硬、軟件相依性。一般來說,A/D轉(zhuǎn)換器與單片機的接口主要考慮的是數(shù)字量輸出線的連接、ADC啟動方式、轉(zhuǎn)換結(jié)束信號處理方法以及時鐘的連接等。4 A/D轉(zhuǎn)換器數(shù)

3、字量輸出線與單片機的連接方法與其內(nèi)部結(jié)構(gòu)有關(guān)。對于內(nèi)部帶有三態(tài)鎖存數(shù)據(jù)輸出緩沖器的ADC(如ADC0809、AD574等),可直接與單片機相連。對于內(nèi)部不帶鎖存器ADC,一般通過鎖存器或并行I/O接口與單片機相連。在某些情況下,為了增強控制功能,那些帶有三態(tài)鎖存數(shù)據(jù)輸出緩沖器的ADC也常采用I/O接口連接。還有,隨著位數(shù)的不同,ADC與單片機的連接方法也不同。對于8位ADC,其數(shù)字輸出線可與8位單片機數(shù)據(jù)線對應(yīng)相接。對于8位以上的ADC,與8位單片機相接就不那么簡單了,此時必須增加讀取控制邏輯,把8位以上的數(shù)據(jù)分兩次或多次讀取。為了便于連接,一些ADC產(chǎn)品內(nèi)部已帶有讀取控制邏輯,而對于內(nèi)部不包

4、含讀取控制邏輯的ADC,在和8位單片機連接時,應(yīng)增設(shè)三態(tài)緩沖器對轉(zhuǎn)換后的數(shù)據(jù)進行鎖存。5 一個ADC開始轉(zhuǎn)換時,必須加一個啟動轉(zhuǎn)換信號,這一啟動信號要由單片機提供。不同型號的ADC,對于啟動轉(zhuǎn)換信號的要求也不同,一般分為脈沖啟動和電平啟動兩種。對于脈沖啟動型ADC,只要給其啟動控制端上加一個符合要求的脈沖信號即可,如ADC0809、ADC574等。通常用WR和地址譯碼器的輸出經(jīng)一定的邏輯電路進行控制。對于電平啟動型ADC,當把符合要求的電平加到啟動控制端上時,立即開始轉(zhuǎn)換。在轉(zhuǎn)換過程中,必須保持這一電平,否則會終止轉(zhuǎn)換的進行。因此,在這種啟動方式下,單片機的控制信號必須經(jīng)過鎖存器保持一段時間,

5、一般采用D觸發(fā)器、鎖存器或并行I/O接口等來實現(xiàn)。AD570、AD571等都屬于電平啟動型ADC。6 當ADC轉(zhuǎn)換結(jié)束時,ADC輸出一個轉(zhuǎn)換結(jié)束標志信號,通知單片機讀取轉(zhuǎn)換結(jié)果。單片機檢查判斷A/D轉(zhuǎn)換結(jié)束的方法一般有中斷和查詢兩種。對于中斷方式,可將轉(zhuǎn)換結(jié)束標志信號接到單片機的中斷請求輸入線上或允許中斷的I/O接口的相應(yīng)引腳,作為中斷請求信號;對于查詢方式,可把轉(zhuǎn)換結(jié)束標志信號經(jīng)三態(tài)門送到單片機的某一位I/O口線上,作為查詢狀態(tài)信號。 A/D轉(zhuǎn)換器的另一個重要連接信號是時鐘,其頻率是決定芯片轉(zhuǎn)換速度的基準。整個A/D轉(zhuǎn)換過程都是在時鐘的作用下完成的。A/D轉(zhuǎn)換時鐘的提供方法有兩種:一種是由芯

6、片內(nèi)部提供(如AD574),一般不許外加電路;另一種是由外部提供,有的用單獨的振蕩電路產(chǎn)生,更多的則把單片機輸出時鐘經(jīng)分頻后,送到A/D轉(zhuǎn)換器的相應(yīng)時鐘端。71.2 A/D轉(zhuǎn)換器ADC0809與單片機的接口1ADC0809芯片簡介圖 1 ADC0809芯片的內(nèi)部邏輯結(jié)構(gòu)與引腳圖 8表 1 ADC0809通道地址選擇表 ADDC ADDB ADDA選通的通道0 0 0IN00 0 1IN10 1 0IN20 1 1IN31 0 0IN41 0 1IN51 1 0IN61 1 1IN79圖 2 ADC0809轉(zhuǎn)換工作時序 102ADC0809與單片機接口 圖 3 ADC0809與8051的接口連接

7、圖 11 3A/D轉(zhuǎn)換應(yīng)用程序舉例 設(shè)圖5.18接口電路用于一個8路模擬量輸入的巡回檢測系統(tǒng),使用中斷方式采樣數(shù)據(jù),把采樣轉(zhuǎn)換所得的數(shù)字量按序存于片內(nèi)RAM的30H37H單元中。采樣完一遍后停止采集。 其數(shù)據(jù)采集的初始化程序和中斷服務(wù)程序如下:初始化程序: MOV R0,#30H ;設(shè)立數(shù)據(jù)存儲區(qū)指針 MOV R2,#08H ;設(shè)置8路采樣計數(shù)值 SETB IT0 ;設(shè)置外部中斷0為邊沿觸發(fā)方式 SETB EA ;CPU開放中斷12 SETB EX0 ;允許外部中斷0中斷 MOV DPTR,#FEF8H ;送入口地址并指向IN0 LOOP: MOVX DPTR,A ;啟動A/D轉(zhuǎn)換,A的值無意

8、義 HERE: SJMP HERE ;等待中斷中斷服務(wù)程序: MOVX A,DPTR ;讀取轉(zhuǎn)換后的數(shù)字量 MOV R0,A ;存入片內(nèi)RAM單元 INC DPTR ;指向下一模擬通道 INC R0 ;指向下一個數(shù)據(jù)存儲單元 DJNZ R2,INT0 ;8路未轉(zhuǎn)換完,則繼續(xù) CLR EA ;已轉(zhuǎn)換完,則關(guān)中斷 CLR EX0 ;禁止外部中斷0中斷 RETI ;中斷返回INT0: MOVX DPTR,A ;再次啟動A/D轉(zhuǎn)換 RETI ;中斷返回131.3 單片機與A/D轉(zhuǎn)換器AD574的接口 1 AD574芯片簡介 AD574是一種快速的12位逐次比較式A/D轉(zhuǎn)換芯片,片內(nèi)有兩片雙極型電路組成

9、的28腳雙插直列式芯片,無需外接元器件就可獨立完成A/D轉(zhuǎn)換功能。內(nèi)部設(shè)有三態(tài)數(shù)據(jù)輸出鎖存器。一次轉(zhuǎn)換時間為25 s。芯片引腳如圖5.19所示。14圖 4 AD574的引腳圖 15AD574的引腳定義如下:REOUT:內(nèi)部參考電源輸出(+10 V);REFIN:參考電壓輸入;BIP:偏置電壓輸入;10VIN:5 V或010 V模擬輸入;20VIN:10 V或020 V模擬輸入;DB0DB11數(shù)字量輸出,高半字節(jié)為DB8DB11,低字節(jié)為DB0DB7;16 STS:工作狀態(tài)指示端。STS=1時表示轉(zhuǎn)換器正處于轉(zhuǎn)換狀態(tài),STS返回到低電平時,表示轉(zhuǎn)換完畢。該信號可處理器作為中斷或查詢信號用; 12

10、/-8:變換輸出字長選擇控制端,在輸入為高電平時,變換字長輸出為12位,在低電平時,按8位輸出; CS、CE:片選信號。當CS=0、CE=1同時滿足時,AD574才能處于工作狀態(tài)。 R/C:數(shù)據(jù)讀出和數(shù)據(jù)轉(zhuǎn)換啟動控制; A0:字節(jié)地址控制。它有兩個作用,在啟動AD574(R/C=0)時,用來控制轉(zhuǎn)換長度。A=0時,按完整的12位A/D轉(zhuǎn)換方式工作,A=1時,則按8位A/D 轉(zhuǎn)換方式工作。在AD574處于數(shù)據(jù)讀出工作狀態(tài)(R/C=1)時,A0和12/8成為輸出數(shù)據(jù)格式控制。17表 2 AD574控制信號狀態(tài)表 CECSR/ C 12/ 8A0功能說明100012位轉(zhuǎn)換10018位轉(zhuǎn)換101+5V

11、12位輸出101地0高8位輸出101地1低4位輸出182AD574模擬輸入電路的極性選擇圖 5 AD574的模擬輸入電路 (a) 單極性輸入;(b) 雙極性輸入193AD574與MCS-51單片機的接口圖 6 AD574與MCS51單片機接口電路 20 4轉(zhuǎn)換程序設(shè)計舉例 設(shè)要求AD574進行12位轉(zhuǎn)換,單片機對轉(zhuǎn)換結(jié)果讀入,高8位和低4位分別存于片內(nèi)RAM的31H和30H單元,其轉(zhuǎn)換子程序如下:ADTRANS:MOV R0,#7CH ;7CH地址使AD574的CS=0、A0=0、R/C=0 MOV R1,#31H ;R1指向轉(zhuǎn)換結(jié)果的送存單元地址 MOVX R0,A ;產(chǎn)生有效的WR信號,啟

12、動AD574為12位工作方式 MOV A,P1 ;讀P1口,檢測STS的狀態(tài)21WAIT:ANL A,#01H JNZ WAIT ;轉(zhuǎn)換未結(jié)束,等待,轉(zhuǎn)換結(jié)束則進行如下操作INC R0 ;使CS=0、A0=0、R/C=1,為按雙字節(jié)讀取轉(zhuǎn)換結(jié)果,并讀高;字節(jié) MOVX A,R0 ;讀取高8位轉(zhuǎn)換結(jié)果 MOV R1,A ;送存高8位轉(zhuǎn)換結(jié)果 DEC R1 ;R1指向低4位轉(zhuǎn)換結(jié)果存放單元地址 INC R0 INC R0 ;(R0)=7FH,使CS=0、A0=1、R/C=1,為讀低字節(jié) MOVX A,R0 ;讀取低4位轉(zhuǎn)換結(jié)果 ANL A,#0FH ;只取低4位結(jié)果 MOV R1,A ;送存低4位

13、結(jié)果 RET222 D/A轉(zhuǎn)換器接口2.1 D/A 轉(zhuǎn)換器概述 在設(shè)計D/A轉(zhuǎn)換器與單片機接口之前,一般要根據(jù)D/A轉(zhuǎn)換器的技術(shù)指標選擇D/A轉(zhuǎn)換器芯片。 (1) 分辨率。分辨率是D/A轉(zhuǎn)換器對輸入量變化敏感程度的描述。D/A轉(zhuǎn)換器的分辨率定義為:當輸入數(shù)字量發(fā)生單位數(shù)碼變化時,即LSB位產(chǎn)生一次變化時所對應(yīng)輸出模擬量的變化量。對于線性D/A轉(zhuǎn)換器來說,其分辨率與輸入數(shù)字量輸出的位數(shù)n呈現(xiàn)下列關(guān)系23 (2) 建立時間。建立時間是描述D/A轉(zhuǎn)換速率快慢的一個重要參數(shù)。一般所指的建立時間是輸入數(shù)字量變化后,模擬輸出量達到終值誤差LSB/2(最低有效位)時所經(jīng)歷的時間。根據(jù)建立時間的長短,把D/A

14、轉(zhuǎn)換器分成以下幾擋: 超高速 100 ns 較高速 100 ns1 s 高 速 110 s 中 速 10100 s 低 速 100 s24 (1) DAC0830系列。DAC0830系列是美國National Semiconductor公司生產(chǎn)的具有兩個數(shù)據(jù)寄存器的8位D/A轉(zhuǎn)換芯片。該系列產(chǎn)品包括DAC0830 、DAC0831、 DAC0832,管腳完全相容為20腳雙插直列式封裝。 (2) DAC82。DAC82是B-B公司生產(chǎn)的8位能完全與微處理器兼容的D/A轉(zhuǎn)換器芯片,片內(nèi)帶有基準電壓和調(diào)節(jié)電阻。無需外接器件及微調(diào)即可與單片機8位數(shù)據(jù)線相連。芯片工作電壓為15 V,可以直接輸出單極性或

15、雙極性的電壓(0+10 V,10 V)和電流(01.6 mA, 0.8 mA)。25 (3) DAC1020/AD7520和DAC1220/AD7521系列。DAC1020/AD7520為10位分辨率的D/A轉(zhuǎn)換集成系列芯片。DAC1020系列是美國National Semiconductor公司的產(chǎn)品,包括DAC1020 、DAC1021、 DAC1022,與美國Analog Devices公司的AD7520及其后繼產(chǎn)品AD7530、AD7533完全兼容。單電源工作,電源電壓為+5+15 V,電流建立時間為500 ns,為16線雙插直列式封裝。與美國Analog Devices公司的AD75

16、20及其后繼產(chǎn)品AD7530、AD7533完全兼容。單電源工作,電源電壓為+5+15 V,電流建立時間為500 ns,為16線雙插直列式封裝。26 (4) DAC1220/AD7521系列。DAC1220/AD7521系列為12位分辨率的D/A轉(zhuǎn)換集成芯片。DAC1220系列包括DAC1220 、DAC1221、 DAC1222產(chǎn)品,與AD7521及其后繼產(chǎn)品AD7531管腳完全兼容,為18線雙插直列式封裝。 (5) DAC1208和DAC1230系列。DAC1208和DAC1230系列均為美國National Semiconductor公司的12位分辨率產(chǎn)品。兩者不同之處是DAC1230數(shù)據(jù)

17、輸入引腳線只有8根,而DAC1208有12根。DAC1208系列為24線雙插直列式封裝,而DAC1230系列為20線雙插直列式封裝。DAC1208系列包括DAC1208 、DAC1209、 DAC1210等,DAC1230系列包括DAC1230 、DAC1231、 DAC1232等。27 (6) DAC708/709。DAC708/709是B-B公司生產(chǎn)的16位微機完全兼容的D/A轉(zhuǎn)換器芯片,具有雙緩沖輸入寄存器,片內(nèi)有基準電源及電壓輸出放大器。數(shù)字量可并行或串行輸入,模擬量可以電壓或電流輸出。 D/A轉(zhuǎn)換器與單片機接口也具有硬、軟件相依性。各種A/D轉(zhuǎn)換器與單片機接口的方法有些差異,但就其基

18、本連接方法,還是有共同之處:都要考慮到數(shù)據(jù)線、地址線和控制線的連接。28 就數(shù)據(jù)線來說,D/A轉(zhuǎn)換器與單片機的接口要考慮到兩個問題:一是位數(shù),當高于8位的D/A轉(zhuǎn)換器與8位數(shù)據(jù)總線的MCS-51單片機接口時,MCS-51單片機的數(shù)據(jù)必須分時輸出,這時必須考慮數(shù)據(jù)分時傳送的格式和輸出電壓的毛刺問題;二是D/A轉(zhuǎn)換器的內(nèi)部結(jié)構(gòu),當D/A轉(zhuǎn)換器內(nèi)部沒有輸入鎖存器時,必須在單片機與D/A轉(zhuǎn)換器之間增設(shè)鎖存器或I/O接口。最常用、也是最簡單的連接是8位帶鎖存器的D/A轉(zhuǎn)換器和8位單片機的接口,這時只要將單片機的數(shù)據(jù)總線直接和D/A轉(zhuǎn)換器的8位數(shù)據(jù)輸入端一一對應(yīng)連接即可。29 就地址線來說,一般的D/A轉(zhuǎn)

19、換器只有片選信號,而沒有地址線。這時單片機的地址線采用全譯碼或部分譯碼,經(jīng)譯碼器的輸出控制片選信號,也可由某一位I/O線來控制片選信號。也有少數(shù)D/A轉(zhuǎn)換器有少量的地址線,用于選中片內(nèi)獨立的寄存器或選擇輸出通道(對于多通道D/A轉(zhuǎn)換器),這時單片機的地址線與D/A轉(zhuǎn)換器的地址線對應(yīng)連接。 就控制線來說,D/A轉(zhuǎn)換器主要有片選信號、寫信號及啟動轉(zhuǎn)換信號等,一般由單片機的有關(guān)引腳或譯碼器提供。一般來說,寫信號多由單片機的-WR信號控制;啟動信號常為片選信號和寫信號的合成。302.2 8位D/A轉(zhuǎn)換器與單片機的接口1DAC0830/DAC0831/ DAC0832的結(jié)構(gòu)與引腳功能圖 7 DAC083

20、0系列結(jié)構(gòu)框圖 312DAC0830系列D/A轉(zhuǎn)換器與單片機接口port數(shù) 據(jù) 線地址譯碼總線WRP2D0D7+5VXFERDAC0832DI0DI7+-VoIOUT1IOUT2RFBCS WR1WR2ILE單緩沖工作方式 : 輸入寄存器工作于直通狀態(tài) DAC寄存器工作于受控狀態(tài) VREF 接-5V 輸出V0為0 5V 32 設(shè)分配給DAC0830/DAC0831/ DAC0832的地址為7FFFH(P2.7=0),則執(zhí)行下列三條指令就可以將一個數(shù)字量轉(zhuǎn)換為模擬量:MOV DPTR,#7FFFH ;端口地址送DPTRMOV A,#DATA ;8位數(shù)字量送累加器MOVX DPTR,A ;向鎖存器

21、寫入數(shù)字量,同時啟動轉(zhuǎn)換33圖 9 單路DAC0830/DAC0831/DAC0832控制時序 34 下面的程序可使DAC0830/DAC0831/ DAC0832輸出呈漸升驟降的電壓鋸齒波。 START:MOV DPTR,#7FFFH MOV A,#00 LOOP :MOVX DPTR,A INC A MOV R0,#data ;data為延時常數(shù) DJNZ R0,$ ;延時,改變data可改變鋸齒波周期T值 SJMP LOOPo35圖10 由軟件產(chǎn)生的鋸齒波 36圖 11 兩路DAC0830/DAC0831/DAC0832與單片機接口邏輯圖 37 如果圖5.26中的模擬輸出分別用于示波器的

22、X、Y偏轉(zhuǎn),則MCS-51執(zhí)行下面的程序后,可使示波器上的光點根據(jù)參數(shù)X、Y的值同步移動。MOV DPTR,#0DFFFHMOV A,#XMOVX DPTR,A ;將參數(shù)X寫入DAC(1)的數(shù)據(jù)輸入鎖存器MOV DPTR,#0BFFFHMOV A,#YMOVX DPTR,A ;將參數(shù)Y寫入DAC(1)的數(shù)據(jù)輸入鎖存器MOV DPTR,#7FFFHMOVX DPTR,A ;兩片DAC同時啟動轉(zhuǎn)換,同步輸出SJMP $38 3DAC0830/DAC0831/DAC0832的模擬輸出方式 DAC0830/DAC0831/DAC0832屬于電流輸出型的D/A轉(zhuǎn)換器,其轉(zhuǎn)換結(jié)果是與輸入數(shù)字量成正比的電流

23、。這種形式的輸出不能直接帶動負載,需經(jīng)運算放大器放大并轉(zhuǎn)換成電壓輸出。電壓輸出又根據(jù)不同的場合,需要單極性電壓輸出和雙極性電壓輸出。 圖10、圖11所示的接口電路是單極性電壓輸出,運放的輸出電壓為其中,D為用十進制表示的數(shù)字輸入量。39例如,設(shè)VREF =-5 V,當D=FFH=255時,這是最大的輸出電壓。 若D=01H=1時,這是最低位LSB對應(yīng)的輸出電壓。運放的輸出電壓與參考電壓VREF是反極性。4041根據(jù)運放的理想情況,運放A2的反向輸入端虛地,且I1+I2=0,而如果選擇R2=R3=2R1,則可以得到VOUT2=(2VOUT1+VREF) 設(shè)VREF=+5 V,當VOUT1=0 V

24、時,VOUT2=5 V;VOUT1=2.5 V時, VOUT2=0 V;VOUT1=5 V時, VOUT2=5 V??梢?,VOUT2將VOUT1輸出電壓范圍05 V轉(zhuǎn)換成雙極性電壓范圍5+5 V。因 42所以432.3 高于8位D/A轉(zhuǎn)換器與單片機的接口 在微機控制系統(tǒng)中,為了提高精度需要采用10位、12位、14位,甚至更高位數(shù)的D/A轉(zhuǎn)換器芯片。高于8位的D/A轉(zhuǎn)換器芯片與8位單片機接口,被轉(zhuǎn)換的數(shù)據(jù)至少要分兩次送出。這需要解決兩個問題:一是分時傳送的數(shù)據(jù)格式,二是數(shù)據(jù)不同時傳送可能引起的輸出模擬量而出現(xiàn)毛刺。后一問題可通過D/A轉(zhuǎn)換芯片內(nèi)部或外部增加鎖存器,達到兩級緩沖,使被轉(zhuǎn)換數(shù)據(jù)完整進

25、入二級緩沖器,開始轉(zhuǎn)換。44圖 12 8位系統(tǒng)的12位數(shù)據(jù)格式(a) 左對齊格式; (b) 右對齊格式 451DAC1208系列的結(jié)構(gòu)與引腳功能表 3 DAC1208系列精度 精 度型 號0.012%DAC12080.024%DAC12090.05%DAC121046圖 13 DAC0830系列結(jié)構(gòu)框圖 472DAC1208系列D/A轉(zhuǎn)換器與MCS-51單片機的接口圖 14 DAC1208系列與單片機接口邏輯圖 48D/A轉(zhuǎn)換程序如下: MOV DPTR,#4001H ;使DPTR指向8位輸入鎖存器MOV R1,#DIGIT ;使R1指向12位數(shù)的高8位單元MOV A,R1 ;取高8位轉(zhuǎn)換數(shù)據(jù)

26、MOVX DPTR,A ;向DAC1208送高8位數(shù)據(jù)DEC DPTR ;使DPTR指向4位輸入鎖存器INC R1 ;使R1指向12位數(shù)的低4位單元MOV A,R1 ;取低4位轉(zhuǎn)換數(shù)據(jù)SWAP A MOVX DPTR,A ;再向DAC1208送低4位數(shù)據(jù)MOV DPTR,#6000H ;使DPTR指向DAC鎖存器MOVX DPTR,A ;完成12位D/A轉(zhuǎn)換493 按鍵、鍵盤及其接口3.1 鍵輸入過程與軟件結(jié)構(gòu)圖 15 MCS51單片機鍵輸入過程 503.2 鍵盤接口和鍵輸入軟件中應(yīng)解決的幾個問題 1消除鍵抖動鍵穩(wěn)定鍵按下前沿抖動前沿抖動圖16 鍵合斷時的電壓抖動51圖 17 消除鍵抖動電路

27、522鍵編碼及鍵值 (1) 用鍵盤連接的I/O線的二進制組合表示鍵碼。例如用4行、4列線構(gòu)成的16個鍵的鍵盤,可使用一個8位I/O口線的高、低4位口線的二進制數(shù)的組合表示16個鍵的編碼,如圖5.4(a)所示。各鍵相應(yīng)的鍵值為88H、84H、82H、81H、48H、44H、42H、41H、28H、24H、22H、21H、18H、14H、12H、11H。這種鍵值編碼軟件較為簡單直觀,但離散性大,不便安排散轉(zhuǎn)程序的入口地址。53 (2) 順序排列鍵編碼。如圖5.4(b)所示。這種方法,鍵值的形成要根據(jù)I/O線的狀態(tài)作相應(yīng)處理。鍵碼可按下式形成:鍵碼=行首鍵碼+列號54圖18 行列式鍵盤的編碼與鍵值

28、(a) 二進制組合編碼;(b) 順序排列編碼 55 3鍵盤的監(jiān)測方法 對于計算機應(yīng)用系統(tǒng),鍵盤掃描只是CPU工作的一部分,鍵盤處理只是在有鍵按下時才有意義。對是否有鍵按下的信息輸入方式有中斷方式與查詢方式兩種。563.3 獨立式按鍵1獨立式按鍵接口結(jié)構(gòu)圖 19 獨立式按鍵的接口電路示意圖(a) 中斷方式;(b) 查詢方式 57 2獨立式按鍵的軟件結(jié)構(gòu) 下面是查詢方式的鍵盤程序。K0K7為功能程序入口地址標號,其地址間隔應(yīng)能容納JMP指令字節(jié),PROM0PROM7分別為每個按鍵的功能程序。設(shè)I/O為P1口。START:MOV A,#0FFH ; MOV P1,A ;置P1口為輸入狀態(tài) MOV A

29、,P1 ;鍵狀態(tài)輸入 JNB ACC.0,K0 ;檢測0號鍵是否按下,按下轉(zhuǎn) JNB ACC.1,K1 ;檢測1號鍵是否按下,按下轉(zhuǎn)58JNB ACC.2,K2 ;檢測2號鍵是否按下,按下轉(zhuǎn) JNB ACC.3,K3 ;檢測3號鍵是否按下,按下轉(zhuǎn) JNB ACC.4,K4 ;檢測4號鍵是否按下,按下轉(zhuǎn) JNB ACC.5,K5 ;檢測5號鍵是否按下,按下轉(zhuǎn) JNB ACC.6,K6 ;檢測6號鍵是否按下,按下轉(zhuǎn) JNB ACC.7,K7 ;檢測7號鍵是否按下,按下轉(zhuǎn) JMP START ;無鍵按下返回,再順次檢測K0:AJMP PROM0K1:AJMP PROM1 K7:AJIMP PROM7

30、;入口地址表 59 PROM0: ;0號鍵功能程序 JMP START ;0號鍵功能程序執(zhí)行完返回PROM1: ;0號鍵功能程序 JMP START ;1號鍵功能程序執(zhí)行完返回 ;7號鍵功能程序PROM7: JMP START ;7號鍵功能程序執(zhí)行完返回603.4 行列式鍵盤 行列式鍵盤又叫矩陣式鍵盤。用I/O口線組成行、列結(jié)構(gòu),按鍵設(shè)置在行列的交點上。例如44的行列結(jié)構(gòu)可組成16個鍵的鍵盤。因此,在按鍵數(shù)量較多時,可以節(jié)省I/O口線。 1行列式鍵盤的接口 行列式鍵盤的接口方法有許多,例如直接接口于單片機的I/O口上;利用擴展的并行I/O接口;用串行口擴展并行I/O口接口;利用一種可編程的鍵盤

31、、顯示接口芯片8279進行接口等。其中,利用擴展的并行I/O接口方法方便靈活,在單片機應(yīng)用系統(tǒng)中比較常用。61圖20 8155擴展I/O口組成的行列式鍵盤 62 2鍵盤工作原理 按鍵設(shè)置在行、列線的交點上,行、列線分別連接到按鍵開關(guān)的兩端。行線通過上拉電阻接+5 V,被箝位在高電平狀態(tài)。 對鍵盤的工作過程可分兩步:第一步是CPU首先檢測鍵盤上是否有鍵按下;第二步是再識別是哪一個鍵按下。 檢測鍵盤上有無鍵按下可采用查詢工作方式、定時掃描工作方式和中斷工作方式。63 1) 查詢工作方式 鍵盤中有無鍵按下是由列線送入全掃描字,讀入行線狀態(tài)來判別的。其方法是:PA口輸出00H,即所有列線置成低電平,然

32、后將行線電平狀態(tài)讀入累加器A中。如果有鍵按下,總會有一根行線電平被拉至低電平,從而使行輸入狀態(tài)不全為1。 鍵盤中哪一個鍵按下是由列線逐列置低電平后,檢查行輸入狀態(tài),稱為逐列掃描。其方法是:從PA0開始,依次輸出0,置對應(yīng)的列線為低電平,然后從PC口讀入行線狀態(tài),如果全為1,則所按下之鍵不在此列;如果不全為1,則所按下的鍵必在此列,而且是與0電平行線相交的交點上的那個鍵。 為求取鍵碼,在逐列掃描時,可用計數(shù)器記錄下當前掃描列的列號,然后用行線值為0的行首鍵碼加列號的辦法計算。64有鍵按下否調(diào)用6 ms延時子程序開 始調(diào)用12 ms延時子程序有鍵按下否判斷閉合鍵,鍵碼入棧保存閉合鍵釋放否鍵碼 A返

33、 回YYYNNN圖21 鍵盤掃描子程序流程框圖65鍵盤掃描子程序如下:KEY1:ACALL KS1 ;調(diào)用判斷有無鍵按下子程序 JNZ LK1 ;有鍵按下時,(A) 0轉(zhuǎn)消抖延時 AJMP KEY1 ;無鍵按下返回 LK1:ACALL TM12S ;調(diào)12 ms延時子程序 ACALL KS1 ;查有無鍵按下,若有則真有鍵按下 JNZ LK2 ;鍵(A) 0逐列掃描 AJMP KEY1 ;不是真有鍵按下,返回 LK2;MOV R2,#0FEH ;初始列掃描字(0列)送入R2 MOV R4,#00H ;初始列(0列)號送入R466 LK4:MOV DPTR,#7F01H ;DPTR指向8155PA

34、口 MOV A,R2 ;列掃描字送至8155PA口 MOVX DPTR,A INC DPTR ;DPTR指向8155PC口 INC DPTR MOVX A,DPTR ;從8155 PC口讀入行狀態(tài) JB ACC.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)求鍵碼67LTWO:JB ACC.2,LTHR ;查第2行無鍵按下,轉(zhuǎn)查第3行 MOV A,#10H

35、 ;第2行有鍵按下,行首鍵碼#10HA AJMP 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 ;鍵釋放,鍵碼A RET ;鍵掃描結(jié)束,出口狀態(tài)(A)=鍵碼68NEXT:INC R4 ;準備掃描下一列,列號加1 MOV A,R2 ;取列號送累加器A JNB ACC.7,KEND ;判斷8列掃描否?掃描完返回 RL

36、A ;掃描字左移一位,變?yōu)橄乱涣袙呙枳諱OV R2,A ;掃描字送入R2 AJMP LK4 ;轉(zhuǎn)下一列掃描KEND:AJMP KEY1 KS1:MOV DPTR,#7F01H ;DPTR指向8155PA口 MOV A,#00H ;全掃描字A MOVX DPTR,A ;全掃描字送往8155PA口69INC DPTR ;DPTR指向8155PC口INC DPTR MOVX A,DPTR ;讀入PC口行狀態(tài)CPL A ;變正邏輯,以高電平表示有鍵按下ANL A,#0FH ;屏蔽高4位,只保留低4位行線值RET ;出口狀態(tài):(A)0時有鍵按下TM12ms:MOV R7,#18H ;延時12 ms子程序

37、TM: MOV R6,#0FFHTM6 : DJNZ R6,TM6 DJNZ R7,TM RET702) 定時掃描工作方式鍵盤上有鍵閉合否開 始KM=1KP=1返 回1 KM0 KM0 KP圖 22 定時掃描方式程序框圖查詢鍵碼1 KPNNNYYY71 3) 中斷工作方式 計算機應(yīng)用系統(tǒng)工作時,并不經(jīng)常需要鍵輸入。但無論是查詢工作方式還是定時掃描工作方式,CPU經(jīng)常處于空掃描狀態(tài)。為了提高CPU的效率,可采用中斷工作方式。這種工作方式是當鍵盤上有鍵按下時,向CPU發(fā)一個中斷請求信號,CPU響應(yīng)中斷后,在中斷服務(wù)程序中掃描鍵盤,執(zhí)行鍵功能程序。中斷請求信號的接口電路可參考圖5.5(a)。中斷服務(wù)

38、程序中應(yīng)完成鍵識別、消除抖動、排除多次執(zhí)行鍵功能操作等功能,可參考查詢工作方式鍵盤程序。724 顯示及顯示器接口4.1 LED顯示器結(jié)構(gòu)與原理圖 23 七段顯示塊管腳與結(jié)構(gòu)圖 73表5 七段LED的段選碼顯示字符共陰極段選碼共陽極段選碼顯示字符共陰極段選碼共陽極段選碼03FHC0HC39HC6H106HF9HD5EHA1H25BHA4HE79H86H34FHB0HF71H8EH466H99HP73H8CH56DH92HU3EHC1H67DH82H31HCEH707HF8Hy6EH91H87FH80H8.FFH00H96FH90H“滅”00HFFHA77H88HB7CH83H744.2 LED顯

39、示器與顯示方式圖 24 N位LED顯示器 751LED靜態(tài)顯示方式 LED工作在靜態(tài)顯示方式下,共陰極接地或共陽極接+5 V;每一位的段選線(ag、dp)與一個8位并行I/O口相連,如圖5.10所示。該圖表示了一個4位靜態(tài)LED顯示器電路,顯示器的每一位可獨立顯示,只要在該位的段選線上保持段選碼電平,該位就能保持相應(yīng)的顯示字符。由于每一位由一個8位輸出口控制段選碼,故在同一時刻各位可以顯示不同的字符。 N位靜態(tài)顯示器要求有N8根I/O口線,占用I/O口線較多。故在位數(shù)較多時往往采用動態(tài)顯示方式。762LED動態(tài)顯示方式圖25 8位LED動態(tài)顯示器電路 774.3 LED顯示器接口1硬件譯碼顯示

40、器接口圖 26 MC14495內(nèi)部邏輯與引腳圖78圖 27 使用MC14495的多位LED靜態(tài)顯示接口 792軟件譯碼顯示器接口圖 28 通過擴展8155 I/O口控制的8位LED動態(tài)顯示接口 803動態(tài)顯示程序設(shè)計DISPLAY:MOV A,#00000011B ;8155初始化 MOV DPTR,#7F00H ;使DPTR指向8155控制寄存器端口 MOVX DPTR,A MOV R0,#78H ;動態(tài)顯示初始化,使R0指向緩沖區(qū)首址 MOV R3,#7FH ;首位位選字送R3 MOV A,R3 ;LD0:MOV DPTR,#7F01H ;使DPTR指向PA口 MOVX DPTR,A ;選通顯示器低位(最右端一位) INC DPTR ;使DPTR指向PB口81 MOV A,R0 ;讀要顯示數(shù) ADD A,#0DH ;調(diào)整距段選碼表首的偏移量 MOVC A,A+PC ;查表取得段選碼 MOVX DPTR,A ;段選碼從PB口輸出 ACALL DL1 ;調(diào)用1 ms延時子程序 INC R0 ;指向緩沖區(qū)下一單元 MOV A,R3 ;位選碼送累加器A JNB ACC.0,

溫馨提示

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

評論

0/150

提交評論