用ADC0809采集電壓,然后用單片機控制四位數碼管顯示,但是怎么程式改都沒辦法采集16次資料后取平均值顯示出來,哪位大佬能幫個忙?
下面附上只采一次的程式,這程式用proteus仿真過沒問題。
#include<reg51.h>
int atm=0;
int t=0;
unsigned char a[16]={0x3f,
0x06,0x5b,0x4f,0x66,0x6d,
0x7d,0x07,0x7f,0x6f,0x77,
0x7c,0x39,0x5e,0x79,0x71,},b[4];
//控制數碼管顯示數字
unsigned int keynum;
unsigned int r;
sbit START=P2^4;
sbit OE=P2^6;
sbit EOC=P2^5;
sbit add_a=P2^2;
sbit add_b=P2^1;
sbit add_c=P2^0;
sbit led=P2^7;
sbit buzzer=P2^3;
sbit p14=P1^4;
sbit p15=P1^5;
sbit p10=P1^0;
sbit p11=P1^1;
sbit p12=P1^2;
sbit p13=P1^3;
void Delay1ms(unsigned int count) //延時
{
unsigned int i,j;
for(i=0;i<count;i++)
for(j=0;j<120;j++);
}
/?ow()讀取ADC的資料,
控制數碼管顯示
void show()
{
P3=b[0];
p10=1;p11=0;p12=0;p13=0;
Delay1ms(1);
P3=0x00;
P3=b[1];
p10=0;p11=1;p12=0;p13=0;
Delay1ms(1);
P3=0x00;
P3=b[2];
p10=0;p11=0;p12=1;p13=0;
P3=P3|0x80;
Delay1ms(1);
P3=0x00;
P3=b[3];
p10=0;p11=0;p12=0;p13=1;
Delay1ms(1);
P3=0x00;
}
void main(void)
{
unsigned int addata=https://bbs.csdn.net/topics/0,i;
while(1)
{
if (p14==0&&p15==1) {keynum=1;}
//滿足開關條件,開始采集一路資料
else if(p14==1&&p15==0) {keynum=2;}
//滿足開關條件,采集第二路資料
else {keynum=3;}
//滿足開關條件
switch (keynum)
{
//下面開始采集一路
case 1:{add_a=0;
add_b=0;
add_c=0;
START=1;
START=0;
while(EOC==0)
{
OE=1;
}
addata=https://bbs.csdn.net/topics/P0;}
break;
//開始采集第二路
case 2:{add_a=1;
add_b=0;
add_c=0;
START=1;
START=0;
while(EOC==0)
{
OE=1;
}
addata=https://bbs.csdn.net/topics/P0;
}
break;
//下面是第三種情況,不用管
case 3:{add_a=1;
add_b=1;
add_c=1;
START=0;
while(EOC==0)
{
OE=1;
}
addata=https://bbs.csdn.net/topics/P0;
}
break;
}
// 下面是電壓大于4.5V報警
if(addata>=0xe6)
{
TMOD=0x01;
TH0=0xee;
TL0=0x00;
EA=1;
ET0=1;
TR0=1;
for(i=0;i<=100;i++)
{
led=~led;
buzzer=~buzzer;
}
led=1;
buzzer=1;
while(atm)
{
led=0;
buzzer=0;
if(p14==1&&p15==1)
{break;}
}
}
else
{
led=0;
buzzer=0;
}
addata=https://bbs.csdn.net/topics/addata*1.96;
//將ADC的二進制轉為十進制
OE=0;
//下面是讀取電壓值各個位 的數值
b[0]=a[addata%10];//個位
b[1]=a[addata/10%10];//十位
b[2]=a[addata/100%10];//百位
b[3]=a[addata/1000];//千位
for(i=0;i<=200;i++)
{
show();
}
}
}
void timer0() interrupt 1//定時器中斷不用管
{
t++;
if(t>=200)
{
atm=2;
}
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/109055.html
標籤:應用實例
下一篇:資訊系統分析與設計
