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

简介: 毕业设计 基于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

相关文章
|
6月前
|
传感器 编解码 数据处理
毕业设计|基于STM32单片机的水位浑浊度检测设计
毕业设计|基于STM32单片机的水位浑浊度检测设计
821 0
|
6月前
|
传感器 内存技术
毕业设计 江科大STM32的智能温室控制蓝牙声光报警APP系统设计
毕业设计 江科大STM32的智能温室控制蓝牙声光报警APP系统设计
185 0
|
6月前
|
人工智能 安全 搜索推荐
单片机毕业设计|基于stm32智能快递箱设计
单片机毕业设计|基于stm32智能快递箱设计
138 0
|
6月前
|
机器学习/深度学习 传感器 语音技术
毕业设计|基于STM32单片机的语音识别控制智能停车场设计
毕业设计|基于STM32单片机的语音识别控制智能停车场设计
205 0
|
5月前
使用STM32F103标准库实现定时器控制LED点亮和关闭
通过这篇博客,我们学习了如何使用STM32F103标准库,通过定时器来控制LED的点亮和关闭。我们配置了定时器中断,并在中断处理函数中实现了LED状态的切换。这是一个基础且实用的例子,适合初学者了解STM32定时器和中断的使用。 希望这篇博客对你有所帮助。如果有任何问题或建议,欢迎在评论区留言。
428 2
|
4月前
stm32f407探索者开发板(十七)——串口寄存器库函数配置方法
stm32f407探索者开发板(十七)——串口寄存器库函数配置方法
694 0
|
6月前
|
传感器
STM32标准库ADC和DMA知识点总结-1
STM32标准库ADC和DMA知识点总结
|
5月前
|
IDE 开发工具
使用STM32F103标准库实现自定义键盘
通过本文,我们学习了如何使用STM32F103标准库实现一个简单的自定义键盘。我们首先初始化了GPIO引脚,然后实现了一个扫描函数来检测按键状态。这个项目不仅能够帮助我们理解STM32的GPIO配置和按键扫描原理,还可以作为进一步学习中断处理和低功耗设计的基础。希望本文对你有所帮助,祝你在嵌入式开发的道路上不断进步!
503 4

热门文章

最新文章