如果您无法下载资料,请参考说明:
1、部分资料下载需要金币,请确保您的账户上有足够的金币
2、已购买过的文档,再次下载不重复扣费
3、资料包下载后请先用软件解压,在使用对应软件打开
Main.c#include<reg51.h>#include<key.c>#include<18B20.H>unsignedcharcodeseven_bit[]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80};unsignedcharcodeseven_seg[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xff};unsignedchartemp;unsignedcharhigh_shi,high_ge,low_shi,low_ge,temp_shi,temp_ge;voiddisplay(unsignedchara,unsignedcharb)//显示函数{wr=0;P2=0xa0;//关蜂鸣器P0=0x00;//P2&=0x1f;P2=0x80;//关LEDP0=0xff;//P2&=0x1f;P2=0xc0;//位选P0=seven_bit[a];//P2&=0x1f;P2=0xe0;//段选P0=0xff;//清屏,很重要P0=seven_seg[b];//P2&=0x1f;}voidtimer0_init(){TMOD=0x01;TH0=(65535-500)/256;TL0=(65535-500)%256;EA=1;ET0=1;TR0=1;}voidtimer0_isr()interrupt1{unsignedinti,n;TH0=(65535-500)/256;TL0=(65535-500)%256;i++;if(i>=1000){i=0;temp=DS18B20_ReadTemp();//得到温度high=read_24c02add(0);low=read_24c02add(1);temp_shi=temp/10;temp_ge=temp%10;}switch(n){case0:display(n,high/10);break;case1:display(n,high%10);break;case2:display(n,low/10);break;case3:display(n,low%10);break;case4:display(n,10);break;case5:display(n,10);break;case6:display(n,temp_shi);break;case7:display(n,temp_ge);break;}if(temp<low)//温度低于下限时开继电器{P2=0xa0;P0=0x10;delay(2);P0=0x00;key();}if(temp>high)//温度低于下限时开继电器{P2=0xa0;P0=0x40;delay(2);P0=0x00;key();}wr=1;n++;if(n>7)n=0;}voidmain(){timer0_init();DS18B20_Init();while(1){key();}}Key.c#include<24c02.c>sbitkey4=P3^3;sbitkey5=P3^2;sbitkey6=P3^1;sbitkey7=P3^0;sbitwr=P3^6;charhigh=32,low=25;charflag_high,flag_low;voiddelay(unsignedcharaa){unsignedcharm,n;for(m=0;m<aa;m++)for(n=0;n<110;n++);}voidkey(){init_24c02();if(key4==0)//加温度上限{delay(50);if(key4==0){while(!key4);high++;if(high>99)high=0;write_24c02add(0,high);//地址1保存数据0xf0}}if(key5==0)//加温度下限{