找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2152|回复: 0
打印 上一主题 下一主题
收起左侧

基于AT89S52 单片机控制的智能台灯设计

[复制链接]
跳转到指定楼层
楼主
品由 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 - - ) ;}

下载.png (15.54 KB, 下载次数: 66)

下载.png

下载 (4).png (53.26 KB, 下载次数: 64)

下载 (4).png

下载 (3).png (27.66 KB, 下载次数: 62)

下载 (3).png

下载 (2).png (19.78 KB, 下载次数: 61)

下载 (2).png

下载 (1).png (98.56 KB, 下载次数: 71)

下载 (1).png

评分

参与人数 1黑币 +20 收起 理由
admin + 20 共享资料的黑币奖励!

查看全部评分

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏2 分享淘帖 顶 踩
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表