七段数码管显示
七段数码管显示数字电路
七段数码管显示数字电路学习 2008—11—02 15:15:18 阅读2837 评论0 字号:大中小CD4511是一个用于驱动共阴极 LED (数码管)显示器的 BCD 码—七段码译码器,特点如下:具有BCD转换、消隐和锁存控制、七段译码及驱动功能的CMOS电路能提供较大的拉电流.可直接驱动LED显示器.CD4511 是一片 CMOS BCD-锁存/7 段译码/驱动器,引脚排列如图 2 所示。
其中a b c d 为 BCD 码输入,a为最低位。
LT为灯测试端,加高电平时,显示器正常显示,加低电平时,显示器一直显示数码“8”,各笔段都被点亮,以检查显示器是否有故障。
BI为消隐功能端,低电平时使所有笔段均消隐,正常显示时, B1端应加高电平.另外 CD4511有拒绝伪码的特点,当输入数据越过十进制数9(1001)时,显示字形也自行消隐。
LE是锁存控制端,高电平时锁存,低电平时传输数据。
a~g是 7 段输出,可驱动共阴LED数码管。
另外,CD4511显示数“6”时,a段消隐;显示数“9”时,d段消隐,所以显示6、9这两个数时,字形不太美观图3是 CD4511和CD4518配合而成一位计数显示电路,若要多位计数,只需将计数器级联,每级输出接一只 CD4511 和 LED 数码管即可。
所谓共阴 LED 数码管是指 7 段 LED 的阴极是连在一起的,在应用中应接地。
限流电阻要根据电源电压来选取,电源电压5V时可使用300Ω的限流电阻。
用CD4511实现LED与单片机的并行接口方法如下图: (略)CD4511 引脚图其功能介绍如下:BI:4脚是消隐输入控制端,当BI=0 时,不管其它输入端状态如何,七段数码管均处于熄灭(消隐)状态,不显示数字.LT:3脚是测试输入端,当BI=1,LT=0 时,译码输出全为1,不管输入 DCBA 状态如何,七段均发亮,显示“8"。
它主要用来检测数码管是否损坏。
LE:锁定控制端,当LE=0时,允许译码输出. LE=1时译码器是锁定保持状态,译码器输出被保持在LE=0时的数值。
共阳极七段数码管真值表
共阳极七段数码管真值表共阳极七段数码管是一种常见的电子显示器件,它由七个段码组成,可以显示0-9的数字以及一些其他字符。
下面是共阳极七段数码管的真值表,包含七个段码a、b、c、d、e、f、g。
1. 段码a:* 数字0:0x3F(二进制:00111111)* 数字1:0x06(二进制:00000110)* 数字2:0x5B(二进制:01011011)* 数字3:0x4F(二进制:01001111)* 数字4:0x66(二进制:01100110)* 数字5:0x6D(二进制:01101101)* 数字6:0x7D(二进制:01111101)* 数字7:0x07(二进制:00000111)* 灭零:0x7C(二进制:01111100)2. 段码b:* 数字0:0x39(二进制:00111001)* 数字1:0x5F(二进制:01011111)* 数字2:0x49(二进制:01001001)* 数字3:0x65(二进制:01100101)* 数字4:0x77(二进制:01110111)* 数字5:0x79(二进制:01111111)* 数字6:0x3D(二进制:00111101)* 数字7:没有对应的编码。
可以通过特定的编程实现显示。
3. 段码c:* 数字0:没有对应的编码。
可以通过特定的编程实现显示。
* 数字8以下与段码b相同。
4. 段码d、e、f、g与b相同。
请注意,这里提供的编码是基于常见的共阳极七段数码管编码,不同型号或品牌的数码管可能会有不同的编码。
此外,对于大于9的数字或特殊字符,可能需要通过特定的编程来实现显示。
七段数码管显示
七段数码管显示设计报告目录一、设计任务二、题目分析与整体构思三、硬件电路设计四、程序设计五、心得体会一.设计任务数码的显示方式一般有三种:第一种是字型重叠式;第二种是分段式;第三种是点阵式。
目前以分段式应用最为普遍,主要器件是七段发光二极管(LED)显示器。
它可分为两种,一是共阳极显示器(发光二极管的阳极都接在一个公共点上),另一是共阴极显示器(发光二极管的阳极都接在一个公共点上,使用时公共点接地)。
数码管动态扫描显示,是将所用数码管的相同段(a~g 和p)并联在一起,通过选位通信号分时控制各个数码管的公共端,循环依次点亮各个数码管。
当切换速度足够快时,由于人眼的“视觉暂留”现象,视觉效果将是数码管同时显示。
根据七段数码管的显示原理,设计一个带复位的七段数码管循环扫描程序,本程序需要着重实现两部分:1. 显示数据的设置:程序设定4 位数码管从左至右分别显示1、2、3、4;2. 动态扫描:实现动态扫描时序。
利用EXCD-1 开发板实现七段数码管的显示设计,使用EXCD-1 开发板的数码管为四位共阴极数码管,每一位的共阴极7 段数码管由7 个发光LED 组成,7 个发光LED 的阴极连接在一起,阳极分别连接至FPGA相应引脚。
四位数码管与FPGA 之间通过8 位拨码开关(JP1)进行连接。
二.题目分析与整体构思使用EXCD-1 开发板的数码管为四位共阴极数码管,每一位的共阴极7 段数码管由7个发光LED 组成,呈“”字状,7 个发光LED 的阴极连接在一起,阳极分别连接至FPGA 相应引脚。
SEG_SEL1、SEG_SEL2、SEG_SEL3 和SEG_SEL4 为四位7 段数码管的位选择端。
当其值为“1”时,相应的7 段数码管被选通。
当输入到7 段数码管SEG_A~ SEG_G 和SEG_DP 管脚的数据为高电平时,该管脚对应的段变亮,当输入到7 段数码管SEG_A~SEG_G 和SEG_DP 管脚的数据为低电平时,该管脚对应的段变灭。
七段数码管显示原理
七段数码管显示原理七段数码管是一种常见的数字显示器件,它由七个LED数码管组成,用来显示0-9的数字。
在数字电子技术中,七段数码管广泛应用于各种计数器、时钟、温度计、电子秤等设备中。
那么,七段数码管是如何实现数字显示的呢?接下来,我们将详细介绍七段数码管的显示原理。
首先,七段数码管由七个LED数码管组成,分别是a、b、c、d、e、f、g。
每个LED数码管代表一个固定的数字段,通过控制这些LED的亮灭,就可以显示出不同的数字。
比如,要显示数字0,就需要点亮a、b、c、d、e、f,而g不需要点亮;要显示数字1,就只需要点亮b、c;以此类推,通过控制这七个LED的亮灭组合,就可以显示出0-9的数字。
其次,七段数码管的显示原理是通过控制电流来控制LED的亮灭。
当给定一个数字时,通过数码管的控制电路,将相应的LED数码管接通,使得其发光,从而显示出对应的数字。
这个控制电路通常由数字信号转换为LED的控制信号,通过逻辑门、译码器等电子元件来实现。
当输入不同的数字信号时,控制电路会根据预设的真值表,输出相应的LED控制信号,从而实现数字的显示。
另外,七段数码管的显示原理还涉及到了多路复用技术。
在一些需要同时显示多个数字或者进行动态显示的场合,就需要用到多路复用技术。
通过多路复用技术,可以在同一个七段数码管上依次显示不同的数字,从而实现多个数字的显示或者动态显示。
多路复用技术通过快速切换不同的数字,使得人眼无法感知到数字的变化,从而实现了多个数字的显示或者动态显示。
总的来说,七段数码管的显示原理是通过控制LED的亮灭来显示数字,其中涉及到了控制电路、多路复用技术等内容。
七段数码管作为一种常见的数字显示器件,其显示原理的了解对于数字电子技术的学习和应用具有重要意义。
希望通过本文的介绍,读者能够更加深入地了解七段数码管的显示原理,为今后的学习和工作提供帮助。
简述七段数码管动态扫描显示原理
简述七段数码管动态扫描显示原理
七段数码管动态扫描显示原理是指通过对七段数码管的各段进行逐个刷新,以实现数字、字母和符号等信息的显示。
七段数码管由7个LED灯组成,分别代表数字0~9和字母A~F等,可以通过控制各个LED的亮灭状态来显示不同的字符。
动态扫描显示原理是通过快速地在各个数码管之间切换显示内容,使得人眼无法察觉到切换的过程,从而产生连续的显示效果。
具体实现过程如下:
1. 将需要显示的数字或字符转换为相应的LED点亮状态,通过控制各个数码管的引脚来实现。
2. 通过控制锁存器的输入使得数据在锁存器中存储。
3. 通过控制锁存器的输出使得数据从锁存器输出到数码管的控制引脚上。
4. 通过控制位选锁存器的输出,选择显示的数码管。
5. 通过控制位选锁存器的使能引脚,控制数码管的亮灭状态。
6. 循环执行上述步骤,不断刷新各个数码管的显示内容,使得整个显示效果连续而流畅。
7. 根据需要的显示速度和亮度,可以调整刷新频率和亮灭时间的设置。
通过这种动态扫描的方式,只需要控制一部分引脚,就能够实现多
个七段数码管的显示,从而减少了所需的引脚数量和控制复杂度,提高了显示的效率和可靠性。
七段数码管动态显示控制
实验二七段数码管动态显示控制一、实验目的利用AT89S52和使用两位数码管显示器,循环显示两位数00-99。
其中P2.0和P2.1端口分别控制数码管的个位和十位的供电,当相应的端口变成低电平时,驱动相应的三极管会导通,+5V通过驱动三极管给数码管相应的位供电,这时只要P3口送出数字的显示代码,数码管就能正常显示数字。
二、实验要求1、使用两位数码管显示器,循环显示两位数00-99;2、具有电源开关和指示灯,有复位键;3、数码管动态显示,即扫描方式,每一位每间隔一段时间扫描一次。
字符的亮度及清晰度与每位点亮的停留时间和每位显示的时间内轮换导通次数有关。
三、实验电路四、实验器材AT89S52;动态扫描显示;共阳极数码管;电阻五、实验原理说明图1 AT89S52引脚图图2 共阳极七段数码管引脚图1AT89S52引脚图,说明如下:按照功能,AT89S52的引脚可分为主电源、外接晶体振荡或振荡器、多功能I/O 口、控制和复位等。
1.多功能I/O口AT89S52共有四个8位的并行I/O口:P0、P1、P2、P3端口,对应的引脚分别是P0.0 ~ P0.7,P1.0 ~ P1.7,P2.0 ~ P2.7,P3.0 ~ P3.7,共32根I/O线。
每根线可以单独用作输入或输出。
①P0端口,该口是一个8位漏极开路的双向I/O口。
在作为输出口时,每根引脚可以带动8个TTL输入负载。
当把“1”写入P0时,则它的引脚可用作高阻抗输入。
当对外部程序或数据存储器进行存取时,P0可用作多路复用的低字节地址/数据总线,在该模式,P0口拥有内部上拉电阻。
在对Flash存储器进行编程时,P0用于接收代码字节;在校验时,则输出代码字节;此时需要外加上拉电阻。
②P1端口,该口是带有内部上拉电阻的8位双向I/O端口,P1口的输出缓冲器可驱动(吸收或输出电流方式)4个TTL输入。
对端口写“1”时,通过内部的上拉电阻把端口拉到高电位,此时可用作输入口。
西门子S7-200(七段数码管显示控制)实训指导
七段数码管显示实训模块
实训指导
编写:
校对:
审核:
批准:
日期: 亚龙科技集团有限公司
七段数码管显示控制
一、实训目的
1、了解七段译码的工作原理;
2、进一步熟练掌握程序的编写与调试操作;
3、掌握编程的基本操作以及输入、检查、修改和运行等;
4、培养学生解决问题的能力;
二、实训器材
1、亚龙—西门子S7-200系列主机单元一台;
2、西门子S7-200编程电缆一条;
3、亚龙—七段数码管显示控制实训模块一台;
4、计算机(PC机)一台等;
5、安全连接线若干。
三、实训原理
七段数码管显示的控制要求:
四、 I/O分配表
输入说明输出说明
Q0.0 数码管段A
Q0.1 数码管段B
Q0.2 数码管段C
Q0.3 数码管段D
Q0.4 数码管段E
Q0.5 数码管段F
Q0.6 数码管段G
Q0.7 数码管段H
表1-1 七段数码管显示系统I/O分配表
五、 I/O接线图
西门子
S7-200
CPU 226
AC/DC/RLY
主机
图1-1.1七段数码管显示控制系统I/O的接线图
六、实训步骤
1、将电源开关拨到OFF状态,严格按图1-1.1所示接线,注意24V电源的正负不可短接,电路不要短路,否则会损坏PLC触点。
2、先将PLC的电源线插进PLC正面的电源孔中,再将另一端插到220V电源插板。
3、按照实训原理控制要求操作,观察实训现象。
实验2:8255七段数码管静动态显示
微机实验报告书学号:姓名:班级:同组名单:实验日期: 2012.12.21实验题目:七段数码管的静态显示实验目标:掌握数码管显示数字的原理(功能:键盘输入一位十进制数字(0~9),用七段数码管显示。
)解题思路:1.静态显示:按图 10(a)连接好电路,将8255的A口PA0-PA6分别与七段数码管的断码驱动输入端a-g项链,位码驱动输入端S1接+5V,S0、dp接地。
编程从键盘输入一位十进制数字,在七段数码管上显示出来。
2.动态显示:按图10(b)连接好电路,七段数码管段码连接不变,位码驱动输入端S1,S0接8255C口的PC1,PC0。
编程在两个数码管上显示“56”。
程序框图:静态显示见图11(a),动态显示见图11(b)。
关键问题分析(静态显示):1、按键判断和程序结束判断按键来说,由于程序中必须输入数字,所以没有必要对是否按键进行判断,只需要判断按键是否在0-9之间即可。
用以下程序即可:cmp al,'0'jl exit ; jl,条件转移指令,即在小于时转移cmp al,'9'jg exit ;jg, 条件转移指令,即在大于时转移程序中还要用到“cmp”即比较指令,用来比较输入数与0、9的大小关系。
程序结束:如若输入的数字小于0或者大于9,必须直接跳出程序,即结束指令必须单独占用一个程序段,这样,程序顺序执行完毕也可以顺利返回DOS。
2、七段码显示。
实验指导书中给出了七段码的字型代码。
这样一来,七段码的显示只需要用换码指令“XLAT”便可以轻松实现。
前提是必须将七段码字型编成数码表以字符串的形式写进程序中。
3、数字键ASCII码与数值间的转换。
因为0的ASCII码为30H,所以数字键ASCII码与数值间的转换时只需减去30H即可,可用下列语句实现:sub al,30h程序清单:静态显示:data segmentioport equ 0c800h-0280hio8255a equ ioport+288hio8255b equ ioport+28bhled db 3fh,06h,5bh,4fh,66h,6dh,7dh,07h,7fh,6fhmesg1 db 0dh,0ah,'Input a num (0--9h):',0dh,0ah,'$'data endscode segmentassume cs:code,ds:datastart: mov ax,datamov ds,axmov dx,io8255b ;使8255的A口为输出方式mov al,80h ;10000000B,控制字PA以方式0输出out dx,alzby: mov dx,offset mesg1 ;显示提示信息mov ah,09hint 21hmov ah,01 ;从键盘接收字符int 21hcmp al,'0' ;是否小于0jl exit ;如若小于0,则跳转到exit退出程序cmp al,'9' ;是否大于9jg exit ; 如若大于9,则跳转到exit退出程序sub al,30h ;将所得字符的ASCII码减30H,数字键ascii码同数值转换mov bx,offset led ;bx为数码表的起始地址xlat ;求出相应的段码mov dx,io8255a ;从8255的A口输出out dx,aljmp zby ;转zbyexit: mov ah,4ch ;返回DOSint 21hcode endsend start动态显示:data segmentioport equ 0c800h-0280hio8255a equ ioport+28ahio8255b equ ioport+28bhio8255c equ ioport+288hled db 3fh,06h,5bh,4fh,66h,6dh,7dh,07h,7fh,6fh ;段码buffer1 db 5,6 ;存放要显示的个位和十位bz dw ? ;位码data endscode segmentassume cs:code,ds:datastart: mov ax,datamov ds,axmov dx,io8255b ;将8255设为A口输出mov al,80h ;10000000B,控制字PA以方式0输出out dx,almov di,offset buffer1 ;设di为显示缓冲区loop2: mov bh,02zby: mov byte ptr bz,bhpush didec diadd di, bzmov bl,[di] ;bl为要显示的数pop dimov al,0mov dx,io8255aout dx,almov bh,0mov si,offset led ;置led数码表偏移地址为SIadd si,bx ;求出对应的led数码mov al,byte ptr [si]mov dx,io8255c ;自8255A的口输出out dx,almov al,byte ptr bz ;使相应的数码管亮mov dx,io8255aout dx,almov cx,3000delay: loop delay ;延时mov bh,byte ptr bzshr bh,1jnz zbymov dx,0ffhmov ah,06int 21hje loop2 ;有键按下则退出mov dx,io8255amov al,0 ;关掉数码管显示out dx,almov ah,4ch ;返回int 21hcode endsend start运行结果:静态显示:在键盘上输入一个0-9的任意数字,会显示在数码管上。
数字控制器的数字显示方法
数字控制器的数字显示方法在数字控制系统中,数字显示是一种重要的信息输出方式,可以用于显示各种数值、状态、报警等信息。
数字控制器的数字显示方法主要分为七段LED显示和数码管显示两种方式。
一、七段LED显示方法七段LED显示器是一种常见的数字显示器件,由七个LED灯管组成,可以显示0-9的数字,还可显示小数点、字母和一些特殊符号。
七段LED显示器的字型通过点亮对应的LED灯管来实现。
七段LED显示器的引脚定义如下:1. a段:表示数字1、4、7和字母"a"等;2. b段:表示数字2、3、4、5、6、8、9和字母"b"等;3. c段:表示数字0、2、3、5、6、7、8、9和字母"c"等;4. d段:表示数字0、1、2、3、4、7、8、9和字母"d"等;5. e段:表示数字0、2、3、5、6、8、9和字母"e"等;6. f段:表示数字0、4、5、6、7、8、9和字母"f"等;7. g段:表示数字0、2、3、5、6、8、9和字母"g"等;8. dp段:小数点。
常见的数字显示控制方式有直接控制和译码控制两种:1. 直接控制方式:通过分别接通相应的控制引脚,给七段LED的每个段发送高电平或低电平,来控制相应段的显示与隐藏。
2. 译码控制方式:通过一个译码器或驱动芯片进行控制,由输入的二进制信号译码为对应的七段LED控制信号,从而实现数字的显示。
二、数码管显示方法数码管是一种数字显示器件,由若干个发光二极管(LED)组成,每个LED代表一个数字或字母。
数码管有共阳极和共阴极两种类型。
数码管的一般引脚定义如下:1. 共阳极数码管:共阳极(COM)和a、b、c、d、e、f、g、dp,其中共阳极接高电平时数码管亮,接地时数码管灭。
2. 共阴极数码管:共阴极(COM)和a、b、c、d、e、f、g、dp,其中共阴极接低电平时数码管亮,接高电平时数码管灭。
BCD七段数码管显示译码器电路
BCD七段数码管显示译码器电路7段数码管又分共阴和共阳两种显示方式。
如果把7段数码管的每一段都等效成发光二极管的正负两个极,那共阴就是把abcdefg这7个发光二极管的负极连接在一起并接地;它们的7个正极接到7段译码驱动电路74LS48的相对应的驱动端上(也是abcdefg)!此时若显示数字1,那么译码驱动电路输出段bc为高电平,其他段扫描输出端为低电平,以此类推。
如果7段数码管是共阳显示电路,那就需要选用74LS47译码驱动集成电路。
共阳就是把abcdefg的7个发光二极管的正极连接在一起并接到5V电源上,其余的7个负极接到74LS47相应的abcdefg输出端上。
无论共阴共阳7段显示电路,都需要加限流电阻,否则通电后就把7段译码管烧坏了!限流电阻的选取是:5V电源电压减去发光二极管的工作电压除上10ma到15ma得数即为限流电阻的值。
发光二极管的工作电压一般在1.8V--2.2V,为计算方便,通常选2V即可!发光二极管的工作电流选取在10-20ma,电流选小了,7段数码管不太亮,选大了工作时间长了发光管易烧坏!对于大功率7段数码管可根据实际情况来选取限流电阻及电阻的瓦数!发光二极管(LED)由特殊的半导体材料砷化镓、磷砷化镓等制成,可以单独使用,也可以组装成分段式或点阵式LED显示器件(半导体显示器)。
分段式显示器(LED数码管)由7条线段围成8型,每一段包含一个发光二极管。
外加正向电压时二极管导通,发出清晰的光,有红、黄、绿等色。
只要按规律控制各发光段的亮、灭,就可以显示各种字形或符号。
图4 - 17(a)是共阴式LED数码管的原理图,图4-17(b)是其表示符号。
使用时,公共阴极接地,7个阳极a~g由相应的BCD七段译码器来驱动(控制),如图4 - 17(c)所示。
BCD七段译码器的输入是一位BCD码(以D、C、B、A表示),输出是数码管各段的驱动信号(以F a~F g表示),也称4—7译码器。
EDA实验二_VHDL七段数码管显示译码
EDA实验二七段数码管显示译码的设计一、实验目的1、掌握七段数码管译码器的工作原理;2、学会运用波形仿真测试检验程序的正确性;3、学会运用波形仿真测试检验程序的正确性。
二、实验设备ZYE1502C型实验箱三、内容要求1、用拨位开关输入8421BCD码,七段数码管显示“0-F”16个16进制的数字。
2、观察字符亮度和显示刷新的效果:(1)在8个七段数码管上同时显示某一数字;(2)在8个七段数码管上动态显示某一数字。
3、扩展内容:(1)动态显示时,能即时改变显示的顺序;(2)动态显示时,实现显示数字从0~F的循环显示。
四、实验步骤1、输入:设计部分采用VHDL语言完成;2、编译;3、仿真;4、下载;5、连线。
(1)四个拨位开关(在P1、P2处选择)连接D3、D2、D1、D0信号所对应的管脚。
时钟CLK所对应的管脚同实验箱上的时钟源相连。
(2)扫描片选信号DIG(0 TO 3)的管脚同七段数码管(共阴)相连;(3)七段数码管驱动信号A,B,C,D,E,F,G的管脚分别同扫描数码管的段输入PCLK处的连接线孔A,B,C,D,E,F,G相连。
五、实验报告1、论述实验过程和步骤;2、填写正确的实验结果。
(1)通过两种显示效果分析:字符显示亮度同扫描频率的关系,且让人眼感觉不出光闪烁现象的最低扫描频率是多少?答:扫描频率越高,显示亮度越低。
人眼看是否闪烁与所用的时钟和分频方式有关,在频率稳定和分频均匀的情况下,最低扫描频率为256Hz,若分频不均匀或频率不稳定,则需更高频率。
(2)字形编码的种类,即一个7段数码管可产生多少种字符,产生所有字符需要多少根被译码信号线?答:一个7段数码管可产生2^7=128种字符,产生所有字符至少需要7根被译码信号线。
但假如只编译0-F,16个字符,则至少只需要4根被译码信号线。
六、实验小结。
答:1、不同控制端需要预先分配控制优先级,否则编写的时候会出现很多问题。
优先级分为普通和特殊,一般错误情况可以跨越权限显示出来。
BCD七段数码管显示译码器和真值表资料
BCD七段数码管显示译码器和真值表类别:网文精粹阅读:1865发光二极管(LED)由特殊的半导体材料砷化镓、磷砷化镓等制成,可以单独使用,也可以组装成分段式或点阵式LED显示器件(半导体显示器)。
分段式显示器(LED数码管)由7条线段围成8型,每一段包含一个发光二极管。
外加正向电压时二极管导通,发出清晰的光,有红、黄、绿等色。
只要按规律控制各发光段的亮、灭,就可以显示各种字形或符号。
图4 - 17(a)是共阴式LED数码管的原理图,图4-17(b)是其表示符号。
使用时,公共阴极接地,7个阳极a~g由相应的BCD七段译码器来驱动(控制),如图4 - 17(c)所示。
BCD七段译码器的输入是一位BCD码(以D、C、B、A表示),输出是数码管各段的驱动信号(以Fa~Fg表示),也称4—7译码器。
若用它驱动共阴LED数码管,则输出应为高有效,即输出为高(1)时,相应显示段发光。
例如,当输入8421码DCBA=0100时,应显示,即要求同时点亮b、c、f、g段,熄灭a、d、e段,故译码器的输出应为Fa~Fg=0110011,这也是一组代码,常称为段码。
同理,根据组成0~9这10个字形的要求可以列出8421BCD 七段译码器的真值表,见表4 - 12(未用码组省略)。
MSI BCD七段译码器就是根据上述原理组成的,只是为了使用方便,增加了一些辅助控制电路。
这类集成译码器产品很多,类型各异,它们的输出结构也各不相同,因而使用时要予以注意。
图4-17(c)是BCD七段译码器驱动LED数码管(共阴)的接法。
图中,电阻是上拉电阻,也称限流电阻,当译码器内部带有上拉电阻时,则可省去。
数字显示译码器的种类很多,现已有将计数器、锁存器、译码驱动电路集于一体的集成器件,还有连同数码显示器也集成在一起的电路可供选用。
如有侵权请联系告知删除,感谢你们的配合!。
共阳七段数码管显示数字0到9
共阳七段数码管是一种常用的数码管显示器件,具有显示数字0到9的功能。
本文将从结构、工作原理、应用场景等方面详细介绍共阳七段数码管。
一、结构共阳七段数码管由七个发光二极管(LED)组成,每个LED对应显示数字的一部分。
将它们按照数字的显示形状组合在一起,就可以显示出任意数字。
共阳七段数码管还包括一个共阳极,用于控制LED的亮暗状态。
二、工作原理共阳七段数码管的工作原理是通过外部电路向共阳极加电压,控制七个LED的亮暗状态。
共阳极接通时,显示的数字为0;当接通其他七段数码管的阳极时,根据所加电压的不同,可以显示出数字1至9。
三、电路连接连接共阳七段数码管的典型电路由驱动芯片、限流电阻和共阳极组成。
其中驱动芯片用于控制LED的亮暗,限流电阻用于限制LED的电流,避免过流损坏。
共阳极则是整个电路的控制中心,通过对其加电压来控制LED的状态。
四、显示原理共阳七段数码管通过将不同的发光二极管组合在一起,可以显示出任意数字。
比如数字1由bc两段显示,数字2由abged显示,数字3由abgcd显示,以此类推。
通过控制每个LED的亮灭状态,便可以实现数字的显示。
五、应用场景共阳七段数码管广泛应用于各种计时器、电子秤、仪器仪表以及工业控制系统中。
它具有结构简单、稳定可靠、功耗低等优点,是目前常见的数字显示器件之一。
在日常生活中,我们可以看到共阳七段数码管在各种电子设备中的身影,如微波炉、电子闹钟等。
六、优缺点共阳七段数码管的优点是结构简单、使用方便,适用于对数字显示精度要求不高的场景。
它的功耗较低,可以长时间稳定工作。
但是,共阳七段数码管只能显示有限的数字,且对字体显示有一定限制,不能显示复杂的字符或图形。
七、结语共阳七段数码管作为一种常见的数字显示器件,在各种电子设备中都有着重要的应用。
通过控制七个LED的亮暗状态,它可以显示出数字0到9,适用于各种计时计数等场景。
随着科技的不断进步,相信共阳七段数码管在未来会有更广泛的应用。
七段数码管显示数字0到9二进制
七段数码管是一种常见的数字显示设备,通常用于显示数字,字母和一些特殊符号。
在七段数码管中,每个数字都可以通过控制不同的LED灯来显示,这些LED灯通常排列成数字“8”的形状,分别称为a, b, c, d, e, f, g段。
而显示数字0到9的二进制通过控制这些LED灯的亮暗来实现。
下面我们就来详细介绍一下七段数码管显示数字0到9的二进制表示。
1. 数字0当需要在七段数码管上显示数字0时,需要控制a, b, c, d, e, f段的LED灯亮,而g段的LED灯熄灭。
对应的二进制表示为:0bxxx。
2. 数字1要显示数字1,需要控制b, c段的LED灯亮,其余的LED灯熄灭,对应的二进制表示为:0bxxx。
3. 数字2为了显示数字2,需要控制a, b, d, e, g段的LED灯亮,而c, f段的LED灯熄灭。
其二进制表示为:0bxxx。
4. 数字3要显示数字3,需要控制a, b, c, d, g段的LED灯亮,而e, f段的LED 灯熄灭。
其二进制表示为:0bxxx。
5. 数字4要显示数字4,需要控制b, c, f, g段的LED灯亮,而a, d, e段的LED 灯熄灭。
其二进制表示为:0bxxx。
6. 数字5要显示数字5,需要控制a, c, d, f, g段的LED灯亮,而b, e段的LED 灯熄灭。
其二进制表示为:0bxxx。
7. 数字6为了显示数字6,需要控制a, c, d, e, f, g段的LED灯亮,而b段的LED灯熄灭。
其二进制表示为:0bxxx。
8. 数字7要显示数字7,需要控制a, b, c段的LED灯亮,其余的LED灯熄灭。
其二进制表示为:0bxxx。
9. 数字8要显示数字8,需要控制所有的LED灯都亮,其二进制表示为:0bxxx。
10. 数字9为了显示数字9,需要控制所有的LED灯都亮,除了e段的LED灯熄灭。
其二进制表示为:0bxxx。
通过控制七段数码管上的各个LED灯,可以实现显示数字0到9的二进制表示。
七段数码管的显示原理
七段数码管的显示原理
数码管是一种能够显示数字的电子元件,常用于计时器、电子钟、温度计等设备中。
七段数码管由七个小段组成,它们可以显示数字0-9的所有组合。
数码管的每一小段都代表数字的一个线段,通过控制这些线段的通断状态,可以显示不同的数字。
每个数字的显示都可通过组合不同的小段状态来实现。
例如,数字0就是所有小段全亮,而数字1则是左边第二个小段亮,其余小段都熄灭。
控制七段数码管显示数字的原理是通过给不同的小段加上电压来实现。
小段分别用a、b、c、d、e、f、g来表示,其中a~g
对应着七个小段。
如果某个小段需要点亮,则给它加上高电平;如果不需要点亮,则给它加上低电平。
为了控制不同的小段,需要使用译码器。
译码器是一种电路元件,能够将输入的数字信号转换成相应的控制信号。
常见的译码器有BCD-7段译码器、74LS47等。
使用译码器的方式是,先将待显示的数字转化成二进制编码,然后将二进制编码输入到译码器的输入端口。
译码器会根据输入信号的编码,输出对应的控制信号给七段数码管的不同小段,从而实现数字的显示。
通过译码器,我们可以控制不同的小段点亮,从而实现数码管的数字显示。
例如,当我们要显示数字1时,输入二进制编码0001给译码器,译码器会将对应的控制信号输出给数码管,
使得左边第二个小段亮,其余小段熄灭。
总的来说,七段数码管通过控制小段的通断状态来实现数字的显示。
通过使用译码器,我们可以将输入的数字信号转换成相应的控制信号,从而控制七段数码管显示不同的数字。
这种原理广泛应用于各种电子设备中。
[指南]七段数码管的静态显示
七段数码管的动态显示1、实验内容:数码管的动态显示利用实验板上的某四位数码管依次显示 16 进制的0000~FFFF。
为实现功能重用的目的,我们仍然将系统划分为几个部分:(1)时钟分频模块:将开发板上的 50MHz 高速时钟进行分频产生一个5Hz 的时钟用于计数。
(2)计数模块:实现从 0000~FFFF 的计数功能。
用4位十六进制数来实现,其中15‐12 位表示十六进制数的最高位,11‐8 位表示次高位,7‐4 位表示次低位,3‐0位表示最低位(3)数码管动态显示模块:将计数模块的输出作为显示字符的输入值,分时送出相应段码,实现数码管的动态显示效果。
2、参考程序:module SegDynamicDisp(CLK,rst_n,SEG0,SEG1,SEG2,SEG3);//数码管动态显示模块?input CLK;input rst_n;output [7:0]SEG0;//定义输出数码管0的段码带output [7:0]SEG1;//定义输出数码管1的段码带output [7:0]SEG2;//定义输出数码管2的段码带output [7:0]SEG3;//定义输出数码管3的段码带//......................................................... .....reg [7:0]SEG0;//定义输出数码管0的段码带reg [7:0]SEG1;//定义输出数码管1的段码带reg [7:0]SEG2;//定义输出数码管2的段码带reg [7:0]SEG3;//定义输出数码管3的段码带//......................................................... .........parameter seg0=8'hC0,seg1=8'hF9,seg2=8'hA4,seg3=8'hB0,seg4=8'h99,seg5=8'h92,seg6=8'h82,seg7=8'hF8,seg8=8'h80,seg9=8'h90,sega=8'h88,segb=8'h83,segc=8'hC6,segd=8'hA1,sege=8'h86,segf=8'h8E;//......................................................... ...........reg[23:0] cnt;//定义计数寄存器,用来实现定时的功能reg [15:0]counter;//定义计数寄存器,用于实现显示的数值always @(posedge CLK or negedge rst_n)//计数过程,记录当前显示的位选序号if(!rst_n)begincnt<=24'D0;//复位时cnt初始化为0counter<=2'b00;//复位时counter初始化为0endelsebegincnt<=cnt+1'b1;//实现计数的功能if(cnt==24'D1*******)begincnt<=0;//当达到计数值以后回复初始值counter<=counter+1;//当达到计时时间以后显示的数值也相应的+1endend//....................................................always @(posedge CLK or negedge rst_n)if(!rst_n)beginSEG0<=0;SEG1<=0;SEG2<=0;SEG3<=0;endelsealways @(counter)begincase(counter[3:0])4'h0: sm_dbr <= seg0; 4'h1: sm_dbr <= seg1; 4'h2: sm_dbr <= seg2; 4'h3: sm_dbr <= seg3; 4'h4: sm_dbr <= seg4; 4'h5: sm_dbr <= seg5; 4'h6: sm_dbr <= seg6; 4'h7: sm_dbr <= seg7; 4'h8: sm_dbr <= seg8; 4'h9: sm_dbr <= seg9; 4'ha: sm_dbr <= sega; 4'hb: sm_dbr <= segb; 4'hc: sm_dbr <= segc; 4'hd: sm_dbr <= segd; 4'he: sm_dbr <= sege; 4'hf: sm_dbr <= segf; default: ;endcasecase(counter[7:4])4'h0: sm_dbr <= seg0; 4'h1: sm_dbr <= seg1; 4'h2: sm_dbr <= seg2; 4'h3: sm_dbr <= seg3; 4'h4: sm_dbr <= seg4; 4'h5: sm_dbr <= seg5; 4'h6: sm_dbr <= seg6; 4'h7: sm_dbr <= seg7; 4'h8: sm_dbr <= seg8; 4'h9: sm_dbr <= seg9;4'hb: sm_dbr <= segb; 4'hc: sm_dbr <= segc; 4'hd: sm_dbr <= segd; 4'he: sm_dbr <= sege; 4'hf: sm_dbr <= segf; default: ;endcasecase(counter[11:8]) 4'h0: sm_dbr <= seg0; 4'h1: sm_dbr <= seg1; 4'h2: sm_dbr <= seg2; 4'h3: sm_dbr <= seg3; 4'h4: sm_dbr <= seg4; 4'h5: sm_dbr <= seg5; 4'h6: sm_dbr <= seg6; 4'h7: sm_dbr <= seg7; 4'h8: sm_dbr <= seg8; 4'h9: sm_dbr <= seg9; 4'ha: sm_dbr <= sega; 4'hb: sm_dbr <= segb; 4'hc: sm_dbr <= segc; 4'hd: sm_dbr <= segd; 4'he: sm_dbr <= sege; 4'hf: sm_dbr <= segf; default: ;endcasecase(counter[15:12]) 4'h0: sm_dbr <= seg0; 4'h1: sm_dbr <= seg1; 4'h2: sm_dbr <= seg2;4'h4: sm_dbr <= seg4; 4'h5: sm_dbr <= seg5; 4'h6: sm_dbr <= seg6; 4'h7: sm_dbr <= seg7; 4'h8: sm_dbr <= seg8; 4'h9: sm_dbr <= seg9; 4'ha: sm_dbr <= sega; 4'hb: sm_dbr <= segb; 4'hc: sm_dbr <= segc; 4'hd: sm_dbr <= segd; 4'he: sm_dbr <= sege; 4'hf: sm_dbr <= segf; default: ;endcaseendendmodule3、接口:clk--PIN_N2rst_n--PIN_N25SEG0[0]--PIN_AF10SEG0[1]--PIN_AB12SEG0[2]--PIN_AC12SEG0[3]--PIN_AD11SEG0[4]--PIN_AE11SEG0[5]--PIN_V14SEG0[6]--PIN_V13SEG1[0]--PIN_V20SEG1[1]--PIN_V21SEG1[2]--PIN_W21SEG1[3]--PIN_Y22SEG1[4]--PIN_AA24SEG1[5]--PIN_AA23SEG1[6]--PIN_AB24SEG2[0]--PIN_AB23SEG2[1]--PIN_V22SEG2[2]--PIN_AC25SEG2[3]--PIN_AC26SEG2[4]--PIN_AB26SEG2[5]--PIN_AB25SEG2[6]--PIN_Y24SEG3[0]--PIN_Y23SEG3[1]--PIN_AA25SEG3[2]--PIN_AA26SEG3[3]--PIN_Y26SEG3[4]--PIN_Y25SEG3[5]--PIN_U22SEG3[6]--PIN_W244、上机程序module SegDynamicDisp(CLK,rst_n,SEG0,SEG1,SEG2,SEG3); input CLK;input rst_n;output [6:0]SEG0;output [6:0]SEG1;output [6:0]SEG2;output [6:0]SEG3;reg [6:0]SEG0;reg [6:0]SEG1;reg [6:0]SEG2;reg [6:0]SEG3;//........以上是定义的一些输入输出接口..........................parameter seg0=7'hC0,seg1=7'hF9,seg2=7'hA4,seg3=7'hB0,seg4=7'h99,seg5=7'h92,seg6=7'h82,seg7=7'hF8,seg8=7'h80,seg9=7'h90,sega=7'h88,segb=7'h83,segc=7'hC6,segd=7'hA1,sege=7'h86,segf=7'h8E;//..............以上是定义的参数,用来标记段代码...................reg[23:0] cnt;reg [15:0]counter;always @(posedge CLK or negedge rst_n)if(!rst_n)begincnt<=24'D0;counter<=2'b00;endelsebegincnt<=cnt+1'b1;if(cnt==24'D1*******)begincnt<=0;counter<=counter+1;endend//..........用来实现计数功能和控制数字递增的速度....................always @(counter)begincase(counter[3:0])4'h0: SEG0 <= seg0;4'h1: SEG0 <= seg1;4'h2: SEG0 <= seg2;4'h3: SEG0 <= seg3;4'h4: SEG0 <= seg4;4'h5: SEG0 <= seg5;4'h6: SEG0 <= seg6;4'h7: SEG0 <= seg7; 4'h8: SEG0 <= seg8; 4'h9: SEG0 <= seg9; 4'ha: SEG0 <= sega; 4'hb: SEG0 <= segb; 4'hc: SEG0 <= segc; 4'hd: SEG0 <= segd; 4'he: SEG0 <= sege; 4'hf: SEG0 <= segf; default: ; endcasecase(counter[7:4]) 4'h0: SEG1 <= seg0; 4'h1: SEG1 <= seg1; 4'h2: SEG1 <= seg2; 4'h3: SEG1 <= seg3; 4'h4: SEG1 <= seg4; 4'h5: SEG1 <= seg5; 4'h6: SEG1 <= seg6; 4'h7: SEG1 <= seg7; 4'h8: SEG1 <= seg8; 4'h9: SEG1 <= seg9; 4'ha: SEG1 <= sega; 4'hb: SEG1 <= segb; 4'hc: SEG1 <= segc; 4'hd: SEG1 <= segd; 4'he: SEG1 <= sege; 4'hf: SEG1 <= segf; default: ; endcasecase(counter[11:8])4'h1: SEG2 <= seg1; 4'h2: SEG2 <= seg2; 4'h3: SEG2 <= seg3; 4'h4: SEG2 <= seg4; 4'h5: SEG2 <= seg5; 4'h6: SEG2 <= seg6; 4'h7: SEG2 <= seg7; 4'h8: SEG2 <= seg8; 4'h9: SEG2 <= seg9; 4'ha: SEG2 <= sega; 4'hb: SEG2 <= segb; 4'hc: SEG2 <= segc; 4'hd: SEG2 <= segd; 4'he: SEG2 <= sege; 4'hf: SEG2 <= segf; default: ;endcasecase(counter[15:12]) 4'h0: SEG3 <= seg0; 4'h1: SEG3 <= seg1; 4'h2: SEG3 <= seg2; 4'h3: SEG3 <= seg3; 4'h4: SEG3 <= seg4; 4'h5: SEG3 <= seg5; 4'h6: SEG3 <= seg6; 4'h7: SEG3 <= seg7; 4'h8: SEG3 <= seg8; 4'h9: SEG3 <= seg9; 4'ha: SEG3 <= sega; 4'hb: SEG3 <= segb;4'hd: SEG3 <= segd;4'he: SEG3 <= sege;4'hf: SEG3 <= segf;default: ;endcaseend//...................用来实现显示功能..................... endmodule5、实验结果复位按键为0时:HEX3 HEX2 HEX1 HEX0 显示的为0000;复位按键为1时:HEX3 HEX2 HEX1 HEX0 显示的依次为:0000——FFFF。
7段数码管显示原理
7段数码管显示原理七段数码管是一种常用的数字显示器,由七个LED(发光二极管)组成,可以显示0到9的数字以及一些字母和符号。
每个LED都有三个引脚,分别是公共阳极(COM)和七个阴极(A、B、C、D、E、F、G),共有八个引脚。
通过控制每个LED的亮灭状态,可以显示不同的数字和字符。
七段数码管的显示原理如下:1.公共阳极:在常规的七段数码管中,公共阳极是连接到正电源的。
当公共阳极接通电源时,将会照亮以低电平为"亮"和高电平为"灭"。
2.段选:每个LED被称为一个段,例如A、B、C等。
通过控制段选引脚的电平,可以使得一些特定的LED点亮或熄灭。
当段选引脚为高电平时,对应的LED点亮;当段选引脚为低电平时,对应的LED熄灭。
3.共阴极和共阳极:数码管有两种类型,一种是共阴极,一种是共阳极。
在共阴极的数码管中,阴极是连接到负电源的,当其中一个LED需要点亮时,将对应的段选引脚设为低电平,其他段选引脚设为高电平。
此时,对应的LED灯会呈现出低电平亮,其他LED灯则会呈现高电平熄灭的状态。
共阳极的数码管与之相反。
4.编码表:为了方便操作,每个数字和字符都有对应的编码表,指示了哪些LED需要点亮以显示特定的数字或字符。
例如,数字"0"的编码为(1,1,1,1,1,1,0),表示A~F引脚要设为低电平,G引脚设为高电平。
5.多位显示:通常,七段数码管不只有一个,可以通过串联多个数码管来显示更多位的数字或字符。
例如,一个四位的数码管可以显示0到9999的数字。
6.数码管显示控制:为了实现多位显示,需要对每个数码管进行分时控制。
通过快速切换每个数码管的段选引脚电平,我们可以造成人眼的视觉暂留现象,即便是每个数码管只显示一部分时间,我们也会觉得它们同时显示。
7.通过控制位选引脚,我们可以选择要显示的位。
例如,对于一个四位的数码管,如果想要显示数字"1234",我们可以分别将位选引脚依次设为低电平,然后根据编码表依次点亮对应的LED,以实现数字的显示。
EDA实验二八位七段数码管动态显示电路的设计
EDA实验二八位七段数码管动态显示电路的设计八位七段数码管动态显示电路是一种常用的显示电路,用于将数字信号转换成七段数码管的显示形式。
本文将详细介绍八位七段数码管动态显示电路的设计原理和实现方法。
首先,我们先介绍一下七段数码管的基本原理和工作方式。
一、七段数码管的基本原理和工作方式七段数码管通常由七个独立的LED组成,分别代表数字0到9和字母A到F。
这七个LED分别为a,b,c,d,e,f,g,用于显示不同的数字。
通过控制每个LED的亮灭状态,可以显示出不同的数字。
七段数码管通常采用共阳极或共阴极的方式控制。
在共阳极的情况下,数码管的共阳极引脚接Vcc,每个LED的阴极引脚分别通过控制芯片上的开关来控制灯的亮灭;在共阴极的情况下,数码管的共阴极引脚接GND,每个LED的阳极引脚通过控制芯片上的开关来控制灯的亮灭。
根据实际需要选择共阳极或共阴极的七段数码管。
在七段数码管中,每个LED代表一个计算机的位数。
例如,数码管中的aLED表示计算机数据的最低位,而gLED表示计算机数据的最高位。
二、八位七段数码管动态显示电路的设计原理八位七段数码管动态显示电路的设计原理是将八个七段数码管连接在一起,通过改变每个数码管的亮灭状态,实现数字的动态显示。
具体的设计原理是通过一个计数器生成7个时序信号,然后再通过逻辑控制器将这些时序信号分配给各个数码管。
可以用三个个位计数器来实现生成的7个时序信号。
其中,一个计数器用于控制7个段的扫描,即a,b,c,d,e,f,g;另外两个计数器用于控制8位数码管中的8个数位,即1,2,3,4,5,6,7,8具体实现时,可以通过一个时钟信号来驱动计数器,每个计数器都有一个计数使能信号和一个计数复位信号。
通过适当的设计时钟信号的频率和计数使能/复位信号的控制,可以实现不同的动态显示效果。
三、八位七段数码管动态显示电路的实现方法八位七段数码管动态显示电路的实现方法可以分为三个步骤:计数器设计、逻辑控制器设计和电路布线。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
七段数码管显示设计报告目录一、设计任务二、题目分析与整体构思三、硬件电路设计四、程序设计五、心得体会一.设计任务数码的显示方式一般有三种:第一种是字型重叠式;第二种是分段式;第三种是点阵式。
目前以分段式应用最为普遍,主要器件是七段发光二极管(LED)显示器。
它可分为两种,一是共阳极显示器(发光二极管的阳极都接在一个公共点上),另一是共阴极显示器(发光二极管的阳极都接在一个公共点上,使用时公共点接地)。
数码管动态扫描显示,是将所用数码管的相同段(a~g 和p)并联在一起,通过选位通信号分时控制各个数码管的公共端,循环依次点亮各个数码管。
当切换速度足够快时,由于人眼的“视觉暂留”现象,视觉效果将是数码管同时显示。
根据七段数码管的显示原理,设计一个带复位的七段数码管循环扫描程序,本程序需要着重实现两部分:1. 显示数据的设置:程序设定4 位数码管从左至右分别显示1、2、3、4;2. 动态扫描:实现动态扫描时序。
利用EXCD-1 开发板实现七段数码管的显示设计,使用EXCD-1 开发板的数码管为四位共阴极数码管,每一位的共阴极7 段数码管由7 个发光LED 组成,7 个发光LED 的阴极连接在一起,阳极分别连接至FPGA相应引脚。
四位数码管与FPGA 之间通过8 位拨码开关(JP1)进行连接。
二.题目分析与整体构思使用EXCD-1 开发板的数码管为四位共阴极数码管,每一位的共阴极7 段数码管由7个发光LED 组成,呈“”字状,7 个发光LED 的阴极连接在一起,阳极分别连接至FPGA 相应引脚。
SEG_SEL1、SEG_SEL2、SEG_SEL3 和SEG_SEL4 为四位7 段数码管的位选择端。
当其值为“1”时,相应的7 段数码管被选通。
当输入到7 段数码管SEG_A~ SEG_G 和SEG_DP 管脚的数据为高电平时,该管脚对应的段变亮,当输入到7 段数码管SEG_A~SEG_G 和SEG_DP 管脚的数据为低电平时,该管脚对应的段变灭。
该四位数码管与FPGA 之间通过8 位拨码开关(JP1)进行连接,当DIP 开关全部拨到上方时(板上标示为:7SEGLED),FPGA 的相应IO 引脚和四位7 段数码管连接,7 段数码管可以正常工作;当DIP 开关全部拨到下方时(板上标示为:EXPORT5),FPGA 的相应IO引脚与7 段数码管断开,相应的FPGA 引脚用于外部IO 扩展。
注意:无论拨码开关断开与否,FPGA 的相应IO 引脚都是与外部扩展接口连接的,所以当正常使用数码管时,不允许在该外部扩展接口上安装任何功能模块板。
数码管选通控制信号分别对应4 个数码管的公共端,当某一位选通控制信号为高电平时,其对应的数码管被点亮,因此通过控制选通信号就可以控制数码管循环依次点亮。
一个数码管稳定显示要求的切换频率要大于50Hz,那么4 个数码管则需要50×4=200Hz 以上的切换频率才能看到不闪烁并且持续稳定显示的字符。
三.硬件电路设计设计结构图如下:四.软件设计(1)创建工程制定工程名,工程路径以及顶层设计所使用的输入方式,此设计我们选择硬件描述语言作为顶层设计的输入方式HDL。
(2)选择目标器件(3)创建新源文件这里我们选择“VHDL Module”,进行新源文件模块定义,所定义的内容是所要设计模块的实体说明,即模块的端口说明。
本实验所要实现的是编码器的设计,设定SW0与SW1的四个状态分别作为SEG_SEL1、SEG_SEL2、SEG_SEL3 和SEG_SEL4四位7 段数码管的位选择端,共8 个输出信号控制四个数码管显示,选择输出为总线模式(Bus),Msb、Lsb 分别表示最大端口号与最小端口号(注意:选择端口方向in、out、inout)。
检查模块端口定义是否正确。
(4)添加源文件(5)完成工程创建在工程设置统计窗口,可以看到对工程的描述总结,目标器件的描述,以及新建源文件的总结,此工程创建完成。
(6)设计输入包括库的声明,包的声明,完整的实体说明以及结构体框架。
使用VHDL 语言设计完善数码管显示的设计,拨动开关SW0~SW1 ,其四个状态为四个位选择端,LED0~LED3 作为输出显示,以观察实验结果。
1.LED 与编码器电路对应关系(7)仿真设计代码输入完成后,需要对设计进行波形仿真。
有添加波形仿真文件,仿真波形文件时钟设置,设置输入信号波形和波形仿真这几个步骤。
(8)设计综合Xilinx 综合工具对设计进行行为级综合,将系统直接从行为级描述综合为寄存器传输级描述。
综合过程中主要完成三个步骤:首先为语法检查,检查设计文件语法是否有错误;其次为编译过程,翻译和优化HDL 代码,将其转换为综合工具可以识别的元件序列;最后为映射过程,将这些可识别的元件序列转换为可识别的目标技术的基本元件。
Synthesis 工具即用来完成设计综合,它可完成以下任务查看综合报告(View Synthesis Report)、查看RTL 原理图(View RTL Schematic)、查看技术原理图(Vies Technology Schematic)、检查语法(Check Syntax)、产生综合后仿真模型(Generate Post-Synthesis Simulation Model)。
(9). 引脚分配信号名及对应板上资源信号名FPGA 引脚分配时钟脉冲clk P80七段数码管a 段a_to_g<0> P49七段数码管b 段a_to_g<1> P42七段数码管c 段a_to_g<2> P45七段数码管d 段a_to_g<3> P41七段数码管e 段a_to_g<4> P48七段数码管f 段a_to_g<5> P50七段数码管g 段a_to_g<6> P47七段数码管小数点dp P40片选an<0> P34片选an<1> P35片选an<2> P36数码管1 片选an<3> P39复位(SW0) btn P43(10)设计实现设计综合完成后,即进行设计实现(Implement)。
实现过程主要分为三个步骤:翻译逻辑网表(Translate)、映射到器件单元(Map)、布局布线(Place&Route)。
在处理子窗口,鼠标双击Implement Design,信息输出窗口会显示设计信息。
(11)生成下载文件及目标板配置处理子窗口中双击Generate Programming File,生成可编程文件。
而后双击Configure Target Device,进行目标板配置。
开发板正确连接,并上电后,可在ISE 用户区看到两个可配置芯片,分别为4Mb 的平台flash 与FPGA xc3s500e台flash 与FPGA xc3s500e。
同时出现平台Flash 配置文件指定窗口,绿色芯片表示当前进行配置的芯片。
该设计我们选择对FPGA xc3s500e 进行配置,平台Flash 配置窗口点击Cancel。
选定FPGA 芯片图标,右键单击选择program,在随后弹出的“Device Programming Properties”对话框直接点击ok,对FPGA 进行编程。
文件下载成功,则显示“Program Succeeded”可通过开发板观察相应实验现象。
至此,使用ISE 软件设计基本逻辑门电路已经完成。
(12)程序代码1. 顶层文件library IEEE;use IEEE.STD_LOGIC_1164.ALL;use IEEE.STD_LOGIC_ARITH.ALL;use IEEE.STD_LOGIC_UNSIGNED.ALL;entity clk7seg_top isPort ( clk : in STD_LOGIC;btn : in STD_LOGIC; --复位信号a_to_g : out STD_LOGIC_VECTOR (6 downto 0);an : out STD_LOGIC_VECTOR (3 downto 0);dp : out STD_LOGIC);end clk7seg_top;architecture Behavioral of clk7seg_top iscomponent clk7segPort ( x : in STD_LOGIC_VECTOR (15 downto 0);clk : in STD_LOGIC; --100MHzclr : in STD_LOGIC;a_to_g : out STD_LOGIC_VECTOR (6 downto 0);an : out STD_LOGIC_VECTOR (3 downto 0);dp : out STD_LOGIC);end component;signal x : std_logic_vector(15 downto 0);beginx<=X"1234"; --设定x 初值U0 : clk7seg port map(x=>x,clk=>clk,clr=>btn,a_to_g=>a_to_g,an=>an,dp=>dp);end Behavioral;2. 七段数码管显示程序library IEEE;use IEEE.STD_LOGIC_1164.ALL;use IEEE.STD_LOGIC_ARITH.ALL;use IEEE.STD_LOGIC_UNSIGNED.ALL;entity clk7seg isPort ( x : in STD_LOGIC_VECTOR (15 downto 0); clk : in STD_LOGIC; --50MHzclr : in STD_LOGIC;a_to_g : out STD_LOGIC_VECTOR (6 downto 0); an : out STD_LOGIC_VECTOR (3 downto 0);dp : out STD_LOGIC);end clk7seg;architecture Behavioral of clk7seg issignal s : std_logic_vector (1 downto 0);signal digit : std_logic_vector (3 downto 0);signal clkdiv : std_logic_vector (20 downto 0); signal aen : std_logic_vector (3 downto 0) := "1111"; begindp <= '1';s <= clkdiv(20 downto 19); --片选process(clr)beginif(clr='1') thenclkdiv <= (others => '0');elsif(rising_edge(clk)) thenclkdiv <= clkdiv + 1;end if;end process;process(aen,s)beginan <= "0000";if(aen(conv_integer(s))='1') thenan(conv_integer(s)) <= '1'; --an(n)为1 则片选第n 个数码管end if;end process;process(s)begincase s iswhen "00" => digit <= x(3 downto 0);when "01" => digit <= x(7 downto 4);when "10" => digit <= x(11 downto 8);when others => digit <= x(15 downto 12); --4 个数码管轮流显示,有延时end case;end process;process(digit)begincase digit iswhen x"0" => a_to_g <= "1111110";--"0000001";when x"1" => a_to_g <= "0110000";--"1001111";when x"2" => a_to_g <= "1101101";--"0010010";when x"3" => a_to_g <= "1111001";--"0000110";when x"4" => a_to_g <= "0110011";--"1001100";when x"5" => a_to_g <= "1011011";--"0100100";when x"6" => a_to_g <= "1011111";--"0100000";when x"7" => a_to_g <= "1110000";--"0001111";when x"8" => a_to_g <= "1111111";--"0000000";when x"9" => a_to_g <= "1111011";--"0000100";when x"A" => a_to_g <= "1110111";--"0001000";when x"B" => a_to_g <= "0011111";--"1100000";when x"C" => a_to_g <= "1001110";--"0110001";when x"D" => a_to_g <= "0111101";--"1000010";when x"E" => a_to_g <= "1001111";--"0110000";when others => a_to_g <= "1000111";--"0111000";end case;end process;end Behavioral;五.调试将SW0~SW6为a_to_g 来改变其状态来观察,结果如下:SW0~SW6 "1111110",显示"0";SW0~SW6"0110000",显示"1";SW0~SW6 "1101101"显示"2";SW0~SW6 "1111001 "显示"3";SW0~SW6 "0110011 "显示"4";SW0~SW6"1011011 "显示"5";SW0~SW6 "1011111"显示"6";SW0~SW6“1110000"显示"7";SW0~SW6"1111111"显示"8";SW0~SW6 "1111011"显示"9";SW0~SW6 "1110111"显示"A";SW0~SW6"0011111"显示"B";SW0~SW6 "1001110"显示"C";SW0~SW6"0111101"显示"D";SW0~SW6"1001111"显示"E";SW0~SW6 "1000111"显示其他;在软件中波形图如下:调试结果:数码管显示成功实现。