模拟路灯控制系统.docx

上传人:b****3 文档编号:3883842 上传时间:2023-05-06 格式:DOCX 页数:20 大小:101.28KB
下载 相关 举报
模拟路灯控制系统.docx_第1页
第1页 / 共20页
模拟路灯控制系统.docx_第2页
第2页 / 共20页
模拟路灯控制系统.docx_第3页
第3页 / 共20页
模拟路灯控制系统.docx_第4页
第4页 / 共20页
模拟路灯控制系统.docx_第5页
第5页 / 共20页
模拟路灯控制系统.docx_第6页
第6页 / 共20页
模拟路灯控制系统.docx_第7页
第7页 / 共20页
模拟路灯控制系统.docx_第8页
第8页 / 共20页
模拟路灯控制系统.docx_第9页
第9页 / 共20页
模拟路灯控制系统.docx_第10页
第10页 / 共20页
模拟路灯控制系统.docx_第11页
第11页 / 共20页
模拟路灯控制系统.docx_第12页
第12页 / 共20页
模拟路灯控制系统.docx_第13页
第13页 / 共20页
模拟路灯控制系统.docx_第14页
第14页 / 共20页
模拟路灯控制系统.docx_第15页
第15页 / 共20页
模拟路灯控制系统.docx_第16页
第16页 / 共20页
模拟路灯控制系统.docx_第17页
第17页 / 共20页
模拟路灯控制系统.docx_第18页
第18页 / 共20页
模拟路灯控制系统.docx_第19页
第19页 / 共20页
模拟路灯控制系统.docx_第20页
第20页 / 共20页
亲,该文档总共20页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

模拟路灯控制系统.docx

《模拟路灯控制系统.docx》由会员分享,可在线阅读,更多相关《模拟路灯控制系统.docx(20页珍藏版)》请在冰点文库上搜索。

模拟路灯控制系统.docx

模拟路灯控制系统

 

模拟路灯控制系统

 

自动化4班

姓名:

常青

学号:

10006610429

 

摘要

随着电子技术的发展,本设计是以AT89S52为主控器的模拟路灯控制系统,具有对路灯的定时设定功能,也可以分别独立控制路灯的开启和关闭;能够同时具有调光功能,对路面的光线进行调整,还可以按设定要求使路灯驱动电源输出功率在20%~100%范围内任意调节。

在白天模式的时候,还能根据环境明暗的变化控制路灯的开启和关闭路灯,在夜晚模式的情况下,根据交通路面情况自动开关灯。

当灯出现故障不亮时,能够检测并且通过声光系统报警,显示器上显示故障灯的编号。

自制的单元控制器中的LED灯恒流驱动电源,在多数情况下,具有系统稳定,功耗低等特点

关键词:

定时设定调光功率调节检测故障灯

模拟路灯控制系统

控制系统结构如图1所示,路灯布置如图2所示。

图1路灯控制系统示意图

图2路灯布置示意图(单位:

cm)

要求

(1)支路控制器有时钟功能,能设定、显示开关灯时间,并控制整条支路按时开灯和关灯。

(2)支路控制器应能根据交通情况自动调节亮灯状态:

当可移动物体M(在物体前端标出定位点,由定位点确定物体位置)由左至右到达S点时(见图2),灯1亮;当物体M到达B点时,灯1灭,灯2亮;若物体M由右至左移动时,则亮灯次序与上相反

(3)支路控制器应能根据环境明暗变化,自动开灯和关灯。

(4)当路灯出现故障时(灯不亮),支路控制器应发出声光报警信号,并显示有故障路灯的地址编号。

(5)支路控制器能分别独立控制每只路灯的开灯和关灯时间。

分频器

该模块主要用于分出时钟的计时频率,CLK0为输入时钟,1秒钟一个上

升沿,分别计时60和3600得到分钟和小时的

时钟频率CLK1和CLK2

模块仿真如下:

时钟

该模块主要用于实现时钟,在系统中用5个七段数码管来显示时间,在CLK1和CLK2的作用下,输出a00~e00这5个变量,送给数码管显示。

模块仿真图如下:

同时控制:

该模块主要实现对两只路灯设置同时开关灯的功能,CLK0在这里作为按键的消抖的时钟,KE为开灯确定键,当其为高电平时,说明设定的是开灯时间,GE为关灯确定键,当其为高电平时,表明设定的是关灯时间。

而J1、J2分别为分钟和小时的增加键,用来设定时间。

L1,L2模拟本模块中的两个路灯,a11~e11用来作为设定时间时实时显示,aa0~ee0和aa1~ee1分别为设定的开关灯时间。

其仿真图如下:

自动调节:

根据设计要求,该模块主要实现支路控制器应能根据交通情况自动调节亮灯状态。

LR为方向使能,当其为“10”时表明从左边进入,当其为“01”时,说明从右边进入,S1S2S3模拟感应传感器,能根据不同的情况输出高低电平。

L3,L4模拟该模块中的两只路灯。

其仿真图如下:

译码显示

该模块主要是接收相应模块的输出变量,将其译码后送给数码管显示。

RESET为复位使能,当其为高电平时,数码管全部显示0,J0为模式选择键,KEYD是显示时间使能,ee为故障路灯的地址编号,系统一直在检测着故障信号的到来,否则将永远不会把ee的值显示出来。

LED1~LED5为5个数码管,该模块根据J0和KEYD信号的控制,选通着a00~e00,a11~e11,a22~e22,a33~e33各段的数值。

其仿真图如下:

模式选择

该模块主要实现对各种模式下的模拟路灯信号的选通。

B1、B2模拟路灯故障使能,J0为模式选择键,L1、L2、L11、

L22、L3、L4、L5、L6为不同模式下的模拟路灯信号。

LED1和LED2模拟两个路灯,ring为蜂鸣器输出,ee为故障路灯编号输出。

其仿真图如下:

源程序

---分频器:

LIBRARYIEEE;

USEIEEE.STD_LOGIC_1164.ALL;

USEIEEE.STD_LOGIC_UNSIGNED.ALL;

ENTITYFQ_DIVIDERIS

PORT(CLK0:

INSTD_LOGIC;

CLK1,CLK2:

OUTSTD_LOGIC);

ENDFQ_DIVIDER;

ARCHITECTUREBHVOFFQ_DIVIDERIS

SIGNALCNT1:

INTEGER:

=0;

SIGNALCNT2:

INTEGER:

=0;

BEGIN

PROCESS(CNT1,CLK0)

BEGIN

IFCLK0'EVENTANDCLK0='1'THEN

IF(CNT1<60)THEN

CNT1<=CNT1+1;CLK1<='0';

ELSE

CNT1<=0;

CLK1<='1';

ENDIF;

ENDIF;

ENDPROCESS;

PROCESS(CNT2,CLK0)

BEGIN

IFCLK0'EVENTANDCLK0='1'THEN

IF(CNT2<3600)THEN

CNT2<=CNT2+1;CLK2<='0';

ELSE

CNT2<=0;

CLK2<='1';

ENDIF;

ENDIF;

ENDPROCESS;

ENDBHV;

---时钟

LIBRARYIEEE;

USEIEEE.STD_LOGIC_1164.ALL;

USEIEEE.STD_LOGIC_UNSIGNED.ALL;

ENTITYTIME_COUNTERIS

PORT(CLK1,CLK2:

INSTD_LOGIC;

a00,b00,c00,d00,e00:

OUTSTD_LOGIC_VECTOR(3DOWNTO0));

ENDTIME_COUNTER;

ARCHITECTUREBHVOFTIME_COUNTERIS

SIGNALa0,b0,c0,d0:

STD_LOGIC_VECTOR(3DOWNTO0);

BEGIN

PROCESS(CLK1,a0,b0)

BEGIN

IFCLK1'EVENTANDCLK1='1'THEN

IF((a0="1001")AND(b0="0101"))THEN

a0<="0000";b0<="0000";

ELSIF(a0<"1001")THEN

a0<=a0+1;

ELSIF(a0="1001")THEN

a0<="0000";b0<=b0+1;

ENDIF;

ENDIF;

a00<=a0;

b00<=b0;

ENDPROCESS;

PROCESS(CLK2,c0,d0)

BEGIN

IFCLK2'EVENTANDCLK2='1'THEN

IF((c0="0011")AND(d0="0010"))THEN

c0<="0000";d0<="0000";

ELSIF(c0<"1001")THEN

c0<=c0+1;

ELSIF(c0="1001")THEN

c0<="0000";d0<=d0+1;

ENDIF;

ENDIF;

c00<=c0;

d00<=d0;

e00<="0000";

ENDPROCESS;

ENDBHV;

--同时调节

LIBRARYIEEE;

USEIEEE.STD_LOGIC_1164.ALL;

USEIEEE.STD_LOGIC_UNSIGNED.ALL;

ENTITYSYNCHRONIS

PORT(CLK0,J1,J2,KE,GE:

INSTD_LOGIC;

a00,b00,c00,d00,e00:

INSTD_LOGIC_VECTOR(3DOWNTO0);

a11,b11,c11,d11,e11:

OUTSTD_LOGIC_VECTOR(3DOWNTO0);

aa0,bb0,cc0,dd0,ee0,aa1,bb1,cc1,dd1,ee1:

OUTSTD_LOGIC_VECTOR(3DOWNTO0);

L1,L2:

OUTSTD_LOGIC);

ENDSYNCHRON;

ARCHITECTUREBHVOFSYNCHRONIS

SIGNALa0,b0,c0,d0:

STD_LOGIC_VECTOR(3DOWNTO0);

SIGNALReg3,Reg2,Reg1,Reg0:

STD_LOGIC_VECTOR(3DOWNTO0);

SIGNALReg7,Reg6,Reg5,Reg4:

STD_LOGIC_VECTOR(3DOWNTO0);

--SIGNALX,Y:

STD_LOGIC;

--SIGNALa22,b22,c22,d22:

INTEGERRANGE0TO9;

--SIGNALL1L2:

STD_LOGIC_VECTOR(1DOWNTO0):

="00";

BEGIN

e11<="0000";

PROCESS(CLK0,J1,a0,b0)

BEGIN

IFJ1='1'THEN

IFCLK0'EVENTANDCLK0='1'THEN

IF((a0="1001")AND(b0="0101"))THEN

a0<="0000";b0<="0000";

ELSIF(a0<"1001")THEN

a0<=a0+1;

ELSIF(a0="1001")THEN

a0<="0000";b0<=b0+1;

ENDIF;

ENDIF;

ENDIF;

a11<=a0;

b11<=b0;

ENDPROCESS;

PROCESS(CLK0,c0,d0,J2)

BEGIN

IFJ2='1'THEN

IFCLK0'EVENTANDCLK0='1'THEN

IF((c0="0011")AND(d0="0010"))THEN

c0<="0000";d0<="0000";

ELSIF(c0<"1001")THEN

c0<=c0+1;

ELSIF(c0="1001")THEN

c0<="0000";d0<=d0+1;

ENDIF;

ENDIF;

ENDIF;

c11<=c0;

d11<=d0;

ENDPROCESS;

PROCESS(KE,Reg3,Reg2,Reg1,Reg0,a0,b0,c0,d0)

BEGIN

IF(KE='1')THEN

Reg0<=a0;

Reg1<=b0;

Reg2<=c0;

Reg3<=d0;

ELSE

Reg0<="0000";

Reg1<="0000";

Reg2<="0000";

Reg3<="0000";

ENDIF;

ENDPROCESS;

PROCESS(GE,Reg7,Reg6,Reg5,Reg4,a0,b0,c0,d0)

BEGIN

IF(GE='1')THEN

Reg4<=a0;

Reg5<=b0;

Reg6<=c0;

Reg7<=d0;

ELSE

Reg4<="0000";

Reg5<="0000";

Reg6<="0000";

Reg7<="0000";

ENDIF;

ENDPROCESS;

PROCESS(Reg7,Reg6,Reg5,Reg4,Reg3,Reg2,Reg1,Reg0,a00,b00,c00,d00)

BEGIN

IF((a00/=Reg0)OR(b00/=Reg1)OR(c00/=Reg2)OR(d00/=Reg3))OR((a00=Reg4)AND(b00=Reg5)AND(c00=Reg6)AND(d00=Reg7))THEN

L1<='0';

L2<='0';ELSE

L1<='1';

L2<='1';

ENDIF;

ENDPROCESS;

PROCESS(Reg7,Reg6,Reg5,Reg4,Reg3,Reg2,Reg1,Reg0)

BEGIN

aa0<=Reg0;

bb0<=Reg1;

cc0<=Reg2;

dd0<=Reg3;

ee0<="0000";

aa1<=Reg4;

bb1<=Reg5;

cc1<=Reg6;

dd1<=Reg7;

ee1<="0000";

ENDPROCESS;

ENDBHV;

--自动调节

LIBRARYIEEE;

USEIEEE.STD_LOGIC_1164.ALL;

USEIEEE.STD_LOGIC_UNSIGNED.ALL;

ENTITYEN_ADAPTIVEIS

PORT(LR:

INSTD_LOGIC_VECTOR(1DOWNTO0);

S1S2S3:

INSTD_LOGIC_VECTOR(2DOWNTO0);

L3,L4:

OUTSTD_LOGIC);

ENDENTITYEN_ADAPTIVE;

ARCHITECTUREBHVOFEN_ADAPTIVEIS

BEGIN

PROCESS(LR,S1S2S3)

BEGIN

IFLR="10"THEN

IFS1S2S3="100"THENL3<='1';L4<='0';

ELSIFS1S2S3="010"THENL3<='0';L4<='1';

ELSIFS1S2S3="001"THENL3<='0';L4<='0';

ENDIF;

ELSIFLR="01"THEN

IFS1S2S3="001"THENL3<='0';L4<='1';

ELSIFS1S2S3="010"THENL3<='1';L4<='0';

ELSIFS1S2S3="100"THENL3<='0';L4<='0';

ENDIF;

ENDIF;

ENDPROCESS;

ENDBHV;

--译码显示

LIBRARYIEEE;

USEIEEE.STD_LOGIC_1164.ALL;

USEIEEE.STD_LOGIC_UNSIGNED.ALL;

ENTITYDISPLAYIS

PORT(RESET:

INSTD_LOGIC;

J0:

INSTD_LOGIC_VECTOR(2DOWNTO0);

KEYD,ee:

INSTD_LOGIC;

a00,b00,c00,d00,e00:

INSTD_LOGIC_VECTOR(3DOWNTO0);

a11,b11,c11,d11,e11:

INSTD_LOGIC_VECTOR(3DOWNTO0);

a22,b22,c22,d22,e22:

INSTD_LOGIC_VECTOR(3DOWNTO0);a33,b33,c33,d33,e33:

INSTD_LOGIC_VECTOR(3DOWNTO0);

LED1,LED2,LED3,LED4,LED5:

OUTSTD_LOGIC_VECTOR(6DOWNTO0));--数码管

ENDDISPLAY;

ARCHITECTUREBHVOFDISPLAYIS

SIGNALa,b,c,d,e:

STD_LOGIC_VECTOR(3DOWNTO0);

BEGIN

PROCESS(a,b,c,d,e,RESET)

BEGIN

IFRESET='1'THEN

LED1<="0111111";

LED2<="0111111";

LED3<="0111111";

LED4<="0111111";

LED5<="0111111";

ELSE

CASEaIS--七段输出译码

WHEN"0000"=>LED1<="0111111";

WHEN"0001"=>LED1<="0000110";

WHEN"0010"=>LED1<="1011011";

WHEN"0011"=>LED1<="1001111";

WHEN"0100"=>LED1<="1100110";

WHEN"0101"=>LED1<="1101101";

WHEN"0110"=>LED1<="1111101";

WHEN"0111"=>LED1<="0000111";

WHEN"1000"=>LED1<="1111111";

WHEN"1001"=>LED1<="1101111";

WHENOTHERS=>LED1<="0111111";

ENDCASE;

CASEbIS--七段输出译码

WHEN"0000"=>LED2<="0111111";

WHEN"0001"=>LED2<="0000110";

WHEN"0010"=>LED2<="1011011";

WHEN"0011"=>LED2<="1001111";

WHEN"0100"=>LED2<="1100110";

WHEN"0101"=>LED2<="1101101";

WHEN"0110"=>LED2<="1111101";

WHEN"0111"=>LED2<="0000111";

WHEN"1000"=>LED2<="1111111";

WHEN"1001"=>LED2<="1101111";

WHENOTHERS=>LED2<="0111111";

ENDCASE;

CASEcIS

WHEN"0000"=>LED3<="0111111";

WHEN"0001"=>LED3<="0000110";

WHEN"0010"=>LED3<="1011011";

WHEN"0011"=>LED3<="1001111";

WHEN"0100"=>LED3<="1100110";

WHEN"0101"=>LED3<="1101101";

WHEN"0110"=>LED3<="1111101";

WHEN"0111"=>LED3<="0000111";

WHEN"1000"=>LED3<="1111111";

WHEN"1001"=>LED3<="1101111";

WHENOTHERS=>LED3<="0111111";

ENDCASE;

CASEdIS

WHEN"0000"=>LED4<="0111111";

WHEN"0001"=>LED4<="0000110";

WHEN"0010"=>LED4<="1011011";

WHEN"0011"=>LED4<="1001111";

WHEN"0100"=>LED4<="1100110";

WHEN"0101"=>LED4<="1101101";

WHEN"0110"=>LED4<="1111101";

WHEN"0111"=>LED4<="0000111";

WHEN"1000"=>LED4<="1111111";

WHEN"1001"=>LED4<="1101111";

WHENOTHERS=>LED4<="0111111";

ENDCASE;

CASEeIS

WHEN"0000"=>LED5<="0111111";

WHEN"0001"=>LED5<="0000110";

WHEN"0010"=>LED5<="1011011";

WHEN"0011"=>LED5<="1001111";

WHEN"0100"=>LED5<="1100110";

WHEN"0101"=>LED5<="1101101";

WHEN"0110"=>LED5<="1111101";

WHEN"0111"=>LED5<="0000111";

WHEN"1000"=>LED5<="1111111";

WHEN"1001"=>LED5<="1101111";

WHENOTHERS=>LED5<="0111111";

ENDCASE;

ENDIF;

ENDPROCESS;

PROCESS(a,b,c,d,e,J0,KEYD,a00,b00,c00,d00,e00,a11,b11,c11,d11,e11,a22,b22,c22,d22,e22,a33,b33,c33,d33,e33)

BEGIN

IF(J0="001"ANDKEYD='0')THEN

a<=a11;

b<=b11;

c<=c11;

d<=d11;

e<=e11;

ELSIF(J0="010"ANDKEYD='0')THEN-

a<=a22;

b<=b22;

c<=c22;

d<=d22;

e<=e22;

ELSIF(((J0="001")OR(J0="010"))AND(KEYD='1'))THEN

a<=a33;

b<=b33;

c<=c33;

d<=d33;

e<=e33;

ELSE

a<=a00;

b<=b00;

c<=c00;

d<=d00;

e<=ee;

ENDIF;

ENDPROCESS;

ENDBHV;

--模式选择

LIBRARYIEEE;

USEIEEE.STD_LOGIC_1164.ALL;

USEIEEE.STD_LOGIC_UNSIGNED.ALL;

ENTITYMODEL_SELIS

PORT(B1,B2:

INSTD_LOGIC;

L1,L2,L11,L22,L3,L4,L5,L6:

INSTD_LOGIC;

J0:

INSTD_LOGIC_VECTOR(2DOWNTO0);

ee:

OUTSTD_LOGIC_VECTOR(3DOWNTO0);

ring,LLED1,LLED2:

OUTSTD_LOGIC);

ENDENTITYMODEL_SEL;

ARCHITECTUREBHVOFMODEL_SELIS

BEGIN

PROCESS(B1,B2)

BEGIN

IFB1='1'THEN

ee<="0001";

ring<='1';

ELSIFB2='1'THEN

ee<="0010";

ring<='1';

ELSE

ee<="0000";

ring<='0';

ENDIF;

ENDPROCESS;

PROCESS(J0,L1,L2,L11,L22,L3,L4,L5,L6)

BEGIN

IFJ0="001"THEN

LLED1<=L1;

LLED2<=L2;

ELSIFJ0="010"THEN

LLED1<=L11;

LLED2<=L22;

ELSIFJ0="011"THEN

LLED1<=L3;

LLED2<=L4;

ELSI

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 经管营销 > 销售营销

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2