0 前言
🔥
这两年开始毕业设计和毕业答辩的要求和难度不断提升,传统的毕设题目缺少创新和亮点,往往达不到毕业答辩的要求,这两年不断有学弟学妹告诉学长自己做的项目系统达不到老师的要求。
为了大家能够顺利以及最少的精力通过毕设,学长分享优质毕业设计项目,今天要分享的是
🚩 毕设分享 基于单片机的人体定位智能调速风扇系统统(源码+硬件+论文)
🥇学长这里给一个题目综合评分(每项满分5分)
- 难度系数:3分
- 工作量:3分
- 创新点:4分
🧿 项目分享:见文末!
1 主要功能
创新点
- (1)我们设计的自动调速跟踪风扇能够实现自动定位人群的功能;
- (2)能够根据环境温度的变化自动调节风扇转速;
- (3)能够通过设定启动值自动启动风扇;
- (4)能够通过彩屏实时显示所用电量及价格。
2 硬件设计
系统各模块的最终方案如下:
- 微控制器模块:采用STM32F103VET6单片机控制主控台,采用AT89S52和ATmega16单片机控制工作区。
- 检测模块:采用热释红外传感器。
- 环境温度采集模块:采用DS18B20温度传感器。
- 电机模块:采用舵机与直流电机搭配。
- 数据传输模块:采用NRF24L01无线收发模块。
- 显示模块:采用彩屏液晶显示。
3 核心软件设计
主控台可以通过触摸彩屏对工作区阈值温度、温度和转速的对应关系以及电量的价格等信息进行设置。其设置流程图如图
利用射频模块实现主控台与工作区的信息转换。主控台设置启动温度、温度与转速转换对应关系等信息,通过NRF24L01射频模块传到工作区。工作区将采集到的环境温度通过射频模块回传给主控台,当达到启动温度时,整个系统开始运行
驱动电路主要包括电机驱动和舵机驱动两部分。根据人群位置的信息,计算改变舵机的转角;根据环境温度的高低,调节风扇电机的转速。其程序流程图如
关键代码
(5)main主函数
/******************** (C) COPYRIGHT 2011 野火嵌入式开发工作室 ********************
* 文件名 :main.c
* 描述 :LCD触摸实验,开机先校验屏幕,画笔通过触摸板取色。
* 实验平台:野火STM32开发板
* 库版本 :ST3.0.0
*
* 作者 :fire QQ: 313303034
* 博客 :firestm32.blog.chinaunix.net
**********************************************************************************/
#include "stm32f10x.h"
#include "lcd.h"
#include "sd_fs_app.h"
#include "SPI_Flash.h"
#include "systick.h"
#include "usart1.h"
#include "Touch.h"
#include "led.h"
#include "24l01.h"
void RCC_Configuration(void);
extern volatile unsigned char touch_flag;
extern unsigned int flagflag,flagflag1,flagflag2;
extern unsigned int flagflag3,flagflag4,flagflag5,flagflag6;
extern unsigned char emission[5];
extern unsigned char emission1[4];
extern unsigned char emission2[5];
extern unsigned char emission3[3];
/*
* 函数名:main
* 描述 :主函数
* 输入 :无
* 输出 :无
*/
int main(void)
{
unsigned char five=0;
RCC_Configuration(); /*时钟配置*/
LCD_Init(); /*LCD初始化*/
Touch_init(); /*触摸初始化*/
while(Touchl_Calibrate() !=0); /*等待触摸屏校准完毕*/
/*******************************开始工作**************************************************/
while (1)
{
Init_Menu();
//进入起始菜单
while(flagflag==0)
{
if((touch_flag==1)&&(flagflag3==1))
{
{
if(Get_touch_point(&display, Read_2046_2(), &touch_para ) !=DISABLE)
{ if((display.y>90)&&(display.y<140)||((240-display.x)>110)&&((240-display.x)<190) )
{
#ifdef HX8347 //
LCD_draw_rectangle(0,0,240,320,BLACK); /*清白屏*/ //
#else //
LCD_draw_rectangle(0,0,240,320,BLACK); /*清白屏*/ //
#endif
Init_Menu1();
LED_GPIO_Config();
NRF24L01Int1();
while(five<=20)
{
five++;
NRFSetTxMode1(emission);//发送温度
while(CheckACK1()); //检测是否发送完毕
GPIO_SetBits(GPIOC,GPIO_Pin_0);NRFDelay(1000);
GPIO_ResetBits(GPIOC,GPIO_Pin_0);NRFDelay(1000);
}
five=0;
flagflag3=0;
delay_ms(500);
Init_Menu();
/*************连续发送5次信息数组emission*******************/
LCD_Show_8x16_String(180,10,1,emission1); //
LCD_Show_8x16_String(180,33,1,emission2); //
LCD_Show_8x16_String(180,56,1,emission3); //
}
}
}
}
//
if(touch_flag == 1) /*如果触笔按下了*/ //下面的就是判断坐标了
{
if(Get_touch_point(&display, Read_2046_2(), &touch_para ) !=DISABLE)
{
Palette_draw_point(display.x,display.y);
}
}
} //进入二级菜单
while(flagflag1==1)
{
flagflag2=1;
if(touch_flag == 1)
{
if(Get_touch_point(&display, Read_2046_2(), &touch_para ) !=DISABLE)
{
Palette_draw_point(display.x,display.y);
}
}
}
}
}
/*****************************验证各个通道**********************************************************/
/*int main(void)
{
uint i;
unsigned char yanzheng[5]={0};
SystemInit();
LED_GPIO_Config();
NRF24L01Int();
while(1)
{
NRFSetRXMode();//设置为接收模式
GetDate(); //开始接受数
for(i=0;i<5;i++)
{
yanzheng[i]=RevTempDate0[i]; //A点
if(yanzheng[i]!=0)
4 实现效果
红外传感器系统检测人群位置,ATmega16控制舵机的转角,使风扇只在人群区域内转动。此时DS18B20继续采集环境温度,AT89S52将此温度值与转速调节温度进行对比,ATmega16则相应的调节直流电机的转速,使其更加的人性化。NRF24L01无线射频传输模块则实现与控制台信息的交换
5 最后
包含内容
🧿 项目分享:见文末!