//程序头函数
#include<reg51.h>
//宏定义
#define uint unsigned int
#define uchar unsigned char
#define Data_ADC0808 P1
//管脚声明
sbit LED_R= P2^1;
sbit LED_G= P2^2;
sbit FENG = P2^5;
sbit BO=P2^3;
//ADC0808
sbit ST=P3^3;
sbit EOC=P3^6;
sbit OE=P3^2;
//函数声明
extern uchar ADC0808();
extern void Key();
void delay(uint z)
{
uint i,j;
for(i=0;i<z;i++)
for(j=0;j<121;j++);
}
uchar temp=0;
unsigned char code Tab[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f}; //定义数码管为共阳
void init()
{
TMOD=0x01;
TL0=0xb0;
TH0=0x3c;
EA=1;
ET0=1;
TR0=1;
}
void main()
{
init();
while(1)
{
temp=ADC0808();
if(temp<127)
{LED_G=0;
delay(100);
FENG=1;
delay(100);
}
if(temp>127)
{LED_R=0;
delay(100);
FENG=0;
delay(100);
}
Key(); }
}
//ADC0808读取信息
uchar ADC0808()
{
uchar temp_=0x00;
//初始化高阻太
OE=0;
//转化初始化
ST=0;
//开始转换
ST=1;
ST=0;
//外部中断等待AD转换结束
while(EOC==0)
//读取转换的AD值
OE=1;
temp_=Data_ADC0808;
OE=0;
return temp_;
}
void Key()
{P2=0xfe;//P2赋值为1
if(temp<=28)
P0=Tab[1];delay(1);
if(temp<=56&&temp>28)
P0=Tab[2];
delay(1);
if(temp<=84&&temp>56)
P0=Tab[3];delay(1);
if(temp<=112&&temp>84)
P0=Tab[4];delay(1);
if(temp<=140&&temp>112)
P0=Tab[5];delay(1);
if(temp<=168&&temp>140)
P0=Tab[6];delay(1);
if(temp<=196&&temp>168)
P0=Tab[7];delay(1);
if(temp<=224&&temp>196)
P0=Tab[8];delay(1);
if(temp<=255&&temp>224)
P0=Tab[9];delay(1);
}