stm32毕设 单片机酒驾酒精检测系统(源码+硬件+论文)

您所在的位置:网站首页 交警用的酒精测试仪是实时上传的吗 stm32毕设 单片机酒驾酒精检测系统(源码+硬件+论文)

stm32毕设 单片机酒驾酒精检测系统(源码+硬件+论文)

2024-07-02 01:18| 来源: 网络整理| 查看: 265

文章目录 0 前言1 主要功能2 硬件设计(原理图)3 核心软件设计4 实现效果5 最后

0 前言

🔥 这两年开始毕业设计和毕业答辩的要求和难度不断提升,传统的毕设题目缺少创新和亮点,往往达不到毕业答辩的要求,这两年不断有学弟学妹告诉学长自己做的项目系统达不到老师的要求。

为了大家能够顺利以及最少的精力通过毕设,学长分享优质毕业设计项目,今天要分享的是

🚩 毕业设计 单片机酒驾酒精检测系统(源码+硬件+论文)

🥇学长这里给一个题目综合评分(每项满分5分)

难度系数:3分工作量:3分创新点:4分

🧿 项目分享:见文末!

在这里插入图片描述

1 主要功能

主要功能有:

1.使用MQ-3检测驾驶人员是否存在酒驾行为。

2.使用LCD1602实时显示驾驶人员体内酒精含量,当驾驶人员体内酒精含量超过了预设阈值,蜂鸣器会自动进行报警,伴随红色指示灯点亮,继电器吸合。

3.单片机:将采集到的酒精含量送至显示屏,并与阀值进行比较,超标报警,未超标绿色指示灯常亮,表示可以通行。

4.阀值设置按键:报警阀值可通过三个按键进行任意调整。

5.继电器:模拟自动熄火装置,当酒精含量超标时,继电器自动吸合,模拟汽车自动熄火。

6.蜂鸣器报警:当检测到酒精含量超标后,蜂鸣器自动报警(并且红色指示灯点亮,表示不可通行)。

本设计主要由酒精探测传感器电路、单片机、灯光报警电路、负载驱动电路、控制程序和编解码程序等组成。

在这里插入图片描述

2 硬件设计(原理图)

在这里插入图片描述

PCB电路

在这里插入图片描述

3 核心软件设计

在这里插入图片描述

关键代码

#include //包含头文件,一般情况不需要改动,头文件包含特殊功能寄存器的定义 #include "intrins.h" #define u8 unsigned char #define u16 unsigned int #define uchar unsigned char #define uint unsigned int uchar yushe_yanwu=45; //酒驾预设值 uchar yanwu; //用于读取ADC数据 //运行模式 uchar Mode=0; =2是设置酒驾阀值 =0是正常监控模式 //管脚声明 sbit LED_yanwu= P1^5; //酒驾报警灯 sbit baojing= P3^3; //蜂鸣器接口 //按键 sbit Led_Reg =P1^5; //红灯 sbit Led_Yellow =P1^4; //黄灯 sbit Buzzer =P3^3; //蜂鸣器 //void delay(uint z) //延时函数大约延时z ms //{ // uint i,j; // for(i=0;i0;y--); } void LCD_WriteData(u8 dat) { if(dat&0x01)D0=1;else D0=0; if(dat&0x02)D1=1;else D1=0; if(dat&0x04)D2=1;else D2=0; if(dat&0x08)D3=1;else D3=0; if(dat&0x10)D4=1;else D4=0; if(dat&0x20)D5=1;else D5=0; if(dat&0x40)D6=1;else D6=0; if(dat&0x80)D7=1;else D7=0; } //写命令 void write_com(uchar com) { LCDRS=0; LCD_WriteData(com); // DAT=com; LCDdelay(5); LCDEN=1; LCDdelay(5); LCDEN=0; } //写数据 void write_data(uchar date) { LCDRS=1; LCD_WriteData(date); // DAT=date; LCDdelay(5); LCDEN=1; LCDdelay(5); LCDEN=0; } /*------------------------------------------------ 选择写入位置 ------------------------------------------------*/ void SelectPosition(unsigned char x,unsigned char y) { if (x == 0) { write_com(0x80 + y); //表示第一行 } else { write_com(0xC0 + y); //表示第二行 } } /*------------------------------------------------ 写入字符串函数 ------------------------------------------------*/ void LCD_Write_String(unsigned char x,unsigned char y,unsigned char *s) { SelectPosition(x,y) ; while (*s) { write_data( *s); s ++; } } //======================================================================== // 函数: void LCD_Write_Char(u8 x,u8 y,u16 s,u8 l) // 应用: LCD_Write_Char(0,1,366,4) ; // 描述: 在第0行第一个字节位置显示366的后4位,显示结果为 0366 // 参数: x:行,y:列,s:要显示的字,l:显示的位数 // 返回: none. // 版本: VER1.0 // 日期: 2013-4-1 // 备注: 最大显示65535 //======================================================================== void LCD_Write_Char(u8 x,u8 y,u16 s,u8 l) { SelectPosition(x,y) ; if(l>=5) write_data(0x30+s/10000%10); //万位 if(l>=4) write_data(0x30+s/1000%10); //千位 if(l>=3) write_data(0x30+s/100%10); //百位 if(l>=2) write_data(0x30+s/10%10); //十位 if(l>=1) write_data(0x30+s%10); //个位 } /*1602指令简介 write_com(0x38);//屏幕初始化 write_com(0x0c);//打开显示 无光标 无光标闪烁 write_com(0x0d);//打开显示 阴影闪烁 write_com(0x0d);//打开显示 阴影闪烁 */ //1602初始化 void Init1602() { uchar i=0; write_com(0x38);//屏幕初始化 write_com(0x0c);//打开显示 无光标 无光标闪烁 write_com(0x06);//当读或写一个字符是指针后一一位 write_com(0x01);//清屏 } void Display_1602(yushe_wendu,yushe_yanwu,c,temp) { //显示预设酒精 LCD_Write_Char(0,6,yushe_wendu,2) ; //显示预设酒驾 LCD_Write_Char(0,13,yushe_yanwu,3) ; //时时酒驾 LCD_Write_Char(1,13,temp,3) ; } 4 实现效果

在这里插入图片描述

在这里插入图片描述

5 最后

包含内容

在这里插入图片描述

🧿 项目分享:见文末!



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3