#include <reg52.h> //包含头文件
#include <1602lcd.c> //调用1602LCD函数库
#include <STC-ADC.c> //调用ADC.C函数库
sbit beep=P2^0;
float k,k1,k2,k3,k0;
unsigned char n;
float ad1,Val_Av=0;
#define uchar unsigned char
#define uint unsigned int
//-------------------------------------------------
void delay_ms(unsigned int xms) //1ms延时子程序
{
unsigned int aa,bb;
for(aa=xms;aa>0;aa--)
for(bb=800;bb>0;bb--);
}
//-------------------------------------------------
float Ad_Av(uchar channel)
{
char num;
for(num=100;num>0;num--)
{
Val_Av=Val_Av*4.950/1022; //单片机电源为5V,球其真实电压值
Val_Av+=GetADCResult(channel=0);//100次采样集求和
}
Val_Av/=100.0; //求平均值
return(Val_Av);
}
void main()
{
lcd_int(); //1602LCD初始化
lcd_write_com(0x01); //1602LCD清屏
InitADC(); //Init ADC sfr
while(1)
{
unsigned char channel;
channel=0;
Ad_Av();
GetADCResult(channel); //进行某个通道的ADC采样
lcd_locate(2,1); //定位
lcd_4_char(ADC_RES); //显示ADC采样获得的高8位的值
lcd_locate(2,6); //定位
lcd_float(Val_Av); //显示ADC采样获得的低2位的值
lcd_locate(2,13); //定位
lcd_4_char(ADC_RES*4+ADC_LOW2);//显示ADC采样获得的总值
k=(ADC_RES*4+ADC_LOW2)*4.950/1022;
lcd_locate(1,1); //定位
lcd_float(k); //将ADC的总值,根据电源电压,转化为ADC端口的输入电压值
lcd_string(" V");
lcd_locate(1,10);
lcd_4_char(k*233/4.5);
lcd_string(" V");
if(k*233/4.5>230)
beep=0;
else if(k*233/4.5<160)
beep=0;
else beep=1;
delay_ms(100);
}
}
文章评论(0条评论)
登录后参与讨论