资源简介
智能台灯(内含原理图及代码),通过光敏电阻ADC自动调节灯光亮暗,通过红外模块检测人体是否离开来控制灯光开、关。通过定时器、数码管、蜂鸣器来定时提醒。
代码片段和文件信息
#include“reg51.h“
#define uint unsigned int
void Delayms(uint);
void PWM_Init();
void Key();
void Clock();
void Init_Timer0();
//void ADC0809();
sbit LED=P3^4;
sbit HW=P3^5;
sbit Ind=P3^6;
sbit Beep=P3^7;
sbit sub=P2^0;
sbit add=P2^1;
sbit set=P2^2;
sbit change=P2^3;
sbit w1=P2^4;
sbit w2=P2^5;
sbit w3=P2^6;
sbit w4=P2^7;
//------ADC0809--------------
/*sbit clk=P3^0;
sbit st=P3^1;
sbit eoc=P3^2;
sbit oe=P3^3;*/
#define Data P0
unsigned char timer0_cntr1;
unsigned char i;
unsigned char s1;s2;s3;s4;
unsigned char se;
unsigned char c_set;
uint pwm=100aa=600;
uint pwm_cnt=0;
bit flag0;
bit flag_set;
bit flag_beep;
unsigned char code SHUZI[]={
0x3f0x060x5b0x4f0x660x6d0x7d0x07
0x7f0x6f0x770x7c0x390x5e0x790x71};
unsigned char code SHUDIAN[]={0xbf0x860xdb0xcf0xe60xed0xfd0x87
0xff0xef};
void Delay(uint t)
{
while(--t);
}
void Delayms(uint t) //3ms
{
int j;
for(;t>0;t--)
for(j=0;j<=300;j++);
}
/*void ADC0809()
{
st=0;
st=1;
st=0;
eoc=1;
while(eoc==0)
{
eoc=1;
Beep=0;
}
oe=1;
Data=0xFF;
Delayms(1);
oe=0;
}*/
void main()
{
w1=1;
w2=1;
w3=1;
w4=1;
s1=0;
s2=0;
s3=0;
s4=0;
i=0;
se=0;
flag0=0;
flag_set=0;
flag_beep=0;
Beep=1; //1不响
LED=0; //0点亮
timer0_cnt=0;
r1=0;
Init_Timer0();
while(1)
{
if(HW==1) //HW接近为0,离开为1
Beep=1;
else //接近
Beep=0;
Key();
if(flag_set==0)
{
Clock();
}
if((s1==0)&&(s2==0)&&(s3==0)&&(s4==0)&&(flag_beep==1))
{
Beep=0;
Delayms(5000);
flag_beep=0;
Beep=1;
}
if(Ind==1)
{
PWM_Init();
}
else
LED=1;
// if(r1=80)
// ADC0809();
// pwm=Data/255;
}
}
void PWM_Init()
{
if(add==0)pwm++;//add是按键开关
if(sub==0)pwm--;//sub也是
if(pwm==600)pwm=599;
if(pwm==50)pwm=51;
LED=0; //灯亮
Delay(pwm);
LED=1; //灭
Delay(aa-pwm);
}
void Key()
{
if(set==0)
{
Delayms(5); // 5ms
if(set==0)
{
Delayms(333); //延时1s
flag_set=~flag_set;
w1=0;w2=1;w3=1;w4=1;
c_set=0;
flag0=0;
}
}
if(flag_set==1)
{
if(add==0) //加
{
Delayms(5);
if(add==0)
{
Delayms(333); //延时1s
if(w1==0)
{
if(s1<9)
s1++;
else
s1=0;
}
else if(w2==0)
{
if(s2<5)
s2++;
else
s2=0;
}
else if(w3==0)
{
if(s3<9)
s3++;
else
s3=0;
}
else if(w4==0)
{
if(s4<5)
s4++;
else
s4=0;
}
}
}
if(sub==0) //减
{
Delayms(5);
if(sub==0)
{
Delayms(333); //延时1s
if(w1==0)
{
if(s1>0)
s1--;
else
s1=9;
}
if(w2==0)
{
if(s2>0)
s2--;
else
s2=5;
}
if(w3==0)
{
if(s3>0)
s3--;
else
s3=9;
}
if(w4==0)
{
if(s4>0)
s4-
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 4699 2017-11-17 09:54 智能台灯\led.c
文件 264704 2017-11-17 09:54 智能台灯\智能台灯原理图.SchDoc
目录 0 2017-11-17 10:00 智能台灯
----------- --------- ---------- ----- ----
269403 3
- 上一篇:数字水印技术 英文文献
- 下一篇:学生信息管理系统——数据库课程设计
评论
共有 条评论