㈠ 基于单片机设计智能台灯,需要哪些元器件,详细一点的。
1、测人体的话可以选择人体红外传感器,当光束被挡时输出高电平,这种传感器有一种半成品,输出也是脉冲的,当有人时输出3。5V高电平维持3秒,如人没有离开就继续输出,人离开后就变成低电平。
2、测光源基本上用光敏电阻就可以了,将光敏电阻附加三极管等元件做成一个光敏传感器,一旦光强低于某个值就向单片机返回一个高/低电平信号,由单片机处理。
3、单片机用51即可,输出引脚上连一个7407,然后连到继电器上即可。
4、其实也可以不用单片机的,只要一个逻辑芯片就可以了,比如如果高电平时有人,高电平时光弱,那么只要将这两个信号送到一个与门就可以了,与门输出一个高电平,然后驱动继电器即可!
希望能帮到你,对于这个东西你可以分成几个模块,一个模块一个模块搞定再综合,多在网上搜索一下,网上有大量的资料可以借鉴,加油!
㈡ 51 单片机的智能台灯设计要求
智控台灯,智能家居大肆兴起后的衍生品,智控台灯可以讲将信号接收线埋藏于垂直的灯臂中,无形而有力地将信号放大。黑白分明的利落气质,简洁至上的线条轮廓,让这盏美观实用的台灯可以出现在任意多变的场合。此外,既然拥有了WiFi延长的功能。于是吸取其WiFi控制的思路,赋予它智能化的操作,只要下载一个APP到手机,就能远程控制家中的WiFi与灯光。
智控台灯[1]趋避无语相比独立的小插件,选择了将WiFi延长隐藏于必需品台灯中,有别于传统WiFi延长器生硬突出的天线,凌乱的设计,不堪入目的摆放,而智能台灯将信号接收线埋藏于垂直的灯臂中,无形而有力地将信号放大。
定时开关灯、控制上网时长、开关台灯……一切在指掌中轻松搞定,即使外出度假依然无忧,让人感叹原来科技可以让生活如此便捷。更贴心的是,灯底座侧边,还设置了USB直充插口,不用打开电脑,直接为各种设备充电,更方便了在床头使用。所有的考量,只是为了更便利的使用,从以人为本的设计理念出发,让家看起来更加美观舒适。
纠错
参考资料
㈢ 求基于单片机的智能照明系统的程序设计
这是我做的光敏电阻电压采集设计,可以将监测到的电压值显示在led上面,同时也能把它发给PC,用串口调试就能接受,4800b/s里面可能对你有些启发
/*-------------------------------------------------------------------------
AD0809的工作频范围为10KHZ-1280KHZ,当频率范围为500KHZ时,其转换速度为128us
飞翔的雄鹰-----2010.11.27
电路连接为直通型,a,b,c直接接地,选择模拟输入0通道
更改情况:增加了与PC的串行通讯
将P3.0和P3.1让出换为P3.6和P3.7 2010.11.29
---------------------------------------------------------------------------*/
#include<reg52.h>
unsigned char t,m,s,x,ior,cn; //电子表的各个位信号 x显示字位置控制
unsigned int foat,i; // 6位有效数字eg:4.56845
unsigned char ior;
unsigned char a[5]={0,0,0,0,0}; //注意5个数数组内是5而不是4
sbit start=P3^4; //启动AD
sbit OE=P3^7; //启动输出数据
sbit EOC=P3^3; //转换结束
sbit CLK=P3^6; //AD始终模拟
bit Recdat;
code unsigned char ledcod[]={0x7e,0x12,0xbc,0xb6,0xd2,0xE6,0xee,0x32,0xfe,0xf6};
code unsigned char ledcod1[]={0x7f,0x13,0xbd,0xb7,0xd3,0xE7,0xef,0x33,0xff,0xf7};//带小数点的字形码
/*------------------------------------------------
定时器初始化子程序
------------------------------------------------*/
void Init_Timer0(void)
{
TMOD |=0x02;
TH0=0xd1;
TL0=0xd1; //定时0.05ms
EA=1;
ET0=1;
TR0=1;
}
/*------------------------------------------------
串口初始化子程序
------------------------------------------------*/
void InitCom(void) //初始化串口
{
SCON|=0x50; //0101 0000B,工作方式1,8位UART,波特率可变,允许接收
TMOD|=0x20; //T1工作于方式2自动重装
TCON|=0x40; //定时器1开始计数TR1=1
TH1=250; //T1计数初值 波特率为4800
TL1=250;
RI=0;TI=0; //清发送接收标志
ES=1; // 开串口
}
/*--------------------------------------------------
显示子程序
---------------------------------------------------*/
void display(unsigned char num)
{
switch(num)
{
case 0:
{
ior=foat/10000; //3
a[0]=ior;
P1=ledcod1[ior];
P0=0x7e;
x++;
}
break;
case 1:
{
ior=(foat-10000*a[0])/1000;
P1=ledcod[ior];
a[1]=ior; //5
P0=0xfd;
x++;
}
break;
case 2:
{
ior=(foat-10000*a[0]-1000*a[1])/100;
P1=ledcod[ior];
a[2]=ior; //3
P0=0xfb;
x++;
}
break;
case 3:
{
ior=(foat-10000*a[0]-1000*a[1]-100*a[2])/10;
P1=ledcod[ior];
a[3]=ior; //1
P0=0xf7;
x++;
}
break;
case 4:
{
ior=foat-10000*a[0]-1000*a[1]-100*a[2]-10*a[3]; //6
P1=ledcod[ior];
a[4]=ior;
P0=0xef;
x++;
}
break;
case 5:
{
ior=foat-10000*a[0]-1000*a[1]-100*a[2]-10*a[3]; //6
P1=ledcod[ior];
P0=0xdf;
x++;
}
break;
default:
break;
}
}
/*------------------------------------------------
串口发送
------------------------------------------------- */
void ComOut(void) //向串口发送数据
{ unsigned char i;
for(i=0;i<5;i++)
{
SBUF=a[i]; //发送数据t
while(!TI); //等待发送完成
TI=0;
}
SBUF=0x0;
while(!TI); //等待发送完成
TI=0;
SBUF=0x0;
while(!TI); //等待发送完成
TI=0;
SBUF=0x0;
while(!TI); //等待发送完成
TI=0;
}
/*-----------------------------------------------------
延时函数
------------------------------------------------------*/
void delay(unsigned int i)
{
while(i--);
}
/********************主函数************************/
main()
{
Recdat=0;
x=0;
P2=0xff; //P2口工作于读,所以先写1,阻断内部的cmos
EOC=1; //
Init_Timer0();
InitCom();
while(1)
{
if(i==79) //开始的时候这里没加采样时间(79*0.05=3.94ms),导致始终无法采样到信号
{
delay(8000); //为了使数码管的数字让人眼能够分辨。增加了这个延时
start=0;
start=1; //AD在上升沿复位,在下降沿开始转换(ST端给出一个至少有100ns宽的正脉冲信号 )
start=0;
}
delay(8); //转换时间为20us
if(EOC==1) //查询高电平的到来。转换完毕AD0809的EOC会输出一个高电平
{
OE=1; //打开--将数据发出到单片机的P2口
delay(2);
foat=P2*196;
OE=0; //输出数据线呈高阻状态
}
if(Recdat)
{
Recdat=0;
ComOut();
}
}
}
/*****************************************************/
/*------------------------------------------------
定时器中断子程序
------------------------------------------------*/
void Timer0_isr(void) interrupt 1 using 2
{
i++;
CLK=~CLK; //为AD转换提供时钟周期 0.05ms 20khz
if(i==80) //每0.05ms*50=2.5ms 调用一次显示
{
i=0;
if(x==6)
{ x=0;}
display(x);
}
}
/*---------------------------------------------------
串口中断接收
----------------------------------------------------*/
void ComINT() interrupt 4 using 2 //中断接收程序
{
if(RI) //判断是否接收完,接收完成后,由硬件置RI位
{
cn=SBUF; //读入缓冲区
RI=0; //清标志
Recdat=1; //有数据,建立标志
}
}
㈣ 基于单片机的路灯控制
简单。如果是基于时间的加个RTC时钟电路,最好是能有纽扣电池,掉电后时间不变。最好是加个根据亮度能自动亮的电路,就是说在白天如果光线太暗,也可以自己亮,就是说加个光传感器。如果你要调光的,需要加个DAC电路,然后路灯上需要加根据你的DAC的输出,进行路灯电压或者电流调整的模块。如果你要轮流熄灭就简单些。如果你两盏轮流熄灭就两盏一组,三盏轮流灭就三盏一组,只需要单片机的IO口轮流高电平就行。但需要在路灯上加继电器。
你要先根据你所需要的接口选好单片机,然后再选外围电路的芯片或模块。原理图就没有了,论文还是你自己写吧。网上找找看有没有类似的吧。
㈤ 基于单片机的智能照明控制系统设计与实现
你好!
1、单片机的智能照明控制系统,需要具体功能要求
2、确定具体单片机型号
3、是否和光照关联灯光控制
4、实物还是仿真,都可以具体要求制作完成