基于Atmel 51單片機開發(fā)平臺和自動控制原理的數(shù)字電壓表系統(tǒng)
基于Atmel 51單片機開發(fā)平臺和自動控制原理的數(shù)字電壓表系統(tǒng)
設(shè)計要求
1.以MCS-51系列單片機為核心器件,設(shè)計一個簡單的直流數(shù)字電壓表;
2.電壓量程:0~5V;
3.最小分辨率:0.01V;
4.所用元器件較少,成本低,且測量精度和可靠性較高;
系統(tǒng)概述
本設(shè)計是基于Atmel 51單片機開發(fā)平臺和自動控制原理的基礎(chǔ)上實現(xiàn)的一種數(shù)字電壓表系統(tǒng)。該系統(tǒng)采用AT89C51單片機作為控制核心,以ADC0809為模數(shù)轉(zhuǎn)換芯片,實現(xiàn)量程0到5V的被測電壓數(shù)據(jù)采樣;LCD1602字符液晶顯示被測電壓值。
同時,數(shù)字電壓表測量精度為0.01V,能夠滿足一般測量要求,系統(tǒng)框架如下圖所示。
仿真電路圖

原理圖
PCB圖
仿真結(jié)果分析
打開Proteus仿真文件,文件后綴名為DSN.雙擊單片機,加載DianYa.hex文件(位于C程序文件夾中),運行仿真,結(jié)果如下圖所示。
圖中可以看出,LCD顯示AD轉(zhuǎn)換通道IN0電壓(Voltage)的大小為1.84V,用Proteus軟件自帶的電壓表(Volts)測量的結(jié)果為1.85V,兩者偶有0.01V的偏差,屬于仿真正?,F(xiàn)象。
通過點擊滑動變阻器RP2上下紅色箭頭,模擬被測電壓值的改變(0~5V之間),LCD實時跟蹤顯示電壓的變化。
下圖為調(diào)整滑動變阻器后,LCD顯示的電壓值為4.25V,與Volts電壓表顯示結(jié)果一致。
綜上所述,數(shù)字電壓表Proteus仿真設(shè)計運行效果滿足設(shè)計要求。
部分C代碼
#include"include.h"#define TIME0H 0x3C#define TIME0L 0xB0ucharuc_Clock=0;//定時器0中斷計數(shù)bitb_DATransform=0;
voidvShowVoltage(uintuiNumber){
ucharucaNumber[3],ucCount;
if(uiNumber>999)
uiNumber=999;
ucaNumber[0]=uiNumber/100;//把計算數(shù)字的每個位存入數(shù)組。ucaNumber[1]=(uiNumber-100*(int)ucaNumber[0])/10;
ucaNumber[2]=uiNumber-100*(int)ucaNumber[0]-10*ucaNumber[1];
for(ucCount=0;ucCount<3;ucCount++)
{
vShowOneChar(ucaNumber[ucCount]+48);//從首位到末位逐一輸出。if(ucCount==0)
vShowOneChar('.');
}}
voidmain(){
TMOD=0x01;//定時器0,模式1。TH0=TIME0H;
TL0=TIME0L;
TR0=1;//啟動定時器。ET0=1;//開定時器中斷。EA=1;//開總中斷vdInitialize();
vWriteCMD(0x84);//寫入顯示起始地址(第一行第4個位置)vShowChar("voltage");
vWriteCMD(0xC9);
vShowChar("(V)");
while(1)
{
if(b_DATransform==1)
{
b_DATransform=0;
vWriteCMD(0xC4);
vShowVoltage(uiADTransform());
}
}}
分享的內(nèi)容有
(1)基于51單片機的數(shù)字電壓表設(shè)計論文完整版;
(2)C程序;
(3)Proteus仿真文件;
(4)原理圖及PCB文件;
(5)Visio流程圖;
(6)元器件清單;
(7)參考資料;
分享如下