基于51单片机的智能台灯
以下是基于51单片机的智能台灯代码,能够检测台灯旁边有无人并进行相应自动开关、通过红外光电能够检测他们在学习时由于身体靠桌面比较近,造成身体坐姿不正,台灯就会报警提示等功能,仅供参考:
#include <reg51.h>
#define uchar unsigned char
#define uint unsigned int
sbit LDR = P3^2; // 光敏电阻连接的引脚P3.2
sbit LED = P1^0; // LED灯连接的引脚P1.0
sbit PIR = P3^3; // 人体红外检测连接的引脚P3.3
sbit buzzer = P1^1; // 蜂鸣器连接的引脚P1.1
void delay_ms(uint xms)
{
uint i,j;
for(i=xms;i>0;i--)
{
for(j=110;j>0;j--);
}
}
void main()
{
uchar i;
while(1)
{
i = LDR; // 读取光敏电阻的值
if(i == 0) // 昏暗状态,LED灯亮度为50%
{
if(PIR == 1) // 检测到人体近距离,开灯
{
LED = 0; // LED灯亮
}
else // 没有检测到人体近距离,关灯
{
LED = 1; // LED灯灭
}
}
else // 明亮状态,LED灯亮度为100%
{
LED = 0; // LED灯亮
}
if(PIR == 1 && LDR == 0) // 检测到人体近距离和昏暗状态,报警提示
{
buzzer = 0; // 蜂鸣器响
delay_ms(500); // 延时500ms
buzzer = 1; // 蜂鸣器停止
delay_ms(500); // 延时500ms
}
}
}
上述代码实现了通过热释电红外传感器检测旁边是否有人,并控制LED灯的开关。如果检测到旁边没有人在,则自动关闭台灯,以达到节省电能的目的。如果检测到人体在昏暗状态下靠近,则打开灯光。如果检测到人体在昏暗状态下靠近,则蜂鸣器会提示用户纠正坐姿,防止眼睛近视。如果需要更多控制功能,可以根据实际需求进行修改。