簡易數字電壓表設計
設計要求
設計要求:
- 能用數碼管顯示電壓值
- 可以測量0~5V范圍內的4路輸入電壓值
- 其測量最小分辨率為0.02V
- 在4位LED數碼管上輪流顯示或者單路顯示
1、 前言
隨著微電子技術的不斷發展,微處理器芯片的集成程度越來越高,單片機已可以在一塊芯片上同時集成運算部件、控制部件、數據存儲器、程序存儲器、定時器/計數器中斷系統,這就很容易將計算機技術與測量控制技術結合,組成智能化測量控制系統。
數字電壓表(Digtal Voltmeter)簡稱DVM,它是采用數字化測量技術,把連續的模擬量(直流輸入電壓)轉換成不連續、離散的數字形式并加以顯示的儀表。與此同時,由DVM擴展而成的各種通用及專用數字儀器儀表,也把電量及非電量測量技術提高到嶄新水平。本文重點介紹基于單片機的簡易數字電壓表。目前,由各種單片A/D 轉換器構成的數字電壓表,已被廣泛用于電子及電工測量、工業自動化儀表、自動測試系統等智能化測量領域,顯示出強大的生命力量。
本設計是基于STC89C52單片機的一種電壓測量電路,該電路采用ADC0809進行A/D轉換電路,測量范圍為直流 0~5V 的4路輸入電壓值,并在四位LED數碼管上顯示,測量最小分辨率為0.019V,測量誤差約為正負0.02V。
2、方案選擇與論證
2.1方案一
A/D轉換器采用ICL7107型三位半顯示的芯片,輸入信號,流經取樣電路取樣后送到ICL7107型三位半A/D轉換器,只需要很少的簡單外圍元件,就可組成數字電流表模塊,直接驅動三位半LED顯示器顯示,最后輸入電流在顯示部分顯示。此方案的方框圖如圖2-2-1所示。
1.001.jpg (16.15 KB, 下載次數: 62)
下載附件
2017-4-20 19:44 上傳
1.002.jpg (2.47 KB, 下載次數: 44)
下載附件
2017-4-20 19:44 上傳
2.2方案二
STC89C52是一種低功耗、高性能CMOS8位微控制器,具有 8K 在系統可編程Flash 存儲器。使用STC公司高密度非易失性存儲器技術制造,與工業80C51 產品指令和引腳完 全兼容。片上Flash允許程序存儲器在系統可編程,亦適于 常規編程器。STC89C52具有以下標準功能: 8k字節Flash,256字節RAM, 32 位I/O 口線,看門狗定時器,2個數據指針,2個16 位定時器/計數器,一個6向量2級中斷結構,全雙工串行口, 片內晶振及時鐘電路。另外,STC89C52 可降至0Hz 靜態邏 輯操作,支持2種軟件可選擇節電模式?臻e模式下,CPU 停止工作,允許RAM、定時器/計數器、串口、中斷繼續工 作。掉電保護方式下,RAM內容被保存,振蕩器被凍結, 單片機一切工作停止,直到下一個中斷或硬件復位為止。方案二的方框圖如圖2-2-1所示:
1.003.jpg (21.67 KB, 下載次數: 46)
下載附件
2017-4-20 19:44 上傳
2.3方案對比與選擇
方案一: ICL7107做的LED數字表,能直接驅動共陽極的LED顯示器,不須另加驅動硬件,缺點就是數字亂跳不穩定,特別最后一位。并且本人對此電路不是很熟悉,我們平時學的都是STC89C52,也有相應的單片機板子。
方案二:采用單片機作為系統的控制單元,通過A/D轉換將被測值轉換為數字量送入單片機中,再由單片機來送顯。此方案各類功能易于實現,成本低、功耗低,顯示穩定。
通過比較,我選擇方案二。
3 單元電路設計
設計方案
硬件電路設計由7個部分組成; A/D轉換電路,STC89C52單片機系統,數碼管顯示系統、時鐘電路、電源電路,、復位電路以及測量電壓輸入電路。
3.1單片機系統
本次課程設計選擇的單片機是STC89C52,之所以選擇這塊芯片,是因為該芯片的各項功能均符合本次課程設計的指標要求,并且該芯片有很多成熟的資料供我們學習,使用起來很方便,也有專門的下載程序平臺,方便現場調試。本實驗所用的單片機板子原理圖如圖3-1-1所示。
1.004.jpg (76.76 KB, 下載次數: 62)
下載附件
2017-4-20 19:44 上傳
1.005.jpg (2.62 KB, 下載次數: 47)
下載附件
2017-4-20 19:44 上傳
3.2時鐘電路
單片機中CPU每執行一條指令,都必須在統一的時鐘脈沖的控制下嚴格按時間節拍進行,而這個時鐘脈沖是單片機控制中的時序電路發出的。CPU執行一條指令的各個微操作所對應時間順序稱為單片機的時序。MCS-51單片機芯片內部有一個高增益反相放大器,用于構成震蕩器,XTAL1為該放大器的輸入端,XTAL2為該放大器輸出端,但形成時鐘電路還需附加其他電路。
本設計系統采用內部時鐘方式,利用單片機內部的高增益反相放大器,外部電路簡,只需要一個晶振和 2個電容即可。
1.006.jpg (5.27 KB, 下載次數: 48)
下載附件
2017-4-20 19:44 上傳
圖 3-2-1時鐘電路
3.3電源電路
如圖3-3-1:通過數據線的USB接口與電源相接,給單片機供電。
1.007.jpg (5.56 KB, 下載次數: 39)
下載附件
2017-4-20 19:44 上傳
1.008.jpg (1.88 KB, 下載次數: 63)
下載附件
2017-4-20 19:44 上傳
3.4復位電路
復位電路工作原理如圖3-4-1所示,VCC上電時,C充電,在電阻上出現電壓,使得單片機復位;幾個毫秒后,C充滿,電阻上電流降為0,電壓也為0,使得單片機進入工作狀態。工作期間,按下摁鍵放電,松手,C又充電,在電阻上出現電壓,使得單片機復位。幾個毫秒后,單片機進入工作狀態。
1.009.jpg (3.24 KB, 下載次數: 51)
下載附件
2017-4-20 19:44 上傳
1.010.jpg (1.86 KB, 下載次數: 60)
下載附件
2017-4-20 19:44 上傳
3.5 A/D 轉換電路
原理圖如圖3-5-1所示,本設計用的ADC0809是8位A/D轉換器,每采集一次一般需
1.011.jpg (1.17 KB, 下載次數: 51)
下載附件
2017-4-20 19:44 上傳
。本設計采用中斷方式讀入A/D轉換結果,在中斷方式下,A/D轉換結束后會自動產生EOC信號,本設計中該信號與CPU的外部中斷0相接。
1.012.jpg (16.11 KB, 下載次數: 77)
下載附件
2017-4-20 19:44 上傳
1.013.jpg (20.16 KB, 下載次數: 47)
下載附件
2017-4-20 19:44 上傳
1.014.jpg (2.42 KB, 下載次數: 61)
下載附件
2017-4-20 19:44 上傳
3.6 顯示電路設計
LED是發光二極管顯示器的縮寫。LED由于結構簡單、價格便宜、與單片機接口方便等優點而得到廣泛應用。在單片機中使用最多的是七段數碼顯示器。本次采用的是共陽極7端數碼管,并且采用軟件譯碼的方式,既簡化了硬件電路又增加了程序編寫的靈活性。其電路原理圖如圖3-6-1所示。
1.015.jpg (16.11 KB, 下載次數: 50)
下載附件
2017-4-20 19:44 上傳
1.016.jpg (18.79 KB, 下載次數: 52)
下載附件
2017-4-20 19:44 上傳
1.017.jpg (26.76 KB, 下載次數: 66)
下載附件
2017-4-20 19:44 上傳
1.018.jpg (2.4 KB, 下載次數: 65)
下載附件
2017-4-20 19:44 上傳
本課程設計利用8255可編程并行口芯片,實現數據從STC89C52輸入,用8255PA和PB口做輸出,其中用PA口控制數碼管的位選信號,表3-6-1為PA口控制位選信號的編碼;用PB口控制數碼管的段選信號,表3-6-2為共陽極數碼管的段碼表。
表3-6-1 數碼管的位選碼
表3-6-2 共陽極數碼管的段碼表
3.7 總體電路設計此電路的工作原理是:+5V模擬電壓信號通過變阻器分壓后由ADC0809的通道進入(本設計用到IN0、IN1、IN2、IN3四個通道),經過模/數轉換后,產生相應的數字量經過其輸出通道D0-D7傳送給STC89C52芯片的P0口,STC89C52和8255負責把接收到的數字量經過數據處理并產生正確的7段數碼管的顯示段碼傳送給四位LED,8255的PA口產生位選信號控制數碼管的亮滅。此外,STC89C52還控制ADC0809的工作:START與單片機的P2^7相連;CLK與單片機的P2^0相連;EOC與單片機的P3^4相連;OE與單片機的P2^3相連;數據輸出端與P0口相連。工作是先將START置為低電平,再置為高電平,產生一個上升沿從而清除內部寄存器;然后再將其置為低電平,產生下降沿,從而啟動控制電路開始A/D 轉換。轉換結束后EOC輸出一個寬為8個CLK周期的正脈沖,通過檢測該信號把OE置為1,即允許數據輸出,暫存轉換結果后再關閉輸出。把暫存的數據取出并把其換算為十進制數字,通過數碼管顯示出電壓值。
4路電壓值輪流顯示的原理:硬件上把ADC0809的ADD A與P1^0相連,ADC0809的ADD B與P1^1相連,所以會伴隨有LED亮滅現象。其通道選擇與對應的LED亮滅現象如表3-7-1所示,同時通過數碼管顯示通道“0”“1”“2”“3”。
表3-7-1 通道選擇與對應的LED亮滅現象
簡易數字直流電壓表的硬件電路已經設計完成,就可以選取相應的芯片和元器件,利用Proteus軟件繪制出硬件的原理,并仔細地檢查修改,直至形成完善的硬件原理圖。但要真正實現電路對電壓的測量和顯示的功能,還需要有相應的軟件配合,才能達到設計要求。
4、程序設計與調試4.1 程序設計總方案
本程序利用KEIL軟件進行程序編寫,根據模塊的劃分原則,將該程序劃分初始化模塊,A/D轉換子程序和顯示子程序,這三個程序模塊構成了整個系統軟件的主程序,如圖4-1-1所示。
1.019.jpg (12.81 KB, 下載次數: 50)
下載附件
2017-4-20 19:44 上傳
圖4-1-1 數字式直流電壓表主程序框圖
4.2 程序調試
軟件調試的主要任務是排查錯誤,錯誤主要包括邏輯和功能錯誤,這些錯誤有些是顯性的,而有些是隱形的,可以通過仿真開發系統發現逐步改正。編好程序后,在KEIL平臺下對程序進行調試,本課程設計的程序是用C語言編寫的,由于程序代碼不多,因此調試也較為順利,但還是遇到一些問題,因此也學到了不少東西,積累了一些調試經驗。
5、結果顯示及誤差分析5.1 結果顯示(1)IN0口輸入電壓值為3.93V時,顯示結果如圖5-1-1所示,測量結果為3.95V,誤差為0.02V。
1.020.jpg (41.69 KB, 下載次數: 45)
下載附件
2017-4-20 19:44 上傳
前一位為通道數,后三位為實際電壓值。
1.021.jpg (1.43 KB, 下載次數: 42)
下載附件
2017-4-20 19:44 上傳
圖5-1-1
(2)當IN1輸入電壓值為3.57V時,顯示結果如圖5-1-2所示。測量誤差為0.01 V。
1.022.jpg (40.45 KB, 下載次數: 47)
下載附件
2017-4-20 19:44 上傳
圖5-1-2
(3)當IN2口輸入電壓值為2.77V時,顯示結果如圖5-1-3。測量誤差為0.00V。
1.023.jpg (43.28 KB, 下載次數: 53)
下載附件
2017-4-20 19:44 上傳
1.024.jpg (1.44 KB, 下載次數: 47)
下載附件
2017-4-20 19:44 上傳
圖5-1-3
(4)當IN3輸入電壓值為1.50V時,顯示結果如圖5-1-4所示。測量誤差為0.01 V。
1.025.jpg (47.05 KB, 下載次數: 45)
下載附件
2017-4-20 19:44 上傳
1.026.jpg (1.41 KB, 下載次數: 57)
下載附件
2017-4-20 19:44 上傳
5.2 誤差分析
通過以上仿真測量結果可得到簡易數字電壓表與“標準”數字電壓表對比測試表,如下表5.2.1所示:
表5.2.1 簡易數字電壓表與“標準”數字電壓表對比測試表
由于單片機STC89C52為8位處理器,當輸入電壓為5.00V時,ADC0804輸出數據值為255(FFH),因此單片機最高的數值分辨率為0.0196V(5/255)。這就決定了電壓表的最高分辨率只能到0.0196V,從上表可看到,測試電壓一般以0.01V的幅度變化。
從上表可以看出,簡易數字電壓表測得的值基本上比標準電壓值偏小0-0.01V,這可以通過校正ADC0809的基準電壓來解決。因為該電壓表設計時直接用數據線的USB接口接上電源作為測量電壓,且數據線上有電壓損耗,所以電壓可能有偏差。當要測量大于5V的電壓時,可在輸入口使用分壓電阻,而程序中只要將計算程序的除數進行調整就可以了。
6、設計總結
通過本學期對單片機原理及應用這門課程的學習完成這次課程設計讓我們對此門課程有了更深的認識,為期兩個星期的課程設計不僅鞏固了我們的理論知識而且也培養了我們的動手能力,同時也讓我們認識到理論與實踐的差距,讓我們受益匪淺。
首先在課題的設計過程中,不僅要運用到課堂學到的知識,還需要查閱不少單片機相關的資料,對我們學習用的單片機板子的原理圖進行詳細地了解。經過一段時間的努力,基于單片機的簡易數字電壓表基本完成。但設計中的不足之處仍然存在。在這過程中,我對電路設計,單片機的使用等都有了進一步地認識。通過這次設計我加深了對Keil軟件的使用方法,掌握了從系統的需要、方案的設計、功能模塊的劃分、原理圖的設計和電路圖的仿真的設計流程,積累了不少經驗。
通過本次設計,提高了自己的能力,無論是在硬件連接方面還是在軟件編程方面。本次設計采用了STC89C52單片機芯片,與以往的單片機相比增加了許多新的功能,使其功能更為完善,應用領域也更為廣泛。設計中還用到了模/數轉換芯片ADC0809,以前在學單片機課程時只是對其理論知識有了初步的理解,做實驗時也很少自己去編寫程序,只是在原有的程序下了解然后做一些小的修改完成老師要求的擴展實驗。通過這次設計,對編程有了更深的理解。在調試過程中遇到很多問題,硬件上的理論知識學得不夠扎實,對電路的仿真方面也不夠熟練。
總之這次電路的設計和仿真,基本上達到了設計的功能要求。在以后的實踐中,我將繼續努力學習電路設計方面的理論知識,并理論聯系實際,爭取在電路設計方面能有所提升。同時在課程設計的自主設計、學習和研究過程中,通過寫課程設計的總結報告,初步訓練我們的書面表達能力。組織邏輯能力,這些技能應用性強,對我們的將來就業和進一步發展幫助較大。同時也加強了我們對課本知識的理解,使我們做到理論和與實際的聯系,收獲很大。并且我們也深深地體會到自己所學知識的不足,激發了我們的自學能力和應對挑戰的能力。為今后學習打下了良好的基礎,培養了我們嚴謹務實,戒驕戒躁的作風,為我們的未來做了很好的鋪墊。
7、主要芯片資料7.1 STC89C52其引腳圖如圖7-1-1所示:
1.027.jpg (35.61 KB, 下載次數: 47)
下載附件
2017-4-20 19:44 上傳
1.028.jpg (2.86 KB, 下載次數: 50)
下載附件
2017-4-20 19:44 上傳
部分引腳功能說明:
Vcc(40腳):接+5V電源正極;
Vss(20腳):接+5V電源地;
XTAL1(19腳):接外部晶體的一個引腳;
XTAL2(18腳):接外部晶體的另一端,在單片機內部接至反相放大器的輸出端。
RST/VPD(9腳):當振蕩器運行時,在此引腳加上兩個周期以上的高電平將使單片機復位(RST);
P0口(P0.0~P0.7):為雙向8位三態I /O口,當作為I /O口使用時,連接外部I /O設備由于輸出的驅動電路工作于開漏狀態,因此需要外接上拉電阻。P0口還是地址總線低8位及數據總線分時復用口,可驅動8個TTL負載;
1.029.jpg (2.86 KB, 下載次數: 41)
下載附件
2017-4-20 19:44 上傳
P1口(P1.0~P1.7):為8位準雙向I /O口,它的每一位都可以分別定義為輸入線或輸出線,可驅動4個TTL負載;
P2口(P2.0~P2.7):為8位準雙向I /O口,當作為I /O口使用時,可直接連接外部
I /O設備。它是與地址總線高8位復用,可驅動4個TTL負載;
P3口(P3.0~P3.7):為8位準雙向I /O口,是雙功能復用口,可驅動4個TTL負載。
7.2 ADC0809
ADC0809是一種8路模擬量輸入、8位逐次逼近法 A/D,轉換時間在典型時鐘頻率下約為100 微秒,適用于多路數據采集。
ADC0809的引腳圖如圖7-2-1所示:
1.030.jpg (20.22 KB, 下載次數: 47)
下載附件
2017-4-20 19:44 上傳
1.031.jpg (3.41 KB, 下載次數: 62)
下載附件
2017-4-20 19:44 上傳
ADC0809的引腳功率如下:
IN0~IN7:8路模擬量輸入線;
2-1~2-8 :8位三態數據輸入線,常用D7~D0表示;
A、B、C:模擬通道選擇輸入線;
ALE:通道鎖存控制信號輸入線,ALE電平正跳變時可以鎖存A、B、C上的地址信息,經譯碼后控制IN0~IN7中哪一路模擬電壓送入比較器;
CLOCK:轉換時鐘輸入線,CLOCK的頻率范圍為10~1200kHz,一般取640 kHz(此時轉換速度為100微秒);
START:啟動轉換信號控制信號輸入線,該信號的上升沿清除內部寄存器,下降沿啟動控制電路開始A/D轉換;
EOC:轉換結束信號輸出線,轉換結束后EOC輸出一個寬為8個CLK周期的正脈沖;
OE:輸出允許控制信號輸出線,OE為高電平時把轉換結果送數據線2-1~2-8,OE為低電平時2-1~2-8為浮空態;
Vcc:主電源+5V;
GND:數字地;
VREF+:參考電壓輸入線,VREF+≤Vcc;
VREF-:參考電壓輸入線,VREF+≥GND,應保證VREF++ VREF-= Vcc。
7.3 8255A8255A是Intel公司生產的可編程并行接口芯片,它具有3個8位的并行I /O口,分別稱為 PA、PB、PC口,其中PC口又分為高四位和低四位口,它們都可以通過軟件編程來改變其I /O口的輸入輸出工作方式。8255A在單片機應用系統中被廣泛用作可編
程外部I /O擴展接口。
8255A的引腳圖及其內部結構圖如圖7-3-1所示:
1.032.jpg (4.67 KB, 下載次數: 41)
下載附件
2017-4-20 19:44 上傳
1.033.jpg (41.1 KB, 下載次數: 57)
下載附件
2017-4-20 19:44 上傳
8、參考文獻
[1] 楊恢先,黃輝先,等.單片機原理及應用[M]. 湘潭:湘潭大學出版社,2013.1.
[2] 于殿泓,王新年.單片機原理與程序設計實驗教程[M].西安:西安電子科技大學出版社,2007.5.
[3] 周興華.手把手教你學單片機C程序設計 [M].北京:北京航空航天大學出版社,2007.
[4] 馬忠梅,等.單片機的C語言應用程序設計(第4版)[M]. 北京:北京航空航天大學出版社,2007.
[5]李光飛,樓然苗,胡佳文,等.單片機課程設計實例指導[M]. 北京:北京航空航天大學出版社,2004.
[6] 李光飛,李良兒,樓然苗,等.單片機C程序設計實例指導[M]. 北京:北京航空航天大學出版社,2005.
9、致謝 此次的課程設計能順利完成,首先要感謝學院提供我們這個寶貴的平臺,讓我們有這個機會去鍛煉自己,發展自己。還要感謝老師們和學長的細心指導,是你們的指導使我們一步一步走向成功。課程設計中到充滿了歡笑和淚水,我們為了一小塊的成功而高興,為了一時的困難而沮喪,但是整個過程讓我們收獲了不少,動手和動腦能力得到了加強,學到了許多書本上學不到的知識。總之,我們在課程設計中學到了許多,真是一言難盡。在這里我們謝謝老師和同學們的幫助,真誠地謝謝大家!
10、附 錄附錄 C語言源程序
單路顯示: