数码管动态显示 汇编 60进制
来源:互联网 发布:linux怎么写shell脚本 编辑:程序博客网 时间:2024/06/04 18:13
去年回答的一个题目,被网友翻了出来,提出了很多问题。今天补写了一些说明,发表出来。
题目:用两个动态数码管从0显示到60,由89C51的P1口输出,不加译码器,直接连接数码管,注意是动态数码管,不是两个单独的静态数码管。
悬赏分:100 | 解决时间:2010-5-24 20:25
最佳答案:
;=====================================
程序如下:
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
;-------------------------------------------------------
上述程序运行的效果图如下:
插图链接:http://hi.baidu.com/%D7%F6%B6%F8%C2%DB%B5%C0/album/item/c2e04b0f98f784be37d12233.html
;=======================================================
回答时间:2010-5-17 23:07
回答者: 做而论道 | 十三级采纳率:35% 名人
原题网址:http://zhidao.baidu.com/question/153705677.html
- 数码管动态显示 汇编 60进制
- 数码管动态显示字符
- 单片机数码管动态显示
- 动态数码管显示
- 动态数码管显示
- 数码管动态显示
- 数码管动态显示
- 数码管动态显示
- 数码管动态显示123456
- 动态数码管显示
- 数码管显示动态数据
- 动态数码管显示
- 动态数码管显示
- 数码管动态扫描扩展显示
- 【实验】动态显示二位七段数码管
- 数码管动态扫描显示01234567
- 51单片机动态数码管显示
- 6.4 数码管的动态显示
- IOS8 新增的UIVisualEffectView 使用
- 51单片机的中断控制
- 两台 PC 机之间的串口通信
- 用C语言编写程序,判断输入的一个字符串是否是回数
- 数据键入与排序程序--80x86汇编语言
- 数码管动态显示 汇编 60进制
- 基于51单片机的交通灯C语言程序设计
- 51单片机利用74HC595驱动数码管
- 按键控制移位显示
- 用汇编语言编写查表程序
- #UML#UML类图
- 关于51单片机外部中断的触发方式
- 51单片机的4×4键盘识别与74LS164驱动数码显示
- 智能交通灯