基于51单片机的智能台灯设计论文(基于51单片机的智能台灯设计)
一.硬件方案
本文介绍了一种基于PWM调光的智能台灯设计 。把单片机技术和PWM调光技术结合起来实现台灯光强的调节 。即在不改变PWM方波周期的前提下 ,利用单片机控制PWM的占空比 ,从而来改变电压的大小实现灯光亮度的调节。
当人体在台灯的范围内且环境光线较弱时 ,自动感应开灯 ,且灯的亮度随着环境光线的改变而自动调节 ,一旦人离开台灯范围 ,即红外热释传感器检测不到有人时 ,1分钟后自动熄灯 。
主要由51单片机+光线检测雾传感+ADC0832模数芯片+人体检测模块+按键+LED灯等;
二.设计功能
(1)上电之后 ,绿色的 LED 灯点亮 ,代表当前是自动控制模式 。
(2)通过按键 1,可以在手动模式(绿灯灭)和自动模式(绿灯亮)之间来回切换 .
(3)在手动模式下 ,可以通过按键 2 降低亮度 ,按键 3 增加亮度 。
(4)在自动模式下,首先要检测到有人 ,才进行亮度的自动控制 ,否则台灯熄灭 。 可以挡住光敏电阻的光线,或用手电筒来照射光敏电阻 ,模拟光照的变化 ,从而就可以 看到台灯的亮度会随着环境中的光照强度的改变而改变 ,效果是光照越弱 ,台灯越亮 。 如果人体传感器 1 分钟检测不到有人 ,台灯就会自动熄灭 。
(5)无论是自动模式还是手动模式 ,都是把亮度分为 10 个等级的 。
(6)人体感应检测功能只在自动模式下有效 。三.设计原理图
(1)原理图如图:
(2)Protues仿真图及PCB图如下:
四.软件设计
main函数源码
/*********************************************************/ // 主函数 /*********************************************************/ void main() { uchar ret; TimerInit(); // 定时器初始化 LED=0; // 指示灯点亮(自动模式指示灯) ret=Get_ADC0832(); // 获取AD采集结果(环境光照强度) AutoControl(ret); // 上电先进行一次自动亮度控制 AutoControl(ret+7); while(1) { /* 模式切换控制 */ if(Key1==0) // 如果按键1被按下去 { LED=~LED; // 切换LED灯状态 DelayMs(10); // 延时消除按键按下的抖动 while(!Key1); // 等待按键释放 DelayMs(10); // 延时消除按键松开的抖动 } /* 亮度控制 */ if(LED==1) // 如果LED是灭的 { ManualControl(); // 则进行手动控制 } else // 如果LED是亮的 { if(gTime<60000) { ret=Get_ADC0832(); // 获取AD采集结果(环境光照强度) AutoControl(ret); // 进行自动控制 DelayMs(200); } } /*检测是否有人*/ if(Module==1) { gTime=0; // 检测到有人 ,则把60秒计时清零 } if(gTime>60000) // 如果gTime的值超过了60000 { gTime=60000; // 则把gTime的值重新赋值为60000 ,避免过大溢出 gIndex=0; // 如果1分钟检测不到有人 ,则把台灯熄灭 } } }资料链接:https://pan.baidu.com/s/1BMuQrXZPMYbdpq51VE11kg?pwd=d21e
提取码:d21e创心域SEO版权声明:以上内容作者已申请原创保护,未经允许不得转载,侵权必究!授权事宜、对本内容有异议或投诉,敬请联系网站管理员,我们将尽快回复您,谢谢合作!