文档详情

2025《基于单片机烟雾检测系统的软件设计案例》1300字.docx

发布:2025-05-26约2.68千字共6页下载文档
文本预览下载声明

基于单片机烟雾检测系统的软件设计案例综述

目录

TOC\o1-3\h\u67741.1主程序流程设计 1

254401.2温度检测子函数设计 2

283121.3按键检测子函数设计 3

321261.4报警子函数设计 5

224801.5显示模块子流程设计 6

1.1主程序流程设计

主函数在程序设计过程中起着重要的作用,而主函数的独立存在为我们建立了一个独立的进程,使得我们的程序员具有了一个对应的主函数入口,可以对其它的进程函数进行相应的声明而且也无需再重新进行定义。主函数方法编写时我们应该严格遵循简洁、适当的编写原则,便于后期检查。具体器件定义的功能应该编写入相应的子函数里面去,后期直接调用[13]。

由下图4-1主程序流程图可知,首先单片机进行I/O初始化,具体就是初始化时钟和串口,然后传感器预热,简单来说,就是烟雾传感器中AD转换芯片需要进行初始化,内部电路自检或者数据缓冲这样,程序的全部初始化工作完成后,系统则会自动进入一个实时运行的状态,对周围环境中的烟雾浓度及温度进行实时检测。

在整个系统实时工作过程中,对采集到的信号进行数模转化送到单片机,尔后单片机通过控制LCD进行显示,同时进行检测数据与预设报警上限值进行比较,根据比较结果,由主控单元决定后续的执行操作。

图4-SEQ图4-\*ARABIC1主程序处理流程图

1.2温度检测子函数设计

DS18B20芯片实时读取检测到的信息,自读取温度的过程中,首先对DS18B20芯片进行初始化,然后先读取温度的低字节,再次读取高字节,在芯片内部进行高位低位转化,并最终将周围的温度读取出来,并在显示液晶屏上显示。若读取的温度大于设定的初始值时,报警系统将启动报警,否则不进行报警。

uintread_temp()

{

uintvalue;

ucharlow;

delay_uint(50); //500us

init_18b20(); //初始化18b20

write_18b20(0xcc); //跳过64位ROM

write_18b20(0xbe); //发出读取暂存器命令

EA=0;

low=read_18b20(); //读温度低字节

value=read_18b20();//读温度高字节

EA=1;

value=8;

value|=low;

value*=0.0625;

returnvalue;

其温度程序流程图如图4-2所示。

图4-SEQ图4-\*ARABIC2温度检测子流程图

1.3按键检测子函数设计

由第3章的硬件电路模块介绍可知,本文设计烟雾报警系统用的按键主要有手动报警及阈值设置按键,具体的功能描述如下:

手动报警就是,你按下系统就会一直报警,即蜂鸣器一直响。

设置增加阈值功能,就是在设计系统中,将温度报警或者烟雾报警的上限阈值设置高一点。

设置减少阈值功能,功能和上面一致,作用相反即可。

进入设置功能,就是按下此按键,系统进入功能设置。按键部分的子函数代码分析如下所示:

voidkey_with()

{

if(key_can==4) //紧急报警键手动报警

{

menu_1=0;

}

if(menu_1==0)

init_1602();//初始化显示

}

if(menu_1==0)

{

if((key_can==2)||(key_can==3))

shoudong=0;//取消手动报警

}

if(menu_1==1) //设置烟物报警

{

if(key_can==2)

{

s_dengji++; //烟物报警值加1

if(s_dengji=700)

s_dengji=700;

}

if(key_can==3)

{

s_dengji--; //烟物报警值减1

if(s_dengji=1)

s_dengji=1;

}

}

1.4报警子函数设计

符合程序判断机制时,蜂鸣器会发出一种报警鸣声,对应于此时LED灯闪亮起,并伴随着点击风扇的开启,风扇进行烟雾的驱散和温度的降低。当烟雾值降低至设定初始值之下时,蜂鸣器停止发出报警声,报警取消,此时电机风扇也停止运行。设置完成后,程序运行,报警检测进行环境的监控。

voidclock_h_l()

{

staticu8value;

if((yuzhi=s_yuzhi)||(tempe

显示全部
相似文档