数字电路课程设计:交通信号灯控制器的设计_第1页
数字电路课程设计:交通信号灯控制器的设计_第2页
数字电路课程设计:交通信号灯控制器的设计_第3页
数字电路课程设计:交通信号灯控制器的设计_第4页
数字电路课程设计:交通信号灯控制器的设计_第5页
已阅读5页,还剩17页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

HUNAN UNIVERSITY数字电子技术课程设计报告交通信号灯控制器设计学院:电气与信息工程学院专业:电气及其自动化班级:2008 级八班 姓名:包晓红20080711202 组员:周星星20080711126 李振明20080711112徐林 20080840123 指导老师:黎福海 苏娟一.课程设计的目的及要求1、能够全面巩固和应用“电子技术基础数字部分”课程中所学的基本理论和方法,并初步掌握小型数字系统设计的基本方法。2、掌握VHDL语言编制小型模块的方法,并采用层次化设计。3、培养电路设计能力,懂得理论设计与实物实现的有效结合。4、掌握Altium Designer软件的应用。二.设计的功能要求 设计的交通灯应用在两条主支干道的汇合点形成十字交叉路口,为确保车辆安全,迅速地通行,在交叉道口的每个入口设置了红,绿,黄三色信号灯。红灯亮禁止通行,绿灯亮允许通行,黄灯亮则警告行驶中的车辆,并让他们有时间停靠到禁行线之外。 1用LCD显示屏来显示不同时刻:哪个方向亮什么灯和计数。 2由于设计的十字路口分为主干道和支干道,并且车流量挺大的。当我看了很多人做的交通灯后,发现他们做的实现的功能都很简单,所以我就决定结合实际情况增加点功能。其一是加了左拐的功能,白天模式如下表:干道主干道支干道方向和状态 直走SN 左拐SWNE直走EW 左拐WNESSO G:40s R:70sS1 Y:05sR:30sS2 00 G:20sR:25sS3 Y:05sR:05sS4R:50s 00G:20sS5R:30sY:05sS6R:25s 00 G:20sS7R:05s Y:05s黑夜模式如下表:干道主干道支干道方向和状态 直走SN 左拐SWNE直走EW 左拐WNESSO G:20s R:40sS1 Y:05sR:20sS2 00 G:10sR:15sS3 Y:05sR:05sS4R:35s 00G:15sS5R:20sY:05sS6R:15s 00 G:10sS7R:05s Y:05s其二,就是加了一个四分钟的时钟模块。因为要演示给老师看,所以只是四分钟。在第二分钟时,自动从白天模式转入黑夜模式然后再是白天模式,从而让交通灯控制系统更加完善。3在系统中,我也增加了紧急事件时,全部亮红灯的功能,即交通管制模式。三主原理图四.具体控制模块的生成程序1.主控电路模块 总模块中包含一片此芯片,用来控制主干道和支干道的方向灯。其中CPIN是脉冲输入端,用来让输出的数字减数;R是复位端,复位时R=1,正常工作时R=0;CM是控制白天和黑夜正常工作状态和紧急事件状态,当CM=0时,系统处于正常状态,当CM=1时,系统处于紧急事件状态;SWITCH是控制白天和黑夜状态的开关,在CM=0状况下,如果SWITCH=1,则系统处于白天模式,反之为黑夜模式;在输出端中,EW和SN分别是主干道南北和支干道东西方向直行的计数,EWRYG和NSRYG是对应的红绿黄灯;SWNE和WNES则分别是主干道南北和支干道东西方向左拐的计数,SWNERYG和WNESRYG是对应的红绿黄灯。具体程序如下;1交通灯主控制程序- 1.设置环境为十字路口。- 2.配置灯:南北向、东西向左走/直走右走指示灯各一。- 3.采用6000000分频,以期达到秒脉冲计时的效果。- 4.具备紧急、白天、夜晚三种模式;复位后可任意切换。LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;USE IEEE.STD_LOGIC_ARITH.ALL;ENTITY JTD isPORT (CPIN,R ,SWITCH,CM:IN STD_LOGIC; SN,SWNE,EW,WNES :OUT STD_LOGIC_VECTOR(7 DOWNTO 0); EWRYG,SNRYG,SWNERYG,WNESRYG : OUT STD_LOGIC_VECTOR(2 DOWNTO 0) );END ENTITY ; -器件名称:JTD- 端口及其作用:- CPIN: 时钟脉冲输入 R: 复位信号输入- SWITCH: 白天/夜间模式切换信号输入- CM: 正常/紧急模式切换信号输入- SN: 南北向倒计时输出 SWNE: 南北向左指灯倒计时输出- EW: 东西向倒计时输出 WNES: 东西向左指灯倒计时输出architecture JGT of JTD isSIGNAL CTEW,CTSN,CTSWNE,CTWNES: STD_LOGIC_VECTOR(7 DOWNTO 0);-SIGNAL CTFP: INTEGER RANGE 0 TO 4000000;-SIGNAL CP: STD_LOGIC;TYPE STATES IS (S0,S1,S2,S3,S4,S5,S6,S7);SIGNAL S: STATES;-实体名称:JGT- 定义信号和类型变量:- CTSN: 南北向倒计时影子信号 CTSWNE: 南北向左指灯倒计时影子信号- CTEW: 东西向倒计时影子信号 CTWNES: 东西向左指灯倒计时影子信号- CP: 内置时钟信号 CPCT: CP脉冲计时信号- S: 状态切换变量,仅可以取S0到S7共8个不同的值BEGINPROCESS(CPIN,R)BEGINIF R=1 THEN CPCT=6000000;ELSIF CPIN=1 AND CPIN EVENT THEN IF CPCT=0 THEN CPCT=6000000;CP=NOT CP; ELSE CPCT=CPCT-1; END IF;END IF;END PROCESS;-延时进程- 作用:为下面的主进程提供合适的激励- 采用6000000分频,保证数据经过足够长的时间后被改变。PROCESS(SWITCH,CM,CP,R)BEGINIF CM=0 THEN - 正常模式IF SWITCH=1 THEN - 白天 - SN SWNE EW WNES -S0:G40 R70 00 -S1:Y05 R30 -S2: 00 G20 R25 -S3: Y05 R05 -S4:R50 00 G20 -S5:R30 Y05 -S6:R25 00 G20 -S7:R05 Y05IF R=1 THEN -复位S=S0;CTSN=X28;CTEW=X46;CTWNES=X00;CTSWNE=X00;SNRYG=001;EWRYG=100;SWNERYG=100;WNESRYGIF CTSN=X01 THEN S=S1;CTSN=X05;CTEW=X1E; SNRYG=010;EWRYG=100;SWNERYG=100;WNESRYG=100; ELSE CTSN=CTSN-1;CTEWIF CTSN=X01 THEN S=S2;CTEW=X19;CTSN=X00;CTSWNE=X14; SWNERYG=001;EWRYG=001;WNESRYG=100;SNRYG=100; ELSE CTSN=CTSN-1;CTEWIF CTSWNE=X01 THEN S=S3;CTSWNE=X05;CTEW=X05; SWNERYG=010;EWRYG=100;WNESRYG=100;SNRYG=100; ELSE CTSWNE=CTSWNE-1;CTEWIF CTSWNE=X01 THEN S=S4;CTSN=X32;CTSWNE=X00;CTEW=X14; SNRYG=100;EWRYG=001;SWNERYG=100;WNESRYG=100; ELSE CTSWNE=CTSWNE-1;CTEWIF CTEW=X01 THEN S=S5;CTSN=X1E;CTEW=X05; SNRYG=100;EWRYG=010;SWNERYG=100;WNESRYG=100; ELSECTSN=CTSN-1;CTEWIF CTEW=X01 THEN S=S6;CTSN=X19;CTWNES=X14;CTEW=X00; SNRYG=100;WNESRYG=001;SWNERYG=100;EWRYG=100; ELSE CTSN=CTSN-1;CTEWIF CTWNES=X01 THEN S=S7;CTSN=X05;CTWNES=X05; SNRYG=100;EWRYG=010;SWNERYG=100;WNESRYG=100; ELSE CTSN=CTSN-1;CTWNESIF CTWNES=X01 THEN S=S0;CTSN=X28;CTEW=X46;CTWNES=X00; SNRYG=001;EWRYG=100;SWNERYG=100;WNESRYG=100; ELSE CTSN=CTSN-1;CTWNESNULL; END CASE; END IF;ELSIF SWITCH=0 THEN -黑夜 - SN SWNE EW WNES -S0:G20 R40 00 -S1:Y05 R20 -S2:00 G10 R15 -S3: Y05 R05 -S4:R35 00 G15 -S5:R20 Y05 -S6:R15 00 G10 -S7:R05 Y05IF R=1 THEN -复位S=S0;CTSN=X14;CTEW=X28;CTWNES=X00; SNRYG=001;EWRYGIF CTSN=X01 THEN S=S1;CTSN=X05;CTEW=X14; SNRYG=010;EWRYG=100;SWNERYG=100;WNESRYG=100; ELSE CTSN=CTSN-1;CTEWIF CTSN=X01 THEN S=S2;CTEW=X05;CTSN=X00;CTSWNE=X0F; SWNERYG=001;EWRYG=100;SNRYG=100;WNESRYG=100; ELSE CTSN=CTSN-1;CTEWIF CTSWNE=X01 THEN S=S3;CTSWNE=X05;CTEW=X05; SWNERYG=010;EWRYG=100;SNRYG=100;WNESRYG=100; ELSE CTSWNE=CTSWNE-1;CTEWIF CTSWNE=X01 THEN S=S4;CTSN=X23;CTSWNE=X00;CTEW=X0F; SNRYG=100;EWRYG=001;SWNERYG=100;WNESRYG=100; ELSE CTSWNE=CTSWNE-1;CTEWIF CTEW=X01 THEN S=S5;CTSN=X14;CTEW=X05; SNRYG=100;EWRYG=010;SWNERYG=100;WNESRYG=100; ELSE CTSN=CTSN-1;CTEWIF CTEW=X01 THEN S=S6;CTSN=X0F;CTEW=X00;CTWNES=X0A; SNRYG=100;WNESRYG=001;SWNERYG=100;EWRYG=100; ELSE CTSN=CTSN-1;CTEWIF CTWNES=X01 THEN S=S7;CTSN=X05;CTWNES=X05; SNRYG=100;EWRYG=100;SWNERYG=100;WNESRYG=010; ELSE CTSN=CTSN-1;CTWNESIF CTWNES=X01 THEN S=S0;CTSN=X14;CTEW=X28;CTWNES=X00; SNRYG=001;EWRYG=100;SWNERYG=100;WNESRYG=100; ELSE CTSN=CTSN-1;CTWNESNULL; END CASE;END IF;END IF;ELSIF CM=1THEN -紧急模式 SN EW 亮CTSN=X00 ;CTEW=X00;CTSWNE=X00 ;CTWNES=X00;EWRYG=100;SNRYG=100;WNESRYG=100;SWNERYG=100 ;END IF;END PROCESS;PROCESS(CTEW,CTSN,CTSWNE,CTWNES) -将16进制转换为BCD码BEGINIF CTEWX0A THEN EW=CTEW;ELSIF CTEWX14 THEN EW=CTEW+6;ELSIF CTEWX1E THEN EW=CTEW+12;ELSIF CTEWX28 THEN EW=CTEW+18;ELSIF CTEWX32 THEN EW=CTEW+24;ELSIF CTEWX3C THEN EW=CTEW+30;ELSIF CTEWX46 THEN EW=CTEW+36; ELSE EW=CTEW+42;END IF;IF CTSNX0A THEN SN=CTSN;ELSIF CTSNX14 THEN SN=CTSN+6;ELSIF CTSNX1E THEN SN=CTSN+12;ELSIF CTSNX28 THEN SN=CTSN+18;ELSIF CTSNX32 THEN SN=CTSN+24;ELSIF CTSNX3C THEN SN=CTSN+30;ELSIF CTSNX46 THEN SN=CTSN+36; ELSE SN=CTSN+40;END IF; IF CTSWNEX0A THEN SWNE=CTSWNE;ELSIF CTSWNEX14 THEN SWNE=CTSWNE+6;ELSIF CTSWNEX1E THEN SWNE=CTSWNE+12;ELSIF CTSWNEX28 THEN SWNE=CTSWNE+18;ELSIF CTSWNEX32 THEN SWNE=CTSWNE+24;ELSIF CTSWNEX3C THEN SWNE=CTSWNE+30; ELSE SWNE=CTSWNE+36;END IF; IF CTWNESX0A THEN WNES=CTWNES;ELSIF CTWNESX14 THEN WNES=CTWNES+6;ELSIF CTWNESX1E THEN WNES=CTWNES+12;ELSIF CTWNESX28 THEN WNES=CTWNES+18;ELSIF CTWNESX32 THEN WNES=CTWNES+24;ELSIF CTWNESX3C THEN WNES=CTWNES+30; ELSE WNES CM, CPIN = CPIN, EW = EW, EWRYG = EWRYG, R = R, SN = SN, SNRYG = SNRYG, SWITCH = SWITCH, SWNE = SWNE, SWNERYG = SWNERYG, WNES = WNES, WNESRYG = WNESRYG ); STIMULUS0:processbegin R=1;WAIT FOR 2NS; R=0;wait; end process; PROCESS BEGIN CPIN=1;WAIT FOR 2NS; CPIN=0;WAIT FOR 2NS; END PROCESS; PROCESS BEGIN SWITCH=1;CM=0;WAIT FOR 500NS; SWITCH=0;CM=0;WAIT FOR 500NS; CM=1;WAIT; END PROCESS; WRITE_RESULTS( CM, CPIN, EW, EWRYG, R, SN, SNRYG, SWITCH, SWNE, SWNERYG, WNES, WNESRYG );end architecture;-波形图: 2LCD显示模块电路BUSY=0时才能接受信息给出STROBE信号,输入数据,则转到另一个相应的状态ADDR3.0用来储存列值OUTLINE 表示行值DATA70用来储存ASC码值RST用来表示是否空闲具体程序如下:-交通灯LCD显示程序- 1.与FPGA Peripherals库中LCD16X2A元件相适应- 2.采用65535分频作为扫描脉冲LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;entity JTDLCD is port (CPIN,R,BUSY :IN STD_LOGIC; EW,SWNE,WNES,SN :IN STD_LOGIC_VECTOR(7 DOWNTO 0); EWRYG,SWNERYG,WNESRYG,SNRYG : IN STD_LOGIC_VECTOR(2 DOWNTO 0); CLK,RST,STROBE,OUTLINE : OUT STD_LOGIC; DATA : OUT STD_LOGIC_VECTOR(7 DOWNTO 0); ADDR : OUT STD_LOGIC_VECTOR(3 DOWNTO 0) );end entity ;architecture JGT of JTDLCD is TYPE STATES IS (S0,S1,S2,S3,S4); SIGNAL S: STATES; SIGNAL LCDPT : INTEGER RANGE 0 TO 24; SIGNAL CPCT : INTEGER RANGE 0 TO 65535; SIGNAL CP: STD_LOGIC; SIGNAL ASCEW,ASCSWNE,ASCWNES,ASCSN : STD_LOGIC_VECTOR(7 DOWNTO 0);beginPROCESS(CPIN,R)BEGINCLK=CPIN; -分频为500us的周期IF R=1 THEN CPCT=65535;ELSIF CPIN=1 AND CPIN EVENT THEN IF CPCT=0 THEN CPCT=65535;CP=NOT CP; ELSE CPCT=CPCT-1; END IF;END IF;END PROCESS; -主进程:拟采用500us时钟,即在500us后完成状态转换,修改LCDPT指针PROCESS(CP,R) BEGIN IF R=1 THEN S=S0;LCDPT=0;RST S=S1;LCDPT=0;RST RST=0;STROBE=0; -S1:输出RST=0;LCD数据输入无效 IF BUSY=0 THEN -判断BUSY=0? LCDPT=LCDPT+1; -Y: LCDPT+1; IF LCDPT=13 THEN -LCDPT到固定最后? SS2 S S=S1;STROBE STROBE=0; -S3S4完成扫描显示功能 IF BUSY=0 THEN -S3:BUSY=0? :Y: LCDPT循环+1 ,转S4 IF LCDPT=24 THEN LCDPT=13; ELSE LCDPT=LCDPT+1; END IF; S STROBE=1;S NULL; END CASE;END IF; END PROCESS;PROCESS(LCDPT)BEGINCASE LCDPT IS -选择输出进程(LCDPT)WHEN 0 = NULL; -LCDPT=0,NULLWHEN 1= DATA=01010011;ADDR=0001;OUTLINE DATA=01001110;ADDR=0010;OUTLINE DATA=01010011;ADDR=0100;OUTLINE DATA=01001110;ADDR=0101;OUTLINE DATA=00111100;ADDR=0110;OUTLINE=0; - DATA=00101101;ADDR=0111;OUTLINE DATA=01000101;ADDR=1000;OUTLINE DATA=01010111;ADDR=1001;OUTLINE DATA=01000101;ADDR=1011;OUTLINE DATA=01010111;ADDR=1100;OUTLINE DATA=00111100;ADD

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论