基于51單片機的數(shù)字電壓表(ADC0832)
功能描述:
本設(shè)計由51單片機最小系統(tǒng)+ADC0832模塊+兩路模擬量輸入模塊+液晶1602顯示模塊
1、主控制器是AT89C82單片機
2、ADC0832模數(shù)轉(zhuǎn)換器進行A/D轉(zhuǎn)換,讀取電壓兩路數(shù)據(jù),電壓檢測范圍0-5V 精度(8位)
3、利用兩個電位器模擬 模擬量輸入,
3、液晶1602顯示兩個電壓值。
Proteus7.8以上版本均可使用
仿真圖:
程序源碼:
#include "reg52.h" #include "lcd1602.h" #include "delay.h" #include "ADC0832.h" void main(void) { unsigned char adc0,adc1; unsigned char num=0; unsigned char ADC_Get[10]={0}; //定義AD采樣數(shù)組 float Voltage0 = 0.0; float Voltage1 = 0.0; Lcd1602_Init(); //LCD1602液晶初始化 Lcd1602_String(0,0,"V0: "); Lcd1602_String(0,1,"V1: "); while(1) { ADC_Get[num++]=ADC0832(1,0); //通道0 利用中值濾波算法 if(num>9) { num=0; adc0=Error_Correct(ADC_Get,10); //取十個值作中值濾波 } Voltage0 = (float)adc0 * 5.0/255; Voltage0 = Voltage0 *100; //擴大100倍方便顯示 Lcd1602_Write_Com(0x80+3); Lcd1602_Write_Data((unsigned int)Voltage0/100+0x30); Lcd1602_Write_Data('.'); Lcd1602_Write_Data((unsigned int)Voltage0%100/10+0x30); Lcd1602_Write_Data((unsigned int)Voltage0%100%10+0x30); Lcd1602_Write_Data('V'); adc1=ADC0832(1,1); //通道1 Voltage1 = (float)adc1 * 5.0/255; Voltage1 = Voltage1 *100; //擴大100倍方便顯示 Lcd1602_Write_Com(0xC0+3); Lcd1602_Write_Data((unsigned int)Voltage1/100+0x30); Lcd1602_Write_Data('.'); Lcd1602_Write_Data((unsigned int)Voltage1%100/10+0x30); Lcd1602_Write_Data((unsigned int)Voltage1%100%10+0x30); Lcd1602_Write_Data('V'); } }
軟件免費下載地址:
1、Proteus仿真軟件
文件內(nèi)容:Proteus7.8安裝包、Proteus8.6安裝包、Proteus.8.10安裝包、Proteus Professional 8.11 SP0安裝包
鏈接:https://pan.baidu.com/s/11LNUZ9BJXWvXf1C4dPc3_w
提取碼:2756
2、KEIL4 C51軟件安裝包
鏈接:https://pan.baidu.com/s/1CTZBqDsPsyIbjCIjI_birA
提取碼:sy2a
文件下載:
https://pan.baidu.com/s/1yGw8HHvJRdcjF28ZcLcTjA?pwd=uys5