本文是以簡易數(shù)字歐姆表的設(shè)計為研究內(nèi)容,本系統(tǒng)主要包括三大模塊:轉(zhuǎn)換模塊、數(shù)據(jù)處理模塊及顯示模塊。其中,AD轉(zhuǎn)換采用ADC0808對輸入的模擬信號進行轉(zhuǎn)換,控制核心AT89C51再對轉(zhuǎn)換的結(jié)果進行運算處理,最后驅(qū)動輸出裝置LED顯示數(shù)字電阻值信號。
附件包含原理圖,完整程序,PCB布局。
Altium Designer畫的原理圖和PCB圖如下:(51hei附件中可下載工程文件)
0.png (16.73 KB, 下載次數(shù): 104)
下載附件
2019-3-16 01:48 上傳
0.png (40.51 KB, 下載次數(shù): 104)
下載附件
2019-3-16 01:48 上傳
0.png (9.11 KB, 下載次數(shù): 108)
下載附件
2019-3-16 01:49 上傳
仿真原理圖如下(proteus仿真工程文件可到本帖附件中下載)
0.png (17.66 KB, 下載次數(shù): 120)
下載附件
2019-3-16 01:49 上傳
1 引言
2 方案論證
3 系統(tǒng)設(shè)計
3.1 系統(tǒng)要求
3.2 總體設(shè)計
4 硬件設(shè)計
4.1 主控模塊
4.1.1 時鐘電路
4.1.2 復(fù)位電路
4.1.3 單片機電路
4.2 從控模塊
4.2.1 被測電阻電壓測量電路
4.2.2 模數(shù)ADC轉(zhuǎn)換電路
4.2.3 數(shù)碼管顯示電路
5 軟件設(shè)計
5.1 軟件開發(fā)語言
5.2 系統(tǒng)開發(fā)工具的選擇
5.3 主控單片機軟件設(shè)計
5.3.1 主控單片機整體流程圖
5.3.2 單片機模塊流程圖
5.3.3 ADC0809模數(shù)轉(zhuǎn)換模塊流程圖
6 系統(tǒng)組裝調(diào)試
6.1 調(diào)試儀器
6.2 調(diào)試方法
6.3 調(diào)試步驟
7 數(shù)據(jù)測試及分析
7.1 仿真軟件下調(diào)試
7.2 實際歐姆表調(diào)試
8 結(jié)論
引言數(shù)字歐姆表,它是采用數(shù)字化測量技術(shù),把連續(xù)的模擬量轉(zhuǎn)換成不連續(xù)、離散的數(shù)字形式并加以顯示的儀表。由于數(shù)字式儀器具有讀數(shù)準(zhǔn)確方便、精度高、誤差小、測量速度快等特而得到廣泛應(yīng)用。 傳統(tǒng)的指針式刻度歐姆表功能單一,精度低,容易引起視差和視覺疲勞,而采用單片機的數(shù)字歐姆表,將連續(xù)的模擬量如直流電壓轉(zhuǎn)換成不連續(xù)的離散的數(shù)字形式并加以顯示,從而精度高、抗干擾能力強,可擴展性強、集成方便,還可與PC實時通信。數(shù)字歐姆表是以數(shù)字電壓表為核心,可以擴展成各種通用數(shù)字儀表、專用數(shù)字儀表及各種非電量的數(shù)字化儀表。目前,由各種單片機和AD轉(zhuǎn)換器構(gòu)成的數(shù)字歐姆表作全面深入的了解是很有必要的。 近年來,隨著半導(dǎo)體技術(shù)、集成電路(IC)和微處理器技術(shù)的發(fā)展,數(shù)字電路和數(shù)字化測量技術(shù)也有了巨大的進步,從而促使了數(shù)字歐姆表的快速發(fā)展,并不斷出現(xiàn)新的類型。 目前,數(shù)字歐姆表的內(nèi)部核心部件是AD轉(zhuǎn)換器,轉(zhuǎn)換的精度很大程度上影響著數(shù)字歐姆表表的準(zhǔn)確度,因而,以后數(shù)字歐姆表的發(fā)展就著眼在高精度和低成本這兩個方面 本文是以簡易數(shù)字歐姆表的設(shè)計為研究內(nèi)容,本系統(tǒng)主要包括三大模塊:轉(zhuǎn)換模塊、數(shù)據(jù)處理模塊及顯示模塊。其中,AD轉(zhuǎn)換采用ADC0808對輸入的模擬信號進行轉(zhuǎn)換,控制核心AT89C51再對轉(zhuǎn)換的結(jié)果進行運算處理,最后驅(qū)動輸出裝置LED顯示數(shù)字電阻值信號
2 方案論證為了用數(shù)字的辦法測量電阻,首先需要將被測電阻值以某種方式輸入AD轉(zhuǎn)換器。根據(jù)測量原理的不同,其輸入方法有很多,如直接法、電橋法和充放電法。通過網(wǎng)上查找資料,得到以下幾種具體方案: 方案一 電壓比例輸入法 電壓經(jīng)過基準(zhǔn)電阻R1和被測電阻Rx接到地,通過OUT輸出被測電阻Rx上的電壓,經(jīng)過ADC0809的轉(zhuǎn)換,最后運用單片機根據(jù)電壓比例計算得出被測電阻,最后通過數(shù)碼管顯示出來。 方案二 通過555單穩(wěn)態(tài)觸發(fā)器轉(zhuǎn)換
利用單穩(wěn)或電容充放電規(guī)律等,可以把被測電阻量的大小轉(zhuǎn)換成脈沖的寬窄,即脈沖的寬度Tx與Rx成正比。只要把此脈沖和頻率固定不變的方波相與,便可以得到計數(shù)脈沖,將它送給數(shù)字顯示器。如果時鐘脈沖的頻率等參數(shù)合適,便可實現(xiàn)測量電阻。 方案三 恒流源電路輸入法 運用TL431ACLPR提供恒定電壓,用恒定電壓除以標(biāo)準(zhǔn)電阻可以使ADOP07AH得到想要的恒定電流,因為被測電阻和標(biāo)準(zhǔn)電阻串聯(lián),電流相等,固只需要測出待測電阻得電壓,用電壓除以電流即可得到被測電阻。 方案比較 方案一 本方案原理較易理解,實現(xiàn)也很方便簡單,成本低,測量精確,而且利用標(biāo)準(zhǔn)電阻得更換讓測量更具有靈活性。 方案二 用555構(gòu)成的單穩(wěn)態(tài)電路在正常工作條件下輸出脈沖的寬度Tx與Rx的函數(shù)關(guān)系是:Tx=R*Cx*ln3,所產(chǎn)生的時間誤差可能達到百分之五,再加上其他原因產(chǎn)生的誤差,測量是的時間延遲太大。 方案三 運用恒流源電路測量電阻,測量精確,但實現(xiàn)比方案一難,成本高。 所以本實驗選取第一種方案。 3 系統(tǒng)設(shè)計3.1 系統(tǒng)要求運用C51單片機設(shè)計一個測量電阻的歐姆表,測量電阻范圍在10K~100K之間,測量誤差不超過5%,盡可能的提高精確度。 3.2 總體設(shè)計
時鐘電路和復(fù)位電路提供89C51單片機工作,ADC0809測得待測電阻的電壓之后發(fā)送給單片機,單片機經(jīng)過數(shù)據(jù)處理得到被測電阻阻值,經(jīng)I/O口輸出給數(shù)碼管顯示。 4 硬件設(shè)計
4.1 主控模塊
4.1.1 時鐘電路XTAL1和XTAL2分別為反向放大器的輸入和輸出。該反向放大器可以配置為片內(nèi)振蕩器。石晶振蕩和陶瓷振蕩均可采用。如采用外部時鐘源驅(qū)動器件,XTAL2應(yīng)不接。因為一個機器周期含有6個狀態(tài)周期,而每個狀態(tài)周期為2個振蕩周期,所以一個機器周期共有12個振蕩周期,如果外接石英晶體振蕩器的振蕩頻率為12MHZ,一個振蕩周期為1/12us,故而一個機器周期為1us。 
如圖4-1所示為時鐘電路。圖4-1-1 4.1.2復(fù)位電路復(fù)位方法一般有上電自動復(fù)位和外部按鍵手動復(fù)位,單片機在時鐘電路工作以后,在RESET端持續(xù)給出2個機器周期的高電平時就可以完成復(fù)位操作。例如使用晶振頻率為12MHz時,則復(fù)位信號持續(xù)時間應(yīng)不小于2us。本設(shè)計采用的是外部手動按鍵復(fù)位電路。 如圖4-2所示為復(fù)位電路 
圖4-1-2 4.1.3 單片機電路STC89C51RC是采用8051核的ISP(In System Programming)在系統(tǒng)可編程芯片,最高工作時鐘頻率為80MHz,片內(nèi)含4K Bytes的可反復(fù)擦寫1000次的Flash只讀程序存儲器,器件兼容標(biāo)準(zhǔn)MCS-51指令系統(tǒng)及80C51引腳結(jié)構(gòu),芯片內(nèi)集成了通用8位中央處理器和ISP Flash存儲單元,具有在系統(tǒng)可編程(ISP)特性,配合PC端的控制程序即可將用戶的程序代碼下載進單片機內(nèi)部,省去了購買通用編程器,而且速度更快。STC89C51RC系列單片機是單時鐘/機器周期(1T)的兼容8051 內(nèi)核單片機,是高速/ 低功耗的新一代8051 單片機,全新的流水線/精簡指令集結(jié)構(gòu),內(nèi)部集成MAX810 專用復(fù)位電路

如圖4-1-3所示圖4-1-3 4.2 從控模塊
4.2.1 被測電阻電壓測量電路
如圖4-1-4所示為被測電阻電壓測量。電壓經(jīng)過已知電阻和被測電阻Rx接到地。通過OUT輸出被測電阻Rx上的電壓。送到ADC0809的IN0口。圖4-1-4 4.2.2 模數(shù)ADC轉(zhuǎn)換電路本設(shè)計采用ADC0809作為模數(shù)轉(zhuǎn)換芯片,ADC0809是美國國家半導(dǎo)體公司生產(chǎn)的CMOS工藝8通道,8位逐次逼近式A/D模數(shù)轉(zhuǎn)換器。其內(nèi)部有一個8通道多路開關(guān),它可以根據(jù)地址碼鎖存譯碼后的信號,只選通8路模擬輸入信號中的一個進行A/D轉(zhuǎn)換。 主要特性: (1)8路輸入通道,8位A/D轉(zhuǎn)換器,即分辨率為8位。 (2)具有轉(zhuǎn)換起?刂贫。 (3)轉(zhuǎn)換時間為100μs(時鐘為640KHz時),130μs(時鐘為500KHz時)。 (4)單個+5V電源供電。 (5)模擬輸入電壓范圍0~+5V,不需零點和滿刻度校準(zhǔn)。 (6)工作溫度范圍為-40~+85攝氏度。 (7)低功耗,約15mW。 內(nèi)部結(jié)構(gòu): ADC0809是CMOS單片型逐次逼近式A/D轉(zhuǎn)換器,內(nèi)部結(jié)構(gòu)如圖所示,它由8路模擬開關(guān)、地址鎖存與譯碼器、比較器、8位開關(guān)樹型A/D轉(zhuǎn)換器、逐次逼近寄存器、邏輯控制和定時電路組成。 外部結(jié)構(gòu): 
ADC0809芯片有28條引腳,采用雙列直插式封裝,如圖4-1-5所示。圖4-1-5-1 下面說明各引腳功能: IN0~IN7:8路模擬量輸入端。 2-1~2-8:8位數(shù)字量輸出端。 ADDA、ADDB、ADDC:3位地址輸入線,用于選通8路模擬輸入中的一路。 ALE:地址鎖存允許信號,輸入端,產(chǎn)生一個正脈沖以鎖存地址。 START: A/D轉(zhuǎn)換啟動脈沖輸入端,輸入一個正脈沖(至少100ns寬)使其啟動(脈沖上升沿使0809復(fù)位,下降沿啟動A/D轉(zhuǎn)換)。 EOC: A/D轉(zhuǎn)換結(jié)束信號,輸出端,當(dāng)A/D轉(zhuǎn)換結(jié)束時,此端輸出一個高電平(轉(zhuǎn)換期間一直為低電平)。 OE:數(shù)據(jù)輸出允許信號,輸入端,高電平有效。當(dāng)A/D轉(zhuǎn)換結(jié)束時,此端輸入一個高電平,才能打開輸出三態(tài)門,輸出數(shù)字量。 CLK:時鐘脈沖輸入端。要求時鐘頻率不高于640KHz。 REF(+)、REF(-):基準(zhǔn)電壓。 Vcc:電源,單一+5V。 GND:地。 電路如圖4-1-5-2所示

圖4-1-5-2 4.2.3 數(shù)碼管顯示電路 四位數(shù)碼管是一種半導(dǎo)體發(fā)光器件,其基本單元是發(fā)光二極管。能顯示4個數(shù)碼管叫四位數(shù)碼管。數(shù)碼管按段數(shù)分為七段數(shù)碼管和八段數(shù)碼管,八段數(shù)碼管比七段數(shù)碼管多一個發(fā)光二極管單元(多一個小數(shù)點顯示); 按發(fā)光二極管單元連接方式分為共陽極數(shù)碼管和共陰極數(shù)碼管。共陽數(shù)碼管是指將所有發(fā)光二極管的陽極接到一起形成公共陽極(COM)的數(shù)碼管。共陽數(shù)碼管在應(yīng)用時應(yīng)將公共極COM接到+5V,當(dāng)某一字段發(fā)光二極管的陰極為低電平時,相應(yīng)字段就點亮。當(dāng)某一字段的陰極為高電平時,相應(yīng)字段就不亮。共陰數(shù)碼管是指將所有發(fā)光二極管的陰極接到一起形成公共陰極(COM)的數(shù)碼管。共陰數(shù)碼管在應(yīng)用時應(yīng)將公共極COM接到地線GND上,當(dāng)某一字段發(fā)光二極管的陽極為高電平時,相應(yīng)字段就點亮。當(dāng)某一字段的陽極為低電平時,相應(yīng)字段就不亮。 
本設(shè)計采用四位一體共陰極數(shù)碼管,管腳圖如圖4-1-6所示圖4-1-6 5 軟件設(shè)計5.1 軟件開發(fā)語言本此設(shè)計運用C語言進行編程。 5.2 系統(tǒng)開發(fā)工具的選擇此次設(shè)計采用的軟件有:Keil5、ISIS仿真軟件、stc-isp單片機燒錄軟件。
5.3.2 單片機模塊流程圖
6 系統(tǒng)組裝調(diào)試6.1 調(diào)試儀器(1)5V直流電源1臺。 (2)萬用表一臺。 (3)100k電位器一個。 (4)keil5。 (5)stc-isp。 (6)ISIS仿真軟件。 6.2 調(diào)試方法本設(shè)計應(yīng)用ISIS和keil5軟件,首先根據(jù)自己設(shè)計的電路圖用ISIS軟件畫出電路模型,然后用keil5軟件編寫程序并進行編譯,在根據(jù)錯誤提示修改錯誤直至編譯通過,再生成hex文件,將此文件加到電路圖中的單片機里面進行仿真測試, (1)不斷嘗試換用不同的標(biāo)準(zhǔn)電阻,找到誤差最小時的標(biāo)準(zhǔn)電阻。 (2)修改數(shù)據(jù)處理的程序,提高測量電阻的精確度。 6.3 調(diào)試步驟(1)根據(jù)分壓原理,在測量10K~100K電阻時,選用50K標(biāo)準(zhǔn)電阻最合適。 (2)用萬用表測量,將電位器調(diào)節(jié)至10k (3)用本課程設(shè)計的歐姆表測量其電阻。若與10K相差較大,則修改數(shù)據(jù)處理部分的程序,如:或者擴大0809的電壓測量的精確度(將測得的電壓擴大100倍)來達到擴大電阻的精確度。直至誤差在5%之內(nèi),接著在調(diào)節(jié)電位器到20k,測量其電阻,若誤差在5%之內(nèi),則繼續(xù)調(diào)節(jié)電阻,否則修改程序。電阻的取值為10K,20K,30K…100K,直至所有的誤差都在5%之內(nèi)即可。 (4)在達到5%的精確誤差后,可以通過在單片機中int型最大不超過65536,適當(dāng)?shù)臄U大標(biāo)準(zhǔn)電阻的倍數(shù)再縮小,從而提高精確度。 7 數(shù)據(jù)測試及分析歐姆表原理是基于電壓測電阻,所以最終測得的電壓的精度決定了電阻的精度。由于采用了ADC0809為8位處理器,當(dāng)輸入電壓為5.00V時,輸出數(shù)據(jù)值為255(FFH),因此ADC0809最大的數(shù)值分辨率為0.0196V(5/255)。這就決定了電壓表的最大分辨率(精度)只能達到0.0196V,從而歐姆表的精度也有了限制。測試時電壓數(shù)值的變化一般以0.02V的電壓幅度變化,如果要獲得更高的精度要求,應(yīng)采用12位、13位的A/D轉(zhuǎn)換器。 7.1 仿真軟件下調(diào)試在ISIS仿真軟件下,用50K的標(biāo)準(zhǔn)電阻下,分別將待測電阻取10K,20K,30K~100K時,得到的數(shù)據(jù)如表1: 表1 從表中可看出,在ISIS仿真軟件下,試驗所得的電阻值與標(biāo)準(zhǔn)值之間的誤差沒有超過2%,符合設(shè)計所要求的誤差不超過5%。而產(chǎn)生誤差的原因,最主要就是電壓的精確度,電壓的精確度越高,測得的電阻阻值越接近標(biāo)準(zhǔn)值。 7.2 實際歐姆表調(diào)試實際用本次設(shè)計的歐姆表測量表阻值,用50K的標(biāo)準(zhǔn)電阻下,分別將待測電阻取10K,20K,30K~100K時,得到的數(shù)據(jù)如下表2: 表2 從表中可以看出,實際測得的值和仿真值有所出入,原因是電阻的實際阻值與標(biāo)稱值會有所偏差,會在標(biāo)稱值的附近。還有電路也會產(chǎn)生一定的電阻,故會引起誤差,不過誤差并沒有超過3%。
8結(jié)論為期兩周設(shè)計就此結(jié)束,我深切的體會到電路理論與實際相結(jié)合的重要。以及用電腦仿真與電腦理論及電路實際的不同。起初剛剛拿到題目時一直在糾結(jié)這電阻應(yīng)該怎么測才能使電阻數(shù)值更精確,當(dāng)時想到了比例法和恒流源的方法,經(jīng)過網(wǎng)上的查閱資料和與同學(xué)得到討論,最終選定了比例法測電阻。經(jīng)過兩周的努力終于成功地設(shè)計出了誤差低于5%的歐姆表,最終在4位一體數(shù)碼管上顯示的結(jié)果和直接用萬用表測試的結(jié)果幾乎一致,誤差完全在合理的范圍。由于儀器而引起的誤差也在誤差范圍內(nèi),達到預(yù)期設(shè)計的目的,設(shè)計成功。
本設(shè)計參考了單片機原理與接口技術(shù)教材中的89C51與ADC0809轉(zhuǎn)換的接口連線,設(shè)計出電路圖的連線,并從中理解了許多基本的知識和接線的方法,在程序的設(shè)計與歐姆表調(diào)試的過程中遇到了很多的問題,剛開始調(diào)試時4位一體的數(shù)碼管完全不亮,檢查發(fā)現(xiàn)是數(shù)碼管引腳接反了,改正后測試數(shù)碼管有所顯示,但是只有第一位顯示較亮,其余3位很暗,經(jīng)過在程序中加長延時的時間,四位數(shù)碼管全部點亮。在測試50K的電阻時問題又出現(xiàn)了,顯示的電阻值僅僅只有幾千歐,經(jīng)過檢查發(fā)現(xiàn)實ADC0809的8位輸出接反了,在改正了電路后數(shù)碼管顯示正確,最終在測試了多個不同的電阻,數(shù)值均正確且在誤差允許的范圍內(nèi),本次設(shè)計最終調(diào)試成功。
單片機程序
- #include<reg51.h>
- sbit CLK=P3^4;
- sbit OE=P3^6;
- sbit ST=P3^0;
- sbit EOC=P3^7;
- unsigned int dian;
- unsigned int diann;
- unsigned int dianya;
- unsigned char code table[]={
- 0x3f,0x06,0x5b,0x4f,
- 0x66,0x6d,0x7d,0x07,
- 0x7f,0x6f};
-
- void delay(unsigned int z)
- {
- while(z--);
- }
-
- void init()
- {
- EA = 1;
- TMOD = 0x02;
- TH0=216;
- TL0=216;
- TR0=1;
- ET0=1;
- ST=0;
- OE=0;
- }
-
- void t0(void) interrupt 1 using 0
- {
- CLK=~CLK;
- }
-
- void ADC_0809()
- {
- unsigned char temp;
- ST=0;
- OE=0;
- ST=1;
- ST=0;
- CLK=1;
- CLK=0;
- CLK=1;
- CLK=0;
- while(0==EOC)
- {
- };
- OE=1;
- temp=P2;
- dian=temp*1.0/255*500;
- diann=(150*dian)/(500-dian);
- dianya=diann*100/3;
- OE=0;
- }
-
- void Vpp_Show()
- {
- unsigned char qian,bai,shi,ge;
- qian=(dianya/1000)%10;
- bai=(dianya/100)%10;
- shi=(dianya/10)%10;
- ge=dianya%10;
-
- P1=0xfe;
- P0=table[qian];
- delay(500);
-
- P1=0xfd;
- P0=table[bai]|0x80;;
- delay(500);
-
- P1=0xfb;
- P0=table[shi];
- delay(500);
-
- P1=0xf7;
- P0=table[ge];
- delay(500);
- }
- void main()
- {init();
- while(1)
- {
-
- ADC_0809();
- Vpp_Show();
-
- }
- }
復(fù)制代碼


全部資料51hei下載地址:
電壓表程序.zip
(198.56 KB, 下載次數(shù): 299)
2019-3-15 10:14 上傳
點擊文件名下載附件
歐姆表程序 下載積分: 黑幣 -5
15008.zip
(71.96 KB, 下載次數(shù): 196)
2019-3-15 10:14 上傳
點擊文件名下載附件
歐姆表仿真 下載積分: 黑幣 -5
電壓表原理.zip
(192.77 KB, 下載次數(shù): 171)
2019-3-15 10:12 上傳
點擊文件名下載附件
原理圖 下載積分: 黑幣 -5
電壓表設(shè)計報告.docx
(406.96 KB, 下載次數(shù): 144)
2019-3-15 10:12 上傳
點擊文件名下載附件
設(shè)計報告 下載積分: 黑幣 -5
|