# 基于SMT32F103C8T6的智能台灯设计 **Repository Path**: chaim-pp/smt32 ## Basic Information - **Project Name**: 基于SMT32F103C8T6的智能台灯设计 - **Description**: 要求台灯具有两种工作模式,在手动模下,能用按键控制灯的亮度多级循环变化;在自动模式下,能根据环境的亮度,自动调节灯的亮度;能显示时间,具有定时功能,能用按键设置定时时间;在夜间能够感应是否有人经过。 - **Primary Language**: C - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 2 - **Created**: 2022-12-31 - **Last Updated**: 2022-12-31 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README 一、方案设计与论证 方案一:通过语音识别来唤醒和关闭台灯。在唤醒状态下用拨动开关SS-12F44来切换手动模式和自动模式两种模式,拨动开关接高电平时为手动模式,接低电平为自动模式。在手动模式下通过用一个四角开关控制8路PWM输出同时调节8个LED灯的亮度,共三个等级。在自动模式下,通过设计光敏电阻电路,并用ADC来读取光敏电阻电路的值来感受外部环境的亮度,再通过ADC采样的值来调节灯的亮度。显示时间,选用oled来显示,定时功能通过单片机的定时器实现,并用一个按键来调节定时时间的长短。添加了一个人体红外感应功能和语音唤醒关闭功能,在夜间当红外模块感应到有人时,灯自动亮起,当人离开时灯自动熄灭。 ![输入图片说明](https://foruda.gitee.com/images/1667980173281025154/c2ef9674_11333210.png "屏幕截图") 二、硬件电路设计 见原理图与PCB 三、软件设计 1、整体设计 先通过拨动开关SW5判断为手动模式还是自动模式,若为手动模式,则可以通过按键KEY1调节三个台灯的等级亮度,还可以通过KEY2设置定时时间关灯。若为自动模式,则台灯可以根据外部环境的亮度来调节自身亮度。开启红外感应模块时,夜间有人经过灯会自动亮,当人离开时灯会自动熄灭。还可以通过语音唤醒和关闭台灯。 2、软件设计流程 本设计的软件程序包括主程序、延时程序、IIC通信程序、ADC采样程序、PWM输出程序、RTC实时时钟程序、定时器程序、LED控制程序、按键程序、人体红外模块程序、外部中断程序、OLED显示程序、语音模块程序等等。 其中在主函数中首先初始化时钟芯片、定时器、外部中断、按键、ADC和OLED显示屏、GPIO口、串口等,然后在while循环里面判断为自动模式还是手动模式,自动模式下显示自动模式和时间,时间不断刷新显示,外加根据按键调节亮度显示亮度等级。在手动模式下,显示外部亮度强弱和手动模式。按键配置成外部中断,通过KEY1按键按下来调节8路PWM输出的占空比,来控制亮度。KEY2按键配置定时器,在定时器中断函数里面产生定时时间,时间到调节8路PWM输出全为低电平,从而LED灯熄灭。自动模式下,根据外部采集光敏电阻的电压值来调节8路PWM输出,从而实现亮度自动调节的效果。语音模块通过控制单片机开启睡眠模式和唤醒模式来达到自动关灯和自动开灯的效果。