基于单片机的声光控延时灯文档格式.docx
- 文档编号:15985395
- 上传时间:2022-11-17
- 格式:DOCX
- 页数:15
- 大小:144.01KB
基于单片机的声光控延时灯文档格式.docx
《基于单片机的声光控延时灯文档格式.docx》由会员分享,可在线阅读,更多相关《基于单片机的声光控延时灯文档格式.docx(15页珍藏版)》请在冰豆网上搜索。
由光敏电阻,滑动变阻器,PNP三极管和与非门组成,如下图3所示:
光控电路通过光照改变光敏电阻的阻值大小和声控电路组合后来控制PNP三极管送到单片机来控制灯的亮灭,当光敏电阻受光照时,电阻小,与非门的一端为低电平;
当光照较弱时,电阻增加,与非门的一端为高电平。
光控电路和声控电路的输出信号经与非门后经三极管放大,将比较微弱的电流信号放大到单片机能够识别的电流,然后由三极管的发射集放大后的信号传给单片机的I/O口。
电路图中滑动变阻器控制整个光控电路对光信号的灵敏度。
声控电路
声控电路通过话驻极体话筒将声音转化成电信号,经电容耦合到三极管的基极,通过控制三极管的饱和、截止来控制输出电平的高低,然后输送到与非门和光控电路组合输送到单片机;
拾音电路将声音转换成微弱的电压信号。
然后,微弱的电压信号经过三极管放大,声控电路电路信号和光控电路信号通过与非门传给单片机的I/O口。
R4和c1有一定的延时效果,可以去除干扰信号。
图4声控电路图
单片机控制电路
单片机根据声控电路、光控电路输入的信号来判断输出端电平的高低,从而控制灯亮灭;
单片机也控制灯亮的的延迟时间。
单片机的输出的电流比较小,不能够驱动灯的亮灭,灯的驱动由三极管组成给单片机的输出电流进行补偿,来驱动灯的亮灭。
P1.0作为声光控信号的输入口;
(高电平有效);
P1.1作为驱动电路的输出口;
P1.6接数码管用于显示延时时间;
P1.7用于接按键用于调节延时时间。
图5单片机控制电路
单片机控制程序如下:
#include<
reg52.h>
#defineucharunsignedchar
#defineuintunsignedint
sbitsm=P1^0;
sbitds=P1^1;
sbitLE=P1^6;
sbitkeyt=P1^7;
uinttt,sec,min,aa;
ucharcodetiming[]={0x3f,0x06,
0x5b,0x4f,0x66,0x6d,0x7d,0x07,
0x7f,0x6f,0x77,0x7c,0x39,0x5e,
0x79,0x71};
voidyanshi();
voidkeytt();
voiddelay(uint);
voidinin()
{
sm=1;
ds=0;
tt=0;
sec=0;
min=0;
TMOD=0x01;
TH0=(65535-50000)/256;
TL0=(65535-50000)%256;
EA=1;
ET0=1;
}
voidlight()
if(sm==0)
ds=1;
if(ds==1)
TR0=1;
}
voidyanshi()
if(tt==20)
{
tt=0;
sec++;
if(sec==60)
{
sec=0;
min++;
if(min==aa)
{
TR0=0;
inin();
}
}
}
voidkeytt()
if(keyt==0)
delay(5);
if(keyt==0)
aa++;
P0=timing[aa];
if(aa==5)
aa=1;
delay(5);
voidmain()
keyt=1;
LE=0;
aa=2;
P0=timing[aa];
inin();
while
(1)
keytt();
light();
yanshi();
voiddelay(uintz)
uinti,j;
for(i=1000;
i>
0;
i--)
for(j=z;
j>
j--);
voidtimer0()interrupt1
tt++;
时钟芯片控制电路
图6定时电路
DS1302的复位脚RST接单片机的P3.5脚,输入输出引脚I/O接单片机的P3.4脚,串行时钟SCLK接单片机的P3.6脚,通过
对DS1302输入程序,将定时时间显示在数码管上,通过单片机来控制灯的特定时间的亮灭。
定时程序如下:
intrins.h>
sbitSCK=P3^6;
//时钟
sbitSDA=P3^4;
//数据
sbitRST=P3^5;
//CE端口控制复位?
uintk,num;
bitreadrtc_flag;
//定义标志
uchartempdata[7]={0,0,12,13,7,2,12};
uchartempdisplay[8];
ucharcodetable[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x40};
ucharcodeWAN[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};
//ucharread_ds1302(uchartemp);
/*定时器0初始化*/
TH0=(65536-4000)/256;
TL0=(65536-4000)%256;
TR0=1;
num=0;
k=0;
}
/*八次写一个字节*/
voidwrite_ds1302_byte(uchartemp)
uchari;
for(i=0;
i<
8;
i++)
SCK=1;
SDA=temp&
0x01;
_nop_();
SCK=0;
temp>
>
=1;
/*写入ds1302*/
voidwrite_ds1302(ucharaddress,uchardat)
RST=0;
//////数据、地址传送中止
_nop_();
//////一个机器周期
RST=1;
/////逻辑控制有效
_nop_();
write_ds1302_byte(address);
write_ds1302_byte(dat);
/*写时钟初值*/
voidset_rtc()
uchari,temp;
7;
temp=tempdata[i]/10;
tempdata[i]=tempdata[i]%10;
tempdata[i]=tempdata[i]+temp*16;
}
write_ds1302(0x8e,0x00);
//停止写保护
write_ds1302(0x80,tempdata[0]);
write_ds1302(0x82,tempdata[1]);
write_ds1302(0x84,tempdata[2]);
write_ds1302(0x86,tempdata[3]);
write_ds1302(0x88,tempdata[4]);
write_ds1302(0x8a,tempdata[5]);
write_ds1302(0x8c,tempdata[6]);
write_ds1302(0x8e,0x80);
//写保护
/*tempdisplay[7]=tempdata[2]/16;
tempdisplay[6]=tempdata[2]&
0x0f;
tempdisplay[5]=10;
tempdisplay[4]=tempdata[1]/16;
tempdisplay[3]=tempdata[1]&
tempdisplay[2]=10;
tempdisplay[1]=tempdata[0]/16;
tempdisplay[0]=tempdata[0]&
*/
/*读出时间到tempdata中*/
ucharread_ds1302(ucharaddress)
uchartmp=0x00;
SCK=0;
RST=1;
tmp>
if(SDA)
tmp|=0x80;
return(tmp);
/*读时钟数据*/
voidread_rct()
tempdata[0]=read_ds1302(0x81);
tempdata[1]=read_ds1302(0x83);
tempdata[2]=read_ds1302(0x85);
tempdata[3]=read_ds1302(0x87);
tempdata[4]=read_ds1302(0x89);
tempdata[5]=read_ds1302(0x8b);
tempdata[6]=rea
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 单片机 声光 延时