摘 要2
關(guān)鍵詞2
1 概述3
1.1設(shè)計意義
1.2系統(tǒng)主要功能
2 硬件電路設(shè)計方案及描述3
2.1 設(shè)計方案
2.2 主要元器件的介紹
2. 3控制電路模塊
2.4 元件清單
3數(shù)字式電流表的軟件設(shè)計16
3.1系統(tǒng)程序設(shè)計總方案
3.2系統(tǒng)子程序設(shè)計
4數(shù)字式電流表的調(diào)試
4.1軟件調(diào)試
4.2顯示結(jié)果及誤差分析
5總結(jié)
附錄1.電路原理圖及仿真圖
附錄2. 程序代碼
參考文獻(xiàn)
摘要
數(shù)字電流表的誕生打破了傳統(tǒng)電子測量儀器的模式和格局。它顯示清晰直觀、讀數(shù)準(zhǔn)確,采用了先進的數(shù)顯技術(shù),大大地減少了因人為因素所造成的測量誤差事件。數(shù)字電流表是建立在數(shù)字電壓表的基礎(chǔ)上,讓電壓表與電阻串聯(lián),其顯示的是電流,數(shù)字電壓表是把連續(xù)的模擬量(直流輸入電壓)轉(zhuǎn)換成不連續(xù)、離散的數(shù)字形式,并加以顯示的儀表。數(shù)字電流表把電子技術(shù)、計算技術(shù)、自動化技術(shù)的成果與精密電測量技術(shù)密切的結(jié)合在一起,成為儀器、儀表領(lǐng)域中獨立而完整的一個分支,數(shù)字電流表標(biāo)志著電子儀器領(lǐng)域的一場革命,也開創(chuàng)了現(xiàn)代電子測量技術(shù)的先河。本設(shè)計采用了以單片機為開發(fā)平臺,控制系采用AT89C52單片機,A/D轉(zhuǎn)換采用ADC0809。系統(tǒng)除能確保實現(xiàn)要求的功能外,還可以方便進行8路其它A/D轉(zhuǎn)換量的測量、遠(yuǎn)程測量結(jié)果傳送等擴展功能。簡易數(shù)字電流測量電路由A/D轉(zhuǎn)換、數(shù)據(jù)處理、顯示控制等組成。
1 .概述
1.1設(shè)計意義
通過設(shè)計,掌握電子設(shè)計的一般步驟和方法,鍛煉分析問題解決問題的能力,學(xué)會如何查找所需資料,同時復(fù)習(xí)以前所學(xué)知識并加深記憶,為設(shè)計打好基礎(chǔ),也為以后工作作準(zhǔn)備。通過對選題的分析設(shè)計,學(xué)習(xí)數(shù)字電流表的工作原理、組成和特性;掌握數(shù)字電流表的校準(zhǔn)方法和使用方法;
A、利用AD轉(zhuǎn)換芯片和精密電阻測量0~20mA電流
B、系統(tǒng)工作符合一般數(shù)字電流表要求
2 硬件電路設(shè)計方案及描述
2.1 數(shù)字式電流表系統(tǒng)硬件設(shè)計硬件電路設(shè)計由6個部分組成; A/D轉(zhuǎn)換電路,AT89C51單片機系統(tǒng),LED顯示系統(tǒng)、時鐘電路、復(fù)位電路以及測量電流輸入電路。硬件電路設(shè)計框圖如圖2.1所示。

2.1數(shù)字式電流表系統(tǒng)硬件設(shè)計框圖
2.2.2 ADC0809內(nèi)部邏輯結(jié)構(gòu)

ADC0809的內(nèi)部邏輯結(jié)構(gòu)圖
圖中多路模擬開關(guān)可選通8路模擬通道,允許8路模擬量分時輸入,并共用一個A/D轉(zhuǎn)換器進行轉(zhuǎn)換。地址鎖存與譯碼電路完成對A、B、C三個地址位進行鎖存與譯碼,如表所示。
ADC0809通道選擇表
C(ADDC) | B(ADDB) | A(ADDA) | 選擇的通道 |
0 | 0 | 0 | IN0 |
0 | 0 | 1 | IN1 |
0 | 1 | 0 | IN2 |
0 | 1 | 1 | IN3 |
1 | 0 | 0 | IN4 |
1 | 0 | 1 | IN5 |
1 | 1 | 0 | IN6 |
1 | 1 | 1 | IN7 |
(2)A、B、C:模擬通道地址線。這3根地址線用于對8路模擬通道的選擇,其譯碼關(guān)系如表4.3所示。其中,A為低地址,C為高地址,引腳圖中為ADDA,ADDB和ADDC。
(3)ALE:地址鎖存允許信號。對應(yīng)ALE上跳沿,A、B、C地址狀態(tài)送入地址鎖存器中。
(4)START:轉(zhuǎn)換啟動信號。START上升沿時,復(fù)位ADC0809;START下降沿時啟動芯片,開始進行A/D轉(zhuǎn)換;在A/D轉(zhuǎn)換期間,START應(yīng)保持低電平。本信號有時簡寫為ST。
(5)D7~D0:數(shù)據(jù)輸出線。為三態(tài)緩沖輸出形式,可以和單片機的數(shù)據(jù)線直接相連。D0為最低位,D7為最高。
(6)OE:輸出允許信號。用于控制三態(tài)輸出鎖存器向單片機輸出轉(zhuǎn)換得到的數(shù)據(jù)。OE=0,輸出數(shù)據(jù)線呈高阻;OE=1,輸出轉(zhuǎn)換得到的數(shù)據(jù)。
(7)CLK:時鐘信號。ADC0809的內(nèi)部沒有時鐘電路,所需時鐘信號由外界提供,因此有時鐘信號引腳。通常使用頻率為500KHz的時鐘信號。
(8)EOC:轉(zhuǎn)換結(jié)束信號。EOC=0,正在進行轉(zhuǎn)換;EOC=1,轉(zhuǎn)換結(jié)束。使用中該狀態(tài)信號即可作為查詢的狀態(tài)標(biāo)志,又可作為中斷請求信號使用。
(9)Vcc: +5V電源,GND:地。
(10)Vref:參考電壓。參考電壓用來與輸入的模擬信號進行比較,作為逐次逼近的基準(zhǔn)。其典型值為+5V(Vref(+)=+5V, Vref(-)=0V)。
ADC0809的工作原理首先輸入3位地址,并使ALE=1,將地址存入地址鎖存器中。此地址經(jīng)譯碼選通8路模擬輸入之一到比較器。START上升沿將逐次逼近寄存器復(fù)位。下降沿啟動 A/D轉(zhuǎn)換,之后EOC輸出信號變低,指示轉(zhuǎn)換正在進行。直到A/D轉(zhuǎn)換完成,EOC變?yōu)楦唠娖剑甘続/D轉(zhuǎn)換結(jié)束,結(jié)果數(shù)據(jù)已存入鎖存器,這個信號可用作中斷申請。當(dāng)OE輸入高電平時,輸出三態(tài)門打開,轉(zhuǎn)換結(jié)果的數(shù)字量輸出到數(shù)據(jù)總線上。
(注意:ALE信號常與START信號連在一起,這樣連接可以在信號的前沿寫入地址信號,在其后沿啟動A/D轉(zhuǎn)換,圖為ADC0809信號的時序配合圖)。

ADC0809信號的時序配合
2.2.3 4位一體7段LED數(shù)碼管本實驗的顯示模塊主要由一個4位一體的7段LED數(shù)碼管(SM410564)構(gòu)成,用于顯示測量到的電壓值。它是一個共陽極的數(shù)碼管,每一位數(shù)碼管的原理圖如圖4.5所示。每一位數(shù)碼管的a,b,c,d,e,f,g和dp端都各自連接在一起,用于接收AT89C52的P1口產(chǎn)生的顯示段碼。C1,C2,C3,C4引腳端為其位選端,用于接收AT89C52的P3口產(chǎn)生的位選碼。

圖4.5 一位數(shù)碼管的原理圖

4位一體7段LED數(shù)碼管圖
本課題實驗主要采用AT89S51芯片和ADC0809芯片來完成一個簡易的數(shù)字電壓表,能夠?qū)斎氲?~20ma 的模擬直流電流進行測量,并通過一個4位一體的7段LED數(shù)碼管進行顯示,測量誤差約為0.02 ma。該電流表的測量電路主要由三個模塊組成:A/D轉(zhuǎn)換模塊、數(shù)據(jù)處理模塊及顯示控制模塊。A/D轉(zhuǎn)換主要由芯片ADC0809來完成,它負(fù)責(zé)把采集到的模擬量轉(zhuǎn)換為相應(yīng)的數(shù)字量再傳送到數(shù)據(jù)處理模塊。數(shù)據(jù)處理則由芯片AT89S51來完成,其負(fù)責(zé)把ADC0809傳送來的數(shù)字量經(jīng)一定的數(shù)據(jù)處理,產(chǎn)生相應(yīng)的顯示碼送到顯示模塊進行顯示;另外它還控制著ADC0809芯片的工作。顯示模塊主要由7段數(shù)碼管及相應(yīng)的驅(qū)動組成,顯示測量到的電流值。數(shù)字式電流表的設(shè)計的總電路圖見附錄一。
AT89S51的復(fù)位電路如圖所示。當(dāng)單片機一上電,立即復(fù)位;另外,如果在運行中,外界干擾等因素使單片機的程序陷入死循環(huán)狀態(tài)或“跑飛”,就可以通過按鍵使其復(fù)位。復(fù)位也是使單片機退出低功耗工作方式而進入正常狀態(tài)的一種操作。

復(fù)位電路和時鐘電路
電容C和電阻R1實現(xiàn)上電自動復(fù)位。增加按鍵開關(guān)S又可實現(xiàn)按鍵復(fù)位功能。一般取C=10uF,R1=1KΩ。
單片機中CPU每執(zhí)行一條指令,都必須在統(tǒng)一的時鐘脈沖的控制下嚴(yán)格按時間節(jié)拍進行,而這個時鐘脈沖是單片機控制中的時序電路發(fā)出的。CPU執(zhí)行一條指令的各個微操作所對應(yīng)時間順序稱為單片機的時序。MCS-51單片機芯片內(nèi)部有一個高增益反相放大器,用于構(gòu)成震蕩器,XTAL1為該放大器的輸入端,XTAL2為該放大器輸出端,但形成時鐘電路還需附加其他電路。
電路中的器件選擇可以通過計算和實驗確定,也可以參考一些典型電路的參數(shù),電路中,電容器C1和C2對震蕩頻率有微調(diào)作用,通常的取值范圍是30±10pF,在這個系統(tǒng)中選擇了33uF;石英晶振選擇范圍最高可選24MHz,它決定了單片機電路產(chǎn)生的時鐘信號震蕩頻率,在本系統(tǒng)中選擇的是12MHz,因而時鐘信號的震蕩頻率為12MHz。
2.3.3A/D轉(zhuǎn)換電路
A/D轉(zhuǎn)換由ADC0809完成。ADC0809具有8路模擬輸入端口,地址線(23~25腳)可決定對哪一路模擬輸入作A/D轉(zhuǎn)換。22腳為地址控制,當(dāng)輸入為高電平時,對地址信號進行鎖存。6腳為測試控制,當(dāng)輸入一個2μs寬高電平脈沖時,就開始A/D轉(zhuǎn)換。7腳為A/D轉(zhuǎn)換結(jié)束標(biāo)志,當(dāng)A/D轉(zhuǎn)換結(jié)束時,7腳輸出高電平。9腳為A/D轉(zhuǎn)換數(shù)據(jù)輸出允許控制,當(dāng)OE腳為高電平時,A/D轉(zhuǎn)換數(shù)據(jù)從該端口輸出。10腳為ADC0809的時鐘輸入端,利用單片機AT89S51的30腳的六分頻晶振頻率再通過14024二分頻得到1MHz時鐘。AT89S51與ADC0809的連接電路原理圖如圖所示。

AT89S51與ADC0809的連接電路原理圖
AT89S51與ADC0809的連接必須注意處理好3個問題:
(1)在START端送一個100μs寬的啟動正脈沖;
(2)獲取EOC端上的狀態(tài)信息,因為它是A/D轉(zhuǎn)換的結(jié)束標(biāo)志;
由于單片機的并行口不能直接驅(qū)動LED顯示器,所以,在一般情況下,必須采用專用的驅(qū)動電路芯片,使之產(chǎn)生足夠大的電流,顯示器才能正常工作[7]。如果驅(qū)動電路能力差,即負(fù)載能力不夠時,顯示器亮度就低,而且驅(qū)動電路長期在超負(fù)荷下運行容易損壞,因此,LED顯示器的驅(qū)動電路設(shè)計是一個非常重要的問題。
為了簡化數(shù)字式直流電流表的電路設(shè)計,在LED驅(qū)動電路的設(shè)計上,可以利用單片機P0口上外接的上拉電阻來實現(xiàn),即將LED的A-G段顯示引腳和DP小數(shù)點顯示引腳并聯(lián)到P0口與上拉電阻之間,這樣,就可以加大P0口作為輸出口德驅(qū)動能力,使得LED能按照正常的亮度顯示出數(shù)字。
系統(tǒng)采用動態(tài)顯示方式驅(qū)動4個數(shù)碼管工作,顯示電路與單片機的P1口相連來顯示采集到的電流值。

顯示電路原理圖
2.4 元件清單
器件類型 | 器件名 | 數(shù)值 | 數(shù)量 |
單片機 | AT89S51 |
| 1 |
A/D轉(zhuǎn)換器 | ADC0809 |
| 1 |
數(shù)碼管 | TSEG-MP*4-CA-BLUE |
| 1 |
電容 | C1、C2 | 33uF | 2 |
電解電容 | C3 | 10uF | 1 |
電阻 | R1 | 10K | 2 |
排阻 | RP1 | 200 | 1 |
電阻 | R2 | 250 | 1 |
晶振 | X1 | 12MHz | 1 |

所謂初始化,是對將要用到的c51系列單片機內(nèi)部部件或擴展芯片進行初始工作狀態(tài)設(shè)定,初始化子程序的主要工作是設(shè)置定時器的工作模式,初值預(yù)置,開中斷和打開定時器等。
3.2.3A/D轉(zhuǎn)換子程序
A/D轉(zhuǎn)換子程序用來控制對輸入的模塊電流信號的采集測量,并將對應(yīng)的數(shù)值存入相應(yīng)的內(nèi)存單元,其轉(zhuǎn)換流程圖。
![]()

A/D轉(zhuǎn)換流程圖
顯示子程序采用動態(tài)掃描實現(xiàn)四位數(shù)碼管的數(shù)值顯示,在采用動態(tài)掃描顯示方式時,要使得LED顯示的比較均勻,又有足夠的亮度,需要設(shè)置適當(dāng)?shù)膾呙桀l率,當(dāng)掃描頻率在70HZ左右時,能夠產(chǎn)生比較好的顯示效果,一般可以采用間隔10ms對LED進行動態(tài)掃描一次,每一位LED的顯示時間為1ms。
在本設(shè)計中,為了簡化硬件設(shè)計,主要采用軟件定時的方式,即用定時器0溢出中斷功能實現(xiàn)11μs定時,通過軟件延時程序來實現(xiàn)5ms的延時。其轉(zhuǎn)換流程圖如圖5.3所示。

顯示子程序流程圖
4數(shù)字式電流表的調(diào)試
4.1軟件調(diào)試軟件調(diào)試的主要任務(wù)是排查錯誤,錯誤主要包括邏輯和功能錯誤,這些錯誤有些是顯性的,而有些是隱形的。Proteus軟件可以對基于微控制器的設(shè)計連同所有的周圍電子器件一起仿真,用戶甚至可以實時采用諸如LED/LCD、鍵盤、RS232終端等動態(tài)外設(shè)模型來對設(shè)計進行交互仿真。Proteus支持的微處理芯片包括8051系列、AVR系列、PIC系列、HC11系列及Z80等等。Proteus可以完成單片機系統(tǒng)原理圖電路繪制、PCB設(shè)計,更為顯著點的特點是可以與u Visions3 IDE工具軟件結(jié)合進行編程仿真調(diào)試。

2.當(dāng)IN0口輸入電流為10.50ma時,顯示結(jié)果如圖所示,測量誤差為0ma。

3. 當(dāng)IN0口輸入電流為5ma時,顯示結(jié)果如圖所示,測量誤差為0.01ma。

4. 當(dāng)IN0口輸入電壓流為15ma時,顯示結(jié)果如圖所示,測量誤差為0.02ma。

通過以上仿真測量結(jié)果可得到簡易數(shù)字電壓表與“標(biāo)準(zhǔn)”數(shù)字電壓表對比測試表,如下表
簡易數(shù)字電流表與“標(biāo)準(zhǔn)”數(shù)字電流表對比測試表
標(biāo)準(zhǔn)電流值/A | 簡易電流表測量值/A | 絕對誤差/A |
0.00 | 0.00 | 0.00 |
2.00 | 2.01 | 0.01 |
4.00 | 4.00 | 0.00 |
6.00 | 6.02 | 0.02 |
8.00 | 8.01 | 0.01 |
10.00 | 10.01 | 0.01 |
12.00 | 11.98 | 0.02 |
14.00 | 14.00 | 0.00 |
16.00 | 15.98 | 0.02 |
20.00 | 20.00 | 0.00 |
這次的單片機設(shè)計,是把硬件和軟件結(jié)合起來的設(shè)計,,其硬件電路是比復(fù)雜的,需要足夠的耐心加細(xì)心,同時也需要一定的硬件知識基礎(chǔ)。只有這樣才能保證電路的成功。而且在這次設(shè)計中硬件是基礎(chǔ),只有把基礎(chǔ)打好才會有更高的設(shè)計。硬件工作完成了就是解決程序設(shè)計的問題,程序設(shè)計是一個很靈活的東西,它反映了我們解決問題的邏輯思維和創(chuàng)新能力,它是一個設(shè)計的靈魂所在。
要設(shè)計一個成功的電路,必須要有耐心,要有堅持的毅力。在整個電路的設(shè)計過程中,花費時間最多的是各個單元電路的連接及電路的細(xì)節(jié)設(shè)計上,如在多種方案的選擇中,我們仔細(xì)比較分析其原理以及可行的原因。這就要求我們對硬件系統(tǒng)中各組件部分有充分透徹的理解和研究,并能對之靈活應(yīng)用。通過這次實訓(xùn),我在書本理論知識的基礎(chǔ)上又有了更深層次的理解。
此次設(shè)計,學(xué)到了很多課內(nèi)學(xué)不到的東西,比如獨立思考解決問題,出現(xiàn)差錯的隨機應(yīng)變,和與人合作共同提高,都受益非淺。


單片機設(shè)計—簡易數(shù)字電流表.7z
(236.84 KB, 下載次數(shù): 507)


51hei.gif (298.06 KB, 下載次數(shù): 89)

| 歡迎光臨 (http://www.denmoz.com/bbs/) | Powered by Discuz! X3.1 |