1616点阵显示综合实验.docx
- 文档编号:11834612
- 上传时间:2023-04-05
- 格式:DOCX
- 页数:8
- 大小:108.50KB
1616点阵显示综合实验.docx
《1616点阵显示综合实验.docx》由会员分享,可在线阅读,更多相关《1616点阵显示综合实验.docx(8页珍藏版)》请在冰豆网上搜索。
1616点阵显示综合实验
《EDA技术综合设计》
课程设计报告
报告题目:
16×16点阵显示综合实验
作者所在系部:
电子工程系
作者所在专业:
作者所在班级:
作者姓名:
指导教师姓名:
完成时间:
内容摘要
编写16×16点阵字符发生器的程序,通过CLK信号控制它的行驱动信号和列选信号让其依次输出‘中’,‘国’,‘人’三个字,通过硬件实验观察其结果,对于其他的显示花样以及点亮方式,可以根据实际需要自行设计。
关键字:
16×16点阵,CLK,显示花样
目录
一概述…………………………………………………………………5
二方案设计与论证………………………………………………………………5
三程序清单………………………………………………………………………5
四器件编程与下载………………………………………………………………9
五性能测试与分析………………………………………………………………10
六实验设备………………………………………………………………………10
七心得体会………………………………………………………………………10
八参考文献………………………………………………………………………11
课程设计任务书
课题
名称
16×16点阵综合显示实验
完成
时间
指导
教师
职称
学生
姓名
班级
总体设计要求和技术要点
用EDA的VHDL语言编写16×16点阵的程序,在时钟信号的控制下,通过控制行驱动和列选信号让其动态显示不同的字符及花样。
通过编译并下载到EDA实验箱进行验证。
工作内容及时间进度安排
第14周:
周一、周二:
设计项目的输入、编译、仿真
周三:
器件编程下载与硬件验证
周四:
成果验收与总结
周五:
撰写课程设计总结报告
课程设计成果
用VHDL语言准确编写出了设计题目的要求,通过了编译,在硬件实验中经过几次的调试看到了预期的效果。
一、概述
在时钟信号的控制下,使16×16点阵管花样点亮,在EDA试验仪中,16×16点阵显示列的驱动已经做好,其列选信号为SELOUT[3..0],送到4线-16线译码电路,译码电路的输出通过8只75451(双2输入与门,OC门)驱动器驱动16×16点阵管的16条共阴极列线;所以在设计点阵控制接口时,其列选信号必须由SELOUT[3..0]输出去控制译码电路。
对于信号的频率,采用与七段数码管的位选信号一样的处理方法,即扫描频率大于24Hz;通过CLK信号控制行驱动与列选信号使其动态依次显示”中国人“三个字。
其中CLK为时钟输入端,DIN[3..0]为花样显示模式选择,doout[15..0]为行驱动信号输出;SELOUT[3..0]为列选信号输出,去驱动4-16译码电路产生16×16点阵管的列选信号。
二、方案设计与论证
该程序由三个进程信号组成,进程K1通过CLK信号控制扫描频率s以及计数信号q,进而由q的记述周期控制cp信号。
进程k2由cp信号控制汉字的扫描周期s0,实现汉字的依次显示,进程k3由扫描信号s控制点阵的行驱动和列选信号,使其准确显示’中国人’三个字。
用VHDL语言编写程序,经过上级调试与编译,并下载到硬件观察实验结果。
三、程序清单
libraryieee;
useieee.std_logic_1164.all;
useieee.std_logic_unsigned.all;
entityA1is
port(clk,rst:
instd_logic;
din:
instd_logic_vector(3downto0);
dotout:
outstd_logic_vector(15downto0);
selout:
OUTstd_logic_vector(3downto0));
endA1;
architectureaofA1is
signalq:
std_logic_vector(7downto0);
signalso:
std_logic_vector(1downto0);
signalcp:
std_logic;
signals:
std_logic_vector(3downto0);
begin
K1:
process
begin
ifrising_edge(clk)then
ifs="1111"then
s<="0000";
ifq="11111111"then
q<="00000000";cp<='1';
elseq<=q+1;cp<='0';
endif;
elses<=s+1;
endif;
endif;
endprocessK1;
K2:
process
begin
ifrising_edge(cp)then
ifso="11"then
so<="00";
elseso<=so+1;
endif;
endif;
endprocessK2;
K3:
process
begin
ifso="00"then
casesis
when"0000"=>selout<="0000";dotout<="0000000000000000";
when"0001"=>selout<="0001";dotout<="0000000000000000";
when"0010"=>selout<="0010";dotout<="0000000000001000";
when"0011"=>selout<="0011";dotout<="0000011111111100";
when"0100"=>selout<="0100";dotout<="0000001000001000";
when"0101"=>selout<="0101";dotout<="0000001000001000";
when"0110"=>selout<="0110";dotout<="0000001000001000";
when"0111"=>selout<="0111";dotout<="1111111111111111";
when"1000"=>selout<="1000";dotout<="0000001000001000";
when"1001"=>selout<="1001";dotout<="0000001000001000";
when"1010"=>selout<="1010";dotout<="0000001000001000";
when"1011"=>selout<="1011";dotout<="0000001000001000";
when"1100"=>selout<="1100";dotout<="0000001000001000";
when"1101"=>selout<="1101";dotout<="0000011111111100";
when"1110"=>selout<="1110";dotout<="0000000000000000";
when"1111"=>selout<="1111";dotout<="0000000000000000";
whenothers=>null;
endcase;
elsifso="01"then
casesis
when"0000"=>selout<="0000";dotout<="0000000000000000";
when"0001"=>selout<="0001";dotout<="0000000000000000";
when"0010"=>selout<="0010";dotout<="1111111111111110";
when"0011"=>selout<="0011";dotout<="0100000000000010";
when"0100"=>selout<="0100";dotout<="0100100000001010";
when"0101"=>selout<="0101";dotout<="0100100000001010";
when"0110"=>selout<="0110";dotout<="0100111010001010";
when"0111"=>selout<="0111";dotout<="0100100110001010";
when"1000"=>selout<="1000";dotout<="0100100010001010";
when"1001"=>selout<="1001";dotout<="0100111111111010";
when"1010"=>selout<="1010";dotout<="0100100010001010";
when"1011"=>selout<="1011";dotout<="0100100010001010";
when"1100"=>selout<="1100";dotout<="0100100010001010";
when"1101"=>selout<="1101";dotout<="0100100000001010";
when"1110"=>selout<="1110";dotout<="1111111111111110";
when"1111"=>selout<="1111";dotout<="0000000000000000";
whenothers=>null;
endcase;
elsifso="10"then
casesis
when"0000"=>selout<="0000";dotout<="0100000000000000";
when"0001"=>selout<="0001";dotout<="0010000000000000";
when"0010"=>selout<="0010";dotout<="0001000000000000";
when"0011"=>selout<="0011";dotout<="0000100000000000";
when"0100"=>selout<="0100";dotout<="0000010000000000";
when"0101"=>selout<="0101";dotout<="0000001000000000";
when"0110"=>selout<="0110";dotout<="0000000100000000";
when"0111"=>selout<="0111";dotout<="0000000011111111";
when"1000"=>selout<="1000";dotout<="0000000100000000";
when"1001"=>selout<="1001";dotout<="0000001000000000";
when"1010"=>selout<="1010";dotout<="0000010000000000";
when"1011"=>selout<="1011";dotout<="0000100000000000";
when"1100"=>selout<="1100";dotout<="0001000000000000";
when"1101"=>selout<="1101";dotout<="0010000000000000";
when"1110"=>selout<="1110";dotout<="0100000000000000";
when"1111"=>selout<="1111";dotout<="0100000000000000";
whenothers=>null;
endcase;
elseselout<="ZZZZ";dotout<="ZZZZZZZZZZZZZZZZ";
endif;
endprocessK3;
enda;
四、器件编程与下载
通过了编译,接下来我们开始对器件进行引脚的锁定,引脚的锁定办法如下图所示。
同时编译以后的器件封装如下图所示
完成编译及引脚的锁定以后将其下载到EDA综合实验箱中,连接线路,观察实验结果
五、性能测试与分析
完成线路连接以后,加CLK信号,由于信号加的频率过快以及线路的虚接不能完整的显示,经过几次调试,改变频率信号及检查线路问题基本完成了正常的显示,达到预期的效果。
六、实验设备
EDA综合试验箱,电脑
七、心得体会
经过这次课程设计,我进一步加深了对VHDL语言的理解,并进一步熟练了对MAX+plus软件的操作。
在编写程序的过程中,我遇到了许多问题知道了自己学习中的不足,通过与同学的的探讨终于把问题都解决了,并加深了对点阵原理和设计思路的了解。
为以后的设计积累了一定得经验。
做课设就应该对自己所设计的方向有一定得
了解,运用所学的东西进行编写程序。
总之,通过这次课设,进一步了解了EDA技术,收获很多,对软件编程,排错调试,想关设备的使用技能等方面得到较全面的锻炼和提高。
八、参考文献
EDA技术与实验机械工业出版社
指导教师评语及设计成绩
评语
课程设计成绩:
指导教师:
日期:
年月日
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 1616 点阵 显示 综合 实验