基于單片機的數(shù)字萬用表設(shè)計_第1頁
基于單片機的數(shù)字萬用表設(shè)計_第2頁
基于單片機的數(shù)字萬用表設(shè)計_第3頁
基于單片機的數(shù)字萬用表設(shè)計_第4頁
基于單片機的數(shù)字萬用表設(shè)計_第5頁
已閱讀5頁,還剩14頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、基于單片機的數(shù)字萬用表設(shè)計摘 要本次設(shè)計用單片機芯片AT89C52設(shè)計一個數(shù)字萬用表,能夠測量直流電壓值、直流電流、直流電阻,四位數(shù)碼顯示。此系統(tǒng)由分流電阻、分壓電阻、基準(zhǔn)電阻、電容測試芯片電路、51單片機最小系統(tǒng)、顯示部分、報警部分、AD轉(zhuǎn)換和控制部分組成。為使系統(tǒng)更加穩(wěn)定,使系統(tǒng)整體精度得以保障,本電路使用了AD0809數(shù)據(jù)轉(zhuǎn)換芯片,單片機系統(tǒng)設(shè)計采用AT89C52單片機作為主控芯片,驅(qū)動液晶顯示管顯示。程序每執(zhí)行周期耗時縮到最短,這樣保證了系統(tǒng)的實時性。關(guān)鍵詞 數(shù)字萬用表 AT89C52單片機 AD轉(zhuǎn)換與控制AbstractThis design is design a digital

2、universal meter with chip AT89C52 of one-chip computer, can measure and hand in , direct current pressing value , direct current flow , the direct current is hindered, four numbers show. This system is shunted resistance, resistance of partial pressure, basic resistance, minimum system of 51 one-chi

3、p computers, shown that some , warning part , AD change and control making up partly. In order to make the system more steady, make the whole precision of the system be ensured, this circuit has used AD0809 data to change the chip, the one-chip computer system is designed to adopt AT89C52 one-chip c

4、omputer as the top management chip, urge 4 numbers to be in charge of showing. The every execution cycle consuming time of procedure contracts to get shortest, in this way the real-time character of the security system. Keyword: Digital universal meter AT89S52 one-chip computer AD changes and contro

5、ls 1、 設(shè)計背景數(shù)字萬用表亦稱數(shù)字多用表,簡稱DMM(Digtial Multimeter)。它是采用數(shù)字化測量技術(shù),把連續(xù)的模擬量轉(zhuǎn)換成不連續(xù)的、離散的數(shù)字形式并加以顯示的儀表。傳統(tǒng)的指針式萬用表功能單精度低,不能滿足數(shù)字化時代的需求,采用單片的數(shù)字萬用表,精度高、抗干擾能力強,可擴展尾強、集成方便,目前,由各種單片機芯片構(gòu)成的數(shù)字電萬用表,已被廣泛用于電子及電工測量、工業(yè)自動化儀表、自動測試系統(tǒng)等智能化測量領(lǐng)域,顯示出強大的生命力。二、數(shù)字萬用表的設(shè)計依據(jù)根據(jù)數(shù)字萬用表的原理,結(jié)合以下的設(shè)計要求:“設(shè)計一個數(shù)字萬用表,能夠測量直流電壓值,直流電流、直流電阻,四位數(shù)碼顯示。實現(xiàn)多級量程的

6、直流電壓測量,其量程范圍是5V、 ,20V,.實現(xiàn)多級量程的直流電流測量,其量程范圍是2mA ,20mA,200mA.實現(xiàn)多級量程的電阻測量,其量程范圍是200、1k ,10k。”由此設(shè)想出以下的解決方法,即數(shù)字萬用表的系統(tǒng)由分流電阻、分壓電阻、基準(zhǔn)電阻、電容測試芯片電路、51單片機最小系統(tǒng)、顯示部分、報警部分、AD轉(zhuǎn)換和控制部分組成。為使系統(tǒng)更加穩(wěn)定,使系統(tǒng)整體精度得以保障。三、設(shè)計任務(wù)31設(shè)計目的采用8位8路A/D轉(zhuǎn)換器ADC0809和AT89S52單片機,設(shè)計一臺數(shù)字多用表,能進(jìn)行電壓、電流和電阻的測量,測量結(jié)果通過液晶顯示管顯示,通過按鍵進(jìn)行測量功能轉(zhuǎn)換。32設(shè)計指標(biāo)及要求電

7、壓測量范圍05,020V,電流測量范圍12,120,1200mA,電阻測量范圍0200,01K,010K。四、設(shè)計思路與總體框圖41設(shè)計思路首先利用P0 口數(shù)據(jù)地址復(fù)用,將地址通過P0口輸入到單片機中。再利用模數(shù)轉(zhuǎn)換將模擬信號轉(zhuǎn)換成數(shù)字信號,再次利用P0口將其輸入到單片機。最后,充分利用單片機強大的運算轉(zhuǎn)化功能將其轉(zhuǎn)成適當(dāng)?shù)亩M(jìn)制信號控制數(shù)顯以確保正確的顯示被測量的讀數(shù)。42總體框圖89S52振蕩電路復(fù)位電路ADC0809液晶顯示管顯示待測電阻電路阻待測電流電路待測電壓電路圖11五、 MCU主控制器的選擇與論證方案一 此方案采用凌陽公司的16位單片機SPCE061A作為主控制器,它具有體積小、

8、驅(qū)動能力高、集成度高、易擴展、可靠性高、功耗低、結(jié)構(gòu)簡單、中斷處理能力強、處理速度高等特點,尤其適用于語音處理和識別等領(lǐng)域。但是其軟件設(shè)計相對復(fù)雜,故我們放棄此方案。方案二 此方案采用STC公司的8位單片機STC89C52作為主控制器,具有與MCS-51指令集完全兼容的CIP-51內(nèi)核,但其同樣時鐘下運行速度和抗干擾能力軍比普通8051 8位單片機要高,而且開發(fā)環(huán)境是我們很熟悉的Keil C51 ,編譯效率高,非常適合C語言開發(fā)人員,因此我們采用該方案。六、 A/D轉(zhuǎn)換器的選擇與論證方案一 此方案選用12位串行A/D轉(zhuǎn)換集成AD,只需要根線就能夠很好的與相通信組成測量系統(tǒng),但其輸入電壓不能為負(fù)

9、值,故使用范圍受到了限制,不適合用作負(fù)壓測量電路中而且價格較高。因此,我們放棄此方案。方案二 此方案選用雙積A/D 轉(zhuǎn)換器AD0809,它的性能比較穩(wěn)定,轉(zhuǎn)換精度高,具有很高的抗干擾能力,電路結(jié)構(gòu)簡單,其缺點是工作速度較低。它的特點是在每次A/D轉(zhuǎn)換前,內(nèi)部電路都自動進(jìn)行調(diào)零操作,可保證零點在常溫下的長期穩(wěn)定。圖21 AD轉(zhuǎn)換電路七、 測量電路的選擇與論證7.1電阻測量圖1所示為數(shù)字多用表的電阻測量輸入電路。運算放大器的反饋電阻R作為待測量電阻,通過R14,R2,R15及多路開關(guān)接到電源-5V。假定運算放大器理想,那么放大器的輸出電壓RV=,將RV送給ADC0809,轉(zhuǎn)換后得到數(shù)字量為DV=。

10、單片機讀取A/D轉(zhuǎn)換數(shù)據(jù),再經(jīng)過逆向運算可得R=,注意此時得到的R為二進(jìn)制數(shù),需要轉(zhuǎn)化為十進(jìn)制數(shù)后才能送給液晶顯示管顯示。程序中采用4字節(jié)專利號除法,連續(xù)進(jìn)行4次除以10的除法。為使電路所求電阻更加精確,故采用了一個單刀三擲開關(guān),當(dāng)所測電阻處于千歐級別時,閉合開關(guān)一,由所得電壓得出待測電阻。當(dāng)待測電阻處于200 至一千歐時,如果再次以10千歐作為比例電阻,則所測待測電阻準(zhǔn)確度大大下降,顧此時應(yīng)閉合開關(guān)二,以一千歐電阻作為比例電阻,可大大擴大所測電阻精度。同理當(dāng)所測電阻為0至200歐時,閉合開關(guān)三,此時所測電阻才能更加精確。 圖1 電阻測量原理圖72電壓測量輸入電路圖3所示為數(shù)字多用表的電壓測量

11、輸入電路。待測電壓經(jīng)過低通濾波器濾除高頻干擾,再送給ADC0809,電壓測量范圍為05,020V,ADC0809的分辨率為8位.當(dāng)待測電壓為為05V,關(guān)閉開關(guān)一,經(jīng)過濾波電路后此時輸出的電壓VV=Vx,將VV送給ADC0809,轉(zhuǎn)換后得到數(shù)字量為DV=。單片機讀取A/D轉(zhuǎn)換數(shù)據(jù),再經(jīng)過逆向運算可得Vx=注意此時得到的Vx為二進(jìn)制數(shù),需要轉(zhuǎn)化為十進(jìn)制數(shù)后才能送給液晶管顯示。當(dāng)電壓為520V時,因為AD0809的工作電壓為5V,所以需降壓,閉合開關(guān)二,輸出的電壓為待測電壓的五分之一。圖二 直流電壓的測量7. 3直流電流的測量測量電流的原理是:根據(jù)歐姆定律,用合適的取樣電阻把待測電流轉(zhuǎn)換為相應(yīng)的電壓

12、,再進(jìn)行測量。如下圖為直流電流的測量原理圖,當(dāng)輸入一個電流時,先判斷待測電流大概在哪個范圍內(nèi),然后根據(jù)下圖中的開關(guān),來控制待測電流的精確度和準(zhǔn)確度。如輸入一個待測電流時,集成運放正相端電壓即為V+=RIx,同時此電流也經(jīng)過一個交流濾波電路,濾除交流成分,由于V+最大值為0.2V,比較小,若直接輸出,則誤差較大,因此進(jìn)行同相放大4倍,使輸出的電壓大大提高,從而使輸出的電流更加準(zhǔn)確。從運放端輸出的電壓IV=V+4,將IV送給ADC0809,轉(zhuǎn)換后得到數(shù)字量為DV=。單片機讀取A/D轉(zhuǎn)換數(shù)據(jù),再經(jīng)過逆向運算可得Ix=注意此時得到的Vx為二進(jìn)制數(shù),需要轉(zhuǎn)化為十進(jìn)制數(shù)后才能送給液晶顯示管顯示。根據(jù)不同的

13、開關(guān)可得到在不同范圍內(nèi)待測電流值。7. 4蜂鳴器的設(shè)置如下圖所示,為報警部分,當(dāng)萬用表的外接部分短接時,則電路出現(xiàn)高電平,此時蜂鳴器發(fā)出聲音。圖四 蜂鳴器的設(shè)計八、結(jié)論和體會8. 1設(shè)計結(jié)果綜述:(1)、數(shù)字萬用表完成的功能主要是對電壓、電流、電阻的測量,它主要由分流電阻、分壓電阻、基準(zhǔn)電阻、51單片機最小系統(tǒng)、顯示部分、報警部分、AD轉(zhuǎn)換和控制部分組成。(2)、數(shù)字萬用表屬于一種測量工具,其本身的好壞直接影響到測量結(jié)果。(3)、單片機部分跟AD轉(zhuǎn)換部分是整個設(shè)計的核心,ADC0809的參考電壓VREFVCC,所以轉(zhuǎn)換之后的數(shù)據(jù)要經(jīng)過數(shù)據(jù)處理,在數(shù)碼管上顯示出電壓值。實際顯示的電壓值(D/25

14、6*VREF);AT89S52單片機作為主控芯片,配以RC上電復(fù)位電路和11.0592MHZ震蕩電路,使系統(tǒng)穩(wěn)定運行。(4)、在本次軟件設(shè)計過程中,采用的是c語言。(5)、對于硬件的制作,由于布線麻煩等原因,做起來復(fù)雜,對Proteus仿真軟件使用不熟練,使畫仿真圖時遇到不少問題。51單片機基礎(chǔ)知識不扎實,電路分析遇到比較多的問題。捍接也很難,以致未能完全實現(xiàn)設(shè)計報告要求。8. 2體會這次課程設(shè)計暴露出了很多問題,但在做課程設(shè)計的過程中也學(xué)到了很多東西。比如查閱資料,動手焊接萬用板等等,這些都是平時很少做的。此次課程設(shè)計讓我對基于單片機的c語言有了新的認(rèn)識,另外對于電子設(shè)計也有基本的了解,這會

15、讓我在以后更能有效地去學(xué)習(xí)這方面的知識,對單片機學(xué)習(xí)有很大的助益,也在激勵我們多動手,從實踐中去獲取新知識。附錄一電路圖仿真圖(圖21):圖21程序 #include<reg52.h> #include<intrins.h>#define uint unsigned int#define uchar unsigned charuchar code table="0123456789.vAmA" ;uint i,j;sbit ST=P20;sbit EOC=P21;sbit OE=P22;sbit k1=P10;sbit k2=P11;sbit k3=

16、P12;sbit x1=P24;sbit x2=P25;sbit x3=P26; sbit E=P15; sbit RS=P14; sbit RW=P13; void delay()_nop_();_nop_();_nop_();_nop_();_nop_();void Delay(uint i)uint x,j;for(j=0;j<i;j+)for(x=0;x<=148;x+);bit Busy(void)bit busy_flag = 0;RS = 0;RW = 1;E = 1;Delay(5);busy_flag = (bit)(P3 & 0x80);E = 0;re

17、turn busy_flag;void wcmd(uchar del)while(Busy();RS = 0;RW = 0;E = 0;Delay(5);P3 = del;Delay(5);E = 1;Delay(5);E = 0;void wdata(uchar del)while(Busy();RS = 1;RW = 0;E = 0;Delay(5);P3 = del; Delay(5);E = 1;Delay(5);E = 0;void L1602_init(void)wcmd(0x38);Delay(5);wcmd(0x38);Delay(5);wcmd(0x38);Delay(5);

18、wcmd(0x38);wcmd(0x08);wcmd(0x0c);wcmd(0x04);wcmd(0x01); void L1602_char(uchar hang,uchar lie,char sign)uchar a;if(hang = 1) a = 0x80;if(hang = 2) a = 0xc0;a = a + lie - 1;wcmd(a);wdata(sign); void main() uint a1,a2,a3,a4;uchar add;while(1)ST=0;OE=0;P0=0xff;ST=1;_nop_();_nop_(); _nop_();ST=0;_nop_();

19、_nop_();_nop_();_nop_();while(EOC=0);OE=1;add=P0; _nop_(); OE=0; Delay(30); L1602_init();if(k2=0) Delay(10); if(k2=0) if(x1=0) Delay(10); if(x1=0) a1=(add*20)/1000; a2=(add*20)%1000/100; a3=(add*20)%100/10; a4=(add*20)%10; L1602_char(2,7,table10); L1602_char(2,6,tablea1); L1602_char(2,8,tablea2); L1

20、602_char(2,9,tablea3); if(x2=0) a1=(add*10)/1000; a2=(add*10)%1000/100; a3=(add*10)%100/10; a4=(add*10)%10; L1602_char(2,8,table10); L1602_char(2,6,tablea1); L1602_char(2,7,tablea2); L1602_char(2,9,tablea3); if(k3=0) if(x1=0) a1=(add*2)/1000; a2=(add*2)%1000/100; a3=(add*2)%100/10; a4=(add*2)%10; L1

21、602_char(2,7,table10); L1602_char(2,6,tablea1); L1602_char(2,8,tablea2); L1602_char(2,9,tablea3); L1602_char(2,10,tablea4); if(x2=0) a1=add/5/1000; a2=add/5%1000/100; a3=add/5%100/10; a4=add/5%10; L1602_char(2,7,table10); L1602_char(2,6,tablea1); L1602_char(2,8,tablea2); L1602_char(2,9,tablea3); if(

22、x3=0) a1=add/50/1000; a2=add/50%1000/100; a3=add/50%100/10; a4=add/50%10; L1602_char(2,7,table10); L1602_char(2,6,tablea1); L1602_char(2,8,tablea2); L1602_char(2,9,tablea3); L1602_char(2,10,tablea4); if(k1=0) if(x1=0) a1=add*2/5/1000; a2=add*2/5%1000/100; a3=(add*2/5)%100/10; a4=(add*2/5)%10; L1602_

23、char(2,8,table10); L1602_char(2,6,tablea1); L1602_char(2,7,tablea2); L1602_char(2,9,tablea3); if(x2=0) a1=(add*4)/1000; a2=(add*4)%1000/100; a3=(add*4)%100/10; a4=(add*4)%10; L1602_char(2,7,table10); L1602_char(2,6,tablea1); L1602_char(2,8,tablea2); L1602_char(2,9,tablea3); if(x3=0) a1=(add*80)/1000

24、; a2=(add*80)%1000/100; a3=(add*80)%100/10; a4=(add*80)%10; L1602_char(2,9,table10); L1602_char(2,6,tablea1); L1602_char(2,7,tablea2); L1602_char(2,8,tablea3); L1602_char(2,10,tablea4); 附錄二:主要元器件功能介紹1、AT89S52芯片功能特性描述AT89S52引腳框圖:圖2.12 AT89S52芯片引腳圖AT89S52 主要性能:1、 與MCS-51 單片機產(chǎn)品兼容2、8K 字節(jié)在系統(tǒng)可編程Flash 存儲器3

25、、1000 次擦寫周期4、全靜態(tài)操作:0Hz33Hz 5、 三級加密程序存儲器6、32 個可編程I/O 口線7、三個16 位定時器/計數(shù)器8、八個中斷源9、全雙工UART 串行通道10、低功耗空閑和掉電模式l 1、掉電后中斷可喚醒l2、 看門狗定時器13、雙數(shù)據(jù)指針l 4、掉電標(biāo)識符功能特性描述:AT89S52是一種低功耗、高性能CMOS8位微控制器,具有8K 在系統(tǒng)可編程Flash 存儲器。使用Atmel 公司高密度非易失性存儲器技術(shù)制造,與工業(yè)80C51 產(chǎn)品指令和引腳完全兼容。片上Flash允許程序存儲器在系統(tǒng)可編程,亦適于常規(guī)程器。在單芯片上,擁有靈巧的8 位CPU 和在系統(tǒng)可編程Fl

26、ash,使得AT89S52為眾多嵌入式控制應(yīng)用系統(tǒng)提供高靈活、超有效的解決方案。AT89S52具有以下標(biāo)準(zhǔn)功能: 8k字節(jié)Flash,256字節(jié)RAM,32 位I/O 口線,看門狗定時器,2 個數(shù)據(jù)指針,三個16 位定時器/計數(shù)器,一個6向量2級中斷結(jié)構(gòu),全雙工串行口,片內(nèi)晶振及時鐘電路。另外,AT89S52 可降至0Hz 靜態(tài)邏輯操作,支持2種軟件可選擇節(jié)電模式??臻e模式下,CPU停止工作,允許RAM、定時器/計數(shù)器、串口、中斷繼續(xù)工作。掉電保護(hù)方式下,RAM內(nèi)容被保存,振蕩器被凍結(jié),單片機一切工作停止,直到下一個中斷或硬件復(fù)位為止。P1 口:P1 口是一個具有內(nèi)部上拉電阻的8 位雙向I/O

27、 口,p1 輸出緩沖器能驅(qū)動4 個TTL 邏輯電平。對P1 端口寫“1”時,內(nèi)部上拉電阻把端口拉高,此時可以作為輸入口使用。作為輸入使用時,被外部拉低的引腳由于內(nèi)部電阻的原因,將輸出電流(IIL)。此外,P1.0和P1.2分別作定時器/計數(shù)器2的外部計數(shù)輸(P1.0/T2)和時器/計數(shù)器2的觸發(fā)輸入(P1.1/T2EX),具體如下表所示。在flash編程和校驗時,P1口接收低8位地址字節(jié)。表2.1 P1口的第二功能P2 口:P2 口是一個具有內(nèi)部上拉電阻的8 位雙向I/O 口,P2 輸出緩沖器能驅(qū)動4 個TTL 邏輯電平。對P2 端口寫“1”時,內(nèi)部上拉電阻把端口拉高,此時可以作為輸入口使用。

28、作為輸入使用時,被外部拉低的引腳由于內(nèi)部電阻的原因,將輸出電流(IIL)。在訪問外部程序存儲器或用16位地址讀取外部數(shù)據(jù)存儲器(例如執(zhí)行MOVX DPTR)時,P2 口送出高八位地址。在這種應(yīng)用中,P2 口使用很強的內(nèi)部上拉發(fā)送1。在使用8位地址(如MOVX RI)訪問外部數(shù)據(jù)存儲器時,P2口輸出P2鎖存器的內(nèi)容。在flash編程和校驗時,P2口也接收高8位地址字節(jié)和一些控制信號。P3 口:P3 口是一個具有內(nèi)部上拉電阻的8 位雙向I/O 口,p2 輸出緩沖器能驅(qū)動4 個TTL 邏輯電平。對P3 端口寫“1”時,內(nèi)部上拉電阻把端口拉高,此時可以作為輸入口使用。作為輸入使用時,被外部拉低的引腳由于內(nèi)部電阻的原因,將輸出電流(IIL)。P3口亦作為AT89S52特殊功能(第二功能)使用,如下表所示。在flash編程和校驗時,P3口也接收一些控制信號。2、ADC0809介紹ADC0809是帶有8位A/D轉(zhuǎn)換器、8路多路開關(guān)以及微處理機兼容的控制邏輯的CMOS組件。它是逐次逼近式A/D轉(zhuǎn)換器,可以和單片機直接接口。(1)ADC0809的內(nèi)部邏輯結(jié)構(gòu) 圖2.14 ADC0809的內(nèi)部邏輯結(jié)構(gòu)上圖

溫馨提示

  • 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論