尧图建网站 尧图建网站 YAOTU WEB BUILD 免费咨询
ARTICLE DETAIL

资讯详情

深耕网站建设与建站编程的一线实战洞察。

单片机课程设计:基于STM32的智能智慧台灯系统

单片机课程设计:基于STM32的智能智慧台灯系统 前言本系统设计了一个智能台灯系统可以切换两种不同的模式自动模式、手动模式。当处于自动模式下可以根据当前亮度以及是否有人实现自动开灯当处于手动模式下可以手动的开关灯两种模式均支持手动按键调节亮度。一、设计任务使用人体传感器检测是否有人使用光线传感器检测是否低光使用按键可以控制LED灯亮度按键实现模式的自动切换二、系统硬件设计1.器件选择STM32F103ZET6核心板人体传感器 HC_SR501光线传感器触摸开关 TTP223 (选装)LED灯泡 (选装)2.系统模型设计光敏传感器以及人体传感器可以实时读取当前状态并将信息发送到STM32单片机上实现在光线暗以及有人的条件下点亮LED灯当无人时自动关闭按键实时检测状态并将其发送至STM32单片机当检查到被按下时实现模式切换/亮度调节。3.硬件连接三、系统程序设计1.程序设计程序开始会进行各模块的初始化当初始化完成后会检测当前模式默认时自动模式当处于自动模式时LED2点亮系统会检测人体传感器和光敏传感器所传递的信号当人体传感器和光敏传感器输出高电平有人低光LED1点亮当按下KEY0同KEY_UP时可以切换LED1亮度亮度三档可调自动模式不支持手动开关灯当处于手动模式时LED2熄灭点击KEY0同KEY_UP时可以开启LED1/调节LED1亮度。软件工作流程图如下图所示。特别说明D0是LED1控制灯泡D1是LED2状态显示灯泡2.程序代码main.c#include system.h #include SysTick.h #include led.h #include key.h #include usart.h #include pwm.h #include ls.h #include hc_sr501.h int brightness50,mode0,hand_brightness0; int main() { u8 i; SysTick_Init(72); NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2); //中断优先级分组 分2组 LED_Init(); KEY_Init(); LS_Init(); USART1_Init(115200); TIM3_CH2_PWM_Init(500,72-1); //频率是2Kh while(1) { i; if(mode 0) { LED2 0; } else { LED2 1; } if(mode 0) { if(HC_SR501_KEY()1 LS_KEY()1) { TIM_SetCompare2(TIM3,brightness); //i值最大可以取499因为ARR最大值是499. } else { TIM_SetCompare2(TIM3,0); } } else { TIM_SetCompare2(TIM3,hand_brightness); } switch(KEY_Scan(0)) { case KEY_UP_PRESS: if(mode 0) { brightness 100 ; if(brightness 350) brightness 50; } if(mode 1) { hand_brightness 100 ; if(hand_brightness 400) hand_brightness 0 ; } break; case KEY1_PRESS: mode; if(mode1) hand_brightness 0; if(mode2) mode 0; break; case KEY0_PRESS: if(mode 0) { brightness 100 ; if(brightness 350) brightness 50; } if(mode 1) { hand_brightness 100 ; if(hand_brightness 400) hand_brightness 0 ; } break; } delay_ms(100); } }四、实物展示五、程序部署源码下载地址基于STM32的智能智慧台灯系统 | 零度空间源码下载地址http://cloud.tao-space.top/2024/05/31/%e5%9f%ba%e4%ba%8estm32%e7%9a%84%e6%99%ba%e8%83%bd%e6%99%ba%e6%85%a7%e5%8f%b0%e7%81%af%e7%b3%bb%e7%bb%9f/
返回列表