目录
资料下载地址:基于51单片机ADC0832双通道电压检测仿真
一、项目功能
采集ADC0832双通道电压并在LCD1602液晶上显示。
二、视频
基于51单片机ADC0832双通道电压检测仿真
三、仿真
四、部分代码
#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采样数组
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');
}
}