基于单片机的火灾报警器设计(8)

2019-03-22 23:08

东北大学2012届毕业设计说明书

unsigned int temperature(unsigned char Q) { unsigned char temp1,temp2; unsigned int temp; rst18B20(Q); write18B20(Q,0xcc); write18B20(Q,0x44);

rst18B20(Q); write18B20(Q,0xcc); write18B20(Q,0xbe);

temp1=read18B20(Q);//低8位 temp2=read18B20(Q);//高8位 temp=temp2; temp<<=8; temp+=temp1; temp=(unsigned int)(temp*0.625); //保留一位小数 return temp; }

void seg7(unsigned char v,unsigned char t);

//function2: 10key value void keyValue() interrupt 0{

unsigned char temp;

第32页 共37页

东北大学2012届毕业设计说明书

EX0=0; EA=0; temp=P3&0xf8; switch(temp){ case 0x38:keyV= 1;//0011 1000 break;

case 0xf0:keyV= 2;//1111 0000 break;

case 0xe8:keyV= 3;//1110 1000 break;

case 0xe0:keyV= 4;//1110 0000 break;

case 0xd8:keyV= 5;//1101 1000 break;

case 0xd0:keyV= 6;//1101 0000 break;

case 0xc8:keyV= 7;//1100 1000 break;

case 0xc0:keyV= 8;//1100 0000 break;

case 0xb8:keyV= 9;//1011 1000 break;

case 0x78:keyV= 10;//0111 1000 break; }

if(keyV>=1&&keyV<=8){ checkNum=keyV;

alter=1; //check the only one

第33页 共37页

东北大学2012届毕业设计说明书

// seg7(checkNum,1);//display the only number to check

}else if(keyV==9){

cancel++;

}else if(keyV==10){ alter++;

//calculate the total number the check alternately

if(alter>8) alter=1;

} EA=1; EX0=1;

}

//function3: 7seg

void seg7(unsigned char value,unsigned char lock){ if(value%2==1) AA=1; else AA=0; value/=2;

if(value%2==1) BB=1; else BB=0; value/=2;

if(value%2==1) CC=1; else CC=0; value/=2;

if(value%2==1) DD=1; else DD=0; if(lock==1){

//total number

lock1=1; delaynms(20); lock1=0; delaynms(20);

lock2=0;

第34页 共37页

东北大学2012届毕业设计说明书

}else if(lock==2){

//fire number

lock2=1; delaynms(20); lock2=0; delaynms(20); lock1=0;

}

}

unsigned char getQ(unsigned char i){ unsigned char temp=0x01; temp<<=(i-1); return temp; }

void checkFun(unsigned char i){ unsigned char temp=0x01; temp<<=(i-1); dense=0xff; delaynms(1);

tmpT=temperature(getQ(i)); if((dense&temp)==0){

//check dense

while(((cancel%2)==0)&&((dense&temp)==0)){ led=0; buzz=0; seg7(i,2);

}

}else if(tmpT>stdT){

//check temperature

while(((cancel%2)==0)&&(tmpT>stdT)){

tmpT=temperature(getQ(i));

led=0;

第35页 共37页

东北大学2012届毕业设计说明书

}

void main(){

unsigned char i=0; //circle parameter; unsigned char temp=0x01; unsigned char n=0x04; init_ext0(); cancel=0; while(1){

seg7(alter,1);

if(alter==1) checkFun(checkNum); else { }

//显示指定位置的温度

for(i=1;i<=alter;i++){ }

checkFun(i);

}

}

buzz=0; seg7(i,2);

led=1; buzz=1; seg7(0,2);

/* tmpT=temperature(getQ(checkNum));

seg7(tmpT/100,2); delaynms(500);

seg7(tmpT0/10,2); delaynms(500); seg7(tmpT,2); delaynms(500); */

第36页 共37页


基于单片机的火灾报警器设计(8).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:2011文管二级考试资料 - 图文

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: