- #include<reg51.h>
- #include<intrins.h>
- #define uchar unsigned char
- #define uint unsigned int
- sbit cs=P3^5;
- sbit rd=P3^7;
- sbit wr=P3^6;
- sbit lcdrs=P2^0;
- sbit lcdrw=P2^1;
- sbit lcden=P2^2;
- sbit s1=P2^4;
- sbit s2=P2^5;
- sbit s3=P2^6;
- sbit s4=P2^7;
- sbit speaker=P3^2;
- sbit D1=P3^0;
- sbit D0=P3^1;
- unsigned char timer0h,timer0l,time;
- uchar code table[]="Humidity ";
- uchar code table1[]="%";
- uchar code table2[]="Low";
- uchar code table3[]="% High";
- uchar result,Low=202,High=216;
- void been(void)
- {
- unsigned char k,i;
- int sszymmh[20];
- TMOD=1; //?CT0??????1
- EA=1;
- ET0=1;//IE=0x82 //CPU???,CT0???
- i=0;
- while(i<35)
- {
- k=sszymmh[i]+7*sszymmh[i+1]-1;
- timer0h=FREQH[k];
- timer0l=FREQL[k];
- time=sszymmh[i+2];
- i=i+3;
- song();
- }
- }
- void delay(uint i) //????
- {
- uchar j;
- while(i--)
- {
- for(j=0;j<115;j++)
- {
- };
- }
- }
- void init_ad() //???AD
- {
- cs=0;
- }
- void start_ad() //??AD
- {
- cs=0;
- _nop_();
- wr=0;
- _nop_();
- rd=1;
- _nop_();
- wr=1;
- _nop_();
- _nop_();
- cs=1;
- _nop_();
- _nop_();
- }
- void read_ad() // ?AD?????
- {
- cs=0;
- _nop_();
- wr=1;
- _nop_();
- wr=0;
- _nop_();
- rd=0;
- _nop_();
- _nop_();
- result=P0;
- _nop_();
- _nop_();
- rd=1;
- _nop_();
- cs=1;
- _nop_();
- }
- void write_com(uchar com) //???????
- {
- lcdrs=0;
- P1=com;
- delay(5);
- lcden=1;
- delay(5);
- lcden=0;
- }
- void write_data(uchar result) //???????
- {
- lcdrs=1;
- P1=result;
- delay(5);
- lcden=1;
- delay(5);
- lcden=0;
- }
- void init() //??????
- {
- uchar num;
- lcden=0;
- write_com(0x38);
- write_com(0x0c);
- write_com(0x06);
- write_com(0x01); //????
- write_com(0x8a); //??????
- }
- void display() //?????
- {
- uint num, Low1,Low2,High1,High2;
- uchar x,y;
- x=result%100/10;
- y=result%10;
- Low1=Low%100/10;
- Low2=Low%10;
- High1=High%100/10;
- High2=High%10;
- write_com(0x80); //??????
- for(num=0;num<10;num++)
- {
- write_data(table[num]);//?????? ????Humidity
- delay(5);
- }
- write_com(0x8c);
- delay(5);
- write_data(table1[0]) ; //??%
- write_com(0x80+0x40);//?????????2?
- for(num=0;num<3;num++)
- {
- write_data(table2[num]);//?????? ?? ??Low
- delay(5);
- }
- write_com(0x80+0x45);
- for(num=0;num<7;num++)
- {
- write_data(table3[num]);//?????? ?? ??High
- delay(5);
- }
- write_com(0x80+0x43); //?????? ?Low??
- write_data(Low1+0x30);
- delay(5);
- write_data(Low2+0x30);
- delay(5);
- write_com(0x80+0x4c); //?????? High??
- write_data(High1+0x30);
- delay(5);
- write_data(High2+0x30);
- delay(5);
- write_data(table1[0]) ; //??%
- write_com(0x80+0x4e);//?????????2?
- }
- void keyscan()
- {
- if(s1==0)
- {
- delay(10);
- if(s1==0)
- {
- High++;
- if(High==99)
- High=98;
- while(!s1);
- }
- }
- if(s2==0)
- {
- delay(10);
- if(s2==0)
- {
- High--;
- if(High==01)
- High=02;
- while(!s2);
- }
- }
- if(s3==0)
- {
- delay(10);
- if(s3==0)
- {
- Low++;
- while(!s3);
- }
- }
- if(s4==0)
- {
- delay(10);
- if(s4==0)
- {
- Low--;
- while(!s4);
- }
- }
- }
- void delay2(unsigned char t)
- {
- unsigned char t1;
- unsigned long t2;
- for(t1=0;t1<t;t1++)
- {
- for(t2=0;t2<8000;t2++)
- {
- }
- }
- TR0=0;
- }
- void t0int() interrupt 1
- {
- TR0=0;
- speaker=!speaker;
- TH0=timer0h;
- TL0=timer0l;
- TR0=1;
- }
- void song()
- {
- TH0=timer0h;
- TL0=timer0l;
- TR0=1;
- delay2(time);
- }
- void main()
- {
- lcdrw=0;
- init_ad();
- init();
- Low=Low*0.39;
- High=High*0.39;
- while(1)
- {
- keyscan();
- start_ad();
- delay(10);
- read_ad();
- delay(10);
- result=result*0.39;
- display();
- delay(1000);
- if(result>50)
- {
- D0=0;;
- }
- }}
复制代码 |