BCD七段译码器是怎样实现译码的?:请说详细点....打酱油的请勿进

BCD七段译码器是怎样实现译码的?:请说详细点....打酱油的请勿进,第1张

7段译码作用是把BCD码通过译码后在数码管上显示。一个数码管有7个线形LED等组成,另外还有一个用于表示小数点的LED等。你可以把7个线形的LED等想象为7根火柴。当7个LED等的某些亮时,可以看到相应的数字,就像用火柴摆数字一样。7段译码器的输出就是根据7段译码器的输入产生用于控制点亮这7个线形LED的信号。

一般是下列7段,构成8字形,最上面一段为a,按顺时针排列构成bcdef,中间一段为g

--a---

f ||b

---g---

e||c

---d---

下面举例说明

假设输入 1,则转换为8421BCD码为0001,译码后输出 为b c亮,其余暗,此时看到的四显示‘1’,以此类推,可得到

84 21 abc d efg

1 00 01 0 11 0 0 00

2 00 10 1 10 1 1 01

3 00 11 1 11 1 0 01

4 01 00 0 11 0 0 11

5 010 1 1 011 0 1 1

6 01 10 1 01 1 1 11

7 0 1 11 1 11 00 00

8 1 0 00 1 111 1 1 1

9 1 0 01 111 10 11

0 0 0 0 0 1111 11 0

从上可以看出,a段在输入不为1,4时点亮

b段在输入不为5,6时点亮

。。。。。。。。。。。

以此类推,可以得到各个输出与输入的关系,从而达到译码的目的。

以上分析都是在‘1’点亮灯时达到的,如果0点亮LED灯,则输出取反,即‘1’取反为‘0’, 0取反后为1

以1567为例,,,我是四川大学的,你也是吧

DATAS SEGMENT

buffer1 dw 1657h

buffer2 dw ? 分配两个字节的空间

DATAS ENDS

CODES SEGMENT

ASSUME CS:CODES,DS:DATAS

START:

MOV AX,DATAS

MOV DS,AX

mov ax,[buffer1]

and ax,0f000h

mov cl,12

shr ax,cl

mov dx,ax 至此,已将5678h(BCD)中的5(十进制)取出,并放入dx中

call change 调用chang,将5乘以10

mov ax,dx

mov bx,[buffer1]

and bx,0f00h

mov cl,8

shr bx,cl

add ax,bx

mov dx,ax

call change

mov ax,dx

mov bx,[buffer1]

and bx,00f0h

mov cl,4

shr bx,cl

add ax,bx

mov dx,ax

call change

mov ax,dx

mov bx,[buffer1]

and bx,000fh

add ax,bx 至此,ax中的值已是5678(十进制),但电脑是将其以二进制的形式存储的,故应是0679h,二进制就是0000011001111001

mov buffer2,ax 因为后面会用到ah,为避免在其过程中丢失ax中的数据,故将ax中的数据放入buffer2中

mov cx,16

again:shl buffer2,1将已经转换成二进制的数逐个显示出来

mov dl,0

adc dl,30h

mov ah,2

int 21h

loop again

MOV AH,4CH

INT 21H

change proc子程序change的功能是实现dx乘以10

add dx,dx

mov cx,dx

add dx,dx

add dx,dx

add dx,cx

ret

change endp

CODES ENDS

END START

BCD码与十进制数的转换关系很直观,相互转换也很简单。

将十进制数75.4转换为BCD码:7-》0111,5-》0101,4-》0100所以拼成8421BCD码的结果是:(0111 0101.0100)BCD;若将BCD码1000 0101.0101转换为十进制数:1000-》8,0101-》5,0101-》5所以结果是:(85.5)。

注意:同一个8位二进制代码表示的数,当认为它表示的是二进制数和认为它表示的是二进制编码的十进制数时,数值是不相同的。

扩展资料

看数据的来源和用途。BCD码一般用于输入和输出,例如来自拨码开关的数据是BCD码,送给显示电梯楼层的译码器芯片的是BCD码。

8421 BCD码是最基本和最常用的BCD码,它和四位自然二进制码相似,各位的权值为8、4、2、1,故称为有权BCD码。和四位自然二进制码不同的是,它只选用了四位二进制码中前10组代码,即用0000~1001分别代表它所对应的十进制数,余下的六组代码不用。

BCD码用十六进制格式输入,其最高位(符号位为16#F(2#1111)。BCD码的低3位各位只能是0~9,如果是16#A~16#F则会出错。 计数器的预设值PV是0~999的BCD码,可以用格式为C#的常数(C#1~C#999)作为计数器的预设值。


欢迎分享,转载请注明来源:内存溢出

原文地址:https://www.54852.com/yw/8100520.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-13
下一篇2023-04-13

发表评论

登录后才能评论

评论列表(0条)

    保存