北邮数电实验报告双色点阵显示控制器.docx





《北邮数电实验报告双色点阵显示控制器.docx》由会员分享,可在线阅读,更多相关《北邮数电实验报告双色点阵显示控制器.docx(41页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、数字电路与规律设计试验设计方案题目:双色点阵显示掌握器一、设计思路n 根本要求:1. 固定红色显示一个汉字或图形,显示亮度 4 级可调,用一个 btn按钮实现亮度调整,亮度变化视觉效果要尽量明显。2. 用从红到绿 8 级渐变色显示一个固定汉字或图形。3. 分别用单字循环显示、左右滚动显示、上下滚动显示三种显示方式单色显示四个汉字或图形,显示过程中,显示方式用一个 btn 按键进展切换。4. 显示的图形或汉字要尽量饱满美观。n 提高要求:1. 滚动显示过程中实现四种显示颜色的自动变换,颜色变化视觉效果要尽量明显。2. 自拟其它功能。二、系统设计总体框图时钟输入分频电路掌握器8*8 矩形显示屏按键
2、开关BTN1防抖BTN26 个状态方框图模块划分CLKButton1Button2B1B2分频电路按键防抖电路div_move div_occupy div_clkdiv_tempin_modein_intensity掌握器state_chooseintensity_chodiv_clk_change_div_rowoccupy扫描掌握电路display8*8 点阵显示屏ASM 图启动B1渐变色显示红字:1 级B1B2单字循环红字:2 级B1B21左右滚动红字:3 级B2B11红字:4 级上下滚动B2B1MDS 图状态 0B1B1状态 5状态 1B1B1状态 4状态 2B1状态 3B1三、仿真
3、波形及仿真分析1. 时钟分频分析:这个进程组用于产生不同频率的时钟用于不同用途的时钟信号,图中所表达的也是如此,不同频率的时钟信号。对于 lightness 信号来说,它是一个低分频的,可控占空比的信号,图中所示为占空比为 80%时的信号。2. 防抖分析:Mode_in 和 intensity_in 信号有短时间的抖动现象,在经过防抖之后, 短时间的抖动并不会影响 mode 和 intensity 信号。Mode_in 和 intensity_in 信号有长时间的高电平,这会使掌握电路既要检测上升沿又要检测下降沿。经过防抖程序之后,将掌握信号 mode 和 intensity 处理成脉冲信号,
4、这样掌握电路只需检测是否有正脉冲就可以了。3. 状态掌握与亮度调整分析:每当mode 信号有一个正脉冲时,state 就变化一次。每当intensity 信号有一个正脉冲时,lightness 就转变一次占空比。4. 颜色转变分析:当状态转变到 S1 的时候,占空比信号才会转变。从图中可以看出, 可控占空比信号是每八个时间单位为一组,这八个时间单位分别代表着第一行被选中、其次行被选中、第八行被选中。当第一行被选中时,可以清 楚看到红色和绿色掌握信号的占空比是不同的,这样就会导致点阵点的颜色中红色成分和绿色成分亮度不同,从而转变其颜色。5. 字符显示局部分析:从图中可以看出,当模式切换后,列内容
5、信号会被赐予不同的值,且随时间而转变。6. 显示局部分析:从图中可以看出,各个信号之间的规律关系符合代码中的表达式。四、源程序含注释LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY pointmatrix IS PORT(clk:IN STD_LOGIC;mode_in:IN STD_LOGIC; intensity_in:IN STD_LOGIC;row:OUT STD_LOGIC_VECTOR(7 DOWNTO 0); red_col:OUT STD_LOGIC_VECTOR(7
6、DOWNTO 0); green_col:OUT STD_LOGIC_VECTOR(7 DOWNTO 0);END pointmatrix;ARCHITECTURE a OF pointmatrix IS TYPE all_state IS (S0,S1,S2,S3,S4);SIGNAL state:all_state;SIGNAL clk_move:STD_LOGIC; SIGNAL clk_div:STD_LOGIC; SIGNAL clk_occupy:STD_LOGIC; SIGNAL clk_temp:STD_LOGIC;SIGNAL clk_lightness:STD_LOGIC_
7、VECTOR(7 DOWNTO 0);SIGNALdata0,data1,data2,data3,data4,data5,data6,data7:STD_LOGIC_VECTOR(7 DOWNTO 0);SIGNAL data_row:STD_LOGIC_VECTOR(7 DOWNTO 0); SIGNAL data_col:STD_LOGIC_VECTOR(7 DOWNTO 0);SIGNAL gr_occupy:STD_LOGIC_VECTOR(7 DOWNTO 0); SIGNAL re_occupy:STD_LOGIC_VECTOR(7 DOWNTO 0); SIGNAL mode:S
8、TD_LOGIC;SIGNAL intensity:STD_LOGIC;SIGNAL occupy_count:INTEGER RANGE 0 TO 100; SIGNAL tmp1,tmp2,tmp3,tmp4:STD_LOGIC; BEGINdiv_move:PROCESS(clk)-用于防抖的分频VARIABLE count:INTEGER RANGE 0 TO 25000000; BEGINIF clk”EVENT AND clk=”1” THEN IF count=9999999 THENcount:=0;ELSEcount:=count+1;END IF;IF count50000
9、00 THENclk_move=”1”;ELSEclk_move=”0”;END IF;END IF;END PROCESS div_move;div_occupy:PROCESS(clk)-掌握占空比进程和数码管显示的高频时钟VARIABLE count:INTEGER RANGE 0 TO 25000000;BEGINIF clk”EVENT AND clk=”1” THEN IF count=19999 THENcount:=0;ELSEcount:=count+1;END IF;IF count10000 THENclk_occupy=”1”;ELSEclk_occupy=”0”;EN
10、D IF;END IF;END PROCESS div_occupy;div_clk:PROCESS(clk)-掌握字符图形显示的高频时钟VARIABLE count:INTEGER RANGE 0 TO 25000000; BEGINIF clk”EVENT AND clk=”1” THEN IF count=159999 THENcount:=0;ELSEcount:=count+1;END IF;IF count80000 THENclk_div=”1”;ELSEclk_div=”0”;END IF;END IF;END PROCESS div_clk;div_temp:PROCESS(
11、clk)-用于防抖进程组和检测输入信号的中频时钟VARIABLE count:INTEGER RANGE 0 TO 25000000;BEGINIF clk”EVENT AND clk=”1” THENIF count=255 THEN count:=0;ELSEcount:=count+1;END IF;IF count128 THEN clk_temp=”1”;ELSEclk_temp=”0”;END IF;END IF;END PROCESS div_temp;in_mode:PROCESS(mode_in,clk_temp,tmp1,tmp2)-按键防抖 1 BEGINIF clk_t
12、emp”event AND clk_temp=”0” THEN tmp1=tmp2;tmp2=mode_in;END IF;mode=clk_temp AND tmp2 AND (NOT tmp1); END PROCESS in_mode;in_intensity:PROCESS(intensity_in,clk_temp,tmp3,tmp4)-按键防抖 2 BEGINIF clk_temp”event AND clk_temp=”0” THEN tmp3=tmp4;tmp4=intensity_in; END IF;intensitystatestatestatestatestateocc
13、upy_countoccupy_countoccupy_countoccupy_countoccupy_count=100; END CASE;END IF;END PROCESS intensity_choose;div_clk_lightness:PROCESS(clk,occupy_count)-单字调整亮度VARIABLE count:INTEGER RANGE 0 TO 25000000;BEGINIF clk”EVENT AND clk=”1” THENIF count=99 THENcount:=0;ELSEcount:=count+1;END IF;IF countoccupy
14、_count THEN clk_lightness=“00000000“;ELSEclk_lightnessdata0=“01100110“; data1=“11111111“; data2=“11111111“; data3=“01111110“; data4=“00111100“; data5=“00011000“; data6=“00011000“; data7data0=“01100110“; data1=“11111111“; data2=“11111111“; data3=“01111110“; data4=“00111100“; data5=“00011000“; data6=“
15、00011000“; data7CASE count1 IS WHEN 0=data0=“11111110“; data1=“10000001“; data2=“10000001“; data3=“11111110“; data4=“11111110“; data5=“10000001“; data6=“10000001“; data7data0=“11000011“; data1=“11000011“; data2=“11000011“; data3=“11000011“; data4=“11000011“; data5=“01100110“; data6=“00111100“; data7
16、data0=“11111100“; data1=“10000010“; data2=“10000001“; data3=“10000010“; data4=“11111100“; data5=“10000000“; data6=“10000000“; data7data0=“11111111“; data1=“11111111“; data2=“00011000“; data3=“00011000“; data4=“00011000“; data5=“00011000“;data6=“00011000“; data7CASE count IS WHEN 0=data0=“11111110“;
17、data1=“10000001“; data2=“10000001“; data3=“11111110“; data4=“11111110“; data5=“10000001“; data6=“10000001“; data7data0=“11111101“; data1=“00000011“; data2=“00000011“; data3=“11111101“; data4=“11111101“; data5=“00000010“; data6=“00000010“; data7data0=“11111011“; data1=“00000111“; data2=“00000111“; da
18、ta3=“11111011“; data4=“11111011“; data5=“00000101“; data6=“00000100“; data7data0=“11110110“; data1=“00001110“; data2=“00001110“; data3=“11110110“; data4=“11110110“; data5=“00001011“; data6=“00001001“; data7data0=“11101100“; data1=“00011100“; data2=“00011100“; data3=“11101100“; data4=“11101100“; data
19、5=“00010110“; data6=“00010011“; data7data0=“11011000“; data1=“00111000“; data2=“00111000“; data3=“11011000“; data4=“11011000“; data5=“00101100“; data6=“00100111“; data7data0=“10110000“; data1=“01110000“; data2=“01110000“; data3=“10110000“; data4=“10110000“; data5=“01011001“; data6=“01001111“; data7d
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 北邮数电 实验 报告 点阵 显示 控制器

限制150内