数电EDA交通信号灯的课程设计1.doc_第1页
数电EDA交通信号灯的课程设计1.doc_第2页
数电EDA交通信号灯的课程设计1.doc_第3页
数电EDA交通信号灯的课程设计1.doc_第4页
数电EDA交通信号灯的课程设计1.doc_第5页
已阅读5页,还剩22页未读 继续免费阅读

下载本文档

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

文档简介

- 26 - 电自7班 王凯 20090710820交通信号灯控制器设计者:王凯班级:电气工程及其自动化7班学号:20090710820指导老师:苏娟一、课程设计的要求及目的:1了解电子设计的具体流程和方法。2. 掌握电子设计的基本要求,能够运用所学的知识解决生活中的一些问题。3. 初步掌握VHDL语言编程,并设计出一个有意义的小型系统。4. 掌握Altium Designer6软件的应用,并且了解相关硬件的组成和功能。二、设计的功能要求:NSWE1、交通灯分南北方向和东西方向红绿灯安排,SN为主干道,EW为支干道。此交通灯分为正常模式和紧急模式,在正常模式下分为白天模式和夜间模式。2、交通灯可以根据时钟的时间自动从白天模式转为黑夜模式,交通灯紧急模式和正常模式之间的转换通过开关控制,且当从紧急模式回复到正常模式时,数码管显示回到最初状态。3、白天模式:主干道工作时:SN(南北直走)绿灯40秒,黄灯5秒;SWNE(南拐西、北拐东)绿灯20秒,黄灯5秒。支干道工作时:EW(东西直走)绿灯20秒,黄灯5秒,WNES(西拐北、东拐南)绿灯20秒,黄灯5秒。(设计直走与左拐的功能是为了防止左拐与对面直走的车辆相撞)4、黑夜模式:主干道工作时:SN(南北直走)绿灯20秒,黄灯5秒;SWNE(南拐西、北拐东)绿灯10秒,黄灯5秒。支干道工作时:EW(东西直走)绿灯15秒,黄灯5秒,WNES(西拐北、东拐南)绿灯10秒,黄灯5秒。5、紧急模式:主干道与支干道全亮红灯且显示为00。三、模块说明 原理图:1、信号模块说明:从器件库提出的,提供20M赫兹的脉冲信号。2、开关模块说明:从器件库提出,控制下载JTDLCD上灯的显示,控制主控 模块上CM的选择,CM为0时为正常模式,CM为1时为紧 急模式。控制键盘模块的复位R,键盘只有在复位后才能 正常使用,R为1有效。3、键盘模块说明:KEYPAD器件从器件库提出,将板上键盘变为16个按键, 从左上到右下,按键按下时,对应输出为1,松开为0。 支持多个按键(必须是同一行)同时按下,带防抖,与 NANOBOARD库中器件KEYPAD直接相连。管脚说明: ICOL3.0、OROW3.0连接KEYPAD器件,输入:CPIN 时钟脉冲输入 按20MHz设计,链接脉冲发生器。 复位R链接开关O4。输出:Y15.0 16个按键输出。当按下Y1时,JTD模块、时钟模块和JTDLCD模块复位,Y1链接JTD模块R、时钟模块R、R1和JTDLCD模块R。模块程序VHDL语言如下:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;entity PADTOKEY is port (CPIN,R :IN STD_LOGIC; Y: OUT STD_LOGIC_VECTOR(15 DOWNTO 0); ICOL : IN STD_LOGIC_VECTOR(3 DOWNTO 0); -ICOL3.0连接KEYPAD器件 OROW : OUT STD_LOGIC_VECTOR(3 DOWNTO 0) -ROW3.0连接KEYPAD器件 ); END ENTITY;architecture JGT of PADTOKEY is TYPE STATES IS (S0,S1,S2,S3,S4); SIGNAL S: STATES; SIGNAL SROW : STD_LOGIC_VECTOR(3 DOWNTO 0); SIGNAL CPCT : INTEGER RANGE 0 TO 255; SIGNAL CTDELAY: INTEGER RANGE 0 TO 511; SIGNAL CP:STD_LOGIC; BEGIN -KEY分频 PROCESS(CPIN) BEGIN IF CPIN=1 AND CPIN EVENT THEN IF CPCT=255 THEN CPCT=0;CP= NOT CP; ELSE CPCT=CPCT+1; END IF; END IF; END PROCESS; PROCESS(CP,R) VARIABLE N:INTEGER RANGE 0 TO 12; -整数变量 BEGIN IF R=1 THEN S=S0;Y=0000000000000000;SROWSOROW=SROW;SSY(3 DOWNTO 0)Y(7 DOWNTO 4)Y(11 DOWNTO 8)Y(15 DOWNTO 12)NULL; END CASE; WHEN S3=IF N=12 THEN N:=0;S=S4;CTDELAY=0;SROW=1110; ELSE N:=N+4;S=S1;SROWIF CTDELAY=511 THEN S=S1;CTDELAY=0; ELSE CTDELAY=CTDELAY+1; END IF; END CASE;END IF;END PROCESS;END JGT;4、JTD模块说明: 此为主控模块,在此模块中将20MHZ的脉冲分频为2.6HZ的脉冲,实现交通灯红黄绿的变换,实现红黄绿灯分秒的计数,实现正常模式与紧急模式的转换,接收来自时钟的脉冲,实现白天模式与黑夜模式的自动转换。管脚说明:输入:CM:为0时选择正常模式,为1时选择紧急模式,连接开关O2。 CPIN:脉冲输入,连接脉冲端口。 SWITCH:为1时选择白天模式,为0时选择黑夜模式,连接时钟模块的MICOUT1。 R:复位,连接键盘模块KEY0。输出:EW7.0:输出东西直走方向分秒信号。 EWRYG2.0:输出东西直走方红黄绿灯状态信号。 SN7.0: 输出南北直走方向分秒信号。 SNRYG2.0: 输出南北直走方红黄绿灯状态信号 SWNE7.0: 输出南拐西、北拐东方向分秒信号。 SWNERYG2.0: 输出南拐西、北拐东红黄绿灯状态信号 WNES7.0:输出西拐北、东拐南方向分秒信号。 WNESRYG2.0: 输出西拐北、东拐南方红黄绿灯状态信号。程序VHDL语言如下:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;USE IEEE.STD_LOGIC_ARITH.ALL;entity JTD is port (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 ;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;BEGINPROCESS(CPIN)BEGINIF CPIN=1 AND CPIN EVENT THENIF CTFP=4000000 THEN CTFP=0;CP=NOT CP; ELSE CTFP=CTFP+1; END IF;END IF;END PROCESS;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; SNRYG=001;EWRYGIF CTSN=X01 THEN S=S1;CTSN=X05;CTEW=X1E;SNRYG=010;EWRYG=100; ELSE CTSN=CTSN-1;CTEWIF CTSN=X01 THEN S=S2;CTEW=X19;CTSN=X00;CTSWNE=X14;SWNERYG=001;EWRYG=001; ELSE CTSN=CTSN-1;CTEWIF CTSWNE=X01 THEN S=S3;CTSWNE=X05;CTEW=X05;SWNERYG=010;EWRYG=100; ELSE CTSWNE=CTSWNE-1;CTEWIF CTSWNE=X01 THEN S=S4;CTSN=X32;CTSWNE=X00;CTEW=X14;SNRYG=100;EWRYG=001; ELSE CTSWNE=CTSWNE-1;CTEWIF CTEW=X01 THEN S=S5;CTSN=X1E;CTEW=X05;SNRYG=100;EWRYG=010; ELSE CTSN=CTSN-1;CTEWIF CTEW=X01 THEN S=S6;CTSN=X19;CTWNES=X14;CTEW=X00;SNRYG=100;WNESRYG=001; ELSE CTSN=CTSN-1;CTEWIF CTWNES=X01 THEN S=S7;CTSN=X05;CTWNES=X05;SNRYG=100;EWRYG=010; ELSE CTSN=CTSN-1;CTWNESIF CTWNES=X01 THEN S=S0;CTSN=X28;CTEW=X46;CTWNES=X00; SNRYG=001;EWRYG=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; ELSE CTSN=CTSN-1;CTEWIF CTSN=X01 THEN S=S2;CTEW=X05;CTSN=X00;CTSWNE=X0F;SWNERYG=001;EWRYG=001; ELSE CTSN=CTSN-1;CTEWIF CTSWNE=X01 THEN S=S3;CTSWNE=X05;CTEW=X05;SWNERYG=010;EWRYG=100; ELSE CTSWNE=CTSWNE-1;CTEWIF CTSWNE=X01 THEN S=S4;CTSN=X23;CTSWNE=X00;CTEW=X0F;SNRYG=100;EWRYG=001; ELSE CTSWNE=CTSWNE-1;CTEWIF CTEW=X01 THEN S=S5;CTSN=X14;CTEW=X05;SNRYG=100;EWRYG=010; ELSE CTSN=CTSN-1;CTEWIF CTEW=X01 THEN S=S6;CTSN=X0F;CTEW=X00;CTWNES=X0A;SNRYG=100;WNESRYG=001; ELSE CTSN=CTSN-1;CTEWIF CTWNES=X01 THEN S=S7;CTSN=X05;CTWNES=X05;SNRYG=100;EWRYG=010; ELSE CTSN=CTSN-1;CTWNESIF CTWNES=X01 THEN S=S0;CTSN=X14;CTEW=X28;CTWNES=X00; SNRYG=001;EWRYG=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=CTWNES+36;END IF;END PROCESS;END JGT;5、时钟模块说明:将20MHZ的脉冲分频为2.6HZ,由此脉冲作为分秒的计数,秒计数为60进制,分计数为5进制。当分秒从00计数到20时,MICOUT1输出为1;当分秒从20计数到40时,MICOUT1输出为0。管脚说明:输入:CPIN:连接脉冲端口。 R、R1:复位,连接键盘模块KEY0,为1有效。输出:MICOUT:输出信号,连接SWITCH。程序WHDL语言如下:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;USE IEEE.STD_LOGIC_ARITH.ALL;ENTITY CLOCK1 ISPORT(CPIN,R,R1:IN STD_LOGIC; MICOUT1: OUT STD_LOGIC);END CLOCK1;ARCHITECTURE JGT OF CLOCK1 ISTYPE STATES IS (S0,S1,S2); -3个状态:分秒:00 20 40SIGNAL S:STATES;SIGNAL MICC:STD_LOGIC_VECTOR( 3 DOWNTO 0);SIGNAL SCE:STD_LOGIC_VECTOR( 7 DOWNTO 0);SIGNAL CTFP: INTEGER RANGE 0 TO 4000000;SIGNAL CP:STD_LOGIC;BEGIN PROCESS(CPIN) -分频到2.6HZ, T=0.38S BEGINIF CPIN=1 AND CPIN EVENT THEN IF CTFP=4000000 THEN CTFP=0;CP=NOT CP; ELSE CTFP=CTFP+1; END IF;END IF;END PROCESS;PROCESS(CP,R)BEGINIF R=1 THEN -复位到00 MICOUT1=1; SMICOUT1=1; -S2 40 1 SIF MICC=0010 THEN MICOUT1=0; SIF MICC=0100 THEN S=S0; END IF; END CASE;END IF;END PROCESS;PROCESS(CP,R1)BEGIN IF R1=1 THEN -复位 SCE=00000000; MICC=0000; ELSIF RISING_EDGE(CP) THEN -若秒为*9则变*0,在此情况下: IF SCE(3 DOWNTO 0)=1001 THEN -若*=5则秒为00,在此情况下: SCE(3 DOWNTO 0)=0000; -若分为4则分0;否则分+ IF SCE(7 DOWNTO 4)=0101 THEN SCE=00000000; IF MICC=0100 THEN MICC=0000; ELSE MICC=MICC+1; END IF; ELSE SCE( 7 DOWNTO 4)=SCE(7 DOWNTO 4)+1; -若*!=5则*+ END IF ; ELSE SCE(3 DOWNTO 0)=SCE(3 DOWNTO 0)+1; -若秒个位不为9,则个位+ END IF; END IF;END PROCESS;END JGT;6、JTDLCD模块说明:将主控模块输入的交通灯状态,数字转换为数码管可识别的BCD码,并在数码管上显示。管脚说明:输入:R:复位为1有效,连接键盘模块KEY0。 CPIN:连接脉冲发生器。 EW7.0:输入东西直走方向分秒信号,连接主控模块。 EWRYG2.0:输入东西直走方红黄绿灯状态信号,连接主控模 块。 SN7.0: 输入南北直走方向分秒信号,连接主控模块。 SNRYG2.0: 输入南北直走方红黄绿灯状态信号,连接主控模块。 SWNE7.0: 输入南拐西、北拐东方向分秒信号,连接主控模块。 SWNERYG2.0: 输入南拐西、北拐东红黄绿灯状态信号,连接主控模块。 WNES7.0:输入西拐北、东拐南方向分秒信号,连接主控模块。 WNESRYG2.0: 输入西拐北、东拐南方红黄绿灯状态信号,连接主控模块。 BUSY:连接显示端口BUSY,判断数码管是否忙碌。输出:CLK:给显示端口脉冲。 REST:给显示端口复位信号。 DATA7.0:输出显示端口可识别的分秒计数。 ADDR3.0:给显示端口可识别的交通灯状态显示。 OUTLINE: STORBE:输出显示端口的数据输入信号,1有效。程序VHDL语言如下: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;PROCESS(CP,R) -主进程:拟采用500us时钟,即在500us后完成状态转换,修改LCDPT指针BEGIN -S1,S2完成初始化固定显示的功能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; -S3:BUSY=0? :Y: LCDPT循环+1 ,转S4 IF BUSY=0 THEN 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,NULL -LCDPT=112 显示SN SWNE EW WNES WHEN 1= DATA=01010011;ADDR=0001;OUTLINE DATA=01001110;ADDR=0010;OUTLINE DATA=01010011;ADDR=0100;OUTLINE DATA=01010111;ADDR=0101;OUTLINE DATA=01001110;ADDR=0110;OUTLINE DATA=01000101;ADDR=0111;OUTLINE DATA=01000101;ADDR=1000;OUTLINE DATA=01010111;ADDR=1001;OUTLINE DATA=01010111;ADDR=1011;OUTLINE DATA=01001110;ADDR=1100;OUTLINE DATA=01000101;ADDR=1101;OUTLINE DATA=01010011;ADDR=1110;OUTLINEDATA=ASCSN;ADDR=0001;OUTLINEDATA=0011&SN(7 DOWNTO 4);ADDR=0010;OUTLINEDATA=0011&SN(3 DOWNTO 0);ADDR=0011;OUTLINEDATA=ASCSWNE;ADDR=0100;OUTLINEDATA=0011&SWNE(7 DOWNTO 4);ADDR=0101;OUTLINEDATA=0011&SWNE(3 DOWNTO 0);ADDR=0110;OUTLINEDATA=ASCEW;ADDR=1000;OUTLINEDATA=0011&EW(7 DOWNTO 4);ADDR=1001;OUTLINEDATA=0011&EW(3

温馨提示

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

最新文档

评论

0/150

提交评论