设计数字显示电路演示教学.doc
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 设计 数字 显示 电路 演示 教学
- 资源描述:
-
设计数字显示电路 精品资料 大连理工大学城市学院 数字电路与系统课程设计 设计题目:设计数字显示电路 学 院:电子与自动化学 专 业: 学 生: 同 组 人: 指导教师: 完成日期: 2012年3 目 录 第一章 设计任务 1.1项目名称 1.2项目设计说明 1.2.1设计任务和要求 1.2.2进度安排 1.3项目总体功能模块图 第二章 需求分析 2.1问题基本描述 2.2系统模块分解 2.3系统各模块功能的基本要求 第三章 设计原理 3.1 设计原理 3.2 MAXPLUSII介绍 第四章 系统功能模块设计 4.1计数模块 4.1.1计数模块流程图 4.1.2输入输出引脚及其功能说明 4.1.3程序代码实现 4.2数据选择模块 4.2.1数据选择模块流程图 4.2.2输入输出引脚及其功能说明 4.2.3程序代码实现 4.3七段译码显示模块 4.3.1七段译码显示模块流程图 4.3.2输入输出引脚及其功能说明 4.3.3程序代码实现 第五章调试并分析结果 5.1输入说明 5.2预计输出 5.3测试结果记录 5.4测试结果分析 第六章 结论 6.1心得体会 6.2参考文献 第一章 设计任务 1.1 项目名称:设计数字显示电路 本项目的主要内容是设计并实现8位数码管轮流显示8个数字。该电路将所学的数字电路与系统大部分知识和VHDL语言结合。 1.2项目设计说明 1.2.1设计任务和要求 A、用CPLD设计一个八位数码管显示电路; B、8位数码管轮流显示8个数字,选择合适的时钟脉冲频率实现8个数码 管同时被点亮的视觉效果。 1.2.2进度安排 第一周至第二周每周二2课时,共10课时。具体安排为:第一周至第三周 6课时自行设计、第四周实验结果验收、第五周交报告并进行答辩。 1.3项目总体功能模块图 第二章 需求分析 2.1问题基本描述 基本系统流程图如下 2.2系统模块分解 动态扫描显示电路的主要组成为:计数器、显示译码器、32选4数据选择器、扫描电路组成。 2.3系统各模块功能的基本要求 1、计数器:CN8模块输入信号是时钟脉clk,每遇到一个时钟脉冲clk上升沿时,内部累 加器便加一,再把累加器所得结果与2进制数的形式输出。要显示8位数字,所以用3位2进制数作为输出。输出信号为cout[0..2]。 2、八选一数据选择模块:模块输入信号一个是数据选择器的地址码SEL[2..0],另一部分是数据信息A[3..0]~F[3..0].地址码是SEL[2..0]来自时钟脉冲计数器CN6,由地址码SEL[2..0]决定输出哪个输入数据。输出信号是q[3..0]; 3、扫描显示译码器:完成对7字段数码管显示的控制。 第三章 设计原理 3.1 设计原理 采用动态扫描的方式实现设计要求。动态扫描显示需要由两组信号来控制:一组是字段输出口输出的字形代码,用来控制显示的字形,称为段码;另一组是位输出口输出的控制信号,用来选择第几位数码管工作,称为位码。各位数码管的段线并联,段码的输出对各位数码管来说都是相同的。因此在同一时刻如果各位数码管的位选线都处于选通状态的话,6位数码管将显示相同的字符。若要各位数码管能够显示出与本位相应的字符,就必须采用扫描显示方式,即在某一时刻,只让某一位的位选线处于导通状态,而其它各位的位选线处于关闭状态。同时,段线上输出相应位要显示字符的字型码。这样在同一时刻,只有选通的那一位显示出字符,而其它各位则是熄灭的,如此循环下去,就可以使各位数码管显示出将要显示的字符。 虽然这些字符是在不同时刻出现的,而且同一时刻,只有一位显示,其它各位熄灭,但由于数码管具有余辉特性和人眼有视觉暂留现象,只要每位数码管显示间隔足够短,给人眼的视觉印象就会是连续稳定地显示。 总之,多个数码管动态扫描显示,是将所有数码管的相同段并联在一起,通过选通信号分时控制各个数码管的公共端,循环一次点亮多个数码管,并利用人眼的视觉暂留现象,只要扫描的频率较大,将看不到闪烁现象。将会看到6个数码管持续稳定点亮的现象。 3.2 MAXPLUSII介绍 MAX+PLUS II 是一个完全集成化的可编程逻辑环境,能满足用户各种各样的设计需要。它支持Altera公司不同结构的器件,可在多平台上运行。MAX+PLUS II 具有突出的灵活性和高效性,为设计者提供了多种可自由选择的设计方法和工具。丰富的图形界面,可随时访问的在线帮助文档,使用户能够快速轻松地掌握和使用MAX+PLUSII软件。 MAX+PLUSII 具有的强大功能极大地减轻了设计者的负担,使设计者可以快速完成所需的设计,使用该软件,用户从开始设计逻辑电路到完成器件下载编程一般只需要数小时时间,其中设计的编译时间往往仅需数分钟。用于可在一个工作日内完成实现设计项目的多次修改,直至最终设计定型。 MAX+PLUS II 开发系统众多突出的特点,使它深受广大用户的青睐。 MAX+PLUSII支持 Altera公司的 Classic、ACEX 1K、 MAX 3000、 MAX 5000、 MAX 7000、 MAX 9000、 FLEX 6000和 FLEX 10K等系列的可编程逻辑器件,门数为600~250000门,提供了工业界真正与结构无关的可编程逻辑设计环境。MAX+PLUSII的编辑器还提供了强大的逻辑综合与优化功能以减轻用户的设计负担。 MAX+PLUSII软件的设计输入、处理、校验功能完全集成于可编程逻辑开发工具内,从而可以更快的进行调试,缩短开发周期。 设计者可以从各种设计输入、编辑、校验及器件编程工具中作出选择,形成用户风格的开发环境,必要时还可以在保留原始功能的基础上添加新的功能。由于MAX+PLUSII支持多种器件系列,设计者无须学习新的开发工具即可对新结构的器件进行开发。 MAX+PLUSII软件支持多种HDL的设计输入,包括标准的VHDL、 Verilog HDL及Altera公司自己开发的硬件描述语言AHDL。 MAX+PLUS II 由设计输入、项目处理、项目检验和器件编程等4部分组成,所有这些部分都集成在一个可视化的操作环境下。 MAX+PLUS II 管理窗口包括项目路径、工作文件标题条、MAX+PLUS II菜单条、快捷工具条和工作区等几个部分。设置好授权码后,启动MAX+PLUS II即进入MAX+PLUS II 管理窗口,如图6.4所示。 MAX+PLUS II 还为用户提供了功能强大的在线帮助功能。通过使用在线帮助,用户可以获得设计中所需的全部信息。 第四章 系统功能模块设计 4.1计数(数码管位选控制)模块 4.1.1数码管位选控制模块流程图 4.1.2输入输出引脚及其功能说明 CN8模块输入信号是时钟脉冲clk,每遇到一个时钟脉冲clk上升沿时,内部累加器便加一,再把累加器所得结果与2进制数的形式输出。要显示八位数字,所以用3位2进制数作为输出。输出信号为cout[0..2]。总之是通过输入输出信号来对数码管进行位选控制。 4.1.3程序代码实现 library ieee; use ieee.std_logic_1164.all; use ieee.std_logic_unsigned.all; entity cn8 is port(clr,start,clk: in bit; cout: out std_logic_vector(2 downto 0)); end cn8; architecture a of cn8 is signal temp:std_logic_vector(2 downto 0); begin process(clk,clr) begin if clr='0' then temp<="000"; cout<='0'; elsif (clk'event and clk='1') then if start='0' then if temp>="111" then temp<="000"; cout<='1'; else temp<=temp+1; cout<='0'; end if; end if; end if; end process; cout<=temp; end a; 4.2数据选择模块 4.2.1.数据选择模(八选一模块)块流程图 4.2.2输入输出引脚及其功能说明 SEL81模块输入信号一个是数据选择器SEL81的地址码SEL[2..0],另一部分是数据信息A[3..0]~H[3..0].地址码是SEL[2..0]来自时钟脉冲计数器CN8,由地址码SEL[2..0]决定输出哪个输入数据。输出信号是q[3..0]。 4.2.3程序代码实现 Library ieee; Use ieee.std_logic_1164.all; Entity sel81 is Port(sel:in std_logic_vector(2 downto 0); A,b,c,d,e,f,g,h:in std_logic_vector(3 downto 0); Q:out std_logic_vector(3 downto 0)); End sel81; Architecture rtl of sel81 is begin Process(a,b,c,d,e,f,g,h,sel) Variable cout:std_logic_vector(3 downto 0); Begin Case(sel)is When"000"=>cout:=a; When"001"=>cout:=b; When"010"=>cout:=c; When"011"=>cout:=d; When"100"=>cout:=e; When"101"=>cout:=f; When"110"=>cout:=g; When others =>cout:=h; End case; Q<=cout; End process; End rtl; 4.3七段译码器模块 4.3.1七段译码器模块模块流程图 4.3.2输入输出引脚及其功能说明 DISP模块是七段译码器,将输入的4位二进制数转换为数码显示管对应的数字。例如输入为4进制数0000的时候,使数码显示管显示0,则要七段译码器输出为011111。即g段为0,g段发光二极管不亮,其它发光二极管被点亮,显示效果为0。DISP模块输入信号D[3..0],输出信号是Q[6..0]。 4.3.3程序代码实现 Library ieee; Use ieee.std_logic_1164.all; Entity disp is port(d:in std_logic_vector(3 downto 0); q:out std_logic_vector(6 downto 0)); end disp; Architecture rtl of disp is Begin Process(d) Begin Case d is When"0000"=>q<="0111111"; When"0001"=>q<="0000110"; When"0010"=>q<="1011011"; When"0011"=>q<="1001111"; When"0100"=>q<="1100110"; When"0101"=>q<="1101101"; When"0110"=>q<="1111101"; When"0111"=>q<="0100111"; When"1000"=>q<="1111111"; When others=>q<="1101111"; End case; End process; End rtl; 第五章调试并分析结果 5.1输入说明 clk 时钟输入 Clr 计数器清零(低电平有效) Start 打开计数器(低电平有效) A[3..0]..H[3..0] 输入要显示的数字 5.2预计输出 Cout[2..0] 数码管位选控制 Q[6..0] 数码管段选控制 5.3测试结果记录 同时显示0,1,2,3,4,5,6,7这八个不同的数字图形到八个数码管上。 5.4测试结果分析 输入一个时钟,驱动计数器工作。选用模值为8的计数器,依次控制8个数码管的亮灭,使得某一时刻有且仅有一个数码管点亮,同时产生对应的,将点亮的数码管赋值显示为相应的数码予以显示。由于扫描频率较高,8位数码管序列将显示持续稳定的0至7的数码。 第六章 结论 6.1心得体会 在课程设计之前,我学过51单片机,对硬件与软件的联系有初步的了解,其次我的题目相对较简单---设计8位数码管动态显示电路,所以上手特别的快。在编写程序之前,我到实验室实地考察了一下试验箱,发现8位数码管实验无法实现,只能实现6位,开关实现数码管数字变换也不现实,单单8位数码管的数字就需要32个开关控制,试验箱远远达不到这个要求,因此,我就设计全软件来控制并且做得非常成功。最后验收时听老师分析,全软件的程序有很大的缺陷,然后对我的设计又进一步的改进,用开关来进行控制。 目前为止已实现6位数码管循环显示0-F,即循环滚动,始终点亮6个数码管,左出右进。状态为:012345-123456-234567-345678-456789-56789A-6789AB-789ABC-89ABCD-9ABCDE-ABCDEF-BCDEF0-.....(代码见附录)。 但未实现:向左滚动,用全灭的数码管充右边,直至全部变灭,然后再依次从右边一个一个地点亮。状态为:012345-12345X-2345XX-345XXX-45XXXX-5XXXXX-XXXXXX-XXXXX0-XXXX01-XXX012-XX0123-X01234-012345,其中’X’表示数码管不显示。 总之,通过这次课程设计,我对EDA技术有了更进一步的了解。也知道了如何把vhdl的程序装到实验的硬件中,然后如何的连接实验箱上的管脚。 通过在上网查询本次实验相关资料。丰富了对EDA的了解。 6.2参考文献 李云、侯传教、冯永浩。VHDL电路设计实用教程。机械工业出版社。 附录: library ieee; use ieee.std_logic_1164.all; use ieee.std_logic_unsigned.all; entity div2k is port(clk_in : in std_logic; clk_out : out std_logic); end; architecture a of div2k is signal cnt : integer range 0 to 999; signal clk_tmp : std_logic; begin process(clk_in) begin if (clk_in'event and clk_in='1') then if cnt=999 then cnt<=0; clk_tmp<= not clk_tmp; else cnt<=cnt+1; end if; end if; end process; clk_out<=clk_tmp; end; ------B LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL; --USE IEEE.STD_numeric_std ENTITY scan_led IS PORT ( CLK : IN STD_LOGIC; SG : OUT STD_LOGIC_VECTOR(6 DOWNTO 0); BT : OUT STD_LOGIC_VECTOR(2 DOWNTO 0) ); END; ARCHITECTURE arc OF scan_led IS component div2k port(clk_in: in std_logic; clk_out: out std_logic); end component; SIGNAL CNT6 : INTEGER RANGE 0 TO 5; SIGNAL A : INTEGER RANGE 0 TO 5; SIGNAL COUNT : INTEGER RANGE 0 TO 5000 := 0; SIGNAl FLAG : INTEGER RANGE 0 TO 10 := 0; SIGNAl FLAG_A : INTEGER RANGE 0 TO 15; SIGNAL clk_tmp: STD_LOGIC; BEGIN u1:div2k port map(clk_in=>CLK,clk_out=>clk_tmp); -------------3线至6线译码器----A为位码------------- P1:process(CNT6) BEGIN CASE CNT6 IS WHEN 0 => BT <= "000" ; A <= 0 ; WHEN 1 => BT <= "001" ; A <= 1 ; WHEN 2 => BT <= "010" ; A <= 2 ; WHEN 3 => BT <= "011" ; A <= 3 ; WHEN 4 => BT <= "100" ; A <= 4 ; WHEN 5 => BT <= "101" ; A <= 5 ; WHEN OTHERS => NULL ; END CASE ; END PROCESS P1; -------------------------拓展模块------------------------------------- P2:process(clk_tmp) BEGIN IF clk_tmp'EVENT AND clk_tmp = '1' THEN --实现模6计数器 if CNT6 = 5 then CNT6 <= 0; else CNT6 <= CNT6 + 1; end if; IF (FLAG = 11) THEN --设置标志 FLAG <= 0; END IF; IF COUNT = 5000 THEN --另一个时钟 COUNT <= 0; FLAG <= FLAG + 1; --当记满5000时左移动一位 ELSE COUNT <= COUNT + 1; END IF; END IF; END PROCESS P2; P3:process(A) BEGIN FLAG_A <= (A + FLAG) ; --0-F循环显示 CASE FLAG_A IS WHEN 0 => SG <= "1111110"; --0 --共阴abcdefg WHEN 1 => SG <= "0110000"; --1 WHEN 2 => SG <= "1101101"; --2 WHEN 3 => SG <= "1111001"; --3 WHEN 4 => SG <= "0110011"; --4 WHEN 5 => SG <= "1011011"; --5 WHEN 6 => SG <= "1011111"; --6 WHEN 7 => SG <= "1110000"; --7 WHEN 8 => SG <= "1111111"; --8 WHEN 9 => SG <= "1111011"; --9 WHEN 10 => SG <= "1110111"; --A WHEN 11 => SG <= "0011111"; --B WHEN 12 => SG <= "1001110"; --C WHEN 13 => SG <= "0111101"; --D WHEN 14 => SG <= "1001111"; --E WHEN 15 => SG <= "1001111"; --F WHEN OTHERS => NULL ; END CASE ; END PROCESS P3; END arc; 仅供学习与交流,如有侵权请联系网站删除 谢谢11展开阅读全文
咨信网温馨提示:1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前可先查看【教您几个在下载文档中可以更好的避免被坑】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时联系平台进行协调解决,联系【微信客服】、【QQ客服】,若有其他问题请点击或扫码反馈【服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【版权申诉】”,意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:0574-28810668;投诉电话:18658249818。




设计数字显示电路演示教学.doc



实名认证













自信AI助手
















微信客服
客服QQ
发送邮件
意见反馈



链接地址:https://www.zixin.com.cn/doc/3849171.html