路灯的智能控制系统.docx
- 文档编号:18046270
- 上传时间:2023-08-07
- 格式:DOCX
- 页数:16
- 大小:38.42KB
路灯的智能控制系统.docx
《路灯的智能控制系统.docx》由会员分享,可在线阅读,更多相关《路灯的智能控制系统.docx(16页珍藏版)》请在冰点文库上搜索。
路灯的智能控制系统
模拟路灯控制系统(I题)
一、任务
设计并制作一套模拟路灯控制系统。
控制系统结构如图1所示,路灯布置如图2所示。
图1路灯控制系统示意图
图2路灯布置示意图(单位:
cm)
二、要求
1.基本要求
(1)支路控制器有时钟功能,能设定、显示开关灯时间,并控制整条支路按时开灯和关灯。
(2)支路控制器应能根据环境明暗变化,自动开灯和关灯。
(3)支路控制器应能根据交通情况自动调节亮灯状态:
当可移动物体M(在物体前端标出定位点,由定位点确定物体位置)由左至右到达S点时(见图2),灯1亮;当物体M到达B点时,灯1灭,灯2亮;若物体M由右至左移动时,则亮灯次序与上相反。
(4)支路控制器能分别独立控制每只路灯的开灯和关灯时间。
(5)当路灯出现故障时(灯不亮),支路控制器应发出声光报警信号,并显示有故障路灯的地址编号。
2.发挥部分
(1)自制单元控制器中的LED灯恒流驱动电源。
(2)单元控制器具有调光功能,路灯驱动电源输出功率能在规定时间按设定要求自动减小,该功率应能在20%~100%范围内设定并调节,调节误差≤2%。
(3)其它(性价比等)。
三、说明
1.光源采用1W的LED灯,LED的类型不作限定。
2.自制的LED驱动电源,不得使用产品模块。
3.自制的LED驱动电源输出端需留有电流、电压测量点。
4.系统中不得采用接触式传感器。
5.基本要求(3)需测定可移动物体M上定位点与过“亮灯状态变换点”(S、B、S’等点)垂线间的距离,要求该距离≤2cm。
/*基于51单片机的路灯智能控制系统源程序(已试验通过)*/
#include
sbitKEY1=P3^0;//定义端口参数
sbitKEY2=P3^1;
sbitKEY3=P3^2;
sbitKEY4=P3^3;
sbitKEY5=P3^4;
sbitKEY6=P3^5;
sbitKEY7=P3^6;
sbitKEY8=P3^7;
sbitLED1=P1^0;
sbitLED2=P1^1;
sbitLED3=P1^2;
sbitLED4=P1^3;
sbitP14=P1^4;
codeunsignedchartab[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
//共阴数码管0-9
unsignedintStrTab[8];//定义缓冲区
unsignedintselfminute=58,selfhour=17,selfsecond=0;//定义并且初始化值00:
00:
00
unsignedintonminute=0,onhour=6,onsecond=0;
unsignedintoffminute=0,offhour=18,offsecond=0;
//unsignedinta,b,c,d,e,f;
/******************************************************************/
/*延时函数*/
/******************************************************************/
voiddelay(unsignedintcnt)
{
while(--cnt);
}
/******************************************************************/
/*显示处理函数*/
/******************************************************************/
voidselfDisplaypro(void)
{
StrTab[0]=tab[selfhour/10];//显示小时
StrTab[1]=tab[selfhour%10];
StrTab[2]=0x40;//显示"-"
StrTab[3]=tab[selfminute/10];//显示分钟
StrTab[4]=tab[selfminute%10];
StrTab[5]=0x40;//显示"-"
StrTab[6]=tab[selfsecond/10];//显示秒
StrTab[7]=tab[selfsecond%10];
}
voidonDisplaypro(void)
{
StrTab[0]=tab[onhour/10];//显示小时
StrTab[1]=tab[onhour%10];
StrTab[2]=0x40;//显示"-"
StrTab[3]=tab[onminute/10];//显示分钟
StrTab[4]=tab[onminute%10];
StrTab[5]=0x40;//显示"-"
StrTab[6]=tab[onsecond/10];//显示秒
StrTab[7]=tab[onsecond%10];
}
voidoffDisplaypro(void)
{
StrTab[0]=tab[offhour/10];//显示小时
StrTab[1]=tab[offhour%10];
StrTab[2]=0x40;//显示"-"
StrTab[3]=tab[offminute/10];//显示分钟
StrTab[4]=tab[offminute%10];
StrTab[5]=0x40;//显示"-"
StrTab[6]=tab[offsecond/10];//显示秒
StrTab[7]=tab[offsecond%10];
}
/******************************************************************/
/*主函数*/
/******************************************************************/
main()//主函数
{
TMOD|=0x01;//定时器010msin12Mcrystal用于计时
TH0=0xd8;//初值
TL0=0xf0;
ET0=1;
TR0=1;
TMOD|=0x10;//定时器1用于动态扫描
TH1=0xF8;//初值
TL1=0xf0;
ET1=1;
TR1=1;
EA=1;
selfDisplaypro();//调用显示处理
while
(1)//主循环
{
/****************************选设置时间功能****************************/
if(!
KEY6)
{
if((!
KEY1)||(!
KEY2)||(!
KEY3)||(!
KEY4))
{selfsecond=0;
if(!
KEY1)//按键1去抖以及动作
{
delay(15000);
if(!
KEY1)
{
selfhour++;if(selfhour==24)selfhour=0;//正常时间小时加1
selfDisplaypro();
}
}
if(!
KEY2)//按键2去抖以及动作
{
delay(15000);
if(!
KEY2)
{
selfhour--;if(selfhour==255)selfhour=23;//second=22;//正常时间小时减1
selfDisplaypro();
}
}
if(!
KEY3)//按键去抖以及动作
{
delay(15000);
if(!
KEY3)
{
selfminute++;if(selfminute==60)selfminute=0;//second=22;//分加1
selfDisplaypro();
}
}
if(!
KEY4)//按键去抖以及动作
{
delay(15000);
if(!
KEY4)
{
selfminute--;if(selfminute==255)selfminute=59;//second=22;//分减1
selfDisplaypro();
}
}
//c=selfhour;d=selfminute;e=selfsecond;
}
}
/****************************选设置定时开启时间功能*********************************/
elseif(!
KEY7)
{onsecond=0;
onDisplaypro();
if((!
KEY1)||(!
KEY2)||(!
KEY3)||(!
KEY4))
{selfsecond=0;
if(!
KEY1)//按键1去抖以及动作
{
delay(15000);
if(!
KEY1)
{
onhour++;if(onhour==24)selfhour=0;//正常时间小时加1
onDisplaypro();
}
}
if(!
KEY2)//按键2去抖以及动作
{
delay(150000);
if(!
KEY2)
{
onhour--;if(onhour==255)onhour=23;//second=22;//正常时间小时减1
onDisplaypro();
}
}
if(!
KEY3)//按键去抖以及动作
{
delay(15000);
if(!
KEY3)
{
onminute++;if(onminute==60)onminute=0;//second=22;//分加1
onDisplaypro();
}
}
if(!
KEY4)//按键去抖以及动作
{
delay(15000);
if(!
KEY4)
{
onminute--;if(onminute==255)onminute=59;//second=22;//分减1
onDisplaypro();
}
}
}
}
/****************************选设置定时关闭时间功能*********************************/
elseif(!
KEY8)
{offsecond=0;
offDisplaypro();
if((!
KEY1)||(!
KEY2)||(!
KEY3)||(!
KEY4))
{offsecond=0;
if(!
KEY1)//按键1去抖以及动作
{
delay(15000);
if(!
KEY1)
{
offhour++;if(offhour==24)offhour=0;//正常时间小时加1
offDisplaypro();
}
}
if(!
KEY2)//按键2去抖以及动作
{
delay(15000);
if(!
KEY2)
{
offhour--;if(offhour==255)offhour=23;//second=22;//正常时间小时减1
offDisplaypro();
}
}
if(!
KEY3)//按键去抖以及动作
{
delay(15000);
if(!
KEY3)
{
offminute++;if(offminute==60)offminute=0;//second=22;//分加1
offDisplaypro();
}
}
if(!
KEY4)//按键去抖以及动作
{
delay(15000);
if(!
KEY4)
{
offminute--;if(offminute==255)offminute=59;//second=22;//分减1
offDisplaypro();
}
}
}
}
if((onhour { /**********************光控开关************************/ LED1=P14; LED2=P14; LED3=P14; LED4=P14; LED1=1; LED2=1; LED3=1; LED4=1; } else { LED1=0; LED2=0; LED3=0; LED4=0; } if((onhour==selfhour)||(selfhour==offhour)) { if((onminute<=selfminute)||(selfminute<=(offminute-1))) { //if(((3600*a+60*b+0)<(3600*c+60*d+e))&&((3600*c+60*d+e)<(3600*a+60*b+0+3600*12))) //if((onhour*60+onminute)<=(selfhour*60+selfminute)<=(offhour*60+offminute-1)) //{ /**********************光控开关************************/ LED1=P14; LED2=P14; LED3=P14; LED4=P14; LED1=1; LED2=1; LED3=1; LED4=1; } else { LED1=0; LED2=0; LED3=0; LED4=0; } } }//while (1)的大括号 } /******************************************************************/ /*定时器1中断*/ /******************************************************************/ voidtime1_isr(void)interrupt3using0//定时器1用来动态扫描 { staticunsignedcharnum; TH1=0xF8;//重入初值 TL1=0xf0; switch(num) { case0: P2=0x7f;P0=StrTab[num];break;//分别调用缓冲区的值进行扫描 case1: P2=0xbf;P0=StrTab[num];break; case2: P2=0xdf;P0=StrTab[num];break; case3: P2=0xef;P0=StrTab[num];break; case4: P2=0xf7;P0=StrTab[num];break; case5: P2=0xfb;P0=StrTab[num];break; case6: P2=0xfd;P0=StrTab[num];break; case7: P2=0xfe;P0=StrTab[num];break; default: break; } num++;//扫描8次,使用8个数码管 if(num==8) num=0; } /******************************************************************/ /*定时器0中断*/ /******************************************************************/ voidtim(void)interrupt1using1 { staticunsignedcharcount;//定义内部静态变量 TH0=0xd8;//重新赋值 TL0=0xf0; count++; switch(count) { case0: case2: case4: case6: case8: selfDisplaypro();//隔一定时间调用显示处理 break; default: break; } if(count==10) { count=0; selfsecond++;//秒加1 if(selfsecond==60) { selfsecond=0; selfminute++;//分加1 if(selfminute==60) { selfminute=0; selfhour++;//时加1 if(selfhour==24) selfhour=0; } } } }
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 路灯 智能 控制系统