当前位置: 首页 > 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

http://www.xdnf.cn/news/563095.html

相关文章:

  • SQLMesh 宏操作符详解:@IF 的条件逻辑与高级应用
  • React---day1
  • asp.net web form nlog的安装
  • 9.PostgreSQL初体验
  • Flink SQL 计算实时指标同比的实现方法
  • vue3使用 Tailwind CSS (4.多版本)
  • UML 图的细分类别及其应用
  • virtualbox选项“启用套嵌vt-x/amd-v“不可用
  • 【论文阅读 | CVPR 2024 |RSDet:去除再选择:一种用于 RGB - 红外目标检测的由粗到精融合视角】
  • 论文篇-1.2.如何读好一篇论文
  • [实战]用户系统-1-基础功能完善
  • 笔记:NAT
  • 【笔记】排查并解决Error in LLM call after 3 attempts: (status code: 502)
  • 支持向量机(SVM):分类与回归的数学之美
  • 鸿蒙UI开发——Builder与LocalBuilder对比
  • 目标检测:YOLO 模型详解
  • 跨部门项目管理优化:告别邮件依赖
  • 提示词工程(Prompt Engineering)是智能Agent交互中不可或缺的一环
  • AI数字人一体机和智慧屏方案:开启智能交互新纪元
  • LeetCode 649. Dota2 参议院 java题解
  • 数独求解器3.0 增加latex格式读取
  • 攻防世界——Web题 fakebook
  • TypeScript 泛型讲解
  • Neo4j实现向量检索
  • 网速测试地址和工具
  • fluentd采集K8S日志
  • 鸿蒙进阶——驱动框架UHDF 机制核心源码解读(一)
  • 软考中级软件设计师——操作系统考试题型
  • 数据库blog4_数据库软件的设计方法与实际架构
  • STM32库函数简介(重点)