2025《基于单片机烟雾检测系统的软件设计案例》1300字.docx
基于单片机烟雾检测系统的软件设计案例综述
目录
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