EDA课程设计 彩灯控制器.docx
《EDA课程设计 彩灯控制器.docx》由会员分享,可在线阅读,更多相关《EDA课程设计 彩灯控制器.docx(11页珍藏版)》请在三一办公上搜索。
1、EDA课程设计 彩灯控制器电子设计自动化大作业 题 目 彩灯控制器的设计 学 院 *学院 班 级 电气* 学 号 * 姓 名 * 二O一二年十月三十一日 彩灯控制器的设计 一、彩灯控制器的设计要求 设计能让一排彩灯(8只)自动改变显示花样的控制系统,发光二极管可作为彩灯用。控制器应有两种控制方式: 规则变化。变化节拍有05秒和0x秒两种,交替出现,每种节拍可有4种花样,各执行一或二个周期后轮换。 随机变化。无规律任意变化。 二、彩灯控制器的设计原理 本次彩灯控制器的设计包含几个主要模块, 一是彩灯显示和扬声器的时序控制部分, 二是 发光二极管的动态显示和数码管的动态显示,本次设计中,二者的显示
2、同步变化;三是扬声 器的控制部分。流程图如下所示: 图 1 彩灯控制器的设计流程图 彩灯控制器的设计核心主要是分频器的使用,显示部分的设计较简易。分频的方法有很 多种,本次设计之采用了其中较简易的一种,通过计数器的分频,将控制器外接的频率分为 几个我们预先设定的值。当计数器达到预先设定的值,即产生一个上升沿,从而实现分频。 扬声器通过不同的频率控制发出不同的声音。 同样发光二极管和数码管的显示速度也由其中 分出来的一种频率控制 。通过使能端的控制可以控制不同 的数码管显示预先设定的图案,数码管依次显示的图案为 AA、BB、CC,并随着发光二极 管同步动态显示。AA 为自左向右显示,BB 为自右
3、向左显示,CC 从二边向中间再由中间向 二边发散显示。与此同时,显示不同的花型时扬声器发出不同的声音,代表不同的花型。本 次设计还带有复位功能,通过复位可以使彩灯控制器恢复到最初的状态。 三、程序设计和分析 library ieee; use ieee.std_logic_1164.all; use ieee.std_logic_unsigned.all; 建立设计库和标准程序包 实体部分: entity pan is port(clk:in std_logic; clr:in std_logic; speak:out std_logic; led7s1:out std_logic_vecto
4、r(6 downto 0); led7s2:out std_logic_vector(7 downto 0); led_selout:out std_logic_vector(7 downto 0); end entity; 实体名为 pan,定义端口,输入端口为 clk 和 clr ,其中 clk 接脉冲信号,clr 接复位端;输出 端口 speak 接扬声器,led7s1 接数码管的七段显示部分,led7s 接八个发光二极管,led_selout 接八个数码管的使能端,控制数码管的循环显示。 结构体部分: architecture one of pan is signal s: std_l
5、ogic_vector(4 downto 0); signal clk1:std_logic; signal clk2:std_logic; signal clk3:std_logic; 定义 4 个信号,cq,cllk1,clk2,clk3. process(clk) variable a:std_logic_vector(5 downto 0); begin if clr=1 then clk1=0; else if clkevent and clk=1then if a=110010then a:=000000; clk1=1; else a:=a+1; clk1=0; end if;
6、end if; end if; end process; 以上程序为第一次分频,为 50 分频,当 clk 发生变化,使 a 从 000000 变化到 110010 时 产生一个上升沿 clk1。如果 a 没有变化到 110010 则 a 继续自加,直到 110010 为止产生下一 个上升沿。 process(clk) variable b:std_logic_vector(4 downto 0); begin if clr=1 then clk2=0; -复位信号 else if clkevent and clk=1then if b=11001then b:=00000; clk2=1;
7、else b:=b+1; clk2=0; e nd if; end if; end if; end process; 以上程序为对 clk 进行 25 分频,原理同上,产生信号clk2。 process(clk) variable c:std_logic_vector(2 downto 0); begin if clr=1 then clk3=0; -复位信号 else if clkevent and clk=1then if c=111then c:=000; clk3=1; else c:=c+1; clk3=0; end if; end if; end if; end process;
8、以上程序为对 clk 进行 8 分频,产生一个新的时钟脉冲信号 clk3。 数码管及二极管循环显示时序控制程序: process(clk2) variable z:integer range 0 to 20; begin if clr=1 then s=00000; -复位信号 else if clkevent and clk=1then z:=z+1; if z=20then s=s+1;s:=0; if s=10111 then s=00000; else sled7s1=0001000;led7s2=01111111;speak=clk1;led_seloutled7s1=0001000
9、;led7s2=10111111;speak=clk1;led_seloutled7s1=0001000;led7s2=11011111;speak=clk1;led_seloutled7s1=0001000;led7s2=11101111;speak=clk1;led_seloutled7s1=0001000;led7s2=11110111;speak=clk1;led_seloutled7s1=0001000;led7s2=11111011;speak=clk1;led_seloutled7s1=0001000;led7s2=11111101;speak=clk1;led_seloutle
10、d7s1=0001000;led7s2=11111110;speak=clk1;led_seloutled7s1=0000011;led7s2=11111110;speak=clk2;led_seloutled7s1=0000011;led7s2=11111101;speak=clk2;led_seloutled7s1=0000011;led7s2=11111011;speak=clk2;led_seloutled7s1=0000011;led7s2=11110111;speak=clk2;led_seloutled7s1=0000011;led7s2=11101111;speak=clk2;
11、led_seloutled7s1=0000011;led7s2=11011111;speak=clk2;led_seloutled7s1=0000011;led7s2=10111111;speak=clk2;led_seloutled7s1=0000011;led7s2=01111111;speak=clk2;led_seloutled7s1=1000110;led7s2=01111110;speak=clk3;led_seloutled7s1=1000110;led7s2=10111101;speak=clk3;led_seloutled7s1=1000110;led7s2=11011011
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- EDA课程设计 彩灯控制器 EDA 课程设计 彩灯 控制器
链接地址:https://www.31ppt.com/p-3060937.html