第7部分 指導(dǎo)應(yīng)用系統(tǒng)配置及接口技術(shù)
word第7局部 應(yīng)用系統(tǒng)配置與接口技術(shù)1. 為什么要消除鍵盤的機(jī)械抖動?有哪些方法?答: 通常按鍵所用的開關(guān)為機(jī)械彈性開關(guān),由于機(jī)械觸點(diǎn)的彈性作用,一個按鍵開關(guān)在閉合時不會馬上穩(wěn)定地接通,在斷開時也不會一下子斷開。因而在閉合與斷開的瞬間均伴隨有一連串的抖動,鍵抖動會引起一次按鍵被誤讀屢次。為了確保CPU對鍵的一次閉合僅做一次處理,必須去除鍵抖動。在鍵閉合穩(wěn)定時,讀取鍵的狀態(tài),并且必須判別;在鍵釋放穩(wěn)定后,再作處理。按鍵的抖動,可用硬件或軟件兩種方法消除。如果按鍵較多,常用軟件方法去抖動,即檢測出鍵閉合后執(zhí)行一個延時程序,產(chǎn)生510 ms的延時;讓前沿抖動消失后,再一次檢測鍵的狀態(tài),如果仍保持閉合狀態(tài)電平,如此確認(rèn)為真正有鍵按下。當(dāng)檢測到按鍵釋放后,也要給510 ms的延時,待后沿抖動消失后,才能轉(zhuǎn)入該鍵的處理程序。 硬件方法常用RS觸發(fā)器。2. 試述轉(zhuǎn)換器的種類與特點(diǎn)。答:A/D轉(zhuǎn)換器的種類很多,主要有計(jì)數(shù)比擬型、逐次逼近型、雙積分型等。 逐次逼近型A/D轉(zhuǎn)換器的特點(diǎn)是精度、速度和價格都適中,是比擬常用的A/D轉(zhuǎn)化器。雙積分型A/D轉(zhuǎn)換器的特點(diǎn)是精度高,抗干擾性好,價格低廉,但轉(zhuǎn)換速度慢。3. 設(shè)計(jì)一個2×2行列式鍵盤電路并編寫鍵掃描子程序。解:1邏輯電路如下:2判斷是否有鍵按下:有列線P1.0、P1.1送全0,查P0.0、P0.1是否為0。判斷哪一個鍵按下:逐列送0電平信號,再逐行掃描是否為0。鍵號=行首號+列號KEY: LCALL KS JZ KEY LCALL T10ms LCALL KS JZ KEYMOV R2,#0FEH MOV R4,#00HLK1: MOV P1,R2 P0.0,ONE MOV A,#00H LJMP KPONE: P0.1, NEXT MOV A,#02HKP: ADD A,R4 PUSH ACCLK: LCALL KS JNZ LK POP ACC RETNEXT: INC R4 MOV A,R2 JNB ACC.1,KND RL A MOV R2,A AJMP LK1KND: AJMP KEYKS: MOV P1,#0FCH MOV A,P0 CPL AANL A,#03HRETT10ms: MOV R7,#10HTS1: MOV R6,#0FFHTS2: DJNZ R6,TS2 DJNZ R7,TS1 RET4. 試設(shè)計(jì)一個LED顯示器鍵盤電路。解:5. 在一個89C51應(yīng)用系統(tǒng)中,89C51以中斷方式通過并行接口74LS244讀取器件5G14433的轉(zhuǎn)換結(jié)果。試畫出有關(guān)邏輯電路,并編寫讀取結(jié)果的中斷服務(wù)程序。解:硬件電路設(shè)計(jì)如圖:讀取A/D結(jié)果的中斷服務(wù)程序:MOV DPTR,#0FE00HMOVX A,DPTRMOV 30H,ARETI6. 在一個f為12 MHz的89C51系統(tǒng)中接有一片器件DAC0832,它的地址為7FFFH,輸出電壓為0 。請畫出有關(guān)邏輯框圖,并編寫一個程序,使其運(yùn)行后能在示波器上顯示出鋸齒波(設(shè)示波器X方向掃描頻率為50 格,Y方向掃描頻率為1 V格)。解:硬件電路設(shè)計(jì)如圖:根據(jù)DAC0832的地址為7FFFH,如此89C51的P2.7接DAV0832的片選。程序設(shè)計(jì):因?yàn)槭静ㄆ鱔方向掃描頻率為50/格,Y方向掃描頻率為1V/格,所以選擇DAC0832的輸出電壓為0V2V,對應(yīng)的數(shù)字量為00H66H0102;每次數(shù)據(jù)量增值為3,共34次循環(huán),34×5=170。ORG 0050H MAIN: MOV DPTR,#7FFFH LOOP1: MOV A,#00H LOOP2: MOVX DPTR,A ADD A,#03H CJNE A,#66H,LOOP2 SJMP LOOP17. 在一個f為12 MHz的89C51系統(tǒng)中接有一片器件ADC0809,它的地址為7FF8H7FFFH。試畫出有關(guān)邏輯框圖,并編寫ADC0809初始化程序和定時采樣通道2的程序(假設(shè)采樣頻率為1 ms/次,每次采樣4個數(shù)據(jù),存于89C51部RAM 70H73H中)。解:硬件電路設(shè)計(jì)如圖:程序清單:ORG 0000HLJMP MAINORG 0013HLJMP IEX1ORG 0030HMAIN: MOV SP,#60HMOV DPTR,#7FFAH SETB IT1 SETB EX1 SETB EALOOP1: MOV R0,#70H MOV R7,#04HLOOP2: MOVX DPTR,AHEAR: SJMP HEAR DJMP R7,LOOP2 LCALL DIMS SJMP LOOP1DIMS: MOV R5,#32HDIMS1: MOV R6,#64HDIMS2: MOV R6,DIMS2 MOV R5,DIMS1 RET ORG 0200HIEX1: MOVX A,DPTR MOV R0,A INC R0 RETI8. 在一個89C51系統(tǒng)中擴(kuò)展一片74LS245,通過光電隔離器件外接8路TTL開關(guān)量輸入信號。試畫出其有關(guān)的硬件電路。解:硬件電路設(shè)計(jì)如圖:9.用89C51的P1口作8個按鍵的獨(dú)立式鍵盤接口。試畫出其中斷方式的接口電路與相應(yīng)的鍵盤處理程序。解:硬件電路設(shè)計(jì)如圖: 鍵盤處理程序:ORG 0000HLJMP MAINORG 0013HLJMP IEX1ORG 0030HMAIN: MOV SP,#60H SETB IT1 SETB EX1 SETB EA SJMP $IEX1: MOV A,#FFH MOV P1,A MOV A,P1 JNB ACC.7,P7F JNB ACC.6,P6F JNB ACC.5,P5F JNB ACC.4,P4F JNB ACC.3,P3F JNB ACC.2,P2F JNB ACC.1,P1F JNB ACC.0,P0F RETIP7F: LJMP PROM7P6F: LJMP PROM6P5F: LJMP PROM5P4F: LJMP PROM4P3F: LJMP PROM3P2F: LJMP PROM2P1F: LJMP PROM1P0F: LJMP PROM010. 試說明非編碼鍵盤的工作原理。如何去鍵抖動?如何判斷鍵是否釋放?答:1非編碼鍵盤是靠軟件識別的鍵盤。根據(jù)系統(tǒng)中按鍵數(shù)目的多少來選擇不同的鍵盤結(jié)構(gòu)。鍵數(shù)少時,可采用獨(dú)立式按鍵結(jié)構(gòu);當(dāng)鍵數(shù)多時可采用行列式按鍵結(jié)構(gòu)。無論采用什么結(jié)構(gòu),都是通過單片機(jī)對它控制,因此可有三種控制方式:程序控制掃描方式、定時掃描方式和中斷掃描方式。以行列式非編碼鍵盤,采用程序控制掃描方式為例,其工作原理為:首先判斷鍵盤上有無鍵按下,假如有鍵按下如此去鍵的機(jī)械抖動影響,然后逐列行掃描,判別閉合鍵的鍵號,再判別鍵是否釋放,如果鍵釋放如此按鍵號處理相應(yīng)程序。 2當(dāng)判斷有鍵按下時,執(zhí)行5ms10ms的延時程序后再判斷鍵盤的狀態(tài)。如果仍為鍵按下狀態(tài),如此認(rèn)為確定有一個鍵按下;否如此按照鍵抖動處理。 3判斷鍵是否釋放時,先判斷鍵是否仍為閉合狀態(tài),如果為時,如此執(zhí)行5ms10ms延時程序后再判斷直到鍵釋放,以便達(dá)到對鍵的一次閉合僅作一次處理。11. DAC0832與89C51單片機(jī)連接時有哪些控制信號?其作用是什么?AC0832與89S51單片機(jī)連接時的控制信號有:ILE數(shù)據(jù)鎖存允許信號,高電平有效;/CS輸入存放器選擇信號,低電平有效;/WR1輸入存放器的“寫選通信號,低電平有效。/XFER數(shù)據(jù)轉(zhuǎn)移控制信號線,低電平有效;/WR2DAC存放器的“寫選通信號。2作用:當(dāng)/CS=0,/WR1=0,ILE=1時,=1,輸入鎖存器狀態(tài)隨輸入線狀態(tài)變化;當(dāng)/CS=1,/WR1變高,ILE=1時,= 0時,鎖存輸入數(shù)據(jù)。當(dāng)/WR2=0,/XFER=0時,DAC存放器的鎖存信號=1時,DAC存放器的輸隨輸入狀態(tài)變化;當(dāng)/WR2變高,/XFER=0時,=0時,鎖存輸入狀態(tài)。12. 在一個89C51單片機(jī)與一片DAC0832組成的應(yīng)用系統(tǒng)中,DAC0832的地址為7FFFH,輸出電壓為05 V。試畫出有關(guān)邏輯框圖,并編寫產(chǎn)生矩形波,其波形占空比為4,高電平時電壓為2.5 V,低電平時電壓為1.25 V的轉(zhuǎn)換程序。解:硬件電路設(shè)計(jì)如圖: VOUT=2.5V ,D=2.5V×256/5=128=80HVOUT=1.25V ,D=1.25V×256/5=64=40H程序清單: MOV DPTR,#7FFFH NEXT: MOV A,#80H MOVX DPTR,A ACALL DELY MOV R4,#04H MOV A,#40H MOVX DPTR,A LOOP: ACALL DELAY DJNZ R4,LOOP AJMP NEXTDELAY: MOV R7,#10HTS1: MOV R6,#0FFHTS2: DJNZ R6,TS2 DJNZ R7,TS1 RET13. 在一個由89C51單片機(jī)與一片ADC0809組成的數(shù)據(jù)采集系統(tǒng)中,ADC0809的地址為7FF8H7FFFH。試畫出有關(guān)邏輯框圖,并編寫出每隔1 min輪流采集一次8個通道數(shù)據(jù)的程序。共采樣100次,其采樣值存入片外RAM 3000H開始的存儲單元中。解:硬件電路設(shè)計(jì)如圖: 設(shè)f=6MHz,用定時器定時100ms,用軟件計(jì)數(shù)10×60實(shí)現(xiàn)定時1min。A/D轉(zhuǎn)換采用查詢p1.0方式。程序設(shè)計(jì)如下: ORG 0000H AJMP MAIN ORG 001BH AJMP SEAVE ORG 0030HMAIN: MOV SP,#60H MOV R7,#100 ;置采集次數(shù) MOV R1,#30H ;片外RAM地址高位 MOV R0,#00H ; 片外RAM地址低位 MOV R2,#10 ;R2為100ms計(jì)數(shù)器,置入初值10 MOV R3,#60 ;R3為秒計(jì)數(shù)器,置入初值60 MOV TMOD,#10H MOV TH1,#3CH MOV TL1,#0B0H SETB ET1 SETB EA SETB TR1LOOP: SJMP LOOP DJMP R7,LOOP SJMP $SEAVE: MOV TH1,#3CH MOV TL1,#0B0H DJNZ R2,RETURN MOV R2,#10 DJNZ R3,RETURN MOV R6,#08 ;8個通道計(jì)數(shù)器初值 MOV DPTR,#7FF8H ;IN0的地址NEXT: MOVX DPTR,A ;啟動A/D轉(zhuǎn)換 P1.0.$ MOVX A,DPTR PUSH DPH ;將通道地址壓入堆棧 PUSH DPL MOV DPH,R1 MOV DPL,R0 MOVX DPTR, A INC DPTR MOV R1, DPH ;保存片外RAM地址 MOV R0, DPL POP DPL POP DPH DJNZ R6,NEXTRETURN: RETI ; END14. 以DAC0832為例,說明D/A的單緩沖與雙緩沖有何不同。答:所謂雙緩沖方式,就是把DAC0832的兩個鎖存器都接成受控鎖存方式。雙緩沖DAC0832的連接如如下圖所示。雙緩沖方式用于多路數(shù)/模轉(zhuǎn)換系統(tǒng),以實(shí)現(xiàn)多路模擬信號同步輸出的目的。為此就要使用兩片DAC0832,并采用雙緩沖方式連接,如如下圖所示 。電路中以譯碼法產(chǎn)生地址,兩片DAC0832共占據(jù)三個單元地址,其中兩個輸入存放器各占一個地址,而兩個DAC存放器如此合用一個地址。15. 以DAC0832為例,說明D/A的單極性輸出與雙極性輸出有何不同。答:在DAC0832的輸出端連接一級運(yùn)放組成的反向求和電路,可以得到單極性模擬電壓正電壓或負(fù)電壓,輸出電壓圍由參考電壓VREF值決定。例如,當(dāng)VREF=+5V或-5V時,輸出電壓VOUT圍是0V-5V或0V+5V;當(dāng)VREF=±10V時,VOUT圍是0V±10V。在VREF確定以后,假如要增加輸出電壓圍,可以通過增加運(yùn)放反應(yīng)電阻的方法來實(shí)現(xiàn)。連接方法是外加電阻R1同芯片中反應(yīng)電阻RF串聯(lián),并在輸入數(shù)據(jù)為全1的條件下,調(diào)節(jié)R1阻值,使VOUT達(dá)到所需的滿量程電壓即可。有時,需要轉(zhuǎn)換器輸出雙極性模擬電壓。當(dāng)輸入數(shù)字量從全0到全1時,需求輸出模擬量由負(fù)電壓到正電壓。單極性輸出電壓表達(dá)式為:VOUT1=雙極性輸出電壓表達(dá)式為:VOUT2=比擬兩式可知,只要將單極性輸出模擬電壓放大2倍,再與參考電壓求和就可以獲得雙極性輸出的模擬電壓。16. A/D和D/A的主要技術(shù)指標(biāo)中,“分辨率與“轉(zhuǎn)換精度即“量化誤差或“轉(zhuǎn)換誤差有何不同。答:1分辨率“分辨率通常用位數(shù)表示,如8位、10位、12位等。對于n位轉(zhuǎn)換器,其實(shí)際分辨率為模擬量滿量程的1/2n。例如,一個10位的A/D轉(zhuǎn)換器去轉(zhuǎn)換一個滿量程為5V的電壓,如此它能分辨的最小電壓為5000 mV /10245 mV,我們稱該A/D轉(zhuǎn)換器的分辨率為10位或5 mV。再例如,某D/A轉(zhuǎn)換器能夠轉(zhuǎn)換8位二進(jìn)制數(shù),轉(zhuǎn)換后的電壓滿量程是5V,如此它能分辨的最小電壓是5V/25620 mV,我們稱該D/A轉(zhuǎn)換器的分辨率為8位或20 mV。2轉(zhuǎn)換精度“轉(zhuǎn)換精度是反映轉(zhuǎn)換器轉(zhuǎn)換值與理想值之間的誤差。例如,具有8位分辨率的A/D轉(zhuǎn)換器,當(dāng)輸入0V5V電壓時,對應(yīng)的餓數(shù)字量為00HFFH,即輸入每變化0.0196V時,數(shù)據(jù)就變化1。由于輸入模擬量是連續(xù)變化的,只有當(dāng)它的值為0.0196V的整數(shù)倍時,模擬量值才能準(zhǔn)確轉(zhuǎn)換成對應(yīng)的數(shù)字量,否如此模擬量將被“四舍五入為相近的數(shù)字量。例如,0.025V被轉(zhuǎn)換成02H,最大誤差為1/2個最低有效位常用±1/2LSB表示,這就是量化誤差。該A/D轉(zhuǎn)換器的具體量化誤差或精度值可以計(jì)算出來為±1/2×5V/256=±1/2×0.0196V=±9.8 mV在例如,假如某D/A轉(zhuǎn)換器的分辨率為8位時,如此它的精度為:±1/2×1/256=±1/512。3分辨率的計(jì)算在計(jì)算分辨率時,為什么有人用滿量程除以2 n,有人卻用滿量程除以2 n -1呢?這是因?yàn)榇嬖趦煞N“滿量程的定義。讓我們以D/A轉(zhuǎn)換的分辨率計(jì)算舉例來說吧,對應(yīng)線性D/A轉(zhuǎn)換器來說,其分辨率計(jì)算公式為:分辨率=模擬輸出的滿量程/2 n。但是,這個“滿量程又分為標(biāo)稱滿量程和實(shí)際滿量程。標(biāo)稱滿量程是指數(shù)字量2 n所對應(yīng)的模擬量,可實(shí)際數(shù)字量的變化圍是從02 n1,永遠(yuǎn)到不了2 n。所以實(shí)際最大值2 n1所對應(yīng)的模擬輸出量,就稱為實(shí)際滿量程。15 / 15