專注差異化嵌入式產(chǎn)品解決方案 給智能產(chǎn)品定制注入靈魂給予生命
提供開發(fā)工具、應(yīng)用測(cè)試 完善的開發(fā)代碼案例庫(kù)分享
從全面的產(chǎn)品導(dǎo)入到強(qiáng)大技術(shù)支援服務(wù) 全程貼心伴隨服務(wù),創(chuàng)造無(wú)限潛能!
提供新的芯片及解決方案,提升客戶產(chǎn)品競(jìng)爭(zhēng)力
提供最新的單片機(jī)資訊,行業(yè)消息以及公司新聞動(dòng)態(tài)
在現(xiàn)實(shí)生活中,我們經(jīng)常使用到電器產(chǎn)品,電磁爐、微波爐、熱水壺、冰箱等等。為了安全性,使用8051單片機(jī)的電壓表測(cè)量的電壓為0V至25V。所以,輸入電壓為直流電壓,在LCD上也能獲得準(zhǔn)確、穩(wěn)定的輸出。如果你施加交流電壓作為輸入,則隨著交流電壓的不斷變化,LCD上將顯示的數(shù)字并不是穩(wěn)定的,這也是市電的常見狀態(tài)。
該方案的主要組件是8051單片機(jī),電壓傳感器模塊和IC ADC0804。在這個(gè)方案中,我們使用模擬到數(shù)字的轉(zhuǎn)換過(guò)程中顯示的電壓。
一、數(shù)字電壓表模數(shù)轉(zhuǎn)換原理圖

此處,ADCIC根據(jù)輸入電壓生成輸出數(shù)字值。8051單片機(jī)讀取該數(shù)字值并將其顯示在LCD上。
1.傳感器:傳感器或傳感器用于將物理量轉(zhuǎn)換為電能。光相關(guān)電阻器,溫度傳感器,濕度傳感器,氣體傳感器等是換能器的例子。
2.ADC(模數(shù)轉(zhuǎn)換器):ADC將輸入電壓轉(zhuǎn)換為數(shù)字值。
3.數(shù)字系統(tǒng):該系統(tǒng)讀取輸入的數(shù)字?jǐn)?shù)據(jù)并在LCD上顯示物理量以供理解。
二、使用8051單片機(jī)的數(shù)字電壓表電路圖

三、使用8051單片機(jī)數(shù)字電壓表所需電路元件
(1)AT89C51單片機(jī);
(2)ADC0804集成電路;
(3)25V電壓傳感器(如下圖);
(4)AT89C51編程板;
(5)可變電阻;
(6)直流適配器或電池。

四、使用8051單片機(jī)的數(shù)字電壓表電路設(shè)計(jì)
在上述電路中,模數(shù)轉(zhuǎn)換器IC數(shù)據(jù)位連接到PORT2。LCD數(shù)據(jù)引腳連接到控制器的POTR3,控制引腳RS和EN分別連接到P1.6和P1.7。
什么是ADC0804?
ADC0804是一個(gè)8位模數(shù)轉(zhuǎn)換器。該IC使用逐次逼近法將模擬值轉(zhuǎn)換為數(shù)字。它只能接受一個(gè)模擬數(shù)據(jù)作為輸入。該IC的步長(zhǎng)大小通過(guò)改變引腳9上的參考電壓來(lái)改變。如果未連接此引腳,則VCC將作為參考電壓。
對(duì)于每19.53mV的輸入電壓,當(dāng)步長(zhǎng)為5V時(shí),輸出將增加1值。該IC的轉(zhuǎn)換時(shí)間取決于時(shí)鐘源。
ADC功能:(1)0至5V模擬輸入電壓;(2)內(nèi)置時(shí)鐘發(fā)生器;(3)差分模擬輸入;(4)可調(diào)參考電壓。
五、8051單片機(jī)的數(shù)字電壓表源代碼
#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);
}#include<reg51.h>以上就是英銳恩單片機(jī)開發(fā)工程師分享的使用8051單片機(jī)制作的數(shù)字電壓表。