李诗华彩灯控制器.docx
- 文档编号:9261103
- 上传时间:2023-05-17
- 格式:DOCX
- 页数:15
- 大小:27.49KB
李诗华彩灯控制器.docx
《李诗华彩灯控制器.docx》由会员分享,可在线阅读,更多相关《李诗华彩灯控制器.docx(15页珍藏版)》请在冰点文库上搜索。
李诗华彩灯控制器
可编程逻辑器件应用
项
目
报
告
书
项目名称:
彩灯控制器
指导老师:
龚兰芳
姓名:
李诗华
学号:
080212215
班级:
08电子2班
目录
一、设计要求--------------------------------------------------------------------------------
二、设计目的--------------------------------------------------------------------------------
三、设计方案--------------------------------------------------------------------------------
四、设计程序---------------------------------------------------------------------------------
五、硬件要求---------------------------------------------------------------------------------
六、硬件下载实现现象------------------------------------------------------------------------
七、体会、对设计工作的总结与展望----------------------------------------------------
一、①设计要求
要求设计一个8路彩灯控制器,能控制8路彩灯按照两种节拍、三种花型循环变化。
两种节拍分别为0.25s和0.5s。
三种花型分别是:
(1)8路彩灯从左至右按次序渐亮,全亮后逆次序渐灭。
(2)从中间到两边对称的渐亮,全亮后仍由中间向两边逐次渐灭。
(3)8路彩灯分成两半,从左至右顺次渐亮,全亮后则全灭。
②发挥部分
加一个8路彩灯,与上面的彩灯按照相同的节拍和花型循环变化。
二、设计目的
(1)设计一个能按照两种节拍、三种花型循环变化的8路控制彩灯。
(2)体会EDA技术的优点。
目录
三、设计方案
先分频,把50MHz的频率分成4Hz和2Hz,然后4Hz的频率用于控制节拍为0.25s的彩灯,2Hz的频率用于控制节拍为0.5s的彩灯。
四、设计程序
libraryieee;---常用库
useieee.std_logic_1164.all;
useieee.std_logic_unsigned.all;
useieee.std_logic_arith.all;
entitycaidengis--实体部分
port(rst,clk,a,t:
instd_logic;
data:
outstd_logic_vector(7downto0);--输出控制8×8彩灯的列
dout:
outstd_logic_vector(7downto0));--输出控制8×8彩灯的行
end;
architectureoneofcaidengis--结构体部分
signalm:
integerrange0to28;
signaln:
integerrange0to28;目录
signalclk_4:
std_logic;--代表4Hz的频率
signalclk_2:
std_logic;--代表2Hz的频率
signald:
std_logic_vector(7downto0);
signals:
std_logic_vector(7downto0);
begin
process(clk)---------------频率从50MHz分到4Hz
variablecnt1:
integerrange0to5000;
variablecnt2:
integerrange0to1250;
begin
ifclk'eventandclk='1'then--每当50MHz时钟上升沿到
来时驱动
ifcnt1=5000then
cnt1:
=0;
ifcnt2=1250then
cnt2:
=0;
clk_4<=notclk_4;
else
cnt2:
=cnt2+1;
endif;目录
else
cnt1:
=cnt1+1;
endif;
endif;
endprocess;
process(clk)---------------频率从50MHz分到2Hz
variablecnt1:
integerrange0to5000;
variablecnt2:
integerrange0to2500;
begin
ifclk'eventandclk='1'then--每当50MHz时钟上升沿到
来时驱动
ifcnt1=5000then
cnt1:
=0;
ifcnt2=2500then
cnt2:
=0;
clk_2<=notclk_2;
else
cnt2:
=cnt2+1;
endif;
else
cnt1:
=cnt1+1;目录
endif;
endif;
endprocess;
process(clk_2,clk_4,a,d,s,rst,t)
begin
data<="11111100";……低电平有效,控制前两路彩灯亮
ifrst='0'then
d<="00000000";
elsifclk_2'eventandclk_2='1'then…当2Hz时钟上升沿到来时且开关rst置高电平时驱动节拍为0.25s的彩灯
ifm=0then……第一种花型8路彩灯从左至右按次序渐亮,全亮后逆次序渐灭开始
d<="10000000";
m<=m+1;
elsifm=1then
d<="11000000";
m<=m+1;
elsifm=2then目录
d<="11100000";
m<=m+1;
elsifm=3then
d<="11110000";
m<=m+1;
elsifm=4then
d<="11111000";
m<=m+1;
elsifm=5then
d<="11111100";
m<=m+1;
elsifm=6then
d<="11111110";
m<=m+1;
elsifm=7then
d<="11111111";
m<=m+1;
elsifm=8then
d<="11111110";
m<=m+1;目录
elsifm=9then
d<="11111100";
m<=m+1;
elsifm=10then
d<="11111000";
m<=m+1;
elsifm=11then
d<="11110000";
m<=m+1;
elsifm=12then
d<="11100000";
m<=m+1;
elsifm=13then
d<="11000000";
m<=m+1;
elsifm=14then
d<="10000000";
m<=m+1;
elsifm=15then
d<="00000000";目录
m<=m+1;
elsifm=16then……第二种花型从中间到两边对称的渐亮,全亮后仍由中间向两边逐次渐灭开始
d<="00011000";
m<=m+1;
elsifm=17then
d<="00111100";
m<=m+1;
elsifm=18then
d<="01111110";
m<=m+1;
elsifm=19then
d<="11111111";
m<=m+1;
elsifm=20then
d<="11100111";
m<=m+1;
elsifm=21then
d<="11000011";目录
m<=m+1;
elsifm=22then
d<="10000001";
m<=m+1;
elsifm=23then
d<="00000000";
m<=m+1;
elsifm=24then……第三种花型8路彩灯分成两半,从左至右顺次渐亮,全亮后则全灭开始
d<="10001000";
m<=m+1;
elsifm=25then
d<="11001100";
m<=m+1;
elsifm=26then
d<="11101110";
m<=m+1;
elsifm=27then
d<="11111111";目录
m<=m+1;
elsifm=28then
d<="00000000";
m<=0;
endif;
endif;
ift='0'then
s<="00000000";
elsifclk_4'eventandclk_4='1'then…当4Hz时钟上升沿到来时且开关t置高电平时驱动节拍为0.5s的彩灯
ifn=0then……第一种花型8路彩灯从左至右按次序渐亮,全亮后逆次序渐灭开始
s<="10000000";
n<=n+1;
elsifn=1then
s<="11000000";
n<=n+1;目录
elsifn=2then
s<="11100000";
n<=n+1;
elsifn=3then
s<="11110000";
n<=n+1;
elsifn=4then
s<="11111000";
n<=n+1;
elsifn=5then
s<="11111100";
n<=n+1;
elsifn=6then
s<="11111110";
n<=n+1;
elsifn=7then
s<="11111111";
n<=n+1;
elsifn=8then
s<="11111110";目录
n<=n+1;
elsifn=9then
s<="11111100";
n<=n+1;
elsifn=10then
s<="11111000";
n<=n+1;
elsifn=11then
s<="11110000";
n<=n+1;
elsifn=12then
s<="11100000";
n<=n+1;
elsifn=13then
s<="11000000";
n<=n+1;
elsifn=14then
s<="10000000";
n<=n+1;
elsifn=15then目录
s<="00000000";
n<=n+1;
elsifn=16then……第二种花型从中间到两边对称的渐亮,全亮后仍由中间向两边逐次渐灭开始
s<="00011000";
n<=n+1;
elsifn=17then
s<="00111100";
n<=n+1;
elsifn=18then
s<="01111110";
n<=n+1;
elsifn=19then
s<="11111111";
n<=n+1;
elsifn=20then
s<="11100111";
n<=n+1;
elsifn=21then目录
s<="11000011";
n<=n+1;
elsifn=22then
s<="10000001";
n<=n+1;
elsifn=23then
s<="00000000";
n<=n+1;
elsifn=24then……第三种花型8路彩灯分成两半,从左至右顺次渐亮,全亮后则全灭开始
s<="10001000";
n<=n+1;
elsifn=25then
s<="11001100";
n<=n+1;
elsifn=26then
s<="11101110";
n<=n+1;目录
elsifn=27then
s<="11111111";
n<=n+1;
elsifn=28then
s<="00000000";
n<=0;
endif;
endif;
ifa='0'then
dout<=d;
else
dout<=s;
endif;
endprocess;
end;
目录
五、硬件要求
六、硬件下载实现现象
硬件下载时,当第一个拨码开关打下时,看到的是节拍为0.25s的两路彩灯从左至右按次序渐亮,全亮后逆次序渐灭,然后从中间到两边对称的渐亮,全亮后仍由中间向两边逐次渐灭,然后8路彩灯分成两半,从左至右顺次渐亮,全亮后则全灭;当第一个拨码开关关上,第二和第三个开关同时打下时,看到的是节拍为0.5s的两路彩灯从左至右按次序渐亮,全亮后逆次序渐灭,然后从中间到两边对称的渐亮,全亮后仍由中间向两边逐次渐灭,然后8路彩灯分成两半,从左至右顺次渐亮,全亮后则全灭。
当三个开关同时关上时,彩灯全灭。
七、体会、对设计工作的总结与展望
这次实验虽然程序很长,但是原理很简单,大部分的程序都是重复着同一个原理,比如实现“两路彩灯从左至右按次序渐亮,全亮后逆次序渐灭”和实现“然后从中间到两边对称的渐亮,全亮后仍由中间向两边逐次渐灭”和“8路彩灯分成两半,从左至右顺次渐亮,全亮后则全灭”,他们的原理都是一样的,只是方向改变而已。
所以许多时候我们看问题不能只看表面,要看实质。
目录
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 华彩 控制器
![提示](https://static.bingdoc.com/images/bang_tan.gif)