当前位置: 首页 > news >正文

基于STM32的智能台灯_自动亮度_久坐提醒仿真设计(Proteus仿真+程序设计+设计报告+讲解视频)

这里写目录标题

  • 1.主要功能
  • 2.仿真设计
  • 3.程序设计
  • 4.设计报告
  • 5.下载链接

基于STM32的智能台灯_自动亮度_久坐提醒仿真设计

(Proteus仿真+程序设计+设计报告+讲解视频)

仿真图Proteus 8.9

程序编译器:keil 5

编程语言:C语言

设计编号:C0112

1.主要功能

智能护眼灯

结合当前嵌入式技术,具有灯光亮度调节、人走自己关灯和久坐提醒功能。

1.上电默认是自动模式,自动模式灯亮。光照越弱,台灯越亮。

2.自动模式下人体红外热释电检测到有人自动开灯同时计时。

3.监测到久坐(仿真30秒方便测试)后蜂鸣器报警,LCD1602显示Please Activity,人离开后蜂鸣器自动关掉。

4.按键切换手动模式,模式下可以通过按键手动调光。

5.使用LCD1620显示环境光亮度,灯光亮度级别和久坐计时时间。

6.使用Proteus仿真,灯珠用LED灯代替。

STM32F103系列芯片 人体红外热释电 光照传感器 LCD1602

资料下载链接:

通过网盘分享的文件:KEY_C0112

链接: https://pan.baidu.com/s/1FwWffUhRNRludhkpC8j_ag?pwd=n4at

提取码: n4at

2.仿真设计

开始仿真后是自动模式,LCD1602液晶第一行显示LIGHT光照强度=440Lux。红外热释电开关闭合,第二行显示久坐时间和灯光亮度。串口传输光照强度和灯光亮度。虚拟示波器显示灯光PWM波形。

开始仿真 有人在完善

按下按键,调整手动模式,LCD1602第二行显示灯光亮度,可以通过按键+和按键-调整亮度。

手动模式

3.程序设计

程序是用keil5 mdk版本打开的,如果打开有问题,核实下keil的版本。程序是HAL版本编写的,有stm32cubemx配置文件。有注释可以结合讲解视频理解。

程序

int main(void)
{/* USER CODE BEGIN 1 */char dis_str1[]="				 ";  //输出字符串内容设置16个字符 英文+标点+数字char dis_str2[]="				 ";  //输出字符串内容设置16个字符 英文+标点+数字//	ADC_ChannelConfTypeDef sConfig = {0};  //建立sConfig结构体	char str[20];  //字符串的存放数组
//	uint32_t adcv;  //存放ADC转换结果float temp;uint16_t ADC_Value[2] = {0};  //用于存放ADC数据
//	uint8_t i;  //定义循环变量	/* USER CODE END 1 *//* MCU Configuration--------------------------------------------------------*//* Reset of all peripherals, Initializes the Flash interface and the Systick. */HAL_Init();/* USER CODE BEGIN Init *//* USER CODE END Init *//* Configure the system clock */SystemClock_Config();/* USER CODE BEGIN SysInit *//* USER CODE END SysInit *//* Initialize all configured peripherals */MX_GPIO_Init();MX_DMA_Init();MX_USART1_UART_Init();MX_TIM2_Init();MX_ADC1_Init();/* USER CODE BEGIN 2 */
//  MX_GPIO_Init();
//  MX_USART1_UART_Init();
//  MX_DMA_Init();
//  MX_ADC1_Init();  
//	SMG_Write_Data(0,gsmg_code[0]);LCD_Init();HAL_UART_Transmit(&huart1, (uint8_t *)&"adc_dm1", 7, 10);  //串口1发送字符串,数组长度为12,超时10msHAL_ADCEx_Calibration_Start(&hadc1);   //开启adc前校准一下ADCHAL_Delay(10);HAL_ADC_Start_DMA(&hadc1,(uint32_t *)&ADC_Value,2);//开启ADC的DMA,采集的数据直接放入 AD_Buf这个数组里,操作简单。HAL_UART_Transmit(&huart1, (uint8_t *)&"adc_dma", 7, 10);  //串口1发送字符串,数组长度为12,超时10ms HAL_TIM_Base_Start_IT(&htim2);  //初始化定时器user_pwm=50;refresh_flag=1;BEEP=0;/* USER CODE END 2 *//* Infinite loop *//* USER CODE BEGIN WHILE */while (1){/* USER CODE END WHILE *//* USER CODE BEGIN 3 */HAL_ADCEx_Calibration_Start(&hadc1);   //开启adc前校准一下ADCHAL_ADC_Start_DMA(&hadc1,(uint32_t *)&ADC_Value,2);//开启ADC的DMA,采集的数据直接放入 AD_Buf这个数组里,操作简单。if(state==0&&refresh_flag){//通道1采集 自动模式temp=ADC_Value[0];//得到AD值temp=light_intensity(temp);	//转化为光照强度sprintf(str,"auto_temp=%0.0f\r\n",temp);HAL_UART_Transmit(&huart1, (uint8_t *)str, strlen(str), 30);//串口1发送字符串,数组长度为strlen(str),超时20msmemset(str,0,strlen(str));  if(INF_DET==1){//没有人在user_pwm=0;}else{user_pwm=(float)temp*(100.0/1000);  user_pwm=100-user_pwm;//自动模式PWM的范围是0-100  }sprintf(str,"user_pwm=%d%%\r\n",user_pwm);HAL_UART_Transmit(&huart1, (uint8_t *)str, strlen(str), 30);//串口1发送字符串,数组长度为strlen(str),超时20msrefresh_flag=1; STATE_LED=0;//模式灯点亮}else if(state==1&&refresh_flag){//手动模式STATE_LED=1;//模式灯熄灭temp=ADC_Value[0];//得到AD值temp=light_intensity(temp);	//转化为光照强度sprintf(str,"manl_temp=%0.0f\r\n",temp);HAL_UART_Transmit(&huart1, (uint8_t *)str, strlen(str), 30);//串口1发送字符串,数组长度为strlen(str),超时20ms}HAL_ADC_Stop(&hadc1);											//停止ADC1	HAL_Delay(200);
//		if(INF_DET==1){//没有人
//			HAL_UART_Transmit(&huart1, (uint8_t *)"out\r\n", 5, 30);//串口1发送字符串,数组长度为5,超时30ms
//		}else{
//			HAL_UART_Transmit(&huart1, (uint8_t *)"ing\r\n", 5, 30);//串口1发送字符串,数组长度为5,超时30ms
//
//		}sprintf(dis_str1,"LIGHT=%0.0f Lux    ",temp);LCD_ShowString(0,0,dis_str1);if(state==0){//自动模式 而且人在if(INF_DET==0){if(inf_count<COUNT_NUM){//久坐判断sprintf(dis_str2,"TIME=%d LAMP=%d%%  ",inf_count,user_pwm);}else{sprintf(dis_str2,"Please Activity  ");//久坐提醒}		 }else{sprintf(dis_str2,"                       ");}}else if(state==1){//手动模式sprintf(dis_str2,"LAMP_L=%d%%       ",user_pwm);}LCD_ShowString(1,0,dis_str2); }/* USER CODE END 3 */
}

img

程序流程图

img

4.设计报告

9608字设计报告,内容包括设计目标、硬件设计、软件设计、结论等。

img

随着嵌入式技术的快速发展,智能照明设备在健康照明领域的应用日益广泛。传统台灯功能单一,无法根据环境光自动调节亮度,且缺乏久坐提醒等健康管理功能。结合STM32单片机、传感器技术与人机交互设计,开发一款智能护眼灯,可有效改善用眼环境,降低视觉疲劳,符合现代人对健康生活的需求。

通过本次设计,我们希望能够提高对单片机的理解和应用能力。通过实践和探索,我们希望能够掌握相关的硬件和软件设计方法,为今后的学习和工作打下坚实的基础。同时,我们也希望能够通过这次设计,培养我们的团队协作能力和创新精神。

5.下载链接

0、常见使用问题及解决方法–必读!!!!

1、程序代码

2、Proteus仿真

3、功能要求

4、开题报告

5、设计报告

6、框图

7、讲解视频

Altium Designer 安装破解

KEIL+proteus 单片机仿真设计教程

KEIL安装破解

Proteus元器件查找

Proteus安装

Proteus简易使用教程

单片机学习资料

相关数据手册

答辩技巧

设计报告常用描述

鼠标双击打开查找嘉盛单片机51 STM32单片机课程毕业设计.url

img

资料下载链接:

通过网盘分享的文件:KEY_C0112

链接: https://pan.baidu.com/s/1FwWffUhRNRludhkpC8j_ag?pwd=n4at

提取码: n4at

相关文章:

  • 基于R语言地理加权回归、主成份分析、判别分析等空间异质性数据分析实践技术应用
  • JVM 与容器化部署调优实践(Docker + K8s)
  • 前端excel表格解析为json,并模仿excel显示
  • 【HarmonyOS Next之旅】DevEco Studio使用指南(二十五) -> 端云一体化开发 -> 业务介绍(二)
  • 心知天气 API 获取天气预报 2025/5/21
  • 基于springboot+vue网页系统的社区义工服务互动平台(源码+论文+讲解+部署+调试+售后)
  • NSSCTF [watevrCTF 2019]Wat-sql
  • MCP和 AI agent 有什么区别和联系
  • 【工具教程】图片识别内容改名,图片指定区域识别重命名,批量识别单据扫描件批量改名,基于WPF和腾讯OCR的实现方案
  • 【VLNs篇】03:VLMnav-端到端导航与视觉语言模型:将空间推理转化为问答
  • Linux:进程信号---信号的保存与处理
  • 基于moonshot模型的Dify大语言模型应用开发核心场景
  • 【论文阅读 | CVPR 2024 |RSDet:去除再选择:一种用于 RGB - 红外目标检测的由粗到精融合视角】
  • Elasticsearch简单集成java框架方式。
  • StepX-Edit:一个通用图像编辑框架——论文阅读笔记
  • 力扣热题100,力扣148.排序链表力扣.26找出字符串中第一个匹配项的下标力扣146.LRU缓存序列管理器
  • Redis应用--缓存
  • 【Unity 如何使用 Mixamo下载免费模型/动画资源】Mixamo 结合在 Unity 中的实现(Animtor动画系统,完整配置以及效果展示)
  • 八: 人工神经元/感知机 算法
  • 智能驾驶中的深度学习:基于卷积神经网络的车道线检测
  • wordpress免费手机主题/关键词优化如何做
  • wordpress居中/开鲁网站seo转接
  • wordpress hosts/百度seo推广方案
  • php网站开发技术训练心得/百度营销登录入口
  • 刚刚做的网站怎么排名/友情链接大全
  • 怎么把网站管理系统/招聘网站排名