数码管显示

原创 2007年09月12日 19:08:00

数码管显示

 

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

 

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

 

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

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

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

 

 

因为我买的数码管是共阴极的,所有下面我以共阴极数码管来说说如何显示。我使用了并行端口的数据寄存器来控制各二极管。并行端口是一个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~99秒倒计时数码管显示C程序+Proteus仿真

1~99秒倒计时数码管显示C程序+Proteus仿真文件。 优化了程序,使用51单片机内部定时器,可以实现1-99秒内倒计时。 仿真效果为:   源程序为: /* 调试环境:Proteus 7...

51单片机--8 位数码管动态显示 12 位数字

51单片机,要求用 8 位数码管动态显示 12 位学号。还要用按键调整走动速度,C语言的。题目链接:http://zhidao.baidu.com/question/17545212474514761...

n久前的51单片机4*4键盘加4数码管显示汇编程序

KEYBUF EQU 30H DISPBUF EQU 31H DISPBIT EQU 35H COLKEY: MOV P1,#0F0H MOV A,P1 ANL A,#0F0H XRL A,...

51单片机(HC6800—EM3 V2.2)数码管操作——静态显示

静态显示原理图:

单片机: 热敏电阻测温并且显示到数码管(温度计)

如上图所示,PCF8591的9脚和10脚,一个是数据线SDA,一个是时钟线SCL。分别接到单片机的P2.0 , P2.1上面。 为什么选这两个引脚?因为51单片机上没有IIC总线接口,需要用...
  • NK_test
  • NK_test
  • 2015年12月21日 22:56
  • 4878

树莓派编程wiringPi控制电子数码管显示循环0~9

我是看着胡老师的文档做的,现在也懒得写了。把文档放在这了http://pan.baidu.com/s/1c07D02k,胡老师写的文档真是太详细了 下面只贴一下代码吧,也没有注释。 ...

第二十九节:数码管通过切换窗口来设置参数,并且不显示为0的高位。

第二十九节:数码管通过切换窗口来设置参数,并且不显示为0的高位。 开场白: 上一节在第4,3,2,1位显示设置的参数时,还有一点小瑕疵。比如设置参数等于56时,实际显示的是“0056”,也就是...

FPGA初探(五)之两位数码管显示

两位数码管显示

中断+数码管动态显示+流水灯

Question:利用动态扫描和定时器1在数码管上显示出从765432开始以1/10秒的速度往下递减直至765398并保持显示此数,与此同时利用定时器0以500MS速度进行流水灯从上至下移动,当数码管...

DS1302时钟数码管显示

#include #include "ds1302.h" #define KeyPort P3 //定义按键端口 #define DataPort P0 //定义数据端口 程序中遇到DataPo...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:数码管显示
举报原因:
原因补充:

(最多只允许输入30个字)