61阅读

七段显示译码器-【连载】 FPGA Verilog HDL 系列实例--------8-3 BCD七段显示译码器

发布时间:2018-05-11 所属栏目:七段译码器

一 : 【连载】 FPGA Verilog HDL 系列实例--------8-3 BCD七段显示译码器

【连载】 FPGA Verilog HDL 系列实例 

Verilog HDL 之 8-3 BCD七段显示译码器

一、原理

7段数码管是利用不同发光段组合的方式来显示不同的数码,为了试数码管能将数码所代表的数显示出来,必须将数码经译码器译出,然后经驱动器点亮对用的段。(www.61k.com]结构图如下图1.1。  比如要显示数值5,须将a, f, g, c, d各段点亮。

表1.2   3-8译码器真值表

二、实现

在设计文件中输入Verilog代码

1 `timescale 1 ns / 1 ps
2
3 module bcd7seg ( Y ,A );
4
5 input [3:0] A ;
6 wire [3:0] A ;
7
8 output [6:0] Y ;
9 wire [6:0] Y ;
10 assign Y =~Y_r;
11 reg [6:0] Y_r;
12
13 always @(A )
14 begin
15 Y_r = 7'b1111111;
16 case (A )
17 4'b0000: Y_r = 7'b0111111; // 0
18 4'b0001: Y_r = 7'b0000110; // 1
19 4'b0010: Y_r = 7'b1011011; // 2
20 4'b0011: Y_r = 7'b1001111; // 3
21 4'b0100: Y_r = 7'b1100110; // 4
22 4'b0101: Y_r = 7'b1101101; // 5
23 4'b0110: Y_r = 7'b1111101; // 6
24 4'b0111: Y_r = 7'b0000111; // 7
25 4'b1000: Y_r = 7'b1111111; // 8
26 4'b1001: Y_r = 7'b1101111; // 9
27 4'b1010: Y_r = 7'b1110111; // A
28 4'b1011: Y_r = 7'b1111100; // b
29 4'b1100: Y_r = 7'b0111001; // c
30 4'b1101: Y_r = 7'b1011110; // d
31 4'b1110: Y_r = 7'b1111001; // E
32 4'b1111: Y_r = 7'b1110001; // F
33 default: Y_r = 7'b0000000;
34 endcase
35 end
36
37 endmodule

二 : 基于三八译码器控制八个数码管同时显示内容的问题

在单片机开发板上,很多时候为了节省IO口的资源,扩展和利用IO口,我们很经常使用的一个方法是使用三八译码器,这将由三个IO口变成了八个IO口的控制,但三八译码器的三个口输入口只能同时控制一个输出口,那么,问题就来了,比如我们很经常用一个三八口去按一个八位或者四位的数码管,那么我们怎么样才能够让这八个数码管同时工作,让我们看上去八个IO口显示不同的内容呢?

下面我就把今天刚在杨老师指导下编写的程序以及原理作一个简单的分析吧。我的开发板是P0低三位(38数码管的输入端口)口控制数码管的位选的,八个输出口分别控制八个数码管工作的。

程序:

;作者:李俊轩
;时间:2010年10月21日
;通过三八译码器让三个IO口控制八个数码管的工作状态
ORG 00H
STARY:
MOV P0,#00000000B;根据三八译码器真值表的原理控制第一个数码管工作
MOV P1,#00111111B;显示 0
CALL DELAY;短暂的延时

MOV P0,#00000001B;根据三八译码器真值表的原理控制第二数码管工作
MOV P1,#00000110B;显示 1
CALL DELAY;短暂的延时

MOV P0,#00000010B;根据三八译码器真值表的原理控制第三数码管工作
MOV P1,#01011011B;显示 2
CALL DELAY;短暂的延时

MOV P0,#00000011B;根据三八译码器真值表的原理控制第四个数码管工作
MOV P1,#01001111B;显示 3
CALL DELAY;短暂的延时

MOV P0,#00000100B;根据三八译码器真值表的原理控制第五个数码管工作
MOV P1,#01100110B;显示 4
CALL DELAY;短暂的延时

MOV P0,#00000101B;根据三八译码器真值表的原理控制第六个数码工作
MOV P1,#01101101B;显示 5
CALL DELAY;短暂的延时

MOV P0,#00000110B;根据三八译码器真值表的原理控制第七个数码工作
MOV P1,#01111101B;显示 6
CALL DELAY;短暂的延时

MOV P0,#00000111B;根据三八译码器真值表的原理控制第八个数码工作
MOV P1,#00000111B;显示 7
CALL DELAY;短暂的延时

JMP STARY

DELAY:;延时程序
MOV R0,#3
DV1:MOV R1,248
DV2:DJNZ R1,DV2
DJNZ R0,DV1
RET
END

效果:在八个数码管上显示数字0至7


写这程序的时候要注意的是延时时间的问题。要保留在人的视觉能够看得见的状态。一般是20MS以内。

三 : 七段显示译码器是指什么的电路

发光二极管(LED)由特殊的半导体材料砷化镓、 磷砷化镓等制成,可以单独使用,也可以组装成分段式或点阵式LED显示器件(半导体显示器)。 分段式显示器(LED数码管)由7条线段围成 字型,每一段包含一个发光二极管。外加正向电压时二极管导通,发出清晰的光,有红、黄、绿等色。只要按规律控制各发光段的亮、灭,就可以显示各种字形或符号。 LED数码管有共阳、共阴之分。图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数码管(共阴)的接法。图中,电阻是上拉电阻,也称限流电阻,当译码器内部带有上拉电阻时,则可省去。数字显示译码器的种类很多,现已有将计数器、锁存器、译码驱动电路集于一体的集成器件,还有连同数码显示器也集成在一起的电路可供选用。

本文标题:七段显示译码器-【连载】 FPGA Verilog HDL 系列实例--------8-3 BCD七段显示译码器
本文地址: http://www.61k.com/1224791.html

61阅读| 精彩专题| 最新文章| 热门文章| 苏ICP备13036349号-1