#include<reg51.h> #include<intrins.h> #define uchar unsigned char #define uint unsigned int sbit L=P3^2; sbit N=P3^3; sbit DQ=P2^2; sbit key1=P3^5; sbit key2=P3^6; sbit key3=P3^7; sbit w1=P2^4; sbit w2=P2^5; sbit w3=P2^6; sbit w4=P2^7; uchar table[22]= {0x3F,0x06,0x5B,0x4F,0x66, 0x6D,0x7D,0x07,0x7F,0x6F, 0x77,0x7C,0x39,0x5E,0x79,0x71, 0x40,0x38,0x76,0x00,0xff,0x37}; uint wen_du; uint shang,xia; uchar dang; uchar flag; uchar d1,d2,d3; void delay(uint ms) { uchar x; for(ms;ms>0;ms--) for(x=10;x>0;x--); } void delay_18B20(uint i) { while(i--); } void Init_DS18B20() { uchar x=0; DQ=1; delay_18B20(8); DQ=0; delay_18B20(80); DQ=1; delay_18B20(14); x=DQ; delay_18B20(20); } uchar ReadOneChar() { uchar i=0; uchar dat=0; for (i=8;i>0;i--) { DQ=0; dat>>=1; DQ=1; if(DQ) dat|=0x80; delay_18B20(4); } return(dat); } void WriteOneChar(uchar dat) { uchar i=0; for (i=8;i>0;i--) { DQ=0; DQ=dat&0x01; delay_18B20(5); DQ=1; dat>>=1; } } void ReadTemperature() { uchar a=0; uchar b=0; uchar t=0; Init_DS18B20(); WriteOneChar(0xCC); WriteOneChar(0x44); delay_18B20(100); Init_DS18B20(); WriteOneChar(0xCC); WriteOneChar(0xBE); delay_18B20(100); a=ReadOneChar(); b=ReadOneChar(); wen_du=((b*256+a)>>4); } void display() { w1=0;P0=table[d1];delay(10); P0=0x00;w1=1;delay(1); w2=0;P0=table[16];delay(10); P0=0x00;w2=1;delay(1); w3=0;P0=table[d2]; delay(10); P1=0x00;w3=1;delay(1); w4=0;P0=table[d3];delay(10) P0=0x00;w4=1;delay(1); } void zi_keyscan() { if(key1==0) { delay(1000); if(key1==0)flag=1; while(key1==0); } while(flag==1) { d1=18;d2=shang/10;d3=shang%10; display(); if(key1==0) { delay(1000); if(key1==0)flag=2; while(key1==0); } if(key2==0) { delay(1000); if(key2==0) { shang+=1; if(shang>=40)shang=40; }while(key2==0); } if(key3==0) { delay(1000); if(key3==0) { shang-=1; if(shang<=20)shang=20; }while(key3==0); } } while(flag==2) { d1=17;d2=xia/10;d3=xia%10; display(); if(key1==0) { delay(1000); if(key1==0)flag=0; while(key1==0); } if(key2==0) { delay(1000); if(key2==0) { xia+=1; if(xia>=35)xia=35; }while(key2==0); } if(key3==0) { delay(1000); if(key3==0) { xia-=1; if(xia<=10)xia=10; }while(key3==0); } } } void zi_dong() { uchar i; d1=dang;d2=wen_du/10;d3=wen_du%10; zi_keyscan(); display(); if(wen_du<=xia){N=1;L=0;dang=0;} if((wen_du>xia)&&(wen_du<shang)) { dang=1; N=1; L=1; /* for(i=0;i<1;i++){N=0;display();zi_keyscan();} ½ for(i=0;i<2;i++){N=1;display();zi_keyscan();} for(i=0;i<1;i++){L=0;display();zi_keyscan();} for(i=0;i<2;i++){L=1;display();zi_keyscan();} */ } if(wen_du>=shang){L=1;N=0;dang=2;} }·····//余碼請下載源程序//
|