烟雾报警器课程设计总结报告Word文件下载.docx

上传人:b****8 文档编号:22522268 上传时间:2023-02-04 格式:DOCX 页数:22 大小:2.22MB
下载 相关 举报
烟雾报警器课程设计总结报告Word文件下载.docx_第1页
第1页 / 共22页
烟雾报警器课程设计总结报告Word文件下载.docx_第2页
第2页 / 共22页
烟雾报警器课程设计总结报告Word文件下载.docx_第3页
第3页 / 共22页
烟雾报警器课程设计总结报告Word文件下载.docx_第4页
第4页 / 共22页
烟雾报警器课程设计总结报告Word文件下载.docx_第5页
第5页 / 共22页
点击查看更多>>
下载资源
资源描述

烟雾报警器课程设计总结报告Word文件下载.docx

《烟雾报警器课程设计总结报告Word文件下载.docx》由会员分享,可在线阅读,更多相关《烟雾报警器课程设计总结报告Word文件下载.docx(22页珍藏版)》请在冰豆网上搜索。

烟雾报警器课程设计总结报告Word文件下载.docx

2.2.1 

数字温度传感器DS18B20,具有独特的单总线接口方式,需一根总线就能实现控制模块与DS18B20之间的半双工通信。

DS18B20是集传感元件和转换电路于一体的小芯片上。

另外,DS18B20也支持"

一线总线"

接口,测量温度范围为-55°

C~+125°

C,在-10~+85°

C范围内。

现场温度直接以"

的数字方式传输,大大提高了系统的抗干扰性。

 

2.2.2工作原理 

DS18B20温度传感器的内部存储器包括一个高速暂存RAM和一个非易失性的可擦除的EERAM。

高速暂存RAM的结构为8字节的存储器,结构如图1所示。

第3和第4字节是TH和TL的拷贝,是易失的,每次上电复位时被刷新。

第5个字节为配置寄存器,它的内容用于确定温度值的数字转换分辨率。

DS18B20工作时按此寄存器中的分辨率将温度转换为相应精度的数值。

该字节各位的定义热图二所示。

低5位一直为1,TM是测试模式位,用于设置DS18B20在工作模式还是在测试模式。

在DS18B20出厂时该位被设置为0,用户不要改动,R1和R0决定温度转换得精度位数,即用来设置分辨率,定义方法见表1。

图一

图二

2.2.3供电方式

采用电源供电方式,此时DS18B20的1脚接地,2脚作为信号线,3脚接电

2.3 

烟雾报警器电路MQ2

MQ2烟雾传感器,有只针状管脚,其中4个用于信号取出,2个用于提供加热电流。

当烟雾扩散时,烟雾传感器感应到烟雾时,继电器打到NO,风扇开始工作,马达转动,风扇产生吸力将烟雾吸入到装有活性炭和负离子的过滤外壳中,排清新干净的气体

2.4 

信号调理及放大整形模块, 

LM358芯片

LM358 

内部包括有两个独立的、高增益、内部频率补偿的双运算放大器。

当P1.5为0时报警。

2.5 

显示模块LED 

采用LED数码管显示

2.6 

报警电路

用蜂鸣器作报警提示音,加发光二极管,声光结合充分突出了紧急提示信号的特点。

2.7按键分析

四个按键的功能分别为:

第一个按键是结束选择,按一下表示显示管进行显示当时温度;

第二个键是减键,对设定的温度进行减一;

第三个键是加键;

第四个键是进入键,按一下表示进入设置温度模式。

2.8复位电路

原理:

VCC上电时,C3充电,在10K电阻上出现电压,使得单片机复位;

几个毫秒后,C充满,10k电阻上电流降为0,电压也为0,使得单片机复位。

工作期间,按下S4,C放电,在10K电阻上出现电压,使得单片机复位。

S松手,C又充电,几个毫秒后,单片机进入工作状态。

第三章流程图设计

3.1电路系统模块

3.2主程序流程图

3.3温度报警子程序

3.4烟雾报警子程序图

3.5对18B20写程序流程图

3.6对18B20读8为数据流程图

3.7温度值转换流程图

3.818B20读取温度流程图

第四章电路实验与调试

4.1焊接

4.2软件设计

#include<

reg52.h>

#include"

18b20.h"

intrins.h>

#defineuintunsignedint//宏定义

#defineucharunsignedchar//宏定义

#definedateP1//数码管段选

uinttemp,alarm_temp;

//定义温度,设定温度

bitkey_lock,chang_flag;

bitzerotemp_flag;

//负温度标志位

ucharcodeLED[]={0xC0,0xF9,0xA4,

0xB0,0x99,0x92,0x82,0xF8,0x80,0x90};

//三位共阳极数码管0~9的断码

//数码管位定义

sbitge=P1^2;

//个位

sbitshi=P1^1;

//十位

sbitbai=P1^0;

//百位

sbitbell=P2^7;

//蜂鸣器定义

sbitMQ=P1^5;

//MQ-2定义

sbitDQ=P1^4;

//18B20定义

//按键定义

sbitkey0=P2^0;

sbitkey1=P2^1;

sbitkey2=P2^2;

sbitkey3=P2^3;

voiddelay_ms(uintxms)

{//延时子程序

uinti,j;

for(i=xms;

i>

0;

i--)//i=xms即延时约xms;

for(j=110;

j>

j--);

}

voiddelay_us(uintz)

{//微妙级延时

while(z--)

_nop_();

voiddisplay(uintx)

{//数码管显示子程序

//取一温度值x

uinttemp1;

temp1=x;

temp1=temp1%1000;

//使温度值不超过三位有效数

//动态显示

//显示个位

ge=0;

//开显示

date=LED[temp1%10];

//将temp1的个位显示出来

delay_ms

(2);

//延时2ms

ge=1;

//关显示

//显示十位

shi=0;

date=LED[temp1%100/10]&

0x7f;

//将temp1的十位显示出来,并显示小数点dp位

shi=1;

//显示百位

bai=0;

date=LED[temp1/100];

//将temp1的百位显示出来

bai=1;

//关显示

voidalarm(void)

{//报警子程序

if((temp>

alarm_temp)|(MQ==0))//如果温度大于设定值或MQ2=0

{

bell=0;

//蜂鸣器响

}

else

bell=1;

//蜂鸣器不响

/*****************18B20程序******************/

voidfuwei(void)

{//18B20复位

DQ=0;

delay_us(50);

//600us

DQ=1;

delay_us(5);

//70us

ucharread_18B20(void)

{//从18B20读取8位数据

uchari,dat;

//从最低位开始接收

for(i=0;

i<

8;

i++)

{

dat>

>

=1;

//数据右移一位

//延时1us

//释放总线

//延时2us后在读取,不然读取值会紊乱,很关键!

if(DQ)

dat|=0x80;

//如果接收到的是1,则最高位置为1

delay_us

(2);

//延时40us

returndat;

voidwrite_18B20(uchardat)

{//对18B20写8位数据

uchari;

//延时10us

DQ=(bit)(dat&

0x01);

//从最低位开始发送

//右移一位

delay_us

(1);

//延时40us

//释放总线

voidchangetemp(void)

{//温度值转换

uintTemp_L,Temp_H;

Temp_L=read_18B20();

//读取低八位

Temp_H=read_18B20();

//读取高八位,当温度为负数时temp(7~4)为1,反之为0

if(((bit)(Temp_H&

0x80)))

zerotemp_flag=1;

//温度为负数标志位

//负温度计算

Temp_H&

=0x0f;

temp=(Temp_H<

<

8|Temp_L)*0.625;

//保存一位小数

voidread_temp(void)

{//从18B20读取温度

fuwei();

//复位

delay_us(10);

//延时

write_18B20(0xcc);

//跳过读取序列号

write_18B20(0x44);

//开始转换温度

//跳过读取序列号

write_18B20(0xbe);

//读暂存指令

changetemp();

//读取转换温度

intmain(void)

{//主程序

alarm_temp=220;

//设定温度初始值

read_temp();

//18b20测温

delay_ms(500);

//延迟500ms

while

(1)

read_temp();

display(temp);

//显示测到的温度

alarm();

//报警

if(!

key0)//如果key0=0,则进入温度修改状态

{

delay_ms

(2);

//延迟2ms,消抖

if(!

key0)//如果key0=0,则确定键按下,显示温度

chang_flag=1;

}

while(chang_flag)

if(key1&

key2)

key_lock=1;

//如果key1&

key2=1,则无效

key1)

{

delay_ms

(2);

if(!

{

if(key_lock)

{

alarm_temp+=10;

//alarm_temp+10=alarm_temp(温度加1)

if(alarm_temp>

990)//如果数码管前两位大于99,则清零

alarm_temp=0;

key_lock=0;

}

}

}

alarm_temp-=10;

//alarm_temp+10=alarm_temp(温度减1)

1000)//如果三位数码管都是0,则减一后变为990

alarm_temp=990;

key3)

chang_flag=0;

display(alarm_temp);

//显示设定温度

4.3调试与处理出现问题

1.温度显示不正确,发现DS18B20电路少接一个电阻。

2.程序无法上电,发现复位程序出现虚焊。

第五章设计总结

在二周的电子课程设计中,这次的实验不仅加强了硬件的使用能力,还加强了软件设计能力。

在这之中有效的巩固了本学期所学的专业知识,加强了电子实物制作的动手能力。

在这次的实验设计中我们首先要做了就是画硬件图,在脑海里形成一个总的构思,包括主程序流程图,按键处理流程图,更新当前时间流程图,更新显缓存流程图等,这是比较难的,开始我们毫无思路,在老师的精心指导下最终成功的画出。

焊接是比较简单的,一般一个下午就可以完成,最重要的是焊接中很容易出现的虚焊问题必须认真对待。

最后是程序设计与调试,程序的话应该说是上学期学过的东西运用运用而已,但是总是有些被遗忘了,在编程的时候会遇到或多或少的问题,最后也是通过参考别人的程序才成功。

经过这次设计,我认识到自己还有很多的不足,只有将课本上的理论知识结合实践不断练习,不断总结提炼,反复思考实践中的经验教训,才能更好的,将课本知识化为自己的知识。

希望在以后的学习中能更加努力,学习好这门专业。

(附录一)主电路图

(附录二)课程设计元器件清单表

器件名称

型号

数量

单片机

STC89C52

1

温度传感器

DS18B20

1

运算放大器

LM358

烟雾传感器

MQ2

底座

DIP40,DIP8

各一个

数码管

共阳三连体

三极管

8550

3

晶振

12MHZ

电容

33PF

4

22UF

2

电阻

10K

10

1K

4.7K

470

电位器

103,102

按键

20*30CM

5

蜂鸣器

发光二极管

排针

万能板

(资料素材和资料部分来自网络,供参考。

可复制、编制,期待你的好评与关注)

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 人文社科 > 法律资料

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1