基于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,超时10ms
HAL_ADCEx_Calibration_Start(&hadc1); //开启adc前校准一下ADC
HAL_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前校准一下ADC
HAL_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),超时20ms
memset(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),超时20ms
refresh_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 */
}
程序流程图
4.设计报告
9608字设计报告,内容包括设计目标、硬件设计、软件设计、结论等。
随着嵌入式技术的快速发展,智能照明设备在健康照明领域的应用日益广泛。传统台灯功能单一,无法根据环境光自动调节亮度,且缺乏久坐提醒等健康管理功能。结合STM32单片机、传感器技术与人机交互设计,开发一款智能护眼灯,可有效改善用眼环境,降低视觉疲劳,符合现代人对健康生活的需求。
通过本次设计,我们希望能够提高对单片机的理解和应用能力。通过实践和探索,我们希望能够掌握相关的硬件和软件设计方法,为今后的学习和工作打下坚实的基础。同时,我们也希望能够通过这次设计,培养我们的团队协作能力和创新精神。
。
5.下载链接
0、常见使用问题及解决方法–必读!!!!
1、程序代码
2、Proteus仿真
3、功能要求
4、开题报告
5、设计报告
6、框图
7、讲解视频
Altium Designer 安装破解
KEIL+proteus 单片机仿真设计教程
KEIL安装破解
Proteus元器件查找
Proteus安装
Proteus简易使用教程
单片机学习资料
相关数据手册
答辩技巧
设计报告常用描述
鼠标双击打开查找嘉盛单片机51 STM32单片机课程毕业设计.url
资料下载链接:
通过网盘分享的文件:KEY_C0112
链接: https://pan.baidu.com/s/1FwWffUhRNRludhkpC8j_ag?pwd=n4at
提取码: n4at