资料编号:079
功能介绍:采用stm32单片机作为主控CPU,采用MQ3传感器采集酒精浓度,采用红外接触传感器感应驾驶员上车时间,OLED显示酒精浓度和驾驶时间,当酒精浓度超过阈值(程序可调),蜂鸣器报警,当驾驶时间大于设置值(程序可调),蜂鸣器进行提醒,用来提醒疲劳驾驶,程序中文注释,新手容易看懂,全套实物资料齐全:
下面是实物演示视频和相关实物图片
下面是程序部分展示(程序有中文注释,新手容易看懂)
程序部分展示:
void GPIOB_init(void)
{
GPIO_InitTypeDef GPIO_InitStructure;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE);//GPIO B 时钟打开
//==PB5 输出
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5;//指定管脚
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_10MHz;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;// 做PWM
//GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;//做led控制
GPIO_Init(GPIOB, &GPIO_InitStructure);//初始化GPIOB
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_14;//指定管脚LED背光
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_10MHz;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;// 做输出
GPIO_Init(GPIOB, &GPIO_InitStructure);//初始化GPIOB
}
int main()
{
TIMER2_init(999,71);
SysTick_Init(72);
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2); //中断优先级分组 分2组
USART1_Init(9600);
LED_Init();
OLED_Init();
OLED_ColorTurn(0);//0正常显示,1 反色显示
OLED_DisplayTurn(0);//0正常显示 1 屏幕翻转显示
OLED_Clear();
DHT11_Init ();
KEY_Init();
beep1=1;
Adc_Init();
while(1)
{
OLED_Refresh();
adcx=Get_Adc_Average(ADC_Channel_0,10);//读取酒精值
temp=(float)adcx/4096*3.3;
temp=temp*100-100;
if(temp<0) temp=0;
temp1=temp;
OLED_ShowString(1,20,"MQ3:",8,1);//显示酒精值
OLED_ShowNum(35,20,temp,3,8,1);
OLED_ShowString(60,20,"mg/L",8,1);
if(DHT11_Data .temp_int>29||DHT11_Data .humi_int>90||temp>20||num>60) beep1=0;//超过阈值蜂鸣器报警
else beep1=1;
if(K1==0) num++;//检测驾驶时间
OLED_ShowString(0,40,"TIME:",8,1);//显示时间
OLED_ShowNum(35,40,num,4,8,1);
}
}
程序打开方法:采用keil5打开,公众号有软件安装包
原理图采用【AD】altium designer打开,公众号有安装包
下面是资料包里面包含的相关文件展示
付费后即可在下方获取资料下载链接