|
品由 220V 交流电直接供电。通过POWER 键可以开启/关闭台灯,通过“AUTO/MENU”键切换,在 MENU 状态时,可通过“+ ”键及“- ”键调整台灯的亮度,并利用超声波传感器测量用户与台灯的距离,当距离小于30cm 时,通过控制灯光闪烁( 闪烁频率为每秒钟 3次左右) 提醒用户注意保持与台灯的距离; 在 AUTO状态时,除具备有 MENU 状态相同功能外,还具备检测室内是否有人的功能,当室内没有人时,自动关闭台灯( 检测时间定为 5 秒,可以在软件中设置) ,即检测到没有人的时间超过 5 秒时,关闭台灯; 当有人进入房间时( 检测距离为 4m) ,自动开灯。
其部分程序如下:
#include<reg52.h>
#define uint unsignedint
#define uchar unsigned char
sbit key = P2^2;
sbit key1 = P2^3;
sbit led = P1^0;
uint pwm = 0x7f;
void delayms( uint xms) ;
void delay( uint t) ;
void main( )
{
TMOD = 0x21;
TH0 = 0xfc;
TL0 = 0x66;
TH1 = pwm;
TL1 = 0;
EA = 1;
ET0 = 1;
ET1 = 1;
TR0 = 1;
while( 1)
{
do
if( pwm! = 0xff)
{pwm + + ; delayms( 10) ;}
while( key = = 0) ;
doif( pwm! = 0x02){pwm - - ; delay( 10) ;}while( key1 = = 0) ;
}
}
void time0( ) interrupt 1
{TR0 = 0;TH0 = 0xfc;TL0 = 0x66;TH1 = pwm;TR1 = 1;led = 1;}
void time1( ) interrupt 3{TR1 = 0;led = 0;}
void delayms( uint xms) / / 延时 x ms
{uint i,j;
for( i = xms; i > 0; i - - )
for( j = 123; j > 0; j - - ) ;
}
void delay( uchar t)
{while( t - - ) ;}
|
评分
-
查看全部评分
|