毕业设计 基于STM32的单片机智能门禁热释人体感应报警设计

1、毕业设计选题原则说明(重点)

  • 选题之前,同学们要弄明白一件事情,做毕业设计是干什么用的!
  • 这里我告诉大家,毕业设计对于你来说,不是让你去搞研究,掌握运用所学知识的,也不是让你去比谁做的毕业设计多么牛逼,多么厉害。
  • 说白点,它的作用就是一个,让你顺利毕业,能够拿到学位证,毕业证而已!!!
  • 当你明白这一点后,作毕业设计的要求就是在满足老师的要求后,越简单越好,这样不但容易去做,而且你自己也容易去理解,掌握,同样也能花最少的钱!!!
  • 满足老师的要求,这个没办法,毕竟他是决定你是否能通过答辩的人。
  • 每年都有很多同学找到我的时候,后悔当初为什么要把功能写的那么复杂,后悔没有提前找我咨询一下!所以在这里提醒同学们,提交开题报告之前一定要多想想,咨询下以往的学长学姐,不要自己随便写一堆提交上去!!!
  • 大家找不到学长学姐的话,也可以找我免费咨询,我可以给大家一些建议
  • 点击咨询

2、项目资料

2.1 系统框架

本设计由STM32F103C8T6单片机核心电路、拨动开关电路、按键电路、LED灯电路、LCD1602液晶显示电路、蜂鸣器报警电路、光敏电阻检测光照强度电路、HC-SR505热释红外感应模块电路、电源电路组成。

2.2 系统功能

  • 1、通过热释红外传感器检测是否有人,如果有人靠近门时,液晶屏提示亮并显示欢迎词:Welcome to home!,夜间探测到有人时开灯,灯用9个高亮LED灯设计,无人时,关灯。
  • 2、主人可设定门禁系统工作状态,家里有人和无人两种状态。通过一个拨动开关设置,拨上去,液晶显示有人:Somebody!,拨下来液晶显示没人:Nobody!有人时,客人按下门铃,蜂鸣器鸣叫提示,无人时,客人按下门铃,无任何反应。
  • 3、门外人员逗留时间超过一定时间则发出报警信息。
  • 4、检测到有人或者没有人,有状态指示灯指示。

3、部分电路设计

3.1 STM32F103C8T6单片机最小系统电路设计

STM32F103C8T6单片机最小系统电路由复位电路、时钟电路和电源电路。拥有这三部分电路后,单片机即可正常工作。

单片机最小系统原理图如下图所示:

实物图:
实物图:

3.2 光敏检测电路设计

本系统选择光敏电阻传感器模块对光照进行检测,该模块可以实现对周围环境的亮度和光强进行检测。
光敏电阻是用硫化隔或硒化隔等半导体材料制成的特殊电阻器,其工作原理是基于内光电效应。光照愈强,阻值就愈低,随着光照强度的升高,电阻值迅速降低,亮电阻值可小至1KΩ以下。光敏电阻对光线十分敏感,其在无光照时,呈高阻状态,暗电阻一般可达1.5MΩ。光敏电阻的特殊性能,随着科技的发展将得到极其广泛应用。
光敏电阻器一般用于光的测量、光的控制和光电转换(将光的变化转换为电的变化)。常用的光敏电阻器硫化镉光敏电阻器,它是由半导体材料制成的。光敏电阻器对光的敏感性(即光谱特性)与人眼对可见光(0.4~0.76)μm的响应很接近,只要人眼可感受的光,都会引起它的阻值变化。设计光控电路时,都用白炽灯泡(小电珠)光线或自然光线作控制光源,使设计大为简化。

其具体电路原理图如下图所示:

  • 实物图

3.3 人体检测HC-SR505热释红外感应电路设计

HC-SR505小型人体感应模块是基于红外线技术的自动控制产品,灵敏度高,可靠性强,超小体积,超低电压工作模式。广泛应用于各类自动感应电器设备,尤其是干电池供电的自动控制产品。

其具体电路原理图如下图所示:

实物图如下:

3.4 LCD1602液晶显示电路设计

LCD显示器分为字段显示和字符显示两种。其中字段显示与LED显示相似,只要送对应的信号到相应的管脚就能显示。字符显示是根据需要显示基本字符。本设计采用的是字符型显示。系统中采用LCD1602作为显示器件输出信息。与传统的LED数码管显示器件相比,液晶显示模块具有体积小、功耗低、显示内容丰富等优点,而且不需要外加驱动电路,现在液晶显示模块已经是单片机应用设计中最常用的显示器件了。LCD1602可以显示2行16个汉字。

其具体电路原理图如下图所示:

实物图如下:

4、部分代码展示

4.1 LCD1602液晶显示屏引脚初始化程序设计

void LCD1602Init(void)
{
	GPIO_InitTypeDef GPIO_InitStructure;   //声明结构体

	/********Data端口设置*************/
	RCC_APB2PeriphClockCmd(RCC_GPIO_DATA, ENABLE);  //打开端口B时钟 
	GPIO_InitStructure.GPIO_Pin  = GPIO_DATA_0_PIN|GPIO_DATA_1_PIN|GPIO_DATA_2_PIN|GPIO_DATA_3_PIN|GPIO_DATA_4_PIN|GPIO_DATA_5_PIN|GPIO_DATA_6_PIN|GPIO_DATA_7_PIN; //  DB8~DB15
	GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;  //标准输出模式
	GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; //50M时钟速度
	GPIO_Init(GPIO_DATA_0, &GPIO_InitStructure);      //初始化端口

	/********使能端口设置**********/
	RCC_APB2PeriphClockCmd(RCC_GPIO_EN, ENABLE);    	//打开端口时钟 
	GPIO_InitStructure.GPIO_Pin =  GPIO_EN_PIN;     	// 使能端口
	GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;  //标准输出模式
	GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; //50M时钟速度
	GPIO_Init(GPIO_EN, &GPIO_InitStructure);

	/********读/写端口设置**********/
	RCC_APB2PeriphClockCmd(RCC_GPIO_RW, ENABLE);    //打开端口时钟 
	GPIO_InitStructure.GPIO_Pin =  GPIO_RW_PIN;     // 使能端口
	GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;  //标准输出模式
	GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; //50M时钟速度
	GPIO_Init(GPIO_RW, &GPIO_InitStructure);

	/********指令/数据端口设置**********/
	RCC_APB2PeriphClockCmd(RCC_GPIO_RS, ENABLE);    //打开端口时钟 
	GPIO_InitStructure.GPIO_Pin =  GPIO_RS_PIN;     // 使能端口
	GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; //推挽复用输出
	GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; //50M时钟速度
	GPIO_Init(GPIO_RS, &GPIO_InitStructure);
}

4.2 LCD1602显示字符串程序设计


void Lcd_Puts(unsigned char x,unsigned char y, unsigned char *string) //向1602写一个字符串 
{ 
	Lcd_SetXY(x,y); 
	while(*string) 
	{ 
		Lcd_Write_Data(*string); 
		string++; 
	} 
}

4.3 LED初始化程序设计

void LED_Init(void)
{
 
 GPIO_InitTypeDef  GPIO_InitStructure;
 	
 RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA|RCC_APB2Periph_GPIOC, ENABLE);	 //使能端口时钟
	
 GPIO_InitStructure.GPIO_Pin =GPIO_Pin_4|GPIO_Pin_5;				 //端口配置
 GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; 		 //推挽输出
 GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;		 //IO口速度为50MHz
 GPIO_Init(GPIOA, &GPIO_InitStructure);					 //根据设定参数初始化
	
 GPIO_InitStructure.GPIO_Pin =GPIO_Pin_15;				 //端口配置
 GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; 		 //推挽输出
 GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;		 //IO口速度为50MHz
 GPIO_Init(GPIOC, &GPIO_InitStructure);					 //根据设定参数初始化	
}

5. 项目编号

013

  • 2
    点赞
  • 34
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
自动感应开关是一种根据外部环境的变化自动启动或关闭电路的设备,它主要利用传感器来检测周围的变化,并根据设定的条件来实现自动开关的功能。自动感应开关常见于各种电器设备的控制系统中,能够简化操作,提高使用的便利性和安全性。 自动感应开关的原理是利用传感器感知周围环境的变化,比如光线、温度、声音等,一旦传感器检测到设定的变化条件,就会触发开关的动作,使电路开启或关闭。常见的自动感应开关有光感应开关、红外感应开关、声音感应开关等。 光感应开关可以根据外部光线强弱来自动控制灯光的开启和关闭,比如在晚上或昏暗的环境下,光感应开关会自动打开灯光,使我们的生活更加便捷;在白天或光线充足的环境下,光感应开关又会自动关闭灯光,节约能源。 红外感应开关利用红外传感器检测周围的人体量,一旦有人靠近,感应开关会自动启动控制装置,如自动、自动洗手间灯光等,提供更加便利和舒适的使用体验。 声音感应开关则利用声波传感器检测声音的强弱,一旦检测到设定的声音阈值,感应开关就会启动,触发相应的控制行动,比如自动开启音响、电扇等设备。 总而言之,自动感应开关的应用范围广泛,能够在各个领域提升生活和工作的便捷性,实现自动化控制的目标。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

嵌入式基地

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值