八位数码管扫描显示电路的设计.docx
- 文档编号:14902002
- 上传时间:2023-06-28
- 格式:DOCX
- 页数:26
- 大小:580.54KB
八位数码管扫描显示电路的设计.docx
《八位数码管扫描显示电路的设计.docx》由会员分享,可在线阅读,更多相关《八位数码管扫描显示电路的设计.docx(26页珍藏版)》请在冰点文库上搜索。
八位数码管扫描显示电路的设计
《EDA技术及应用》
课程设计报告
题目:
八位数码管扫描显示电路的设计
院(系):
机电与自动化学院
专业班级:
电气自动化技术
学生姓名:
学号:
指导教师:
20年6月10日至20年6月23日
华中科技大学武昌分校
《EDA技术及应用》课程设计任务书
一、设计题目
八位数码管扫描显示电路的设计
二、设计主要内容
本课题要求掌握使用QuartusII设计数字系统的设计思路和设计方法。
学习VHDL基本逻辑电路的综合设计应用。
掌握VHDL语言的语法规范,掌握时序电路描述方法。
掌握多个数码管动态扫描显示的原理及设计方法。
设计一个八位数码管共阳极动态扫描显示控制电路,要求显示学生自己的学号。
利用实验室设备完成系统设计并进行运行调试。
1、具体设计内容如下:
(1)静止显示学号;
(2)动态循环显示学号。
2、提供设计报告,报告要求包括以下内容:
设计思路、设计输入文件、设计与调试过程、模拟仿真结果和设计结论。
三、原始资料
1、LED显示模块原理
LED有段码和位码之分,所谓段码就是让LED显示出“8.”的八位数据,一般情况下要通过一个译码电路,将输入的4位2进制数转换为与LED显示对应的8位段码。
位码也就是LED的显示使能端,对于共阳级的LED而言,高电平使能。
要让8个LED同时工作,显示数据,就是要不停的循环扫描每一个LED,并在使能每一个LED的同时,输入所需显示的数据对应的8位段码。
虽然8个LED是依次显示,但是受视觉分辨率的影响,看到的现象是8个LED同时工作。
多个数码管动态扫描显示,是将所有数码管的相同段并联在一起,通过选通信号分时控制各个数码管的公共端,循环点亮多个数码管,并利用人眼的视觉暂留现象,只要扫描的频率大于50Hz,将看不到闪烁现象。
2、系统结构图信号名与芯片引脚对照表
硬件资源
元件引脚
EP3C引脚序号
电路使用说明
LED
数码显示
A
133
该部分电路为固定电路。
使用LED数码显示时请按照器件引脚分配表进行引脚分配后再下载到芯片中。
B
135
C
136
D
137
E
138
F
141
G
142
Dp
128
74LS138
S1
125
S2
126
S3
127
3、LED连接图
4、课程设计使用设备
(1)EDA及SOPC综合实验平台;
(2)导线若干;
(3)PC机;
(4)QuartusII开发工具软件。
四、要求的设计成果
(1)根据控制要求设计硬件电路原理图。
(2)编写用于系统仿真的VHDL源程序。
(3)系统仿真及验证结果。
(4)编写《EDA技术及应用课程设计》报告,课程设计报告内容包括:
①设计方案、课程设计过程和设计思想、方法、原理。
②画出系统的原理图。
③VHDL语言程序及仿真波形。
④参考资料、参考书及参考手册。
⑤其他需要说明的问题,例如操作说明、程序的调试过程、遇到的问题及解决方法、对课程设计的认识和建议等。
⑥《可编程控制器技术课程设计》报告可以手写,也可以用电脑编排打印,报告格式按照《华中科技大学武昌分校课程设计管理办法》执行。
课程设计报告要求内容正确完整,图表清晰,叙述简明,语句通顺,字数不得少于2000汉字。
⑦课程设计报告按封面、任务书、设计说明书、图纸、实物照片贴页(实物照片贴在A4复印纸上)、成绩评定表的顺序装订。
摘要................................................................
1.课程设计题目及要求..............................................1
1.1设计题目.......................................................1
1.2LED显示器的动态扫描驱动电路..................................1
1.3设计方案论证...................................................1
2.LED显示器动态扫描驱动电路各单元电路设计........................3
2.1计数器与译码器的设计...........................................3
2.2一位共阳极LED动态驱动电路设计.................................4
2.3七段数码管的设计...............................................5
3.LED显示器动态扫描系统设计......................................7
3.1整体电路图及工作原理...........................................7
3.2VHDL程序设计..................................................7
3.3电路参数计算...................................................10
4.Quartus运行调试................................................12
4.1时序仿真.........................................12
4.2硬件逻辑验证..................................13
4.3调试结果分析..................................................13
4.4调试中出现的问题及解决方法.....................................14
5.设计总结......................................................15
6.参考文献......................................................16
摘要
本文通过一个3-8译码器电路,将输入的4位2进制数转换为与LED显示对应的8位段码,位码就是LED的显示使能端,对于共阳级的LED而言,高电平使能。
要使8个数码管动态扫描显示,就是把所有数码管的相同段并联在一起,通过选通信号分时控制各个数码管的公共端,循环点亮多个数码管,并利用人眼的视觉暂留现象,只要扫描的频率大于50Hz,将看不到闪烁现象。
使用QuartusII6.0软件设计一个VHDL程序并对设计方案进行仿真,再硬件调试经检测输出正确的设计要求结果。
关键词:
动态扫描QuartusII6.0VHDL
Abstract
Inthispaper,througha3-8decodercircuit,theinputoffourhexadecimalnumberinto2andeightLEDdisplaythecorrespondingsectionofcode,acodeistheLEDdisplaycanmakeside,fortheLEDwithYanglevel,highlevelcanmake.Tomakeeightdigitaltubedynamicscansshowedthatisallthesamesegmentdigitaltubeconnectedinparallel,throughthegatingsignaltime-sharingcontrolpublicside,thedigitaltubelooplightmultipledigitaltube,andusetheeyeofthephenomenonofpersistenceofvision,aslongasthescanningfrequencyismorethan50hz,willseetheflickerphenomenon.UsingQuartusII6.0aVHDLprogramdesignandthesoftwaredesignsimulation,andhardwaredebuggingthroughtestingoutputcorrectdesignrequirements
Keywords:
dynamicscanningQuartusII6.0VHDL
1.课程设计题目及要求
1.1设计题目
八位数码管扫描显示电路的设计
设计主要内容:
本课题要求掌握使用QuartusII设计数字系统的设计思路和设计方法。
学习VHDL基本逻辑电路的综合设计应用。
掌握VHDL语言的语法规范,掌握时序电路描述方法。
掌握多个数码管动态扫描显示的原理及设计方法。
设计一个八位数码管共阳极动态扫描显示控制电路,要求8位数码管同时显示电路显示8个16进制数,用动态扫描方式实现。
利用实验室设备完成系统设计并进行运行调试。
1.2LED显示器动态扫描驱动电路的要求
设计要求:
(1)分析设计要求,明确性能指标。
必须仔细分析课题要求,性能,指标及应用环境等,广开思路,构思出各种总体方案,绘制结构框图。
(2)确定合理的总体方案,对各种方案进行比较,以电路的先进性,结构的繁简,成本的高低及制作的难易等方面作综合比较,并考虑器件的来源,敲定可行方案。
(3)设计各单元电路。
总体方案化整为零,分解成若干自行同或单元电路,逐个设计。
(4)组成系统。
在一定幅面的图纸上合理布局,通常是按照信号的流向,采用左进右出的规律摆放各电路,并标出表的说明。
技术指标:
(1)发光强度比
由于数码管各段在同样的驱动电压时,各段正向电流不相同,所以各段发光强度不同,所有段的发光强度值中最大值与最小值之比为发光强度比。
比值可以再1.5-2.3间,最大不能超过2.5.
(2)脉冲正向电流
若笔画显示器每段典型正向直流工作电流为A,则在脉冲下,正向电流可以远大于A。
脉冲占空比越小,脉冲正向电流可以越大。
1.3设计方案论证
通过计数器与译码器控制三态门,在通过三态门控制输出中间级使其数据传送到LED七段数码显示器。
这里计数器采用555定时计数器,译码器采用138译码器,按要求采用4位分立元件,如下图:
通常的4位LED显示器如图所示,其内部由多只二极管构成,按连接方式不同可分为共阳极LED和共阴极LED。
器电路特性基本一致:
发光二级管导通压降为1.2-1.8v,正向工作电流为2mA-15mA。
在显示驱动方式中,采用动态扫描,当扫描公共端时,LED驱动器分别对应a-g的显示段,LED就能正常显示。
LED显示器结构
基本的半导体数码管是由七个条状放光二极管芯片排列而成的。
可实现0-F的显示。
其具体结构有放射罩式,条形七段式及单片集成式多位数字式等。
2.LED显示器动态扫描驱动电路各单元电路设计
2.1计数器与译码器的设计
计数器的设计:
计数器选用集成电路74ls190进行设计比较方便。
74ls190时同步四位十进制加减计数器,它具有同步清零,同步计数的功能。
74ls190的引脚图如下图所示:
图2-1-1
译码及显示电路的设计
为了能以十六进制数码直观地显示数字系统的运行数据,目前广泛使用了七字符显示器,或称七段数码管。
这种字符显示器由七段可发光的线段拼接而成。
常见的七段字符显示器有半导体数码管和液晶显示器两种。
半导体数码管的每个线段都是一个发光二极管。
因此,也把它叫做LED数码管。
发光二级管使用的材料与普通的硅二极管不同,半导体中的杂质浓度很高。
当外加正电压的时候,大量的电子和空穴在扩散的过程中复合,其中一部分电子从导带跃进到价带,把多余的能量以光的形式释放出来,便发出一定可见光
半导体数码管和液晶显示器都可以用ttl或cmos集成电路直接驱动。
为此,就需要使用显示译码器将bcd代码译成数码管所需要的驱动信号,以便使数码管用十进制数字显示出bcd代码所表示的数值。
图2-1-2
2.2一位共阳极LED动态驱动电路设计
动态驱动是将所有数码管使用一个专门的译码驱动器,使各位数码管逐个轮流受控显示,这就是动态驱动。
由于扫描速度极快。
显示效果与静态
图2-2
2.3七段数码管的设计
七段数码管在工业控制中有着很广泛的应用,列如用来显示温度,数量,重量,日期,时间,还可以用来显示比赛的比分等,具有显示醒目,直观的优点。
七段数码管的具体工作原理可叙述如下:
首先将数码管要显示的8分为七段如图:
图2-3
这七段分别由七个发光二级管构成,根据数码来决定七段中的中的某一段或几段进行显示,例如如果数码为0,则显示0.1.2.3.4.5段,即点亮1.2.3.4.5段。
对于其他的数字我们以此类推。
七段数码管可分为共阴极和共阳极的数码管,对于共阴极的数码管只有当其输入端输入高电平时二极管才会发光;而共阳极的数码管只有当输入端输入低电平时二极管才会发光。
共阴极内部每个发光二极管的阴极被接在一起,成为该段的公共选通线;发光二极管的样机则成为段选线。
如果要显示某个数字只需相应选中对应的段选线。
对于共阳极数码管,则正好相反,内部发光二极管的阳极接在一起,阴极成为段选线。
这两种数码管的驱动方式是不同的。
当需要点亮共阳极的数码管的一段时,公共端需接高电平,该段的段选线接低电平。
从而该段被点亮,当需要点亮共阳极数码管的一段时,公共段需接低电平,该段的选短线接高电平,该段被点亮。
3.LED显示器动态扫描驱动电路系统设计
3.1整体电路图及工作原理
图3-1
LED显示模块原理:
LED有段码和位码之分,所谓段码就是让LED显示出“8.”的八位数据,一般情况下要通过一个译码电路,将输入的4位2进制数转换为与LED显示对应的8位段码。
位码也就是LED的显示使能端,对于共阳级的LED而言,高电平使能。
要让8个LED同时工作,显示数据,就是要不停的循环扫描每一个LED,并在使能每一个LED的同时,输入所需显示的数据对应的8位段码。
虽然8个LED是依次显示,但是受视觉分辨率的影响,看到的现象是8个LED同时工作。
多个数码管动态扫描显示,是将所有数码管的相同段并联在一起,通过选通信号分时控制各个数码管的公共端,循环点亮多个数码管,并利用人眼的视觉暂留现象,只要扫描的频率大于50Hz,将看不到闪烁现象。
3.2VHDL程序设计
libraryieee;
useieee.std_logic_1164.all;
useieee.std_logic_arith.all;
useieee.std_logic_unsigned.all;
useieee.std_logic_signed.all;
entityscan_segis
port(clk3,clk5:
instd_logic;
rst:
instd_logic;
seg_da:
outstd_logic_vector(7downto0);
seg_sel:
outstd_logic_vector(2downto0)
);
endscan_seg;
architectureadoofscan_segis
signalseg_buf1,seg_buf2,seg_buf3,seg_buf4,seg_buf0:
std_logic_vector(3downto0);
signalseg_buf9,seg_buf10,seg_buf11:
std_logic_vector(3downto0);
signalseg_buf5,seg_buf6,seg_buf7,seg_buf8:
std_logic_vector(3downto0);
signalseg_cnt:
std_logic_vector(2downto0);
signalseg_temp:
std_logic_vector(3downto0);
signalclk:
std_logic;
begin
process(clk5)
begin
ifclk5'eventandclk5='1'then
clk<=notclk;
endif;
endprocess;
process(clk5,rst)
begin
ifclk5'eventandclk5='1'then
ifrst='1'then
seg_buf1<="0100";
seg_buf2<="0101";
seg_buf3<="0000";
seg_buf4<="0010";
seg_buf5<="0010";
seg_buf6<="1000";
seg_buf7<="0010";
seg_buf8<="0000";
seg_buf9<="0001";
seg_buf10<="0000";
seg_buf11<="0010";
else
seg_buf1<=seg_buf11;seg_buf11<=seg_buf10;seg_buf10<=seg_buf9;seg_buf9<=seg_buf8;seg_buf8<=seg_buf7;seg_buf7<=seg_buf6;seg_buf6<=seg_buf5;seg_buf5<=seg_buf4;seg_buf4<=seg_buf3;seg_buf3<=seg_buf2;seg_buf2<=seg_buf1;
endif;
endif;
endprocess;
process(clk3,rst)
begin
ifclk3'eventandclk3='1'then
ifrst='1'then
seg_cnt<="000";
else
seg_cnt<=seg_cnt+1;
endif;
endif;
endprocess;
seg_sel<=seg_cnt;
process(seg_cnt,seg_buf4,seg_buf5,seg_buf6,seg_buf7,seg_buf8,seg_buf9,seg_buf10,seg_buf11)
begin
caseseg_cntis
wheno"0"=>seg_temp<=seg_buf1;
wheno"1"=>seg_temp<=seg_buf2;
wheno"2"=>seg_temp<=seg_buf3;
wheno"3"=>seg_temp<=seg_buf4;
wheno"4"=>seg_temp<=seg_buf5;
wheno"5"=>seg_temp<=seg_buf6;
wheno"6"=>seg_temp<=seg_buf7;
wheno"7"=>seg_temp<=seg_buf8;
whenothers=>seg_temp<="XXXX";
endcase;
endprocess;
process(seg_temp)
begin
caseseg_tempis
when"0000"=>seg_da<="00111111";
when"0001"=>seg_da<="00000110";
when"0010"=>seg_da<="01011011";
when"0011"=>seg_da<="01001111";
when"0100"=>seg_da<="01100110";
when"0101"=>seg_da<="01101101";
when"0110"=>seg_da<="01111101";
when"0111"=>seg_da<="00000111";
when"1000"=>seg_da<="01111111";
when"1001"=>seg_da<="01101111";
when"1010"=>seg_da<="01110111";
when"1011"=>seg_da<="01111100";
when"1100"=>seg_da<="00111001";
when"1101"=>seg_da<="01011110";
when"1110"=>seg_da<="01111001";
when"1111"=>seg_da<="01110001";
whenothers=>null;
endcase;
endprocess;
endado;
3.3电路参数计算
所谓动态驱动实际就是分时点亮不同位置的数码管,由于人眼的惰性,当数码管熄灭的时间小于40ms时,给人们感觉就是一直被点亮。
发光强度:
由于数码管各段在同样的驱动电路时,各段正向电流不相同,所以各段发光强度不同。
所以段的发光强度不同。
所有段的发光强度值中的最大值与最小值之比为发光强度比。
比值可以再1.5-2.3之间。
最大不能超过2.5.
R1-R7电阻值:
由于三极管至于导通状态时的饱和电压v非常小可以不计,所以从电源减去7段LED的电压降2v以及发射极极间电压0.6v余下的就是加在R7-R1上的电压,为了使流过LED的电流为30mA。
4.Quartus运行调试
4.1时序仿真波形图
(1)打开波形编辑器。
选择“file"菜单中的”new"项,在“new"窗口中选择”otherfiles“中的”vectorwaveformfile"项,打开空白编辑器。
(2)设置时间仿真区域。
将仿真时间设置在一个比较合理的时间区域。
选择“edit”菜单中的“endtime...”项,在弹出的窗口中的“time"栏处输入“100”,单位选择“ms”,将整个仿真区域的时间设为10ms,单击“ok”按钮,结束设置。
(3)编辑输入波形。
单击选中波形编辑窗口的时钟信号名“clk1”,使之变成蓝色条,再单击左列的时钟设置键,打开窗口,将“clk”的周期设定为0.5ms,“phase”相位设为默认为零,“dutycycle”占空比设为默认值50%。
(4)设定数据模式。
单击信号“light”旁边的“+”号,可以打开信号的各个分量,查看信号的每一位。
如果双击“+”号左边的信号标记,可以打开该信号格式设置的对话框。
(5)波形文件存盘。
选择“file”菜单下的“save”命令,或直接单击工具栏上的按钮即可。
(6)仿真器参数设计。
选择“assignment”菜单下的“setting。
。
。
”项,在“setting”窗口中左侧“category”栏中选择“simulator”项,打开窗口,在“siumlationmode”项目下选择仿真激励文件“light.vwf”。
在“simulationperiod”栏中选择“run
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 八位 数码管 扫描 显示 电路 设计