设计报告课程名称电子技术基础I任课教师设计题目8位十进制数动态扫描显示控制电路班级8位十进制数数码动态扫描电路设计简介:所谓动态扫描显示,就是让各位LED按照一定的顺序轮流地发光显示。只要每秒扫描次数大于24次以上,就观察不到闪烁现象,人眼看起来很稳定。静态扫描显示与动态显示相比,有显著降低LED功耗,大大减少LED的外部引线等优点。目前动态扫描显示技术已经被广泛应用于新型数字仪表、智能仪器和智能显示屏中。本次课程实践中运用QuartusII软件,采用VHDL文本设计和原理图相结合的层次化方式实现数码8位动态扫描显示电路设计。首先,分别用VHDL语言编写8位数码扫描显示电路程序和分频器程序,作为底层文件;顶层文件用原理图的设计方法,调用底层文件生成的符号,从而实现动态扫描显示。用VHDL设计一个8位数码扫描显示电路,利用QuartusII9.0进行编辑输入、编译及时序仿真。其中,由于分频器的分频系数过大时,在仿真波形上很难看出波形的变化,如本设计是从100MHz分频到1KHz,分频系数为一万,所以可以通过改变减小分频系数,如改为10分频,就得到变化的波形,来验证数码动态扫描显示电路设计的正误。一、工作原理1、8位动态扫描显示的工作原理:输入信号:时钟信号CLK。输出控制信号:段控制信号SG[6..0];位控制控制信号BT[7..0]。8位数码管,其中每个数码管的8个段h、g、f、e、d、c、b、a(h是小数点)都分别连接在一起,8个数码管分别由8个选通信号k1~k8来选择。被选通的数码管显示数据,其余关闭。如在某一时刻,k3为高电平,其余选通信号为低电平,这时仅为k3对应的数码管显示来自段信号端的数据,而其他7个数码管呈现关闭状态。根据这种电路状况,如果希望在8个数码管显示希望的数据,就必须使得8个选通信号k1~k8分别被选通,与此同时,在段信号输入口加上希望在该对应数码管上显示的数据,于是随着选通信号的扫变,就能实现扫描显示的目的。扫描显示程序中CLK是扫描时钟;SG为7段控制信号,由高到低为分别接g、f、e、d、c、b、a7个段;BT是位选控制信号,接下图(1)中的8个位选通信号:k1、k2…k8。程序中CNT8是一个3位计数器,作扫描计数信号,有进程P2生成;进程P3是7断译码查表输出程序,进程P1是对8个数码管选通的扫描程序,例如当CNT8等于“010”时,K3对应的数码管被选通,同时,H被赋值3,再有进程P3译码输出“1001111”,显示在数码管上即为“3”;当CNT8扫变时将能在8个数码管上显示数据:12345678。图(1)8位数码电路2、七段数码显示译码器的原理:7段数码是纯组合电路。通常的小规模专用IC,如74或4000系列的器件只能作十进制BCD码译码,然而数字系统中的数据处理和运算都是二进制的,所以输出表达都是十六进制的。为了满足十六进制数的译码显示,最方便的方法就是利用VHDL译码程序在FPGA/CPLD中来实现。注意,这里没有考虑表示小数点的发光管,如果要考虑需要增加h段,并且段输出SG[6..0]改为SG[7..0]。本实验采用共阳数码管,其电路图见下图(2)图(2)共阴和共阳数码管及其电路代表数据输入码输入码g~a代表数据输入码输入码g~a000001000000810000000000100011111001910010010000200100100100A10100001000300110011000B10110000011401000011001C11001000110501010010010D11010000110601100000010E11100000110701111111000F11110001110图(3)译码器真值表3、分频器的工作原理:分频器的原理也就是计数器,对时钟进行偶数分频,使占空比为50%。只要使用一个计数器,在计数器的前一半时间使输出为高电平,在计数器的后一半时间使输出为低电平,即可得到偶分频时钟。二、功能模块1.8位数码扫描电路模块:CLK为时钟信号,SG为段控制信号,BT为位控制信号。功能是进行8位数码管的控制和7段数码显示的控制。CLKSG[6..0]BT[7..0]smdlinst22.分频器模块:CLKIN时钟信号输入,CLKOUT时钟信号输出。功能是对时钟信号进行分频。CLKINCLKOUTfenpinginst23.LED显示模块原理:LED有段码和位码之分,所谓段码就是让LED显示“8.”的八位数据,一般情况下要通过一个译码电路,将输入的4位2进制数转换为与LED显示对应的8位段码。位码也就是LED的显示使能端,对于共阳极的LED而言,高电平使能。要让8个LED同时工作,显示数据,就是要不停的循环扫描每一个LED,并在使能每一个LED的同时,输入所需显示的数据对应8位段码。虽然8个LED是依次显示,但是受视觉分辨率的影响,看到的现象是8个LED同时工作。多个数码管动态扫描显示,是将所有数码管的相同段并联在一起,通过选通信号分时控制各个数码管的公共端,循环点亮多个数码管,并利用人眼的视觉暂留现象,只要扫描的频率大于50HZ,将看不到闪烁现象。本次试验不显示小数点,可把SG段控制信号向量变为8位(最高位代表小数点),并在最高位设置成恒0低电平。三、总体设计用VHDL语言编写8位数码扫描显示电路程序和分频器程序,作为底层文件;顶层文件用原理图的设计方法,调用底层文件生成的符号,从而实现动态扫描显示。模块设计图:四、模块仿真1.8位数码扫描电路模块仿真图2.分频器仿真图五、总体仿真六、硬件实现1.引脚锁定将设计编程下载进选定的目标器件中,如EP1C6,作进一步的硬件测试,查询实验指导书可得8位十进制数数码动态扫描电路各引脚与目标器件中所对应的引脚:将CLK与目标器件EP1C6的第28脚相接,将m[6..0]的m[0]~m[5]按顺序与目标器件EP1C6的第164~169脚相接,m[6]接引脚号第173。n[7..0]按顺序与目标器件EP1C6的第162,161,160,159,158,141,140,139相接。2.锁定好引脚后下载到实验箱并进行测试。七、结论采用扫描方式实现LED数码管的动态显示是,控制好数码管之间的时间延时是很重要的,根据人眼视觉暂留原理,LED数码管每秒导通24次以上,人眼就无法分辨LED数码管短暂的不亮,认为一直点亮的。动态扫描显示方式是利用人眼的视觉暂留效应,把8个数码管按一定顺序(从左至右或者从右至左)进行点亮。然而,当点亮频率足够大时,我们看到的不再是一个一个的点亮,而是全部同时显示(点亮),与传统方式得到的视觉效果完全一样。因此我们只要给数码管这样一个扫描频率,就可以实现两个以上的数码管同时点亮。而这个频率我们可以通过一个计数器来产生,只要计数频率足够大,就可以实现我们的要求。事实上,因为数码管点亮不是瞬间就可以的,它也需要一定的时间,该时间与数码管的选择有关系。八、心得体会:通过此次动态扫描电路的设计,我们进一步学习了VHDL基本逻辑电路的综合设计应用,掌握VHDL语言的语法规范,掌握时序电路描述方法,掌握多个数码管动态扫描显示的原理及设计方法。同时也熟悉掌握了QuartusII的使用方法以及使用的各种流程。明白了多个数码管动态扫描显示,是讲所有的数码管并联在一起,通过选通信号分时控制各个数码管的公共端,循环点亮多个数码管,并利用人眼的视觉暂留现象,只要扫描频率大于50Hz,将看不到闪烁现象。课程设计是培养学生综合能力,运用所学知识、发现、提出、分析和解决问题,锻炼实践能力的重要环节,是对学生实际工作能力的具体实训和考查过程。回顾这次课程设计,我们小组成员感慨万千,的确,从选题到定稿,从理论到实践,在这些日子里,我学到了很多东西,不仅可以复习以前学的知识,而且学到了很多书本上学不到的知识。通过这次课程设计是我懂得如何把理论和实际相结合起来,从理论中的结论,把理论应用到实践中,才能真正的为社会服务,从而提高自己的实际动手能力和思考能力。这次课程设计是对这学期学过的数字电子技术基本知识的应用,本来对数字电子技术中的有些东西就不太熟悉,但是通过这次实验报告,更深刻的了解了各种芯片的引脚、时序图、逻辑图以及功能表,能够用各种芯片以及触发器等组建逻辑电路。这次的设计虽然短暂,但却是我们第一次自己动手设计的电路。在设计过程中,也遇到了书本中不曾学到的情况。这次的设计虽然短暂,但却是我们第一次自己动手设计的电路。在设计过程中,也遇到了书本中不曾学到的情况。在这次实验中遇到的问题总结和吸取的经验如下:1.在文件名必须与VHDL文件中的设计实体名保持一致。2.掌握好电路原理图的例化及调出方式。3.引脚锁定时,注意各个引脚是否连接正确及接触是否良好。这次我们所做的实验是8位十进制数动态扫描显示控制电路,那何为扫描显示呢?扫描显示是通过把画面划分成很多很多帧来实现的。每一帧都是静止的图象,快速连续地显示帧便形成了运动的假象。刷新频率越快,由于人眼的视觉停留,就会得到想要的结果。这就像是拍摄电影一样,在拍摄武打动作时,实际中两人的动作是很慢的,但播放时,人为的把速度放快,才得到了我们日常生活中喜欢的那种快动作效果。通过此次实验报告我们小组也体会到数字电子技术对当代社会发展的重要性。这次实验也教会了我们许多:1.学会小组之间的分工与合作。小组之间分工要明确,这是实验成功的保障、2.遇事多动脑,并且注意学习其他人的长处,吸收老师和教导者的经验。3.提高了动手能力。这次实验报告,使我们动手能力得到很大的提高。在生活中遇到一些小事情时自己动手解决,这样可以增强我们的自信心,对我们将来去适应陌生事物是有很大帮助的。这次实验报告是短暂的,但留给我们的感受是深刻的。我们没必要在怜惜什么,以为我已得到很多了。自己现在该做的,就是当认识到自己的不足时,那就该如何去改造自己,如何完善自己。大学的生活是丰富多彩的,大学中每个人要完成的事情是很多的,但那需要每个人的认真投入。每个人不必再感叹世事的沧桑,不必遗憾岁月的来去匆匆,我们要做的那就是在这有限的时间内,完成自己应该完成的事,经历自己应该经历的事情。九、附录代码:1.8位数码扫描电路模块VHDL语言LIBRARYIEEE;——库函数USEIEEE.STD_LOGIC_1164.ALL;——定义STD_LOGIC数据类型及相应运算USEIEEE.STD_LOGIC_UNSIGNED.ALL;ENTITYsmdlIS——smml为实体名PORT(CLK:INSTD_LOGIC;——时钟SG:OUTSTD_LOGIC_VECTOR(6DOWNTO0);——段显示控制(gfedcba)BT:OUTSTD_LOGIC_VECTOR(7DOWNTO0));——数码管地址选择控制END;ARCHITECTUREoneOFsmdlISSIGNALCN:STD_LOGIC_VECTOR(2DOWNTO0);——变量,计数SIGNALH:INTEGERRANGE0TO9;BEGINP1:PROCESS(CN)——进程,CN变化时启动进程BEGINCASECNISWHEN000=BT=00000001;H=1;——控制第一位数码管,并置数1WHEN001=BT=00000010;H=2;WHEN010=BT=00000100;H=3;WHEN011=BT=00001000;H=4;WHEN100=BT=00010000;H=5;WHEN101=BT=00100000;H=6;WHEN110=BT=01000000;H=7;WHEN111=BT=10000000;H=8;WHENOTHERS=NULL;ENDCASE;ENDPROCESSP1;——结束进程P1P2:PROCESS(CLK)——进程,CLK变化时启动进程BEGINIFCLK'EVENTANDCLK='1'THENCN=CN+1;——当上升沿时,进行计数ENDIF;ENDPROCESSP2;——结束进程P2