桂林电子科技大学毕业设计(论文)报告用纸
/*************读取温度的值 读出来的是小数***************/ uint read_temp() { uint value; uchar low; init_18b20(); //初始化18b20 write_18b20(0xcc); //跳过64位ROM write_18b20(0x44); //启动一次温度转换命令 delay_uint(50); //500us init_18b20(); //初始化18b20 EA = 0; write_18b20(0xcc); //跳过64位ROM write_18b20(0xbe); //发出读取暂存器命令 low = read_18b20(); //读温度低字节 value = read_18b20(); //读温度高字节 EA = 1; value <<= 8; //把温度的高位左移8位 value |= low; //把读出的温度低位放到value的低八位中 if((value & 0xf000) == 0xf000) { flag_wd_z_f = 1; } //负温度 else flag_wd_z_f = 0; //正温度 value *= 0.625; //转换到温度值 小数 return value; //返回读出的温度 }
/*************定时器0初始化程序***************/ void time_init() { TMOD = 0X01; //定时器0、定时器1工作方式1 EA = 1; ET0 = 1;TR0 = 1; }
/****************主函数***************/ void main() { time_init(); //初始化定时器 temperature = read_temp(); //先读出温度的值 delay_1ms(500); temperature = read_temp(); //先读出温度的值 while(1) { temperature = read_temp(); //先读出温度的值 delay_1ms(250); temperature = read_temp(); //先读出温度的值
18 / 20
桂林电子科技大学毕业设计(论文)报告用纸
if(!key) //烟雾传感器有信号 { delay_uint(10); if(!key){ led_g=1;led_r=0;beeper=0;} } else { led_g=0;led_r=1;beeper=1;} //烟雾传感器无信号 if(temperature >= 750) {led_g=1;led_r=0;beeper=0;} //超过75℃蜂鸣器报警 if(flag_wd_z_f == 1) //负温度 { smg_i = 4; temperature+=575; //补差 temperature=~temperature; //取反 dis_smg[0] = smg_du[temperature % 10]; //取温度的小数显示 dis_smg[1] = smg_du[temperature / 10 % 10]|0x20; //取温度的个位显示 dis_smg[2] = smg_du[temperature / 100 % 10] ; //取温度的十位显示 dis_smg[3] = 0x80; //负号 }else { if(temperature >= 1000) { smg_i = 4; dis_smg[0] = smg_du[temperature % 10]; //取温度的小数显示 dis_smg[1] = smg_du[temperature / 10 % 10]|0x20 ; //取温度的个位显示 dis_smg[2] = smg_du[temperature / 100 % 10] ; //取温度的十位显示 dis_smg[3] = smg_du[temperature / 1000 % 10] ; //取温度的百位显示 }else { smg_i = 3; dis_smg[0] = smg_du[temperature % 10]; //取温度的小数显示 dis_smg[1] = smg_du[temperature / 10 % 10]|0x20 ; //取温度的个位显示 dis_smg[2] = smg_du[temperature / 100 % 10] ; //取温度的十位显示 }} delay_1ms(300); }}
/*************定时器0中断服务程序***************/ void time0_int() interrupt 1 { TH0 = 0xf8; TL0 = 0x30; //2ms display(); //数码管显示函数 }
19 / 20
桂林电子科技大学毕业设计(论文)报告用纸
参考文献
【1】百度文库,基于单片机火灾报警器的设计. 【2】叶俊明、苏鹏鉴,单片机实验指导书,2014.
【3】张秀国,单片机C语言程序设计教程与实训, 2012. 【4】姚宏坤,C语言程序设计项目教程,2012 【5】郭天祥,十天学会单片机视频. 【6】张建忠,传感器与检测技术,2014.
20 / 20
相关推荐: