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