发布时间 : 星期日 文章汽车尾灯控制器的设计与实现更新完毕开始阅读d69eb53ff7335a8102d276a20029bd64793e625b
3. 汽车右转时,右侧的一盏灯亮 4. 汽车左转时,左侧的一盏灯亮 5. 汽车刹车时,左右两侧的指示灯同时亮
6. 汽车夜间行驶时,左右两侧的指示灯同时一直亮,供照明使用
3.2汽车尾灯控制器的工作原理
汽车尾灯控制器就是一个状态机的实例。当汽车在白天正常行驶时指示灯不亮;当汽车右转行驶时,汽车的右侧指示灯RD1亮;当汽车左转行驶时,汽车的左侧指示灯LD1亮;当汽车刹车时,汽车的右侧指示灯RD2和左侧LD2同时亮;当汽车在夜间行驶时,汽车右侧指示灯RD3和汽车左侧的指示灯LD3同时一直亮。通过设置系统的输入信号:系统时钟信号CLK,汽车左转弯控制信号LEFT,汽车右转弯控制信号RIGHT,刹车信号BRAKE,夜间行驶信号NIGHT;系统的输出信号包括汽车左侧3盏指示灯LD1、LD2、LD3和汽车右侧3盏指示灯RD1、RD2、RD3。通过汽车左侧3盏指示灯LD1、LD2、LD3和汽车右侧3盏指示灯RD1、RD2、RD3来实现汽车左转、右转、刹车等功能。系统的整体组装设计原理如图3.1所示。
7 / 19
图3.1 系统的整体组装设计原理
3.3各组成模块原理及程序
汽车灯控制器有4个模块组成,分别为:时钟分频模块、汽车尾灯主控模块,左边
8 / 19
灯控制模块和右边灯控制模块,以下介绍各模块的详细设计。 时钟分频模块
整个时钟分频模块的工作框图如图3.2所示。
CLK CP
图3.2时钟分频模块工作框图
时钟分频模块由VHDL程序来实现,下面是其中的一段VHDL代码: LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY SZ IS
PORT(CLK:IN STD_LOGIC; CP:OUT STD_LOGIC); END;
ARCHITECTURE ART OF SZ IS
SIGNAL COUNT:STD_LOGIC_VECTOR(7 DOWNTO 0); BEGIN
PROCESS(CLK) BEGIN
IF CLK'EVENT AND CLK = '1'THEN COUNT <= COUNT + 1; END IF; END PROCESS; CP<= COUNT(3); END ART;
汽车尾灯主控模块
汽车尾灯主控模块工作框图如图3.3所示。
CTRL LEFT LP RIGHT RP BRAKE LR NIGHT BRAKE_LED NIGHT_LED 图3.3 主控模块工作框图
汽车尾灯主控模块由VHDL程序来实现,下面是其中的一段VHDL代码:
9 / 19
.
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL; ENTITY CTRL IS
PORT (LEFT,RIGHT,BRAKE,NIGHT: IN STD_LOGIC;
LP,RP,LR,BRAKE_LED,NIGHT_LED:OUT STD_LOGIC); END;
ARCHITECTURE ART OF CTRL IS BEGIN
NIGHT_LED<=NIGHT; BRAKE_LED<=BAKE; PROCESS(LEFT,RIGHT)
VARIABLE TEMP:STD_LOGIC_VECTOR(1 DOWNTO 0); BEGIN
TEMP:=LEFT & RIGHT; CASE TEMP IS
WHEN \ WHEN \ WHEN \ WHEN OTHERS=>LP<='0';RP<='0';LR<='1'; END CASE; END PROCESS; END ART; 左边灯控制模块
左边灯控制模块的工作框图如图3.4所示。
LC CLK LP LEDL LR LEDB BRRAKE LEDN NIGHT
图3.4左边灯控制模块的工作框图
左边灯控制模块由VHDL程序来实现,下面是其中的一段VHDL代码: LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL; ENTITY LC IS
PORT(CLK,LP,LR,BRAKE,NIGHT:IN STD_LOGIC; LEDL,LEDB,LEDN: OUT STD_LOGIC); END;
ARCHITECTURE ART OF LC IS BEGIN
LEDB<=BRAKE;
10 / 19