基于51單片機的智能臺燈
以下是基于51單片機的智能臺燈代碼,能夠檢測臺燈旁邊有無人并進行相應(yīng)自動開關(guān)、通過紅外光電能夠檢測他們在學(xué)習(xí)時由于身體靠桌面比較近,造成身體坐姿不正,臺燈就會報警提示等功能,僅供參考:
#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) // 昏暗狀態(tài),LED燈亮度為50%
? ? ? ? {
? ? ? ? ? ? if(PIR == 1) // 檢測到人體近距離,開燈
? ? ? ? ? ? {
? ? ? ? ? ? ? ? LED = 0; // LED燈亮
? ? ? ? ? ? }
? ? ? ? ? ? else // 沒有檢測到人體近距離,關(guān)燈
? ? ? ? ? ? {
? ? ? ? ? ? ? ? LED = 1; // LED燈滅
? ? ? ? ? ? }
? ? ? ? }
? ? ? ? else // 明亮狀態(tài),LED燈亮度為100%
? ? ? ? {
? ? ? ? ? ? LED = 0; // LED燈亮
? ? ? ? }
? ? ? ? if(PIR == 1 && LDR == 0) // 檢測到人體近距離和昏暗狀態(tài),報警提示
? ? ? ? {
? ? ? ? ? ? buzzer = 0; // 蜂鳴器響
? ? ? ? ? ? delay_ms(500); // 延時500ms
? ? ? ? ? ? buzzer = 1; // 蜂鳴器停止
? ? ? ? ? ? delay_ms(500); // 延時500ms
? ? ? ? }
? ? }
}
上述代碼實現(xiàn)了通過熱釋電紅外傳感器檢測旁邊是否有人,并控制LED燈的開關(guān)。如果檢測到旁邊沒有人在,則自動關(guān)閉臺燈,以達到節(jié)省電能的目的。如果檢測到人體在昏暗狀態(tài)下靠近,則打開燈光。如果檢測到人體在昏暗狀態(tài)下靠近,則蜂鳴器會提示用戶糾正坐姿,防止眼睛近視。如果需要更多控制功能,可以根據(jù)實際需求進行修改。