天堂草原最受欢迎的角色,天堂动漫,天堂在线,色天堂下载,天堂中文在线资源,亚洲男人天堂

技術熱線: 4007-888-234
設計開發

專注差異化嵌入式產品解決方案 給智能產品定制注入靈魂給予生命

開發工具

提供開發工具、應用測試 完善的開發代碼案例庫分享

技術支持

從全面的產品導入到強大技術支援服務 全程貼心伴隨服務,創造無限潛能!

新聞中心

提供最新的單片機資訊,行業消息以及公司新聞動態

如何使用8051單片機制作一個數字電壓表?

更新時間: 2019-11-05
閱讀量:4401

在現實生活中,我們經常使用到電器產品,電磁爐、微波爐、熱水壺、冰箱等等。為了安全性,使用8051單片機的電壓表測量的電壓為0V至25V。所以,輸入電壓為直流電壓,在LCD上也能獲得準確、穩定的輸出。如果你施加交流電壓作為輸入,則隨著交流電壓的不斷變化,LCD上將顯示的數字并不是穩定的,這也是市電的常見狀態。

該方案的主要組件是8051單片機,電壓傳感器模塊和IC ADC0804。在這個方案中,我們使用模擬到數字的轉換過程中顯示的電壓。

一、數字電壓表模數轉換原理圖


Interfacing.png

此處,ADCIC根據輸入電壓生成輸出數字值。8051單片機讀取該數字值并將其顯示在LCD上。

1.傳感器:傳感器或傳感器用于將物理量轉換為電能。光相關電阻器,溫度傳感器,濕度傳感器,氣體傳感器等是換能器的例子。

2.ADC(模數轉換器):ADC將輸入電壓轉換為數字值。

3.數字系統:該系統讀取輸入的數字數據并在LCD上顯示物理量以供理解。

二、使用8051單片機的數字電壓表電路圖


Digital-Voltmeter1.png

三、使用8051單片機數字電壓表所需電路元件

(1)AT89C51單片機;
(2)ADC0804集成電路;
(3)25V電壓傳感器(如下圖);
(4)AT89C51編程板;
(5)可變電阻;
(6)直流適配器或電池。

QQ截圖20191105112053.png


四、使用8051單片機的數字電壓表電路設計

在上述電路中,模數轉換器IC數據位連接到PORT2。LCD數據引腳連接到控制器的POTR3,控制引腳RS和EN分別連接到P1.6和P1.7。

什么是ADC0804?

ADC0804是一個8位模數轉換器。該IC使用逐次逼近法將模擬值轉換為數字。它只能接受一個模擬數據作為輸入。該IC的步長大小通過改變引腳9上的參考電壓來改變。如果未連接此引腳,則VCC將作為參考電壓。

對于每19.53mV的輸入電壓,當步長為5V時,輸出將增加1值。該IC的轉換時間取決于時鐘源。

ADC功能:(1)0至5V模擬輸入電壓;(2)內置時鐘發生器;(3)差分模擬輸入;(4)可調參考電壓。


五、8051單片機的數字電壓表源代碼


#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>

以上就是英銳恩單片機開發工程師分享的使用8051單片機制作的數字電壓表。

联系我们: 平武县| 彝良县| 三亚市| 新绛县| 舟曲县| 株洲县| 漠河县| 虹口区| 汉沽区| 堆龙德庆县| 商洛市| 长垣县| 新昌县| 东明县| 沙田区| 长乐市| 庆城县| 雷州市| 疏附县| 遂川县| 武功县| 甘洛县| 个旧市| 信宜市| 曲水县| 西安市| 井研县| 精河县| 樟树市| 伊金霍洛旗| 尚义县| 嵩明县| 五寨县| 东乡县| 秀山| 精河县| 兴业县| 东至县| 包头市| 桐梓县| 古交市|