欢迎来到三一办公! | 帮助中心 三一办公31ppt.com(应用文档模板下载平台)
三一办公
全部分类
  • 办公文档>
  • PPT模板>
  • 建筑/施工/环境>
  • 毕业设计>
  • 工程图纸>
  • 教育教学>
  • 素材源码>
  • 生活休闲>
  • 临时分类>
  • ImageVerifierCode 换一换
    首页 三一办公 > 资源分类 > DOC文档下载  

    利用拨码开关控制点阵进行十六进制数字显示毕业设计论文.doc

    • 资源ID:4137327       资源大小:6.94MB        全文页数:23页
    • 资源格式: DOC        下载积分:8金币
    快捷下载 游客一键下载
    会员登录下载
    三方登录下载: 微信开放平台登录 QQ登录  
    下载资源需要8金币
    邮箱/手机:
    温馨提示:
    用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP免费专享
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    利用拨码开关控制点阵进行十六进制数字显示毕业设计论文.doc

    中北大学课 程 设 计 说 明 书   学生姓名:学 号:学 院:电子与计算机科学技术学院 专 业:微电子学 题 目:利用拨码开关控制点阵进行十六进制数字显示        目 录1、课程设计目的22、课程设计内容和要求22.1、设计思路22.2、设计要求23、设计方案及实现情况23.1、设计思路23.2、工作原理及框图33.3、各模块功能描述43.4、仿真结果53.5、试验箱验证情况 194、课程设计总结 215、参考文献 23 1、课程设计目的1.学习操作数字电路设计实验开发系统,掌握点阵显示模块的工作原理及应用。2.掌握组合逻辑电路、时序逻辑电路的设计方法。3.学习掌握可编程器件设计的全过程2、课程设计内容和要求2.1、设计内容利用拨码开关控制点阵进行十六进制数字显示,主要包括拨码开关译码电路,行选控制模块和列字符扫描信号。2.2、设计要求1学习掌握拨码开关控制模块、点阵显示模块的工作原理及应用;2. 熟练掌握VHDL编程语言,编写拨码开关控制模块的控制逻辑;3. 仿真所编写的程序,模拟验证所编写的模块功能;4. 下载程序到芯片中,硬件验证所设置的功能,能够实现十六进制数字的显示;5. 整理设计内容,编写设计说明书。 3、设计方案及实现情况3.1、设计思路图1 设计思路根据题目设计要求,将拨码开关的状态通过FPGA的控制在LED点阵上显示出来,系统框图如图1所示。本题目采用自顶向下的设计方法,将系统分为两个模块,先分别用MAX+PLUS II文本设计输入编写列选通模块和列字符扫描模块,然后用图形设计输入将两个模块和相应的输入输出进行总的电路设计,通过编译、仿真、时序分析、器件编程、在线验证等一系列操作,最后完成整个设计过程。3.2、工作原理及框图图2 总体电路原理图LED点阵简介LED点阵式显示器不仅可以显示数字,也可显示所有西文字母和符号,与由单个发光二极管连成的显示器相比,具有焊点少、连线少,所有点在同平面、亮度均匀、外形美观等优点,可以代替数码管、符号管和米字管。如果将多块组合可以构成大屏幕显示屏用于汉字、图形、图表等等的显示,因此被泛用于机场、车站、码头、银行及许多公共场所的指示、说明、广告等场合。内部结构如图3。图3 16×16的LED点阵显示内部电路图共阳极的16 × 16的LED点阵显示器的典型连接方式是: 每一行的16个阳极连在一起,由行扫描码锁存器和驱动器的一位控制,总共16行阳极连线由16位分别控制;每一列的16个阴极连在一起,由列扫描码锁存器和驱动器的一位控制,总共16列阴极连线由16位分别控制。 点阵式LED显示器采用逐行扫描式工作。要使点阵显示出一个字符的编程方法是:首先选通第一行;接着,向行码锁存器写入该行的字型码。然后,按相同的方式选通第二行,写第二行的字型码由此类推,直到写完所有行的字型码,完成一个字符的显示。3.3、各模块简介功能描述:(1)列选控制模块在实验仪器中,16×16点阵显示的驱动电路已经做好,并且其列选通信号为一4-16译码器的输出,所以我们在设计点阵控制接口时,其列选通信号输出必须经4-16编码。 通过循环进行4位二进制数计数,从而给点阵提供列选通信号,列选通引脚功能如图4:图4 列选通引脚功能图(2)列字符扫描模块由点阵的显示原理及编程方法知:根据要显示的数字写出相应的字型码,然后根据逐行扫描的原理,首先选通第一行,接着,向行码锁存器写入该行的字型码。然后,按相同的方式选通第二行,写第二行的字型码由此类推,直到写完所有行的字型码,列字符扫描引脚功能如图5:图5 列字符扫描模块引脚功能图说明:当列选通接口SEL0-SEL3为“0000”时,选中第16列,为“0001”时,选中15列,以此类推。列选通按照00000001001011101111依次循环,在选中某列时,对列进行扫描,当某点列和行都为“1”时,该点被点亮。硬件连接:将列选通模块的四位输出接到FPGA试验箱上点阵显示器的SEL0-SEL3四个列选信号输入引脚,将列字符扫描模块的十六位输出接到FPGA试验箱上点阵显示器的q0-q15共十六个列扫描信号输入引脚,根据对FPGA进行的管脚分布连接十六个拨码开关和时钟信号(给一个频率为HZ的时钟信号),完成硬件连线,下载程序到FPGA,观察结果。 补充:以上程序是使用4个拨码开关对LED点阵进行控制,若要用十六个拨码开关,则只需加一个拨码开关译码电路,其功能引脚如图6:图6 拨码开关译码模块引脚功能图3.4、仿真结果1、VHDL语言源程序-列字符扫描信号产生源程序library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity cora isport(ch:in std_logic_vector(3 downto 0); sel: in std_logic_vector(3 downto 0); q: out std_logic_vector(15 downto 0);end cora;architecture corn_arc of cora isbeginprocess(ch,sel)begin case ch is when "0000"=> case sel is when "0000"=>q<="0000000000000000" when "0001"=>q<="0000000000000000" when "0010"=>q<="0000000000000000" when "0011"=>q<="0000000000000000" when "0100"=>q<="0011111111111100" when "0101"=>q<="0011111111111100" when "0110"=>q<="0011000000001100" when "0111"=>q<="0011000000001100" when "1000"=>q<="0011000000001100" when "1001"=>q<="0011000000001100" when "1010"=>q<="0011111111111100" when "1011"=>q<="0011111111111100" when "1100"=>q<="0000000000000000" when "1101"=>q<="0000000000000000" when "1110"=>q<="0000000000000000" when "1111"=>q<="0000000000000000" when others=>null; -显示0 end case; when "0001"=> case sel is when "0000"=>q<="0000000000000000" when "0001"=>q<="0000000000000000" when "0010"=>q<="0000000000000000" when "0011"=>q<="0000000000000000" when "0100"=>q<="0000000000000000" when "0101"=>q<="0000000000000000" when "0110"=>q<="0000000000000000" when "0111"=>q<="0011111111111100" when "1000"=>q<="0011111111111100" when "1001"=>q<="0000000000000000" when "1010"=>q<="0000000000000000" when "1011"=>q<="0000000000000000" when "1100"=>q<="0000000000000000" when "1101"=>q<="0000000000000000" when "1110"=>q<="0000000000000000" when "1111"=>q<="0000000000000000" when others=>null; -显示1 end case;when "0010"=> case sel is when "0000"=>q<="0000000000000000" when "0001"=>q<="0000000000000000" when "0010"=>q<="0000000000000000" when "0011"=>q<="0000000000000000" when "0100"=>q<="0000000000000000" when "0101"=>q<="0011000111111100" when "0110"=>q<="0011000111111100" when "0111"=>q<="0011000110001100" when "1000"=>q<="0011000110001100" when "1001"=>q<="0011111110001100" when "1010"=>q<="0011111110001100" when "1011"=>q<="0000000000000000" when "1100"=>q<="0000000000000000" when "1101"=>q<="0000000000000000" when "1110"=>q<="0000000000000000" when "1111"=>q<="0000000000000000" when others=>null; -显示2 end case;when "0011"=> case sel is when "0000"=>q<="0000000000000000" when "0001"=>q<="0000000000000000" when "0010"=>q<="0000000000000000" when "0011"=>q<="0000000000000000" when "0100"=>q<="0011111111111100" when "0101"=>q<="0011111111111100" when "0110"=>q<="0011000110001100" when "0111"=>q<="0011000110001100" when "1000"=>q<="0011000110001100" when "1001"=>q<="0011000110001100" when "1010"=>q<="0011000110001100" when "1011"=>q<="0000000000000000" when "1100"=>q<="0000000000000000" when "1101"=>q<="0000000000000000" when "1110"=>q<="0000000000000000" when "1111"=>q<="0000000000000000" when others=>null; -显示3 end case;when "0100"=> case sel is when "0000"=>q<="0000000000000000" when "0001"=>q<="0000000000000000" when "0010"=>q<="0000000000000000" when "0011"=>q<="0000000000000000" when "0100"=>q<="0111111111111110" when "0101"=>q<="0111111111111110" when "0110"=>q<="0000000110000000" when "0111"=>q<="0000000110000000" when "1000"=>q<="0000000110000000" when "1001"=>q<="0000000110000000" when "1010"=>q<="0000000111111110" when "1011"=>q<="0000000111111110" when "1100"=>q<="0000000000000000" when "1101"=>q<="0000000000000000" when "1110"=>q<="0000000000000000" when "1111"=>q<="0000000000000000" when others=>null; -显示4 end case;when "0101"=> case sel is when "0000"=>q<="0000000000000000" when "0001"=>q<="0000000000000000" when "0010"=>q<="0000000000000000" when "0011"=>q<="0000000000000000" when "0100"=>q<="0000000000000000" when "0101"=>q<="0011111110001100" when "0110"=>q<="0011111110001100" when "0111"=>q<="0011000110001100" when "1000"=>q<="0011000110001100" when "1001"=>q<="0011000111111100" when "1010"=>q<="0011000111111100" when "1011"=>q<="0000000000000000" when "1100"=>q<="0000000000000000" when "1101"=>q<="0000000000000000" when "1110"=>q<="0000000000000000" when "1111"=>q<="0000000000000000" when others=>null; -显示5 end case;when "0110"=> case sel is when "0000"=>q<="0000000000000000" when "0001"=>q<="0000000000000000" when "0010"=>q<="0000000000000000" when "0011"=>q<="0000000000000000" when "0100"=>q<="0000000000000000" when "0101"=>q<="0011111110001100" when "0110"=>q<="0011111110001100" when "0111"=>q<="0011000110001100" when "1000"=>q<="0011000110001100" when "1001"=>q<="0011000110001100" when "1010"=>q<="0011111111111100" when "1011"=>q<="0011111111111100" when "1100"=>q<="0000000000000000" when "1101"=>q<="0000000000000000" when "1110"=>q<="0000000000000000" when "1111"=>q<="0000000000000000" when others=>null; -显示6 end case;when "0111"=> case sel is when "0000"=>q<="0000000000000000" when "0001"=>q<="0000000000000000" when "0010"=>q<="0000000000000000" when "0011"=>q<="0000000000000000" when "0100"=>q<="0000000000000000" when "0101"=>q<="0011111111111100" when "0110"=>q<="0011111111111100" when "0111"=>q<="0000000000001100" when "1000"=>q<="0000000000001100" when "1001"=>q<="0000000000001100" when "1010"=>q<="0000000000001100" when "1011"=>q<="0000000000000000" when "1100"=>q<="0000000000000000" when "1101"=>q<="0000000000000000" when "1110"=>q<="0000000000000000" when "1111"=>q<="0000000000000000" when others=>null; -显示7 end case;when "1000"=> case sel is when "0000"=>q<="0000000000000000" when "0001"=>q<="0000000000000000" when "0010"=>q<="0000000000000000" when "0011"=>q<="0000000000000000" when "0100"=>q<="0011111111111100" when "0101"=>q<="0011111111111100" when "0110"=>q<="0011000110001100" when "0111"=>q<="0011000110001100" when "1000"=>q<="0011000110001100" when "1001"=>q<="0011000110001100" when "1010"=>q<="0011111111111100" when "1011"=>q<="0011111111111100" when "1100"=>q<="0000000000000000" when "1101"=>q<="0000000000000000" when "1110"=>q<="0000000000000000" when "1111"=>q<="0000000000000000" when others=>null; -显示8 end case;when "1001"=> case sel is when "0000"=>q<="0000000000000000" when "0001"=>q<="0000000000000000" when "0010"=>q<="0000000000000000" when "0011"=>q<="0000000000000000" when "0100"=>q<="0011111111111100" when "0101"=>q<="0011111111111100" when "0110"=>q<="0011000110001100" when "0111"=>q<="0011000110001100" when "1000"=>q<="0011000110001100" when "1001"=>q<="0011000110001100" when "1010"=>q<="0011000111111100" when "1011"=>q<="0011000111111100" when "1100"=>q<="0000000000000000" when "1101"=>q<="0000000000000000" when "1110"=>q<="0000000000000000" when "1111"=>q<="0000000000000000" when others=>null; -显示9 end case;when "1010"=> case sel is when "0000"=>q<="0000000000000000" when "0001"=>q<="0000000000000000" when "0010"=>q<="0011000000000000" when "0011"=>q<="0001110000000000" when "0100"=>q<="0000011100000000" when "0101"=>q<="0000011111000000" when "0110"=>q<="0000011001110000" when "0111"=>q<="0000011000011100"when "1000"=>q<="0000011001110000" when "1001"=>q<="0000011111000000" when "1010"=>q<="0000011100000000" when "1011"=>q<="0001110000000000" when "1100"=>q<="0011000000000000" when "1101"=>q<="0000000000000000" when "1110"=>q<="0000000000000000" when "1111"=>q<="0000000000000000" when others=>null; -显示A end case;when "1011"=> case sel is when "0000"=>q<="0000000000000000" when "0001"=>q<="0000000000000000" when "0010"=>q<="0000111001110000" when "0011"=>q<="0001111111111000" when "0100"=>q<="0011000110001100" when "0101"=>q<="0011000110001100" when "0110"=>q<="0011000110001100" when "0111"=>q<="0011000110001100" when "1000"=>q<="0011000110001100" when "1001"=>q<="0011000110001100" when "1010"=>q<="0011000110001100" when "1011"=>q<="0011000110001100" when "1100"=>q<="0011111111111100" when "1101"=>q<="0011111111111100" when "1110"=>q<="0000000000000000" when "1111"=>q<="0000000000000000" when others=>null; -显示B end case;when "1100"=> case sel is when "0000"=>q<="0000000000000000" when "0001"=>q<="0000000000000000" when "0010"=>q<="0000000000000000" when "0011"=>q<="0000100000100000" when "0100"=>q<="0001100000011000" when "0101"=>q<="0011000000001100" when "0110"=>q<="0011000000001100" when "0111"=>q<="0011000000001100" when "1000"=>q<="0011000000001100" when "1001"=>q<="0011000000001100" when "1010"=>q<="0011000000001100" when "1011"=>q<="0001100000011000" when "1100"=>q<="0000111111110000" when "1101"=>q<="0000011111100000" when "1110"=>q<="0000000000000000" when "1111"=>q<="0000000000000000" when others=>null;

    注意事项

    本文(利用拨码开关控制点阵进行十六进制数字显示毕业设计论文.doc)为本站会员(仙人指路1688)主动上传,三一办公仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知三一办公(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    备案号:宁ICP备20000045号-2

    经营许可证:宁B2-20210002

    宁公网安备 64010402000987号

    三一办公
    收起
    展开