AD轉換電壓測量
#include <reg51.h>
char code TAB[10]={ 0xc0, 0xf9, 0xa4, 0xb0, 0x99,
0x92, 0x83, 0xf8, 0x80, 0x98 };
#define ADC P0
#define SCANP P1
#define SEG7P P2
sbit relay=P3^0;
sbit LED=P3^1;
unsigned char disp[4]={0, 0, 0, 0};
unsigned char _adc;
void dataproc(unsigned char);
void display(void);
void delay1ms(char);
main()
{ while(1)
{ display();
_adc=ADC;
dataproc(_adc);
}
}
void dataproc(unsigned char data_in)
{ unsigned int results;
LED=1;
results= data_in*197;
results=((results/(50000-results))*10000);
disp[3]=results/10000;
disp[2]=(results/1000)%10;
disp[1]=(results/100)%10;
disp[0]=(results/10)%10;
if(disp[3]>3)
{
relay=0;
LED=~LED;
delay1ms(500);
}
}
void display(void)
{ char i,scan;
char times=20;
while (--times>=0)
{ scan=1;
for(i=0;i<4;i++)
{ SEG7P=0xff;
SCANP=scan;
SEG7P=TAB[disp[i]];
delay1ms(4);
scan<<=1;
}
}
}
void delay1ms(char x)
{ int i,j;
for(i=0;i<x;i++)
for(j=0;j<120;j++);
}
|