当前位置: 首页 > news >正文

基于51单片机的车内防窒息检测报警系统

目录

 具体实现功能

设计介绍

资料内容

全部内容

资料获取


 具体实现功能

具体实现功能:
(1)检测车内温度及二氧化碳浓度并用lcd1602实时显示。
(2)当人体红外传感器检测到车内有人,且温度或二氧化碳浓度上升到一定值时,将会发送报警短信,同时也会触发语音模块向车外报警求救,还能自动降下窗户(或打开天窗)。
(3)如果车内无人,则不会触发报警,温度和二氧化碳浓度超过报警值时会亮灯。

仿真演示视频:

基于51单片机的车内防窒息检测报警系统

设计介绍

51单片机简介

51单片是一种低功耗、高性能CMOS-8位微控制器,拥有灵巧的8位CPU和可编程Flash,使得51单片机为众多嵌入式控制应用系统提供灵活、高效的解决方案。

本设计所使用的芯片可兼容以下所有的51系列单片机(包括AT系列和STC系列)。

资料内容

仿真实现(protues8.7)

本设计利用protues8.7软件实现仿真设计,具体如图。

程序(Keil5)

本设计利用KEIL5软件实现程序设计。

主函数如下:

///
void main (void)
{u8 key;u8 SmokeFlag = false;u8 TempFlag = false;u8 IntrudeFlag = false;char String[50];int i;wendu=check_wendu();		  //初始化时调用温度读取函数 防止开机85°CInit1602();			  				//调用初始化显示函数UsartInit();LCD_Write_String(0,0,"SET T:00   E:000");  //开机界面LCD_Write_String(1,0,"NOW T:00   E:000");  delay_ms(1000);wendu=check_wendu();		  //初始化时调用温度读取函数 防止开机85°Cwhile (1)        					//主循环{key=Key_Scan();					//按键扫描if(key==KEY_SET){Mode++;}for(i=0;i<10;i++){CO2=Adc0832(0);				//读取CO2值wendu=check_wendu();	  //读取温度值delay_ms(10);}switch(Mode)						//判断模式的值{case 0:								//监控模式{Display_1602(yushe_wendu,yushe_CO2,wendu,CO2);  //显示预设温度,预设CO2,温度值,CO2值if(CO2>=yushe_CO2){Led_Y=0;		  			//CO2指示灯亮}else{Led_Y=1;}if((CO2>=yushe_CO2)&&(s2==0))	  //CO2值大于等于预设值时{Buzzer=0;			  		//蜂鸣器报警Led_Y=0;		  			//CO2指示灯亮		sprintf(String,"CO2 Alert Start!\r\n");SendStr(String);}else					  					//CO2值小于预设值时{;}if(wendu>=(yushe_wendu*10)){Led_W=0;}else{Led_W=1;}if((wendu>=(yushe_wendu*10))&&(s2==0))	  //温度大于等于预设温度值时(为什么是大于预设值*10:因为我们要显示的温度是有小数点后一位,是一个3位数,25.9°C时实际读的数是259,所以判断预设值时将预设值*10){Led_W=0;		  			//打开温度报警灯sprintf(String,"Temperature Alert Start!\r\n");SendStr(String);}else					  					//温度值小于预设值时{;}if(((CO2>=yushe_CO2)||(wendu>=(yushe_wendu*10)))&&(s2==0)){Buzzer=0;motor=0;}else{Buzzer=1;motor=1;}break;}case 1://预设温度模式{SelectPosition(0,7) ;					//指定位置write_com(0x0d);							//阴影闪烁if(key==KEY_ADD)							//加键按下{yushe_wendu++;					    //预设温度值(阀值)加1if(yushe_wendu>=99)			 		//当阀值加到大于等于99时yushe_wendu=99;					 		//阀值固定为99LCD_Write_Char(0,6,yushe_wendu,2) ;//显示预设温度}if(key==KEY_MINUS)				 		//减键按下{if(yushe_wendu<=1)					//当温度上限值减小到1时yushe_wendu=1;          		//固定为1yushe_wendu--;							//预设温度值减一,最小为0LCD_Write_Char(0,6,yushe_wendu,2) ;//显示预设温度}break;			  								//执行后跳出switch}case 2:				//预设CO2模式{SelectPosition(0,15) ;				//指定位置	write_com(0x0d);							//打开显示 无光标 光标闪烁if(key==KEY_ADD)							//加键按下{if(yushe_CO2>=255)        //当阀值加到大于等于255时yushe_CO2=254;            //阀值固定为254yushe_CO2++;					    //预设CO2值(阀值)加1,最大为255LCD_Write_Char(0,13,yushe_CO2,3) ;//显示预设CO2}if(key==KEY_MINUS)						//减键按下{if(yushe_CO2<=1)					//当CO2上限值减小到1时yushe_CO2=1;          	//固定为1yushe_CO2--;							//预设温度值减一,最小为0	  LCD_Write_Char(0,13,yushe_CO2,3) ;//显示预设CO2}break;}default	:	{write_com(0x38);//屏幕初始化write_com(0x0c);//打开显示 无光标 无光标闪烁Mode=0;			//恢复正常模式break;}}if(s2==0)	   //热释电传感器接通{Led_G=0;}else{Led_G=1;}}} 

程序运行结果如图:

全部内容

全部资料包括程序(keil5)、protues仿真(protues8.7)、设计说明、答辩PPT、开发资料、资料使用介绍、仿真视频、最小系统介绍视频等。

资料获取

https://docs.qq.com/doc/DT3dKSFhhcFFNc2FI

http://www.xdnf.cn/news/881587.html

相关文章:

  • PPT转图片拼贴工具 v4.3
  • stm32G473的flash模式是单bank还是双bank?
  • Android7 Input(十)View 处理Input事件pipeline
  • centos部署k8s v1.33版本
  • EC2安装Docker
  • 【虚拟机版本号】如果忘记了版本号,这样查找版本号
  • 论文速读《DexWild:野外机器人策略的灵巧人机交互》
  • 互联网大厂Java面试:从Spring Cloud到Kafka的技术考察
  • Spring WebFlux 整合AI大模型实现流式输出
  • PostgreSQL 的扩展pg_prewarm
  • Qt 5.12 上读取 .xlsx 文件(Windows 平台)
  • Vue.js 组件:深入理解与实践
  • opencv如何在仿射变换后保留完整图像内容并自动裁剪
  • uniapp+vue3实现CK通信协议(基于jjc-tcpTools)
  • 《如何使用MinGW-w64编译OpenCV和opencv_contrib》
  • JAVA开发工具——IntelliJ IDEA
  • Python Rio 【图像处理】库简介
  • 【图像处理3D】:点云图是怎么生成的
  • Unity VR/MR开发-VR设备与适用场景分析
  • Unity VR/MR开发-VR开发与传统3D开发的差异
  • 在 Vue 的template中使用 Pug 的完整教程
  • 高敏感应用如何保护自身不被逆向?iOS 安全加固策略与工具组合实战(含 Ipa Guard 等)
  • 从内核到应用层:Linux缓冲机制与语言缓冲区的协同解析
  • 数据集-目标检测系列- 猴子 数据集 monkey >> DataBall
  • 数字孪生在建设智慧城市中可以起到哪些作用或帮助?
  • Go语言底层(三): sync 锁 与 对象池
  • 结合Jenkins、Docker和Kubernetes等主流工具,部署Spring Boot自动化实战指南
  • 如何通过外网访问内网?哪个方案比较好用?跨网远程连接网络知识早知道
  • 在Docker里面运行Docker
  • Windows11:解决近期更新后无法上网的问题