利用 51 单片机实现 0.0 ~ 10 秒表

本文介绍了一种利用51单片机驱动两个数码显示器进行0.1秒递增计时的方法,并通过按键实现启动、暂停与清零功能。程序代码包括初始化、主循环、中断服务等关键部分,展示了如何实现时间显示与控制的基本步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

有个题目,要求使用 51 单片机驱动两个数码显示器,以 0.1s 递增,从 0.0 增到 10s。


设计一个按键,按下一次,启动,再按,暂停,再按一次,清零。循环不已。


做而论道先写了一个 0.0 ~ 9.9s 的。后来百度 Hi 传来信息,说是有追问。


利用 51 单片机实现 0.0 ~ 10 秒表 - 非著名博主 - 电子信息角落


但是,点击《查看详细》后,百度却找不到问题网页了。


利用 51 单片机实现 0.0 ~ 10 秒表 - 非著名博主 - 电子信息角落


唉,无奈的百度,迷失了自我。


做而论道只好把电路和程序,发表在下面了。


仿真电路:


利用 51 单片机实现 0.0 ~ 10 秒表 - 非著名博主 - 电子信息角落


程序:


;---------------------------------------

;http://zhidao.baidu.com/question/485975186.html

;0.0 ~ 9.9

;P0, P2静态显示

;设系统晶振为12MHz。

;按键连接在P3.7,

;按一下,计时,再按一下,停止,再按一下,清零。

;---------------------------------------

    ORG   0000H

    LJMP  MAIN

    ORG   000BH

    LJMP  T0_INT

;---------------------------------------

    ORG   0100H

INIT:                    ;初始化

    MOV   P0, #3FH

    MOV   P2, #3FH

    MOV   R1, #0

    MOV   R2, #0

    MOV   R3, #20

    MOV   DPTR, #TAB     ;表首址送DPTR

    MOV   TMOD, #01H

    MOV   TL0, #(65536 - 5000) MOD 256

    MOV   TH0, #(55536 - 5000) / 256

    CLR   TR0

    CLR   P3.6

    RET

;---------------------------------------

MAIN:

    CALL  INIT

    MOV   R4, #255

    SETB  ET0

    SETB  EA

;---------------------------------------

M_LOOP:

    JB    P3.7, M_LOOP

    CALL  DLY

    JB    P3.7, M_LOOP

    JNB   P3.7, $

    INC   R4

    CJNE  R4, #3, M1

    MOV   R4, #0

M1: CJNE  R4, #2, M2

    CALL  INIT

    SJMP  M_LOOP

M2: CPL   TR0

    SJMP  M_LOOP

;---------------------------------------

T0_INT:

    MOV   TL0, #(65536 - 5000) MOD 256

    MOV   TH0, #(55536 - 5000) / 256

    DJNZ  R3, T0_E

    MOV   R3, #20

    INC   R1

    CJNE  R1, #10, T0_1

    MOV   R1, #0

    INC   R2

    CJNE  R2, #10, T0_2

    MOV   R2, #0

    MOV   P0, #06H

    MOV   P2, #3FH

    SETB  P3.6

    CLR   TR0

    MOV   R4, #1

    RETI

T0_2:

    MOV   A, R2    ;显示十位

    MOVC  A, @A + DPTR

    SETB  ACC.7

    MOV   P0, A

T0_1:

    MOV   A, R1    ;显示个位

    MOVC  A, @A + DPTR

    MOV   P2, A

T0_E:

    RETI

;---------------------------------------

TAB:  DB  3FH, 06H, 5BH, 4FH, 66H;0~4

      DB  6DH, 7DH, 07H, 7FH, 6FH;5~9

;---------------------------------------

DLY:

    MOV   R6, #20   ;10ms延时.

D1: MOV   R7, #248

    DJNZ  R7, $

    DJNZ  R6, D1

    RET

;---------------------------------------

END






评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值