数码管显示

数码管显示

 

最近因为对突然对电子感兴趣,前几天在路过电子商城时买了一个数码管。因为以前总是纸上谈兵,根本没实验过,连数码见都没见过,所以开始觉得将这块数码管显示出来是非常具有挑战性的工作。

 

今天正好有空,拿来了我的数码管,并在网上看了一些资料,才发现并不是想象中的那么难,其实更准确的说是太简单了。不到半天就将完成了程序的编写。下面是这次编程的总结。

 

先来了解一下数码管的构造,数码管分共阳极和共阴极两种。所谓共阳极就是所有二极管的阳极是连在一起的,而阴极则不连;共阴极数码管正好相反:它的所有阴极相连。这两种数码管的原理图如下:

下面是个数码管的实物图,共阳极数的和共阴极的外表一样:

在背面上下两排各有五个脚,每排中间脚为共阳/阴脚。每个脚对应的二极管如下图:

 

 

因为我买的数码管是共阴极的,所有下面我以共阴极数码管来说说如何显示。我使用了并行端口的数据寄存器来控制各二极管。并行端口是一个25针端口(如下图)



它的第2~9针对应着数据寄存器的07位,数据寄存器的地址为:0X378。并口的针1825为接地信号。所以我将并口与我的数码管按下表连接起来:

并口针号

数码管管脚号

2

G

3

F

4

A

5

B

6

E

7

D

8

C

9

CP

18(接地)

共极

18(接地)

共极

 

基于这样的连接,我写了一个循环100次显示09的程序,该程序在MASM6.11下编译,在DOS下运行成功,源代码如下:

.386P

 

STACK SEGMENT USE16

      DB 256 DUP (0)

      STACKLEN = $

STACK ENDS

 

CODE SEGMENT USE16

     ASSUME SS:STACK, CS:CODE

START:

     MOV AX, STACK

     MOV SS, AX

     MOV SP, STACKLEN

 

     MOV BX, 100

 

NEXT:

     MOV DX, 378H

     MOV AL, 01111110B ;0

     OUT DX, AL

     CALL MYWAIT

 

     MOV DX, 378H

     MOV AL, 11001000B ;1

     OUT DX, AL

 

     CALL MYWAIT

 

     MOV DX, 378H

     MOV AL, 00111101B ;2

     OUT DX, AL

 

     CALL MYWAIT

 

     MOV DX, 378H

     MOV AL, 11101101B ;3

     OUT DX, AL

 

     CALL MYWAIT

 

     MOV DX, 378H

     MOV AL, 01001011B ;4

     OUT DX, AL

 

     CALL MYWAIT

 

     MOV DX, 378H

     MOV AL, 11100111B ;5

     OUT DX, AL

 

     CALL MYWAIT

 

     MOV DX, 378H

     MOV AL, 01110111B ;6

     OUT DX, AL

 

     CALL MYWAIT

 

     MOV DX, 378H

     MOV AL, 11001100B ;7

     OUT DX, AL

 

     CALL MYWAIT

 

     MOV DX, 378H

     MOV AL, 01111111B ;8

     OUT DX, AL

 

     CALL MYWAIT

 

     MOV DX, 378H

     MOV AL, 01101111B ;9

     OUT DX, AL

 

     CALL MYWAIT

 

     DEC BX

     JNZ NEXT

 

     MOV AH, 4CH

     INT 21H

 

MYWAIT PROC NEAR

     PUSH AX

     PUSH CX

 

     MOV AX, 1FFH

 

NEXTWAIT:

     MOV CX, 0FFFFH

     LOOP $

 

     DEC AX

     JNZ NEXTWAIT

 

     POP CX

     POP AX

     RET

MYWAIT ENDP

 

CODE ENDS

     END START

 

 

 

 
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值