ImageVerifierCode 换一换
格式:DOCX , 页数:27 ,大小:97.99KB ,
资源ID:13036426      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/13036426.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(数电实验报告.docx)为本站会员(b****3)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

数电实验报告.docx

1、数电实验报告数字电路与逻辑设计综合设计实验报告 实验名称:8X8点阵显示装置一 摘要: 本实验主要在理论分析和具体的软硬件实现上,针对88矩阵的扫描显示、字符的单个显示,字符的循环显示,以及对各项显示功能的切换控制等内容进行了分析与探讨。 在理论分析的基础上,用VHDL语言编写源代码,再配合具体电路连接,实现点阵的扫描,字符的单个显示,字符的循环显示,以及对各项显示功能的切换控制等。关键字:扫描,切换二 设计任务要求:1 用88点阵做一个基本矩阵,设计扫描控制电路,使光点从左上角象素点开始扫描,终止于右下角象素点,然后周而复始地重复下去,扫过一帧所需时间为16秒;2 用88点阵显示4个字符,每

2、秒显示一个字符;3 显示一个活动的简单图像;4 以上三种功能可以手动或自动转换;三所用元器件: EPM7128 一块面包板 一块 88点阵模块 一块按键开关 一个导线 若干 四 设计思路和总体设计框图:1.逐点扫描的实现:实验要求扫描一帧是16秒,由于是88点阵,即每一点亮1/4秒,而我们的时钟信号是1MHz的信号。因此要对时钟信号进行分频以获得周期为1/4秒的信号,其频率是4Hz,而1M信号的224分频是4Hz,因此我在实验中选择m(21),m(22),m(23)三路信号来控制行选通,又因为每行有8个点,所以列选通只要比行选通快三位, m(18),m(19),m(20)就可以了。2.显示的实

3、现:字符的显示其实与逐点扫描一样,只不过要求扫描速率足够快,快到超人眼所能分辨的程度就行了。在实验中我选用的是m(20),m(21)两路信号来控制行选通,用m(10),m(11),m(12)三路信号来控制列选通。3.循环显示的实现:循环显示原理与字符显示一样,只是帧数较多,只要把两个字符显示状态的过渡状态也写成代码就行了,实验中,我选择每两个字符之间用三帧来过渡,并选用m(18),m(19),m(20),m(21)四路信号来控制行选通,用m(10),m(11),m(12)三路信号来控制列选通。4.总体结构框图:五 控制器部分的状态转移图和流程图: 1状态转移图:2流程图:六 分块电路的关键源程

4、序:1 分频部分的关键源程序: process(clk) beginif(clkevent and clk=1) then m=m+1; fangdou=m(15); f0r=m(23 downto 21); f0c=m(20 downto 18); f1c=m(12 downto 10); f1r=m(21 downto 20); f2c=m(12 downto 10); f2r=m(21 downto 18);end if;end process;2 防抖部分的关键源程序: process(fangdou) beginif fangdouevent and fangdou=1 then k

5、(2)=k(1); k(1)=k(0); k(0)=key;end if;g=k(2) and k(1) and k(0);end process;3 按键计数的关键源程序: process(g)beginif(gevent and g=1) thenif x=2 then x=0;else xcolumncolumncolumncolumncolumncolumncolumncolumncolumnrowrowrowrowrowrowrowrowrowc1c1c1c1c1c1c1c1c1 case f1c is end case; when 01= case f1c is end case;

6、 when 10= case f1c is end case; when others= case f1c is end case; end case;end process;6 动画显示模块实现的关键源程序: process(f2r,f2c) begincase f2c is when 000=c2c2c2c2c2c2c2c2c2 case f2c is end case; when 0001= case f2c is end case; when 0010= case f2c is end case; when 0011= case f2c is end case; when 0100=

7、case f2c is end case; when 0101= case f2c is end case; when 0110= case f2c is end case; when 0111= case f2c is end case; when 1000= case f2c is end case; when 1001= case f2c is end case; when 1010= case f2c is end case; when 1011= case f2c is end case; when 1100= case f2c is end case; when 1101= cas

8、e f2c is end case; when 1110= case f2c is end case; when others= case f2c is end case; end case;end process;七 所实现功能说明: 本实验主要完成以下几大功能:1 点阵的扫描显示:1) 功能实现描述: y(8),t(8) 分别控制点阵的行的8个输入端和列的8个输入端。当行为高电位,列为低电位时。二极管发光,否则不发光。由中间变量f0c,f0r充当判决依据,以此控制行列的输出信号。2) 仿真波形: 2 字符的单个显示:功能实现描述:采用列扫描的方法来实现点字符的显示。用计数信号m的20,21

9、位充当判决条件,控制行信号y和列信号t的输出,实现行和列的连续循环。用计数信号m 的10,11,12位充当判决条件,控制不同字符显示的循环。3 字符的循环显示: 循环显示跟字符显示的原理差不多的。只是其中每一个字符的完整显示需要4帧的时间。用计数信号m的18,19,20,21位充当判决条件,控制不同字符显示的循环。器件的资源占用情况:八故障及问题分析:实验中出现了不少问题,但其中有三个比较主要的问题,如下:1.逐点扫描时,不该亮的点会亮而显示字符时字符有明显的跳跃感 解决方法:提高扫描频率,利用人眼反应的迟滞性正常显示点和字符2.在显示字符时,行与列难以实现同步解决方法:选择同一个判决变量控制

10、行列的输出,即可实现行与列同步。 3.实验连线比较复杂,并有不断重复工作,很繁琐解决方法:利用Max Plus 中的手动分配管脚的功能,自己根据实验需要设置输出管脚,减少重复的连线工作.九实验心得:本次实验是自学习数字电路程序设计以来综合性最强的一次实验,使我对数电程序设计有了进一步的了解和掌握。通过这次实验,我对VHDL语言有了更深一步的了解,并学会了如何手动分配管脚,对点阵的具体用法也有了更深一步的认识。最终基本上实现了点阵扫描,单个字符的显示,字符的循环的显示等功能。总体来讲,这次实验锻炼了我的意志品质,培养了我独立思考解决问题的能力,使我受益匪浅。十完整源程序: library iee

11、e;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity dianzhen isport(clk:in std_logic; -1M的系统时钟 key:in std_logic; -开关,控制点阵图案切换 y: buffer std_logic_vector(0 to 7); 行输出变量 t: buffer std_logic_vector(0 to 7); 列输出变量end dianzhen;architecture part of dianzhen issignal x:integer range 0 to 2

12、; signal row,column,r1,c1,r2,c2:std_logic_vector(0 to 7); signal m:std_logic_vector(23 downto 0):=000000000000000000000000;-总分频signal f1c,f0r,f0c,f2c,k:std_logic_vector(2 downto 0); -控制输出信号及中间变量signal f1r:std_logic_vector(1 downto 0); 字符显示的行控制变量signal f2r:std_logic_vector(3 downto 0); 字符循环显示的行控制变量si

13、gnal fangdou,g:std_logic;beginprocess(clk) -分频部分beginif(clkevent and clk=1) then m=m+1; fangdou=m(15); f0r=m(23 downto 21); f0c=m(20 downto 18); f1c=m(12 downto 10); f1r=m(21 downto 20); f2c=m(12 downto 10); f2r=m(21 downto 18);end if;end process;process(fangdou) - 防抖部分beginif fangdouevent and fangd

14、ou=1 then k(2)=k(1); k(1)=k(0); k(0)=key;end if;g=k(2) and k(1) and k(0);end process;process(g)beginif(gevent and g=1) thenif x=2 then x=0;else xcolumncolumncolumncolumncolumncolumncolumncolumncolumnrowrowrowrowrowrowrowrowrowc1c1c1c1c1c1c1c1c1 case f1c is 显示C when 000=r1r1r1r1r1r1r1r1r1 case f1c is 显示E when 000=r1r1r1r1r1r1r1r1r1 case f1c is 显示T when 000=r1r1r1r1r1r1r1r1r1 case f1c is 显示6 when 000=r1r1r1r1r1r1r1r1r1c2c2c2c2c2c2c2c2c2 case f2c is 显示C when 000=r2r2r2r2r2r2r2r2r2 case f2c is when 000=r2r2r2r2r2r2r2r2r2 case f2c is when 000=r2r2r2r2r2r2=1000000

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1