數字電壓表是一種測量電信號電壓的電子儀器。它用于各種應用,包括電子、電力系統(tǒng)和自動化領域。在本文中,我們將討論使用8051微控制器的數字電壓表的實現。
8051微控制器是一種廣泛使用的微控制器,適用于各種應用。它具有 4KB 片上 ROM、128 字節(jié)片上 RAM、32 個 I/O 引腳和一個 16位定時器。微控制器可以用匯編語言或高級語言(如C)進行編程。
該微控制器具有多種特性,非常適合用作數字電壓表,例如內置ADC(模數轉換器)和8位定時器。
所需組件
要使用 8051 微控制器構建數字電壓表,我們需要以下組件:
8051微控制器(AT89C51)。
LCD 顯示屏 –(7 段 4 位)。
電壓傳感器(25V)。
電池或直流適配器。
微控制器編程板。
晶體振蕩器 = 12MHz。
3 個電阻數 = 10kΩ。
4 個電容器 = 2 個 33pF,1 個 150pF,第四個為 10μF/16V。
電路圖
電路概述:
使用8051微控制器的數字電壓表電路由多個組件組成,例如8051微控制器、LCD顯示器、分壓器網絡和一些其他無源組件。分壓器網絡用于將電壓降低到微控制器可以讀取的水平。
分壓器電路(ADC0804 IC)
分壓器電路用于將輸入信號的ADC范圍增加到25V或將輸入電壓降壓到安全水平,這可以通過微控制器進行測量。電位器用于調節(jié)電壓表的電壓范圍。ADC用于將模擬電壓信號轉換為數字信號,并可顯示在LCD顯示屏上。
分壓器電路由兩個電阻R1和R2組成,串聯(lián)連接。輸入電壓施加在R1和R2的串聯(lián)組合上,輸出電壓施加在R2上。R2與(R1+R2)之比決定了輸出電壓。我們可以通過改變R1和R2的值來調整輸出電壓范圍。
ADC通過將輸入電壓與基準電壓進行比較,將模擬電壓信號轉換為數字信號。ADC的分辨率取決于轉換器中使用的位數。例如,8位ADC可以測量0-5V的電壓范圍,每步分辨率為19.53
mV。
數字電壓表的軟件是用匯編語言或C語言編寫的。該軟件從ADC讀取電壓信號,將其轉換為數字值,并將其顯示在LCD顯示屏上。該軟件還可以編程以實現其他功能,例如峰值電壓測量、電壓平均和電壓記錄。
總而言之,使用8051微控制器的數字電壓表是一種簡單且經濟高效的解決方案,用于測量各種應用中的電壓信號。它需要一個分壓器電路、一個ADC、一個電位計和一個LCD顯示器。微控制器可以用匯編語言或C語言進行編程,以實現其他功能。
電路工作:
分壓器網絡由兩個串聯(lián)電阻組成。其中一個電阻器是電位計,可以調節(jié)以校準電壓表。分壓器網絡的輸出連接到微控制器的模擬輸入引腳。微控制器使用其內置ADC將模擬電壓轉換為數字值。
然后,數字值顯示在LCD顯示屏上。LCD顯示屏通過數字接口連接到微控制器。微控制器將數字值發(fā)送到LCD顯示屏,然后LCD顯示屏以可讀格式顯示。
微控制器的編程包括初始化ADC,讀取模擬電壓,將其轉換為數字值,然后將其發(fā)送到LCD顯示器。微控制器持續(xù)讀取電壓并更新顯示。
如何為數字電壓表編程微控制器AT89C51?
上述過程概述了測試已編程和構建的電路的步驟(電路圖和項目代碼如下所述)。以下是比較和更詳細解釋的步驟:
將程序刻錄到 AT89C51 微控制器:此步驟涉及使用程序員將編譯的程序代碼傳輸到微控制器。程序代碼通常用編程語言(如 C
或匯編語言)編寫。程序代碼包含微控制器為執(zhí)行所需功能而執(zhí)行的指令。
連接電路:將程序刻錄到微控制器上后,可以使用電路圖作為指導組裝電路。該電路包括at89c51微控制器、電壓傳感器和顯示元件。應小心連接,以確保電路接線正確且所有組件均正確供電。
連接電壓源:電壓源連接到電壓傳感器的輸入端。確保最大模擬輸入電壓小于25V DC以防止損壞電路非常重要。
連接數字萬用表:數字萬用表連接到電壓傳感器的輸入端子。萬用表用于驗證LCD和萬用表上顯示的電壓讀數是否相同或非常相似。
打開電路板電源:電路的電源已打開。這為微控制器和電路的其他組件提供電源。
觀察顯示:LCD和數字萬用表顯示器應顯示相同或非常相似的電壓讀數。這表明電壓表工作正常。
改變輸入電壓:如果可能,可以緩慢改變輸入電壓,以驗證電壓表是否繼續(xù)顯示準確的讀數。
關閉電路板電源:關閉電路的電源以關閉組件的電源。
編程代碼:
#include
#define lcd P3
#define dat P2
sbit rs=P1^6;
sbit e=P1^7;
void delay (int);
void display (unsigned char);
void cmd (unsigned char);
void init (void);
void string (char *);
void intro (void);
char i=0;
void delay (int d)
{
unsigned char i=0;
for(;d >0;d--)
{
for(i=250;i >0;i--);
for(i=248;i >0;i--);
}
}
void cmd (unsigned char c)
{
lcd=c;
rs=0;
e=1;
delay(10);
e=0;
}
void display (unsigned char c)
{
lcd=c;
rs=1;
e=1;
delay(10);
e=0;
}
void string (char *c)
{
while(*c)
{
display(*c++);
}
}
void init (void)
{
cmd(0x38);
cmd(0x01);
cmd(0x0c);
cmd(0x80);
}
void intro (void)
{
string(" Electronics ");
cmd(0xc0);
string(" Hub ");
delay(2000);
cmd(0x01);
string(" Digital ");
cmd(0xc0);
string(" Voltmeter ");
delay(2000);
cmd(0x01);
cmd(0x80);
}
void main()
{
unsigned int temp=0;
unsigned int temp1=0;
float val=0.0;
init();
intro();
dat=0xff;
while(1)
{
if(i==0)
{
string(" Volts - ");
i++;
}
val=dat*0.02; // 0.02 is resolution of adc
val=val/0.2; // 0.2 is nothing but (R2/(R1+R2)) resistor values in the voltage sensor
cmd(0x89);
if((val >=1.0) && (val< 10.0)) { display(' '); temp=val*1000; temp1=((temp/1000)+48); display(temp1); display('.'); temp1=(((temp/100)%10)+48); display(temp1); } else if((val >=10.0) && (val< 100.0))
{
temp=val*100;
temp1=((temp/1000)+48);
display(temp1);
temp1=(((temp/100)%10)+48);
display(temp1);
display('.');
temp1=(((temp/10)%10)+48);
display(temp1);
}
else
{
display(' ');
string("0.0");
}
delay(1000);
}
while(1);
}
使用8051微控制器的數字電壓表的優(yōu)點:
1.數字電壓表比模擬電壓表更準確,更精密。
- 微控制器可以編程為執(zhí)行除測量電壓之外的其他任務。
3.數字顯示易于閱讀和解釋。
4.電路簡單,建造成本低廉。
5.電壓表可以使用電池供電,便于攜帶,易于現場使用。
局限性
該電路只能用于測量低壓應用(高達25V)。
模擬電壓的輸入信號應在0V至5V之間。
該系統(tǒng)在任何給定時間只能測量單個模擬輸入值。
-
微控制器
+關注
關注
48文章
7454瀏覽量
150853 -
8051
+關注
關注
3文章
309瀏覽量
51426 -
數字電壓表
+關注
關注
4文章
183瀏覽量
33040 -
電子儀器
+關注
關注
2文章
1341瀏覽量
23080
發(fā)布評論請先 登錄
相關推薦
評論