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

下載本文檔

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

文檔簡(jiǎn)介

1、 MCS51單片機(jī)的接口與應(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è)計(jì)A/D轉(zhuǎn)換器與單片機(jī)接口之前,往往要根據(jù)A/D轉(zhuǎn)換器的技術(shù)指標(biāo)選擇A/D轉(zhuǎn)換器。為此,先介紹一下A/D轉(zhuǎn)換器的主要技術(shù)指標(biāo)。 量化間隔和量化誤差是A/D轉(zhuǎn)換器的主要技術(shù)指標(biāo)之一。量化間隔可用下式表示。其中n為A/D轉(zhuǎn)換器的位數(shù)。2 量化誤差有兩種表示方法:一種是絕對(duì)誤差,另一種是相對(duì)誤差。 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)換器與單片機(jī)接口具有硬、軟件相依性。一般來說,A/D轉(zhuǎn)換器與單片機(jī)的接口主要考慮的是數(shù)字量輸出線的連接、ADC啟動(dòng)方式、轉(zhuǎn)換結(jié)束信號(hào)處理方法以及時(shí)鐘的連接等。4 A/D轉(zhuǎn)換器數(shù)

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

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

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

6、片內(nèi)部提供(如AD574),一般不許外加電路;另一種是由外部提供,有的用單獨(dú)的振蕩電路產(chǎn)生,更多的則把單片機(jī)輸出時(shí)鐘經(jīng)分頻后,送到A/D轉(zhuǎn)換器的相應(yīng)時(shí)鐘端。71.2 A/D轉(zhuǎn)換器ADC0809與單片機(jī)的接口1ADC0809芯片簡(jiǎn)介圖 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)換工作時(shí)序 102ADC0809與單片機(jī)接口 圖 3 ADC0809與8051的接口連接

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

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

9、的28腳雙插直列式芯片,無(wú)需外接元器件就可獨(dú)立完成A/D轉(zhuǎn)換功能。內(nèi)部設(shè)有三態(tài)數(shù)據(jù)輸出鎖存器。一次轉(zhuǎn)換時(shí)間為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時(shí)表示轉(zhuǎn)換器正處于轉(zhuǎn)換狀態(tài),STS返回到低電平時(shí),表示轉(zhuǎn)換完畢。該信號(hào)可處理器作為中斷或查詢信號(hào)用; 12

10、/-8:變換輸出字長(zhǎng)選擇控制端,在輸入為高電平時(shí),變換字長(zhǎng)輸出為12位,在低電平時(shí),按8位輸出; CS、CE:片選信號(hào)。當(dāng)CS=0、CE=1同時(shí)滿足時(shí),AD574才能處于工作狀態(tài)。 R/C:數(shù)據(jù)讀出和數(shù)據(jù)轉(zhuǎn)換啟動(dòng)控制; A0:字節(jié)地址控制。它有兩個(gè)作用,在啟動(dòng)AD574(R/C=0)時(shí),用來控制轉(zhuǎn)換長(zhǎng)度。A=0時(shí),按完整的12位A/D轉(zhuǎn)換方式工作,A=1時(shí),則按8位A/D 轉(zhuǎn)換方式工作。在AD574處于數(shù)據(jù)讀出工作狀態(tài)(R/C=1)時(shí),A0和12/8成為輸出數(shù)據(jù)格式控制。17表 2 AD574控制信號(hào)狀態(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單片機(jī)的接口圖 6 AD574與MCS51單片機(jī)接口電路 20 4轉(zhuǎn)換程序設(shè)計(jì)舉例 設(shè)要求AD574進(jìn)行12位轉(zhuǎn)換,單片機(jī)對(duì)轉(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信號(hào),啟

12、動(dòng)AD574為12位工作方式 MOV A,P1 ;讀P1口,檢測(cè)STS的狀態(tài)21WAIT:ANL A,#01H JNZ WAIT ;轉(zhuǎn)換未結(jié)束,等待,轉(zhuǎn)換結(jié)束則進(jìn)行如下操作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è)計(jì)D/A轉(zhuǎn)換器與單片機(jī)接口之前,一般要根據(jù)D/A轉(zhuǎn)換器的技術(shù)指標(biāo)選擇D/A轉(zhuǎn)換器芯片。 (1) 分辨率。分辨率是D/A轉(zhuǎn)換器對(duì)輸入量變化敏感程度的描述。D/A轉(zhuǎn)換器的分辨率定義為:當(dāng)輸入數(shù)字量發(fā)生單位數(shù)碼變化時(shí),即LSB位產(chǎn)生一次變化時(shí)所對(duì)應(yīng)輸出模擬量的變化量。對(duì)于線性D/A轉(zhuǎn)換器來說,其分辨率與輸入數(shù)字量輸出的位數(shù)n呈現(xiàn)下列關(guān)系23 (2) 建立時(shí)間。建立時(shí)間是描述D/A轉(zhuǎn)換速率快慢的一個(gè)重要參數(shù)。一般所指的建立時(shí)間是輸入數(shù)字量變化后,模擬輸出量達(dá)到終值誤差LSB/2(最低有效位)時(shí)所經(jīng)歷的時(shí)間。根據(jù)建立時(shí)間的長(zhǎng)短,把D/A

14、轉(zhuǎn)換器分成以下幾擋: 超高速 100 ns 較高速 100 ns1 s 高 速 110 s 中 速 10100 s 低 速 100 s24 (1) DAC0830系列。DAC0830系列是美國(guó)National Semiconductor公司生產(chǎn)的具有兩個(gè)數(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)帶有基準(zhǔn)電壓和調(diào)節(jié)電阻。無(wú)需外接器件及微調(diào)即可與單片機(jī)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系列是美國(guó)National Semiconductor公司的產(chǎn)品,包括DAC1020 、DAC1021、 DAC1022,與美國(guó)Analog Devices公司的AD7520及其后繼產(chǎn)品AD7530、AD7533完全兼容。單電源工作,電源電壓為+5+15 V,電流建立時(shí)間為500 ns,為16線雙插直列式封裝。與美國(guó)Analog Devices公司的AD75

16、20及其后繼產(chǎn)品AD7530、AD7533完全兼容。單電源工作,電源電壓為+5+15 V,電流建立時(shí)間為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系列均為美國(guó)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位微機(jī)完全兼容的D/A轉(zhuǎn)換器芯片,具有雙緩沖輸入寄存器,片內(nèi)有基準(zhǔn)電源及電壓輸出放大器。數(shù)字量可并行或串行輸入,模擬量可以電壓或電流輸出。 D/A轉(zhuǎn)換器與單片機(jī)接口也具有硬、軟件相依性。各種A/D轉(zhuǎn)換器與單片機(jī)接口的方法有些差異,但就其基

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

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

20、0系列結(jié)構(gòu)框圖 312DAC0830系列D/A轉(zhuǎn)換器與單片機(jī)接口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í)行下列三條指令就可以將一個(gè)數(shù)字量轉(zhuǎn)換為模擬量:MOV DPTR,#7FFFH ;端口地址送DPTRMOV A,#DATA ;8位數(shù)字量送累加器MOVX DPTR,A ;向鎖存器

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

22、X、Y偏轉(zhuǎn),則MCS-51執(zhí)行下面的程序后,可使示波器上的光點(diǎn)根據(jù)參數(shù)X、Y的值同步移動(dòng)。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同時(shí)啟動(dòng)轉(zhuǎn)換,同步輸出SJMP $38 3DAC0830/DAC0831/DAC0832的模擬輸出方式 DAC0830/DAC0831/DAC0832屬于電流輸出型的D/A轉(zhuǎn)換器,其轉(zhuǎn)換結(jié)果是與輸入數(shù)字量成正比的電流

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

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

25、入二級(jí)緩沖器,開始轉(zhuǎn)換。44圖 12 8位系統(tǒng)的12位數(shù)據(jù)格式(a) 左對(duì)齊格式; (b) 右對(duì)齊格式 451DAC1208系列的結(jié)構(gòu)與引腳功能表 3 DAC1208系列精度 精 度型 號(hào)0.012%DAC12080.024%DAC12090.05%DAC121046圖 13 DAC0830系列結(jié)構(gòu)框圖 472DAC1208系列D/A轉(zhuǎn)換器與MCS-51單片機(jī)的接口圖 14 DAC1208系列與單片機(jī)接口邏輯圖 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單片機(jī)鍵輸入過程 503.2 鍵盤接口和鍵輸入軟件中應(yīng)解決的幾個(gè)問題 1消除鍵抖動(dòng)鍵穩(wěn)定鍵按下前沿抖動(dòng)前沿抖動(dòng)圖16 鍵合斷時(shí)的電壓抖動(dòng)51圖 17 消除鍵抖動(dòng)電路

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

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

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

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

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

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

33、 回YYYNNN圖21 鍵盤掃描子程序流程框圖65鍵盤掃描子程序如下:KEY1:ACALL KS1 ;調(diào)用判斷有無(wú)鍵按下子程序 JNZ LK1 ;有鍵按下時(shí),(A) 0轉(zhuǎn)消抖延時(shí) AJMP KEY1 ;無(wú)鍵按下返回 LK1:ACALL TM12S ;調(diào)12 ms延時(shí)子程序 ACALL KS1 ;查有無(wú)鍵按下,若有則真有鍵按下 JNZ LK2 ;鍵(A) 0逐列掃描 AJMP KEY1 ;不是真有鍵按下,返回 LK2;MOV R2,#0FEH ;初始列掃描字(0列)送入R2 MOV R4,#00H ;初始列(0列)號(hào)送入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行無(wú)鍵按下,轉(zhuǎn)查第1行 MOV A,#00H ;第0行有鍵按下,行首鍵碼#00HA AJMP LKP ;轉(zhuǎn)求鍵碼 LONE:JB ACC.1,LTWO ;查第1行無(wú)鍵按下,轉(zhuǎn)查第2行 MOV A,#08H ;第1行有鍵按下,行首鍵碼#08HA AJMP LKP ;轉(zhuǎn)求鍵碼67LTWO:JB ACC.2,LTHR ;查第2行無(wú)鍵按下,轉(zhuǎn)查第3行 MOV A,#10H

35、 ;第2行有鍵按下,行首鍵碼#10HA AJMP LKP ;轉(zhuǎn)求鍵碼LTHR:JB ACC.3,NEXT ;查第3行無(wú)鍵按下,轉(zhuǎn)該查下一列 MOV A,#18H ;第3行有鍵按下,行首鍵碼#18HALKP:ADD A,R4 ;求鍵碼,鍵碼=行首鍵碼+列號(hào) PUSH ACC ;鍵碼進(jìn)棧保護(hù)LK3:ACALL KS1 ;等待鍵釋放 JNZ LK3 ;鍵未釋放,等待 POP ACC ;鍵釋放,鍵碼A RET ;鍵掃描結(jié)束,出口狀態(tài)(A)=鍵碼68NEXT:INC R4 ;準(zhǔn)備掃描下一列,列號(hào)加1 MOV A,R2 ;取列號(hào)送累加器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時(shí)有鍵按下TM12ms:MOV R7,#18H ;延時(shí)12 ms子程序

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

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

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

40、器接口圖 26 MC14495內(nèi)部邏輯與引腳圖78圖 27 使用MC14495的多位LED靜態(tài)顯示接口 792軟件譯碼顯示器接口圖 28 通過擴(kuò)展8155 I/O口控制的8位LED動(dòng)態(tài)顯示接口 803動(dòng)態(tài)顯示程序設(shè)計(jì)DISPLAY:MOV A,#00000011B ;8155初始化 MOV DPTR,#7F00H ;使DPTR指向8155控制寄存器端口 MOVX DPTR,A MOV R0,#78H ;動(dòng)態(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延時(shí)子程序 INC R0 ;指向緩沖區(qū)下一單元 MOV A,R3 ;位選碼送累加器A JNB ACC.0,

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論