双色点阵显示控制器 北京邮电大学数字电路综合实验报告Word格式文档下载.docx
- 文档编号:6293017
- 上传时间:2023-05-06
- 格式:DOCX
- 页数:38
- 大小:394.49KB
双色点阵显示控制器 北京邮电大学数字电路综合实验报告Word格式文档下载.docx
《双色点阵显示控制器 北京邮电大学数字电路综合实验报告Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《双色点阵显示控制器 北京邮电大学数字电路综合实验报告Word格式文档下载.docx(38页珍藏版)》请在冰点文库上搜索。
至此,一幅完整的文字信息就显现出来,然后再反复扫描这8行直至显示新的信息。
以下设计采用行扫描方式实现滚动显示。
三、任务解析和系统设计(设计思路、总体框图、分块设计、流程图、状态转移图)
设计思路:
要实现亮度四级可调,选择用四个不同的占空比来控制发红光的发光二极管,当占空比较大时,则在红色发光二极管显示的亮度也就最强。
选择红色发光二极管不同的亮度时,即相当于选择四个不同的占空比。
当检测到时钟的上升沿时,占空比发生变化。
所以还需要再设计一个模值为4的计数器来控制这四个不同的占空比。
发光二极管的八行输出是通过一个八计数器来控制的。
行总而言之,显示亮度四级可调的固定红色汉字,要设计一个模值为4的计数器的模块,一个模值为8的计数器,一个有四个不同的占空比模块。
通过红色发光二极管显示输出。
2、用从红到绿8级渐变色显示一个固定汉字或图形。
从红到绿八级渐变色,首先八种颜色的变化可以通过上一个功能里设计的模值为8的计数器来控制。
然后颜色的变化不同则也是通过8个不同的占空比来实现,发光二极管有两个不同颜色的输出,红色和绿色占空比不一样,混合在在一起则会出现不同的颜色。
3、分别用单字循环显示、左右滚动显示、上下滚动显示三种显示方式单色显示四个汉字或图形,显示过程中,显示方式用一个btn按键进行切换。
单字循环显示是通过检测到每一个移位时钟时,就将每一行按位向左移八位。
左右滚动显示是通过行扫描实现左移,是通过每来一个移位时钟,将每一行的字模按位左移一位,扫描时钟到来时送出移位后的新字模,通过8次移位,可将一个汉字移出点阵平面,按类似的道理,也可以将一个汉字经8次移位后移进点阵平面。
上下滚动显示则相反的,是通过列扫描实现上移,是通过每来一个移位时钟,将每一行的字模按位上移一位,扫描时钟到来时送出移位后的新字模,通过8次移位,可将一个汉字移出点阵平面。
因此,需要模值为8的计数器模块,一个移动的模块。
实现跟基本要求的第三个功能实现类似,只是显示四个不同的汉字时,加上四个不同的占空比就可以实现。
总体框图(整体模块连接图):
四、分块设计
(1)防抖模块:
设计原因:
只要有按键或是拨码开关,防抖电路就是不可缺少的一个模块。
否则,按键信号中的一些毛刺和抖动往往会引起电路不可预知的错误。
功能:
将带有抖动的信号进行识别和判断,输出持续时间超过0.1s的高电平信号。
(2)计数器4模块
此次实验要求的第一个功能的四级亮度可调,需要用到一个计数器4来控制四种两度,当检测到计数器4输出的时钟发生变化时,既检测到上升沿时,占空比就要发生变化,从而达到四种不同的亮度。
在第三个功能实现里,分别用单字循环显示、左右滚动显示、上下滚动显示三种显示方式单色显示四个汉字,三种功能的切换也需要用到计数器4,只需要把计数器4的最后一个状态制0就可。
计数器4是把clk的四个周期记做一个count,当检测到count的上升的时钟时,占空比或者状态发生变化,从而达到控制的作用。
(3)计数器8模块
首先8*8的点阵行和列都有8个输出,需要用计数器8的输出时钟来控制,当检测到计数器8的时钟沿上升时,则输出一行或者列。
用来控制点阵8row行输出,还有8colr和colg列的输出。
(4)占空比模块
第一个功能的亮度四级可调,四种不同的亮度需要通过四种不同的占空比来调节实现。
还有第二个功能的8级渐变色,8种颜色的变化,也是通过发光二极管红色和绿色两种颜色的占空比不同来达到混合后的8种不同颜色。
最有提高要求里的滚动显示过程中实现四种显示颜色的自动变换,是四个不同的字,红绿颜色有四种不同的占空比实现的。
占空比实际上就是正脉冲的持续时间与脉冲总周期的一个比值。
占空比越大,高电平持续的时间也就越长,亮度也就越强。
(5)分频模块
由于实验板只能提供25MHz的时钟信号,而电路中只能使用较低频率的时钟:
用于将实验板上的25MHz的时钟信号经分频后输出
(6)移动模块
定义滚动控制,一个gundong2的取值范围是0到3,控制的单字的扫描,一次移动8列,计数器8每检测到一个上升沿即输出一列,到计数器记完它的一个周期8时,点阵也就完整的输出了一个字,此时移动一次为8位。
一个gundong1的取值范围是0到31,用来控制行和列的扫描。
即计数器8每输出一列,则移动一行或者一列,从而达到单字循环显示、左右滚动显示、上下滚动显示三种显示方式。
不过,最后为了方便,把这个模块移进了计数器8的设计模块里。
每检测到时钟的上升沿,gundong计数加1,行扫描实现左移,是通过每来一个移位时钟,将每一行按位左移一位,扫描时钟到来时则开始移位。
通过8次移位,可将一个汉字移出点阵平面,按类似的道理,也可以将一个汉字经8次移位后移进点阵平面。
(7)功能实现模块
设计原因和功能:
实现四个功能。
第一个功能固定红色显示一个汉字或图形,显示亮度4级可调,通过四种不同的占空比调节亮度,输出仅需要用到红色的发光二极管。
用从红到绿8级渐变色显示一个固定汉字或图形,通过八种不同的占空比来控制两种颜色的输出,调和出8种不同的颜色。
分别用单字循环显示、左右滚动显示、上下滚动显示三种显示方式单色显示四个汉字或图形,通过行扫描,列扫描检测到计数器8的时钟和移位的位数来控制三种不同的滚动模式。
滚动显示过程中实现四种显示颜色的自动变换,只需要将输出颜色的占空比加入到三种不同的滚动模式里面就可以了。
五、程序代码
防抖模块源代码:
libraryieee;
useieee.std_logic_1164.all;
useieee.std_logic_unsigned.all;
entityfangdouis
port(
clk:
instd_logic;
reset:
resetn:
outstd_logic);
endfangdou;
architectureaoffangdouis
signalresetmp1,resetmp2:
std_logic;
begin
process(clk)
if(clk'
eventandclk='
0'
)then
resetmp2<
=resetmp1;
resetmp1<
=reset;
endif;
endprocess;
resetn<
=clkandresetmp1and(notresetmp2);
enda;
计数器4模块源代码:
entityjishu4is
port(
clk:
cnt4:
outintegerrange0to7);
endjishu4;
architectureaofjishu4is
variablecount:
integerrange0to3;
--Count为中间变量,给cnt4赋值
1'
ifcount=3thencount:
=0;
else
count:
=count+1;
endif;
cnt4<
=count;
计数器8模块源代码:
entityjishuqi8is
port(
cnt8:
endjishuqi8;
architectureaofjishuqi8is
integerrange0to7;
--中间变量,Count为中间变量,给cnt8赋值
ifcount=7thencount:
else
cnt8<
占空比模块源代码:
entityzhankongbiis--亮度四级可调的设置
port(
INSTD_LOGIC;
pwm1:
outstd_logic;
--Pwm为count计数时钟占空比的控制
pwm2:
pwm3:
pwm4:
endzhankongbi;
architectureaofzhankongbiis
variablecount:
integerrange0to49;
--下载可用49999
ifclk'
then
ifcount=49
thencount:
elsecount:
ifcount<
40
thenpwm1<
='
;
elsepwm1<
then
30
thenpwm2<
elsepwm2<
20
thenpwm3<
elsepwm3<
10
thenpwm4<
elsepwm4<
分频模块源代码:
entityfenpinis
clkout:
endfenpin;
architectureaoffenpinis
signalxinhao:
integerrange0to9;
--仿真可取50hz到100hz,下载时可为249
ifcount=9then
xinhao<
=notxinhao;
clkout<
=xinhao;
移动模块源代码:
entitygundongis
gundong1:
outintegerrange0to31;
--水平滚动垂直滚动的扫描
gundong2:
outintegerrange0to3);
--单字滚动的扫描
endgundong;
architectureaofgundongis
variablecount1:
integerrange0to31;
variablecount2:
)
then
ifcount1=31
thencount1:
elsecount1:
=count1+1;
ifcount2=3
thencount2:
elsecount2:
=count2+1;
gundong1<
=count1;
gundong2<
=count2;
功能实现模块源代码:
entityTranslationis
swt:
instd_logic_vector(1downto0);
inintegerrange0to3;
inintegerrange0to7;
dz4:
--单字滚动的
color32:
inintegerrange0to31;
--水平滚动,垂直滚动
pwm5:
pwm6:
row:
outstd_logic_vector(7downto0);
colr:
colg:
outstd_logic_vector(7downto0)
);
endTranslation;
architectureprojectofTranslationis
typerisarray(7downto0)ofstd_logic_vector(38downto0);
typer1isarray(38downto0)ofstd_logic_vector(7downto0);
signalset:
r;
signalsetud:
r1;
set<
=(
"
000000000111110011111111001010100000000"
--水平滚动的定义
000000000010010001010010001010100000000"
000000000010010000110100001010100000000"
011111100011111011111110001010100111111"
000000000000001000010000001010100000000"
000000001111111000010000001010100000000"
000000000000101000010000010010100000000"
000000000000011000010000100010100000000"
);
setud<
00000000"
--垂直滚动的定义
01111110"
01111100"
00100100"
00111110"
00000010"
11111110"
00001010"
00000110"
11111111"
01010010"
00110100"
00010000"
00101010"
01001010"
10001010"
process(cnt8)
begin
casecnt8is
when0=>
row<
="
01111111"
--所有行的取值情况
when1=>
10111111"
when2=>
11011111"
when3=>
11101111"
when4=>
11110111"
when5=>
11111011"
when6=>
11111101"
when7=>
whenothers=>
endcase;
endprocess;
process(cnt4,swt,cnt8,pwm1,pwm2,pwm3,pwm4,pwm5,pwm6,dz4,color32,set,setud)
variablelight:
ifswt="
00"
then--light
casecnt4is
when0=>
light:
--亮度的调节
when1=>
=pwm6;
when2=>
=pwm4;
when3=>
=pwm1;
colg<
iflight='
then--heart
colr<
="
01000010"
11100111"
00111100"
00011000"
--实现第一种功能固定红字的四级亮度可调
elsecolr<
ifswt="
01"
then--8level
casecnt8is--运用红绿两种颜色的占空比不同,从而实现8种颜色的渐变
colr<
colg<
--实现第二种功能,八种颜色可变
ifpwm6='
thencolr<
elsecolr<
ifpwm5='
ifpwm4='
ifpwm3='
000000
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 双色点阵显示控制器 北京邮电大学数字电路综合实验报告 点阵 显示 控制器 北京邮电 大学 数字电路 综合 实验 报告