八路彩灯实验报告
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
八路彩灯控制系统实验报告
姓名:
学院:电子工程学院
学号:
同作人:
一实验目的
1.熟悉数字电路中时序逻辑电路与组合逻辑电路的设计。
2.熟悉并掌握用移位寄存器设计彩灯控制器的方法。
二设计任务与要求
1.彩灯明暗变换节拍为0.25S和0.5S,两种节拍交替运行。
2. 彩灯演示花型为三种(花型自拟)。
3. 彩灯用发光二极管模拟。
要求:即能控制8路LED以两种节拍、三种花型
连续循环演示。
三参考器件
给定器件为四2输入与非门(74LS00)1只,六反相器(74LS04)1只,二进制同步计数器(74LS161)2只,四位双向移位寄存器(74LS194)2只,四2选1数据选择器(74LS157)1只,555定时器1只,电阻、电容若干
四实验要求
按照设计任务设计电路,然后在仿真软件上进行虚拟实验,正确后,在实验板上搭建实验电路,观察彩灯花型是否正确,如果不正确,排除故障直至正确为止。最后一步是撰写实验报告、整理文档,对实验进行总结。
五设计说明
彩灯控制器原理框图如图5-45所示。图中,虚线以上为处理器,虚线以下是控制器。
从图5-45可以看出,编码发生器的功能是:根据花型要求按节拍送出8位状态编码信号,以便控制灯的亮灭。其电路可以选用四位双向移位寄
存器来实现。八路灯用两片移位寄存器级联就可以实现。
缓冲驱动电路的功能是:提供彩灯所需要的工作电压和电流,隔离负载对编码发生器工作的影响。
彩灯控制器对定时器的要求不高,振荡器可采用环形振荡器或555定时器来实现。
控制电路为编码发生器提供所需要的节拍脉
冲和控制信号,以同步整个系统工作。
最终效果
1. 从左至右顺次渐亮,全亮后逆序渐灭;
2. 中间到两边对称地逐渐渐亮,全亮后,再由中间向两边逐一
熄灭;
3. 八路灯分两半,从左至右顺次渐亮,全亮后全灭。
原理框图
VHDL语言
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_unsigned.all;
entity balucaideng is
port(
clk:in std_logic;
en:in std_logic;
clr:in std_logic;
l:out std_logic_vector(7 downto 0)
--control signal of the balucaideng );
end balucaideng;
architecture one of balucaideng is
signal count_q:integer range 0 to 86;
begin
counter:process(clk,clr)
begin
if(clr='0')then
count_q<=0;
elsif(clk'event and clk='1')then
if(en='1')then
if(count_q<28)then
count_q<=count_q+1;
else
count_q<=0;
end if;
end if;
end if;
end process counter;
table:process(count_q)
begin
case count_q is
when 0=>l<="10000000";
when 1=>l<="11000000";
when 2=>l<="11100000";
when 3=>l<="11110000";
when 4=>l<="11111000";
when 5=>l<="11111100";
when 6=>l<="11111110";
when 7=>l<="11111111";
when 8=>l<="11111110";
when 9=>l<="11111100";
when 10=>l<="11111000";
when 11=>l<="11110000";
when 12=>l<="11100000";
when 13=>l<="11000000";
when 14=>l<="10000000";
when 15=>l<="00000000";
when 16=>l<="00011000";
when 17=>l<="00111100";
when 18=>l<="01111110";
when 19=>l<="11111111";
when 20=>l<="00011000";
when 21=>l<="11000011";
when 22=>l<="10000001";
when 24=>l<="10001000"; when 25=>l<="11001100"; when 26=>l<="11101110"; when 27=>l<="11111111"; when 28=>l<="00000000"; --0.25s
when 29=>l<="10000000"; when 30=>l<="10000000"; when 31=>l<="11000000"; when 32=>l<="11000000"; when 33=>l<="11100000"; when 34=>l<="11100000"; when 35=>l<="11110000"; when 36=>l<="11110000"; when 37=>l<="11111000"; when 38=>l<="11111000"; when 39=>l<="11111100"; when 40=>l<="11111100"; when 41=>l<="11111110"; when 42=>l<="11111110"; when 43=>l<="11111111"; when 44=>l<="11111111"; when 45=>l<="11111110"; when 46=>l<="11111110"; when 47=>l<="11111100"; when 48=>l<="11111100"; when 49=>l<="11111000"; when 50=>l<="11111000"; when 51=>l<="11110000"; when 52=>l<="11110000"; when 53=>l<="11100000"; when 54=>l<="11100000"; when 55=>l<="11000000"; when 56=>l<="11000000"; when 57=>l<="10000000"; when 58=>l<="10000000"; when 59=>l<="00000000"; when 60=>l<="00000000"; when 61=>l<="00011000"; when 62=>l<="00011000"; when 63=>l<="00111100"; when 64=>l<="00111100"; when 65=>l<="01111110";