//程序頭函數(shù) #include<reg52.h> //宏定義 #define uintunsigned int #define ucharunsigned char #defineData_ADC0809 P1 //管腳聲明 sbit Feng =P3^0; //ADC0809 sbit ST=P3^3; sbit EOC=P3^4; sbit OE=P3^2; //按鍵 sbit Key1=P3^5; sbit Key2=P3^6; sbit Key3=P3^7; //顯示數(shù)組 0-9+F ucharData_[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x71,0x3f}; sbit Wei1 =P2^7; sbit Wei2 =P2^6; sbit Wei3 =P2^5; sbit Wei4 =P2^4; //函數(shù)聲明 extern ucharADC0809(); voidDisplay(uchar X,uchar Data); void delay(uintt); //干燥度變量 uchar temp=0; //警界值變量 uchar FF=125; //顯示模式 uchar Mode=0; uchar p; void main() { while(1) { //正常模式 if(Mode==0) { //讀取AD值 temp=ADC0809(); for(p=0;p<30;p++) Display(0,temp); //判斷是否報警 if(temp>FF) { Feng=0; } else { Feng=1; } } //調(diào)整模式 else { Display(1,FF); } //功能鍵 if(Key3==0) { Feng=0; delay(100); while(Key3==0) { if(Mode==0) Display(0,temp); else Display(1,FF); } if(Mode==0) Mode=1; else Mode=0; Feng=1; } //增加 if(Key2==0&&Mode==1) { Feng=0; delay(100); while(Key2==0) { Display(1,FF); } FF++; if(FF==251) FF=250; Feng=1; } //減少 if(Key1==0&&Mode==1) { Feng=0; delay(100); while(Key1==0) { Display(1,FF); } FF--; if(FF==0xff) FF=0; Feng=1; } } } //ADC0809讀取信息 uchar ADC0809() { uchar temp_=0x00; //初始化高阻太 OE=0; //轉(zhuǎn)化初始化 ST=0; //開始轉(zhuǎn)換 ST=1; ST=0; //外部中斷等待AD轉(zhuǎn)換結(jié)束 while(EOC==0) //讀取轉(zhuǎn)換的AD值 OE=1; temp_=Data_ADC0809; OE=0; return temp_; } //延時 void delay(uintt) { uint i,j; for(i=0;i<t;i++) for(j=0;j<10;j++); } //顯示 X表示狀態(tài) Data表示數(shù)據(jù) voidDisplay(uchar X,uchar Data) { Wei1=1; Wei2=1; Wei3=1; Wei4=1; P0=0xff;
//正常模式 if(X==0) { P0=~Data_[11]; } //非正常 else { P0=~Data_[10]; } Wei1=0; Wei2=1; Wei3=1; Wei4=1; delay(10); Wei1=1; Wei2=1; Wei3=1; Wei4=1;
P0=~Data_[Data/100]; Wei1=1; Wei2=0; Wei3=1; Wei4=1; delay(10); Wei1=1; Wei2=1; Wei3=1; Wei4=1;
P0=~Data_[Data/10%10]; Wei1=1; Wei2=1; Wei3=0; Wei4=1; delay(10); Wei1=1; Wei2=1; Wei3=1; Wei4=1;
P0=~Data_[Data%10]; Wei1=1; Wei2=1; Wei3=1; Wei4=0; delay(10); Wei1=1; Wei2=1; Wei3=1; Wei4=1; }
|