当前位置:首页 > 电加热炉温度控制系统设计
}
while ((sda==1)&&(i<255))i++; scl=0; flash();
////////从24c02的地址address中读取一个字节数据///// uchar x24c02_read(uchar address) { }
//////向24c02的address地址中写入一字节数据info///// void x24c02_write(uchar address,uchar info) { }
/***************定时器t0初始化*******************/ void init_timer0(void)
EA=0; start(); writex(0xa0); clock(); writex(address); clock(); writex(info); clock(); stop(); EA=1; delay1(50); uchar i; start(); writex(0xa0); clock(); writex(address); clock(); start(); writex(0xa1); clock(); i=readx(); stop(); delay1(10); return(i);
24
{
TMOD=0x01; //time0为定时器,方式1 TH0=0x3c; //预置计数初值 TL0=0xb0; EA=1;
ET0=1; TR0=1; }
/***********定时器t0中断子函数**************/
void timer0(void) interrupt 1 using 0 //定时器0方式1,50ms中断一次 {
TH0=0x3c; TL0=0xb0; mstcnt++;
if(mstcnt>=20 ) {seconde++; write=1; mstcnt=0; } }
/***********the main funtion*************/ void main(void) {
P1=0xff; //初始化p1口,全设为1
x24c02_init(); //初始化24C02 seconde=x24c02_read(4); minite=x24c02_read(6); hour=x24c02_read(8); delay_LCM(500); init_timer0( );
//延时500ms启动 //时钟定时器0初始化
initLCM( ); //LCD初始化
K=x24c02_read(2); //读出保存的数据赋于K
if(seconde>=60) {minite++; seconde=0;} if(minite>=60 ) {hour++; minite=0; } if(hour>=24 ) {hour=0;}
keyscan( ); //按键扫描
Init_DS18B20( ) ; //DS18B20初始化
DisplayListChar(0,0,str0); DisplayListChar(0,1,str1);
while (1) {
25
keyscan(); //按键扫描 ReadTemperature(); //温度采集 }
switch(set) //LCD根据工作模式显示
{
case 0:displayfun1();delay_LCM(1000);break; //正常工作显示 case 1:displayfun2();delay_LCM(1000);break; //调整时显示 case 2:displayfun3();delay_LCM(1000);break; //调整分显示 case 3:displayfun4();delay_LCM(1000);break; //温度设定 default:break;
}
keyscan( ); //相当于延时 if(ON_OFF==1) { }
else{outflag=0;OUT=1;}
if(write==1) //判断计时器是否计时一秒
if(temp1>=K+1){outflag=1;OUT=0;} if(temp1 delay_LCM(1000); if(temp1 //若温控标志位1, 控制LAMP动作 { write=0; //清零 delay_LCM(11); x24c02_write(6,minite); delay_LCM(11); x24c02_write(4,seconde); x24c02_write(2,K); } x24c02_write(8,hour); //在24c02的地址2中写入数据hour delay_LCM(11); } 26
共分享92篇相关文档