北邮数电实验报告_双色点阵北京邮电大学
数电综合实验报告
实验名称:双色点阵显示控制器
学院:
姓名:
班级:
学号:
班内序号:
设计课题的任务要求
用8×8点阵设计双色点阵显示控制器
基本要求:
1、固定红色显示一个汉字或图形,显示亮度4级可调,用一个btn按钮实现亮度调节,亮度变化视觉效果要尽量明显。
2、用从红到绿8级渐变色显示一个固定汉字或图形。
3、分别用单字循环显示、左右滚动显示、上下滚动显示三种显示方式单色显示四个汉字或图形,显示过程中,显示方式用一个btn按键进行切换。
4、显示的图形或汉字要尽量饱满美观。
提高要求:
滚动显示过程中实现四种显示颜色的自动变换,颜色变化视觉效果要尽量明显。
自拟其它功能。
系统设计
设计思路
考虑本程序设计要求模块明确单一但需要变化多种状态,因此采用单模块多状态多进程方式实现。
其中防抖进程用于检测输入,本程序使用BTN按键进行输入控制,而按键的键入可能由于抖动产生多个上升沿,对程序的控制产生影响。防抖动采用了延时原理来对冒险或长时间按键电平进行处理。
分频使用了多个进程产生程序所需要的多个时钟频率。
包括:clk1(扫描时钟大于480Hz但不过高)
clk2(占空比调节1 clk1周期的整数倍,但不过高)
clk3(占空比调节2 同clk2,但占空比不同)
clk4(占空比调节3同clk2,但占空比不同)
clk5(按键时钟约100Hz)
clk6(滚动变化计时约1Hz)
状态机变化进程用于管理状态变化,当遇到按键电平信号时根据规则改变对应状态。
显示进程包括主要显示进程和一些辅助进程,辅助进程完成了时钟对应计数器计数,主进程则根据状态变化显示不同显示模式下不同的图案。
总体框图
总体结构框图:
输入
(左、右、上三个方向)
游戏复位
(BTN0)
输入
分频时钟
控制器
数码管
防抖动
点阵显示
逻辑划分框图
开始
Mode
单字显示(亮度1)
P
单字显示(亮度2)
单字变色显示
pP Mode
单字显示(亮度3)
P Mode
单字显示(亮度4)
Mode
单字变色滚动
P
左右滚动
P
P
左右滚动
MDS图
亮度变化
m1_p1~p4
固定文字显示m1
P=1
Mode=1
Mode=1
待机状态m0
变色显示
m2
Mode=1 reset
Mode=1
滚动方式改变
m3_p1~p3
单色滚动
m3
P=1
各进程介绍
分频进程们
分频进程含一个从50M(也可能是25M)分出的扫描频率clk1,这个频率要大于60*8=480Hz(因为人眼分辨频率为60Hz左右,要保证每排扫描时达到60Hz则需480Hz)。然后以clk1为基准频率,将clk2、clk3、clk4以clk1的8倍数作占空比调整。
具体是,clk2、clk3、clk4均记为clk1的48分频,然后占空比调为32:16,24:24,16:32
做8倍数的原因是为了保证至少每扫完一屏才有一次占空比调整,否则在主频率不足情况下可能有些排暗有些排亮(详见问题分析)
最后再将周期约为100ms的按键时钟clk5和周期为1s的滚动时钟clk6分出就可以了。
状态机进程
没什么可说的,我写的是单进程状态机,防止了多进程状态机可能带来的冒险。敏感量直接写的是防抖动输出的信号,本以为没必要加同步时序,但事实证明这是有问题的
。(详见代码分析)
防抖动进程
防抖动我用的是老师给的代码。先阐述一下原理:
按键输入电平做敏感量,将输入赋值给resetmp1。
resetmp1被赋值后,将这段值有时延的赋值给resetmp2,并利用这段时间去判断是否按键仍为1。则面对下面两种情况下防抖程序可以做出调整
A.突然翘起的冒险:
此种情况下若r1得到赋值,则r2在下一个时钟沿得到赋
北邮数电实验报告 双色点阵 来自淘豆网m.daumloan.com转载请标明出处.