版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、 数字电子技术课程实验报告数字电子技术课程设计报告交通信号灯控制器设计学院:电气与信息工程学院专业:电气工程及其自动化班级:电自1206班 姓名:汤俊 201207010617 指导老师:彭义1. 绪论1.1 课程设计背景随着科技的进步和城市化进程的加快,城市交通越来越成为一个重要的问题,特别是当城市交通基础设施建设滞后于汽车产业增长的时候,问题便会变得更加凸出。目前,全国大中城市都普遍存在着道路堵塞日趋加重,交通事故频繁,环境污染加剧等问题;而交通事故的频发给人们的生命和财产安全带来了极大的威胁。因此,如何有效解决城市交通问题不仅是摆在城市管理者面前的一个重要课题,更是摆在全社会面前的一道难
2、题。究其根本,原因在于城市交通系统本身的落后和相应的管理机制的不适应。其中,城市交通控制系统(UTC ,Urban Traffic Control System)应该是现代城市智能交通系统(IDJ ,Intelligent transport system)的一个重要组成部分,而路口信号控制器又在其中担当了重要角色。各种交通控制方案,最终都要由路口信号控制器来实现。因此,对于IDJ而言,采用智能控制的路口信号控制器是必然的。而EDA技术发展和应用领域的不断扩大与深入为利用EDA技术来解决这些问题提供了可能。利用FPGA的集成度高、通用性好、设计灵活、编程方便等特点,能够极大地缩短电路的体积,提
3、高电路的稳定性,利用先进的开发环境使设计的周期大大缩短。本文采用FPGA控制信号灯,使用VHDL语言编程,控制交通灯的状态的转换,并利用软件进行仿真和下载,从而实现系统的设计。1.2 课程设计目的a.掌握十字路口带指向型交通灯控制的基本原理,并能够使用VHDL语言编写程序,进一步对所学的EDA知识进行掌握与实际应用。b. 熟悉Altium Designer软件的基本操作和运行环境,学会在该软件环境下对编写的文件进行仿真。c.锻炼自己获取信息、分析实际问题的能力和能够独立自主地思考和解决问题的能力。2. 系统分析与总体方案2.1系统分析 通过分析可知,所要设计的十字路口交通灯控制电路要能够使南北
4、、东西各四个灯(红、黄、绿左指向、绿前&右指向),四个灯能够按顺序依次亮灭。而且要求绿灯转红灯之前要先转黄灯亮5秒,红灯灭后可以直接转绿灯(四种灯的循环顺序如图1所示)。还要求四种灯的点亮时间能够以倒计时的形式显示出来。可以用VHDL语言合理设计系统功能,使红黄绿灯的转换有一个准确的时间间隔和转换顺序。考虑到白天和夜间的路况亦即交通状况有所不同,故而我们采取了分情况的处理方法,即通过开关来做到白天模式和夜间模式的切换;另外,我们考虑到:如果碰到事故或者是其他非常规情况发生,所有路口都必须禁止通行,以为路口中央留出空间。故整个程序我们设置了三种模式:白天模式、夜间模式和紧急模式。由于紧急
5、模式下,所有路口的灯全部亮起红灯且无倒计时,故只列出白天模式和夜间模式下状态的转换示意图。白天模式:东西向:左黄05s;其余禁止南北向:全红灯05s东西向:全红灯70s南北向:绿灯40s;左转禁止东西向:左绿20s;其余禁止南北向:全红灯25s东西向:全红灯30s南北向:黄灯05s;左转禁止东西向:黄灯05s;左转禁止南北向:全红灯30s东西向:全红灯25s南北向:左绿20s;其余禁止东西向:绿灯20s;左转禁止南北向:全红灯50s东西向:全红灯05s南北向:左黄05s;其余禁止图1 白天模式下交通灯的状态切换夜间模式:东西向:左黄05s;其余禁止南北向:全红灯05s东西向:全红灯40s南北向
6、:绿灯20s;左转禁止东西向:左绿10s;其余禁止南北向:全红灯15s东西向:全红灯20s南北向:黄灯05s;左转禁止东西向:黄灯05s;左转禁止南北向:全红灯20s东西向:全红灯15s南北向:左绿10s;其余禁止东西向:绿灯15s;其余禁止南北向:全红灯35s东西向:全红灯05s南北向:左黄05s;其余禁止图2 夜间模式下交通灯的状态切换2.2 整体的设计方案 根据设计要求和系统所具有功能,并参考相关的文献资料经行方案设计画出如下所示的设计总体方案,框图如下图所示:LED显示扫描显示模块交通灯控制及计时模块时钟源图3 交通灯控制系统的模块划分3. 硬件电路设计3.1 主电路图图4 交通灯控制
7、系统主电路图图4所示为主电路图,主要包括两个大模块:LCD显示模块和主控制模块。3.2 主控制模块及其功能图5 交通灯主控制模块主控制模块的器件图如右图所示,它的功能是接收来自CP的脉冲和CM、R和SWITCH三个状态的信息,在确定所处状态的同时将对应的亮灯状态和倒计时数字在内置CLK满足时送出端口。CM信号用以区别是正常状态还是紧急状态;在CM有效下,SWITCH信号用以区分是白天还是夜间;而R则是上电复位信号。另外,由于器件直接与10M的FPGA原始晶振相连接,因此在器件内部还有一个内置时钟CLK。该时钟对CP采取6000000分频处理,并以此作为状态切换的标志:当CLK出现上升沿时,对应
8、数据改变一次,并输出对应数据。3.3 LCD数据前期处理模块及其功能- S: 状态切换变量 CPIN: CP脉冲输入信号 - SN: 南北向倒计时数据输入信号- SWNE: 南北向左指灯倒计时数据输入信号- EW: 东西向倒计时数据输入信号- WNES: 东西向左指灯倒计时数据输入信号- R: 复位输入信号 BUSY: 状态控制信号(忙/闲) - SNRYG: 南北向亮灯状态输入信号- SWNERYG: 南北向左指灯亮灯状态输入信号- EWRYG: 东西向亮灯状态输入信号- WNESRYG: 东西向左指灯亮灯状态输入信号- CLK: 内置时钟输出信号 RST: 系统空闲标志位- STROBE:
9、 输出使能信号 OUTLINE: 字符显示行数- DATA: 输出数据缓存单元 ADDR: 字符显示列数图6 交通灯LCD数据前期处理模块LCD数据前期处理模块的器件图如右图所示,它的功能是接收来自CP、R的信号和来自主控制程序的信息,在内置CLK满足条件时执行扫描与赋值,并将对应的LCD模块数据送出端口。CP信号是时钟脉冲;R是上电复位信号,其余信号均来自主控制程序。另外,由于器件直接与10M的FPGA原始晶振相连接,因此在器件内部还有一个内置时钟CLK。该时钟对CP采取65535分频处理,并以此作为扫描和赋值行为开始的标志:当CLK出现上升沿时,扫描执行一次,并向LCD送出对应数据。3.4
10、 LCD数据后期处理模块图7 交通灯LCD数据后期处理模块 这一块器件是Autium Designer的自带器件,在FPGA Peripherals.IntLib和FPGA NB1 Port-Plugin.IntLib器件库中可以找到。RS:寄存器选择,高数据寄存器低指令寄存器RW:读写信号线,高读低写。RSRW均为低,可写入指令或显示地址;RS低RW高读忙信号;RS高RW低写数据E:使能端4. 实验程序设计4.1 主控制模块-交通灯主控制程序- 1.设置环境为十字路口- 2.四个方向左指向前&右指向灯、红灯和黄灯各一- 3. 6000000分频以达到近似秒脉冲计时效果- 4.具备紧急
11、/白天/夜间三模式,且复位后可任意切换。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 en
12、tity;-器件名称:JTD- 端口及其作用:- CPIN: 时钟脉冲输入 R: 复位信号输入- SWITCH: 白天/夜间模式切换信号输入- CM: 正常/紧急模式切换信号输入- SN: 南北向倒计时输出- SWNE: 南北向左指灯倒计时输出- EW: 东西向倒计时输出- WNES: 东西向左指灯倒计时输出- EWRYG: 东西向亮灯指示信号输出- SNRYG: 南北向亮灯指示信号输出- SWNERYG: 南北向左亮灯指示信号输出 - WNESRYG: 东西向左亮灯指示信号输出architecture JGT of JTD isSIGNAL CTEW,CTSN,CTSWNE,CTWNES:
13、STD_LOGIC_VECTOR(7 DOWNTO 0);SIGNAL CPCT: INTEGER RANGE 0 TO 6000000;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: 状态切换变量,仅能取S0S7共8个值。B
14、EGINPROCESS(CPIN,R)BEGINIF R='1' THENCPCT<=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'
15、; THEN-CM='0'表明是正常模式,紧急模式是CM='1'IF SWITCH='1' THEN-SWITCH='1'表明是白天模式。各状态赋初值如下:- 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' THENS<=S0;CTSN<=X"28"CTEW<=X"4
16、6"CTWNES<=X"00"CTSWNE<=X"00"SNRYG<="001"EWRYG<="100"SWNERYG<="100"WNESRYG<="100"-上电复位,给所有变量赋初值ELSIF CP='1' AND CP 'EVENT THEN-非上电复位下,以内置时钟上升沿作为触发信号 CASE S IS WHEN S0=>IF CTSN=X"01" THEN S<=
17、S1;CTSN<=X"05"CTEW<=X"1E"SNRYG<="010"EWRYG<="100"SWNERYG<="100"WNESRYG<="100" ELSE CTSN<=CTSN-1;CTEW<=CTEW-1; END IF;-以S0为例分析:- 跳转至S1条件:南北向绿灯剩1秒- 此时给所有灯赋初值,并切换灯的状态- 未跳转时东西向和南北向的倒计数分别减1- 采用16进制计数,避免了在主程序中调整输出的麻烦 WHEN
18、S1=>IF CTSN=X"01" THENS<=S2;CTEW<=X"19"CTSN<=X"00"CTSWNE<=X"14"SWNERYG<="001"EWRYG<="100"WNESRYG<="100"SNRYG<="100" ELSE CTSN<=CTSN-1;CTEW<=CTEW-1; END IF; WHEN S2=>IF CTSWNE=X"01
19、" THEN S<=S3;CTSWNE<=X"05"CTEW<=X"05" SWNERYG<="010"EWRYG<="100"WNESRYG<="100"SNRYG<="100" ELSE CTSWNE<=CTSWNE-1;CTEW<=CTEW-1; END IF; WHEN S3=>IF CTSWNE=X"01" THENS<=S4;CTSN<=X"32&quo
20、t;CTSWNE<=X"00"CTEW<=X"14"SNRYG<="100"EWRYG<="001"SWNERYG<="100"WNESRYG<="100" ELSE CTSWNE<=CTSWNE-1;CTEW<=CTEW-1; END IF; WHEN S4=>IF CTEW=X"01" THEN S<=S5;CTSN<=X"1E"CTEW<=X"05&
21、quot;SNRYG<="100"EWRYG<="010"SWNERYG<="100"WNESRYG<="100" ELSE CTSN<=CTSN-1;CTEW<=CTEW-1; END IF; WHEN S5=>IF CTEW=X"01" THEN S<=S6;CTSN<=X"19"CTWNES<=X"14"CTEW<=X"00"SNRYG<="100&
22、quot;WNESRYG<="001"SWNERYG<="100"EWRYG<="100" ELSE CTSN<=CTSN-1;CTEW<=CTEW-1; END IF; WHEN S6=>IF CTWNES=X"01" THEN S<=S7;CTSN<=X"05"CTWNES<=X"05" SNRYG<="100"EWRYG<="010"SWNERYG<=&quo
23、t;100"WNESRYG<="100" ELSE CTSN<=CTSN-1;CTWNES<=CTWNES-1; END IF; WHEN S7=>IF CTWNES=X"01" THEN S<=S0;CTSN<=X"28"CTEW<=X"46"CTWNES<=X"00"SNRYG<="001"EWRYG<="100"SWNERYG<="100"WNESRYG&
24、lt;="100" ELSE CTSN<=CTSN-1;CTWNES<=CTWNES-1; END IF; WHEN OTHERS=>NULL;END CASE;END IF;ELSIF SWITCH='0' THEN-SWITCH='0'表明是夜间模式。各状态赋初值如下:- SN SWNE EW WNES-S0:G20 R R40 R00-S1:Y05 R R20 R-S2: 00 G10 R15 R-S3: Y05 R05 R-S4:R35 R00 G15 R-S5:R20 R Y05 R-S6:R15 R R00 G1
25、0-S7:R05 R R Y05IF R='1' THENS<=S0;CTSN<=X"14"CTEW<=X"28"CTWNES<=X"00"CTSWNE<=X"00"SWNERYG<="100"WNESRYG<="100"SNRYG<="001"EWRYG<="100"ELSIF CP='1' AND CP 'EVENT THEN CASE S
26、 IS WHEN S0=>IF CTSN=X"01" THEN S<=S1;CTSN<=X"05"CTEW<=X"14" SNRYG<="010"EWRYG<="100"SWNERYG<="100"WNESRYG<="100" ELSE CTSN<=CTSN-1;CTEW<=CTEW-1; END IF; WHEN S1=>IF CTSN=X"01" THEN S<
27、=S2;CTEW<=X"05"CTSN<=X"00"CTSWNE<=X"0F"SWNERYG<="001"EWRYG<="100"SNRYG<="100"WNESRYG<="100" ELSE CTSN<=CTSN-1;CTEW<=CTEW-1; END IF; WHEN S2=>IF CTSWNE=X"01" THEN S<=S3;CTSWNE<=X"0
28、5"CTEW<=X"05" SWNERYG<="010"EWRYG<="100"SNRYG<="100"WNESRYG<="100" ELSE CTSWNE<=CTSWNE-1;CTEW<=CTEW-1; END IF; WHEN S3=>IF CTSWNE=X"01" THEN S<=S4;CTSN<=X"23"CTSWNE<=X"00"CTEW<=X&
29、quot;0F"SNRYG<="100"EWRYG<="001"SWNERYG<="100"WNESRYG<="100" ELSE CTSWNE<=CTSWNE-1;CTEW<=CTEW-1; END IF; WHEN S4=>IF CTEW=X"01" THEN S<=S5;CTSN<=X"14"CTEW<=X"05" SNRYG<="100"EWRYG<
30、;="010"SWNERYG<="100"WNESRYG<="100" ELSE CTSN<=CTSN-1;CTEW<=CTEW-1; END IF; WHEN S5=>IF CTEW=X"01" THENS<=S6;CTSN<=X"0F"CTEW<=X"00"CTWNES<=X"0A"SNRYG<="100"WNESRYG<="001"SWNERYG
31、<="100"EWRYG<="100" ELSE CTSN<=CTSN-1;CTEW<=CTEW-1; END IF; WHEN S6=>IF CTWNES=X"01" THEN S<=S7;CTSN<=X"05"CTWNES<=X"05" SNRYG<="100"EWRYG<="100"SWNERYG<="100"WNESRYG<="010"
32、ELSE CTSN<=CTSN-1;CTWNES<=CTWNES-1; END IF; WHEN S7=>IF CTWNES=X"01" THENS<=S0;CTSN<=X"14"CTEW<=X"28"CTWNES<=X"00"SNRYG<="001"EWRYG<="100"SWNERYG<="100"WNESRYG<="100" ELSE CTSN<=CTSN-1
33、;CTWNES<=CTWNES-1; END IF; WHEN OTHERS=>NULL;END CASE;END IF;END IF;ELSIF CM='1'THEN-CM='1'表明是紧急模式,各方向亮起红灯并终止倒计时CTSN<=X"00" ;CTEW<=X"00"CTSWNE<=X"00" ;CTWNES<=X"00"EWRYG<="100"SNRYG<="100"WNESRYG<=
34、"100"SWNERYG<="100" ;END IF;END PROCESS;-主进程- 作用:配合激励产生数据- 采用16进制计数,需要在输出前进行转换PROCESS(CTEW,CTSN,CTSWNE,CTWNES)BEGINIF CTEW<X"0A" THEN EW<=CTEW; -当数据不大于09时,直接输出ELSIF CTEW<X"14" THEN EW<=CTEW+6; -当数据在0A14之间时,数据加6输出 -例如:0A+06=10(16进制运算)ELSIF CTEW&l
35、t;X"1E" THEN EW<=CTEW+12;ELSIF CTEW<X"28" THEN EW<=CTEW+18;ELSIF CTEW<X"32" THEN EW<=CTEW+24;ELSIF CTEW<X"3C" THEN EW<=CTEW+30;ELSIF CTEW<X"46" THEN EW<=CTEW+36;ELSE EW<=CTEW+42;END IF;IF CTSN<X"0A" THEN SN&
36、lt;=CTSN;ELSIF CTSN<X"14" THEN SN<=CTSN+6;ELSIF CTSN<X"1E" THEN SN<=CTSN+12;ELSIF CTSN<X"28" THEN SN<=CTSN+18;ELSIF CTSN<X"32" THEN SN<=CTSN+24;ELSIF CTSN<X"3C" THEN SN<=CTSN+30;ELSIF CTSN<X"46" THEN SN<=
37、CTSN+36;ELSE SN<=CTSN+42;END IF;IF CTSWNE<X"0A" THEN SWNE<=CTSWNE;ELSIF CTSWNE<X"14" THEN SWNE<=CTSWNE+6;ELSIF CTSWNE<X"1E" THEN SWNE<=CTSWNE+12;ELSIF CTSWNE<X"28" THEN SWNE<=CTSWNE+18;ELSIF CTSWNE<X"32" THEN SWNE<=CT
38、SWNE+24;ELSIF CTSWNE<X"3C" THEN SWNE<=CTSWNE+30;ELSE SWNE<=CTSWNE+36;END IF;IF CTWNES<X"0A" THEN WNES<=CTWNES;ELSIF CTWNES<X"14" THEN WNES<=CTWNES+6;ELSIF CTWNES<X"1E" THEN WNES<=CTWNES+12;ELSIF CTWNES<X"28" THEN WNES<
39、;=CTWNES+18;ELSIF CTWNES<X"32" THEN WNES<=CTWNES+24;ELSIF CTWNES<X"3C" THEN WNES<=CTWNES+30; ELSE WNES<=CTWNES+36;END IF;END PROCESS;END JGT;4.2 LCD显示模块-交通灯LCD显示模块- 1.与FPGA Peripherals库中的LCD16X2A元件相对应- 2.采用65535分频作为扫描脉冲LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE I
40、EEE.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 D
41、OWNTO 0) ); -器件名称:JGT -端口及其作用: - S: 状态切换变量 CPIN: CP脉冲输入信号 - SN: 南北向倒计时数据输入信号- SWNE: 南北向左指灯倒计时数据输入信号- EW: 东西向倒计时数据输入信号- WNES: 东西向左指灯倒计时数据输入信号- R: 复位输入信号 BUSY: 状态控制信号(忙/闲) - SNRYG: 南北向亮灯状态输入信号- SWNERYG: 南北向左指灯亮灯状态输入信号- EWRYG: 东西向亮灯状态输入信号- WNESRYG: 东西向左指灯亮灯状态输入信号- CLK: 内置时钟输出信号 RST: 系统空闲标志位- STROBE: 输出
42、使能信号 OUTLINE: 字符显示行数- DATA: 输出数据缓存单元 ADDR: 字符显示列数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 DOWNT
43、O 0); -实体名称:JGT -端口及其作用: - LCDPT指针: 范围从0到24 CPCT: CP脉冲计时信号 - ASCSN: 南北向倒计时ASCII码输出影子信号- ASCSWNE: 南北向左指灯计时ASCII码输出影子信号- ASCEW: 东西向倒计时ASCII码输出影子信号- ASCWNES: 东西向左指灯计时ASCII码输出影子信号- S: 状态切换变量 CP: 内置时钟信号beginPROCESS(CPIN,R) -延时进程BEGINCLK<=CPIN;IF R='1' THEN CPCT<=65535;ELSIF CPIN='1'
44、 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) -状态转换主进程BEGIN IF R='1' THEN S<=S0;LCDPT<=0;RST<='1'ELSIF CP='1' AND CP 'EVENT THEN-非上电复位下,内置时钟上升沿触发进程 CASE S IS WHEN S0=>S<=
45、S1;LCDPT<=0;RST<='1' WHEN S1=>RST<='0'STROBE<='0' IF BUSY='0' THEN LCDPT<=LCDPT+1; IF LCDPT=13 THEN S<=S3; ELSE S<=S2; END IF; END IF; -静态字符读取状态,根据BUSY读取LCDPT中的数据 - 当BUSY=0时,表示数据允许输入 - 之后LCDPT指针不断移位读取数据 - 当LCDPT=12后自动跳转至S3读取动态字符 WHEN S2=>S&l
46、t;=S1;STROBE<='1'-静态字符输出状态,输出使能信号置1并跳回S1 WHEN S3=>STROBE<='0' IF BUSY='0' THEN IF LCDPT=24 THEN LCDPT<=13; ELSE LCDPT<=LCDPT+1; END IF; S<=S4; END IF;-动态字符读取状态,根据BUSY读取LCDPT中的数据 WHEN S4=>STROBE<='1'S<=S3;-动态字符输出状态,输出使能信号置1并跳回S3 WHEN OTHERS=&
47、gt; NULL;END CASE;END IF;END PROCESS;PROCESS(LCDPT)-显示进程触发条件:LCDPT指针移位BEGINCASE LCDPT ISWHEN 0 =>NULL;-接下来对应的12种情况是显示各个方向的名称的。由于-这些字符的显示在整个程序中不被改变,因此这样的字-符被称作“静态字符”,在指针移位的同时,DATA亦被-赋值为相应字符的ASCII码,同时,所在显示屏的行和-列也将被同时送出。WHEN 1=> -SDATA<="01010011" -待显示字符的ASCII码ADDR<="0001&quo
48、t; -显示字符所在的列OUTLINE<='0' -显示字符所在的行WHEN 2=> -NDATA<="01001110"ADDR<="0010"OUTLINE<='0' WHEN 3=> -SDATA<="01010011"ADDR<="0100"OUTLINE<='0'WHEN 4=> -NDATA<="01001110"ADDR<="0101"OUTL
49、INE<='0'WHEN 5=> -<DATA<="00111100"ADDR<="0110"OUTLINE<='0'WHEN 6=> -DATA<="00101101"ADDR<="0111"OUTLINE<='0'WHEN 7=> -EDATA<="01000101"ADDR<="1000"OUTLINE<='0'WHEN 8
50、=> -WDATA<="01010111"ADDR<="1001"OUTLINE<='0'WHEN 9=> -EDATA<="01000101"ADDR<="1011"OUTLINE<='0'WHEN 10=> -WDATA<="01010111"ADDR<="1100"OUTLINE<='0'WHEN 11=> -<DATA<="
51、;00111100"ADDR<="1110"OUTLINE<='0'WHEN 12=> -DATA<="00101101"ADDR<="1111"OUTLINE<='0' -相当于:第一行(OUTLINE=0)的显示为:SNSN<-EWWN<-接下来对应的12种情况是显示各个方向的倒计时数据-的。由于这些字符的显示在整个程序中不断被改变,因此-这些字符被称作“动态字符”,在指针移位的同时,DATA-亦被赋值为相应数字的压缩型BCD码,同时,所在显
52、示屏-的行和列也将被同时送出。WHEN 13=>DATA<=ASCSN;ADDR<="0001"OUTLINE<='1'-显示对应灯的状态WHEN 14=>DATA<="0011"&SN(7 DOWNTO 4);ADDR<="0010"OUTLINE<='1'WHEN 15=>DATA<="0011"&SN(3 DOWNTO 0);-"0011"&SN(7 DOWNTO 4)不是表
53、示做逻辑与运算-而是表示高四位是0011,低四位是SN变量的高四位ADDR<="0011"OUTLINE<='1'-到此,SN的两位压缩型BCD码被全部转换成ASCII码WHEN 16=>DATA<=ASCSWNE;ADDR<="0100"OUTLINE<='1'WHEN 17=>DATA<="0011"&SWNE(7 DOWNTO 4);ADDR<="0101"OUTLINE<='1'WHEN 18
54、=>DATA<="0011"&SWNE(3 DOWNTO 0);ADDR<="0110"OUTLINE<='1'WHEN 19=>DATA<=ASCEW;ADDR<="1000"OUTLINE<='1'WHEN 20=>DATA<="0011"&EW(7 DOWNTO 4);ADDR<="1001"OUTLINE<='1'WHEN 21=>DATA<
55、="0011"&EW(3 DOWNTO 0);ADDR<="1010"OUTLINE<='1'WHEN 22=>DATA<=ASCWNES;ADDR<="1011"OUTLINE<='1'WHEN 23=>DATA<="0011"&WNES(7 DOWNTO 4);ADDR<="1100"OUTLINE<='1'WHEN 24=>DATA<="0011
56、"&WNES(3 DOWNTO 0);ADDR<="1101"OUTLINE<='1'灯××灯××灯××灯×× -相当于:第二行(OUTLINE=1)的显示为:WHEN OTHERS=> NULL;END CASE;END PROCESS;PROCESS(EWRYG)BEGINCASE EWRYG ISWHEN "100" =>ASCEW<="01010010"WHEN "010&q
57、uot; =>ASCEW<="01011001"WHEN "001" =>ASCEW<="01000111"WHEN OTHERS=> NULL;END CASE;END PROCESS;- EN向亮灯状态显示进程。对应的灯亮即输出对应字母ASCII码。PROCESS(SNRYG)BEGINCASE SNRYG ISWHEN "100" =>ASCSN<="01010010"WHEN "010" =>ASCSN<=&quo
58、t;01011001"WHEN "001" =>ASCSN<="01000111"WHEN OTHERS=> NULL;END CASE;END PROCESS;PROCESS(SWNERYG)BEGINCASE SWNERYG ISWHEN "100" =>ASCSWNE<="01010010"WHEN "010" =>ASCSWNE<="01011001"WHEN "001" =>ASCSWNE<="01000111"WHEN OT
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
评论
0/150
提交评论