第一范文网 - 专业文章范例文档资料分享平台

(完整word版)基于单片机的火灾报警器设计与实现

来源:用户分享 时间:2025/8/13 1:43:29 本文由loading 分享 下载这篇文档手机版
说明:文章内容仅供预览,部分内容可能不全,需要完整文档或者需要复制内容,请下载word后使用。下载word有问题请添加微信号:xxxxxxx或QQ:xxxxxx 处理(尽可能给您提供完整文档),感谢您的支持与谅解。

桂林电子科技大学毕业设计(论文)报告用纸

/*************读取温度的值 读出来的是小数***************/ 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

(完整word版)基于单片机的火灾报警器设计与实现.doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
本文链接:https://www.diyifanwen.net/c8gbp19rtkv3jk4h7sglc72h8v7sa2300vg7_6.html(转载请注明文章来源)
热门推荐
Copyright © 2012-2023 第一范文网 版权所有 免责声明 | 联系我们
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:xxxxxx 邮箱:xxxxxx@qq.com
渝ICP备2023013149号
Top