在数码管上显示ADIN0口输入的电压
扫描二维码
随时随地手机看文章
#include"../Inc/MyCommon.h"
#include
#include
#include"../Inc/CH451.h"
#include"../Inc/MyDelay.h"
#defineVref2.5//外部参考电压,通过底板RP2来调节
uintn=0;//采集到的数值
ucharflag=0;//采集完成标志
ucharDisplayData[8]={0x11,0x11,0x11,0x11,0x10,0x10,0x10,0x10};//数码管各位要显示的数据
//ADC12初始化
voidInitADC10(){
ADMUX=0x00;//ADC0AREF
ADCSRA=(1<分频启动连续转换
}
//ADC中断函数
ISR(SIG_ADC){
n=ADC;
flag=1;
}
//主函数
intmain(){
uchari;
DDRA=0xA8;//PA3PA5PA7设置为输出
CH451_Init();//初始化CH451
for(i=0;i<8;i++)CH451_DisplayDig(7-i,DisplayData[i],0);
InitADC10();//初始化ADC10
sei();//关闭中断
while(1){
if(flag){
n=(int)((n*Vref*1000)/1023);//温度扩大1000倍
//计算数码管各位要显示的数值
DisplayData[4]=n/1000;
DisplayData[5]=n%1000/100;
DisplayData[6]=n%100/10;
DisplayData[7]=n%10;
flag=0;
}
for(i=0;i<8;i++){//显示电压
if(i==4)CH451_DisplayDig(7-i,DisplayData[i],1);//显示小数点
elseCH451_DisplayDig(7-i,DisplayData[i],0);
}
}
return0;
}