找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1903|回复: 0
打印 上一主题 下一主题
收起左侧

单片机60进制动态数码管汇编语言

[复制链接]
跳转到指定楼层
楼主
用两个动态数码管从0显示到60,由89C51的P1口输出,不加译码器,直接连接数码管,注意是动态数码管,不是两个单独的静态数码管。

仿真原理图如下(proteus仿真工程文件可到本帖附件中下载)


单片机汇编语言源码:
ORG 0000H
       LJMP MAIN
       ORG  0100H
MAIN:                            ;开始初始化
       MOV  DPTR,#TAB           ;表首址送DPTR
       MOV  R1, #0
       MOV  R2, #0              
;-------------------------------------------------------
M1:
       MOV  R0, #50
LOOP:
       CALL DIS
       DJNZ R0, LOOP            ;循环显示80遍,约用1.6s
;-------------------------------------------------------
       MOV  A,  R3              ;这是计数值
       ADD  A,  #1
       DA   A                   ;变成 BCD 码,即:00~99H
       CJNE A, #60H, SSS
       CLR  A
SSS:
       MOV  R3, A               ;计数值分解.
       MOV  B,  #16
       DIV  AB                  ;分成高、低四位
       MOV  R2, A               ;准备去显示
       MOV  R1, B
       SJMP M1                  ;转到前面,显示80
;-------------------------------------------------------
DIS:                             ;显示程序.
       MOV  A,  R2              ;显示十位.
       MOVC A,  @A+DPTR
       CLR  P2.1
       MOV  P1, A
       SETB P2.0                ;十位的位选.
       CALL DLY

       MOV  A,  R1              ;个位显示.
       MOVC A,  @A+DPTR
       CLR  P2.0                ;关闭十位的显示.
       MOV  P1, A
       SETB P2.1                ;个位的位选.
       CALL DLY
       RET
;------------------------------
TAB:   DB  0xc0,0xf9,0xa4,0xb0,0x99  ;共阳极段码 0~4
       DB  0x92,0x82,0xf8,0x80,0x90  ;共阳极段码 5~9
;-------------------------------------------------------
DLY:   MOV  R6, #20            ;10ms延时.
D1:    MOV  R7, #248
       DJNZ R7, $
       DJNZ R6, D1
       RET

60进制动态数码管.rar

6.83 KB, 下载次数: 7, 下载积分: 黑币 -5

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表