历史上的今天

今天是:2024年09月07日(星期六)

2020年09月07日 | 51单片机倒计时秒表/可调整时钟

发布者:算法之手 来源: 51hei关键字:51单片机  倒计时秒表  可调整时钟 手机看文章 扫描二维码
随时随地手机看文章

(1)控制功能:
①启动/停止:秒表和时钟选择功能的总开关允许位。没按或偶次按下,关闭时钟和秒表功能选择。单次按下,允许进行秒表和时钟功能选择。
②暂停:秒表或时钟的停止信号。任何时候按下按钮停止秒表倒计时或停止时钟计时和撤销报警信号。
③复位:秒表和时钟复位信号。任何时候按下按钮秒表显示或时钟显示恢复初始状态:00.00.00.0 。
(2)调节功能:
通过6位按钮可以对数码的六位显示进行调整。任何时候都可以分别可以通过HH、HL、MH、ML、SH、SL对时的十位、时的个位、分的十位、分的个位、秒的十位和秒的个位进行调节并设定。
(3)显示功能:
同8个8段数码管进行显示。显示精度为0.01秒;最后一段数码管显示工作状态,“H”代表着是时钟,“E”代表着秒表倒计时。
按时、分、秒显示,采用24h制,如示数为“10.05.22.5H”,时钟显示读数为10时05分22.5秒。示数为“0.05.14.5E”,秒表倒计时显示,读数为5分14.5秒。
(4)秒表/时钟选择功能:
①提供两种模式,秒表倒计时和是时钟计时。
②通过TIME和SECONDS按钮进行选择。

③两种模式初始状态都为00.00.00,倒计时可以使用调节按钮进行设定,时钟功能可以通过调节按钮进行调整时间。
(5)报警功能:
倒计时报警功能,倒计时结束时,报警信号发出,蓝色的LED亮。

单片机源程序如下:

/*-------------------------------------------------------------------------------------------*/

/*-----------按键定义-----------*/

STRT EQU P1.6        ;启动

STP EQU P1.7        ;停止

CLRR EQU P3.0        ;复位

SELTS EQU P3.6         ;时钟

SELTH EQU P3.7        ;秒表


SECL EQU P1.0        ;秒个位

SECH EQU P1.1        ;秒十位

MINL EQU P1.2        ;分

MINH EQU P1.3        ;

HOURL EQU P1.4        ;时

HOURH EQU P1.5        ;

/*-------------------------------------------------------------------------------------------*/

ORG 0000H

SJMP MAIN

ORG 000BH         ;T0定时器入口

AJMP T0INT0        

ORG 001BH         ;T1定时器入口

AJMP T1INT1

ORG 30H

/*-------------------------------------------------------------------------------------------*/

/*-----------初始化函数-----------*/

MAIN:

        MOV SP,#60H

        MOV R4,#10        ;100ms;时钟

        MOV R5,#10         ;100ms;秒表


        MOV TMOD,#11H

        MOV TL0,#(65535-7986)MOD 256;#9EH ;定时中断子程序。重装定时常数

        MOV TH0,#(65535-7986)/256;#58H ;10ms


        MOV TL1,#(65535-7986)MOD 256;#9EH ;定时中断子程序。重装定时常数

        MOV TH1,#(65535-7986)/256;#58H ;10ms

/*-------------------------------------------------------------------------------------------*/

/*-----------调节按键检测-----------*/

KSL:

        LCALL DISP ;秒个调整按键

        JB SECL,KSH          ;没有按下的处理,即SECL为高电平

        LCALL DISP

        JNB SECL,$-3  ;消除抖动

        AJMP SINCL

KSH: LCALL DISP ;秒10调整按键

        JB SECH,KML

        LCALL DISP

        JNB SECH,$-3

        AJMP SINCH

KML: JB MINL,KMH ;分个调整按键

        LCALL DISP

        JNB MINL,$-3

        AJMP MINCL

KMH: JB MINH,KHL ;分10调整按键

        LCALL DISP

        JNB MINH,$-3

        AJMP MINCH

KHL:

        JB HOURL,KHH ;时个调整按键

        LCALL DISP

        JNB HOURL,$-3

        AJMP HINCL

KHH: JB HOURH,K1 ;时10调整按键

        LCALL DISP

        JNB HOURH,$-3

        AJMP HINCH

/*-------------------------------------------------------------------------------------------*/

/*-----------调节按键处理-----------*/                        

SINCL:                           /*秒的数据处理*/

        INC 20H  ;秒个位的调整 +1

        MOV A,20H

        CJNE A,#10,SINC0L   ;

        MOV 20H,#0        ;满10的处理

SINC0L: AJMP KSL           ;返回KSL按键处理

SINCH:

        INC 21H

        MOV A,21H

        CJNE A,#6,SINC0H   ;60s

        MOV 21H,#0

SINC0H: AJMP KSH

MINCL:                                 /*分的数据处理*/

        INC 22H ;分调整                  

        MOV A,22H

        CJNE A,#10,MINC0L        ;60min

        MOV 22H,#0

MINC0L: AJMP KML

MINCH:

        INC 23H ;分调整

        MOV A,23H

        CJNE A,#6,MINC0H        ;60min

        MOV 23H,#0

MINC0H: AJMP KMH

HINCL:                           /*时的数据处理*/

        MOV A,25H        ;时调整                    

        CJNE A,#2,LH1   ;时的十位不满2时的处理

        INC 24H         ;时 >20h

        MOV A,24H

        CJNE A,#4,HINC0L        ;是否到达24                 

        MOV 24H,#0 ;时到24后,数码管清零

HINC0L: AJMP KHL

LH1:               

        INC 24H ;时<20h

        MOV A,24H

        CJNE A,#10,HINC0L  ;24h

        MOV 24H,#0

HINCH:

        INC 25H ;时调整

        MOV A,25H

        CJNE A,#3,HINC0H  ;24h

        MOV 25H,#0

HINC0H: AJMP KHH

/*-------------------------------------------------------------------------------------------*/  

/*-----------控制按键扫描-----------*/

K1: LCALL DISP ;开始键

        JB STRT,K2 ;

        LCALL DISP

        JNB STRT,$-3

        AJMP START

K2: JB STP,K3 ;暂停键

        LCALL DISP

        JNB STP,STOP   ;消抖处理

K3:

        JB CLRR,K4        ;没有按下,转到K4

        LCALL DISP

        JNB CLRR,CLEAR ;清零键

        AJMP KSL           

K4:

        JB SELTS,K5        ;没有按下,返回数码按键监测

        LCALL DISP

        JNB SELTS,SELTHC ;模式切换

K5:

        JB SELTH,TOKSL        ;没有按下,返回数码按键监测

        LCALL DISP

        JNB SELTH,SELTSC ;模式切换

        AJMP KSL               

TOKSL:

        AJMP KSL

/*-------------------------------------------------------------------------------------------*/

/*-----------控制按键处理-----------*/

START:

        ;打开中断总开关

        CPL EA

        AJMP K1

STOP:

        CLR TR0 ;暂停

        CLR TR1

        SETB P1.6;停止报警

        AJMP K2

CLEAR:

        CLR TR0 ;清零

        CLR TR1

        MOV A,#0

        MOV 20H,A

        MOV 21H,A

        MOV 22H,A

        MOV 23H,A

        MOV 24H,A

        MOV 25H,A


        MOV 26H,A

        MOV 27H,A


        AJMP K3

SELTHC: ;时钟模式选择

        SETB TR0

        SETB ET0

        CLR ET1

        CLR TR1

        AJMP K4

SELTSC:        ;秒表模式选择

        SETB TR1

        SETB ET1

        SETB P3.1;清除报警灯

        CLR ET0

        CLR TR0

        AJMP K5

/*-------------------------------------------------------------------------------------------*/

/*---------T0中断处理---------*/

T0INT0:

        MOV TL0,#(65535-7986)MOD 256;#9EH ;定时中断子程序。重装定时常数

        MOV TH0,#(65535-7986)/256;#58H ;10ms        

        DJNZ R4,T0INTR ;10msX10=0.1S,未满20次,跳出中断子程序


        MOV R4,#10

        MOV 26H,#76H;最后一位指定显示H


        INC 27H  ;1S,秒存储单元内数+1

        MOV A,27H

        CJNE A,#10,T0INTR  ;未满10S,跳出中断,返回显示。;满10s,往下执行清零处理,十位+1                                                

        MOV 27H,#0  ;满60S,秒单元清零


        INC 20H  ;1S,秒存储单元内数+1

        MOV A,20H

        CJNE A,#10,T0INTR  ;未满10S,跳出中断,返回显示。;满10s,往下执行清零处理,十位+1                                                

        MOV 20H,#0  ;满60S,秒单元清零

                    ;秒十位+1

        INC 21H ;秒10位

        MOV A,21H

        CJNE A,#6,T0INTR  ;6

        MOV 21H,#0


        INC 22H  ;分个+1

        MOV A,22H

        CJNE A,#10,T0INTR

        MOV 22H,#0


        INC 23H  ;分十+1

        MOV A,23H

[1] [2]
关键字:51单片机  倒计时秒表  可调整时钟 引用地址:51单片机倒计时秒表/可调整时钟

上一篇:单片机波形发生器 (正弦、三角、方波、锯齿波)
下一篇:CH554驱动0.91' 白色OLED显示屏

推荐阅读

工业4.0和物联网正深刻地影响着全球制造业的发展,使制造业朝着智能化、微型化、数字化、集成化等方向转变。要想进一步实现这一转型升级,则需要为各类制造系统和设备配备更加全面、智能的连接器,使工业连接更加灵活、高效、安全、可靠。 作为连接技术的领航者,浩亭追求卓越、不断创新,拓展其基于快速和可靠PushPull推拉式锁定系统的模块化连接器产品系...
(图片来源:新思科技官网)据外媒报道,新思科技(Synopsys)宣布NSITEXE, Inc.利用新思科技的设计、验证和IP解决方案,以及DesignWare®IP,成功研制出基于DFP(数据流处理器)的SoC测试芯片。DFP具有独特架构,结合了用于处理庞大和复杂数据集的CPU和GPU,允许并行数据管理,并支持独立应用的能力,具有高质量和高功效的并行性。NSITEXE, Inc.总裁兼...
对于苹果来说,今年突如其来的疫情打乱了他们的新机发布节奏,所以从目前的情况看,大家期待许久的iPhone 12系列可能会在下月发布。  据外媒最新报道称,苹果在今年新机的命名上,将遵循与2019年iPhone系列相同的命名方案,换句话说就是,2020年的iPhone将被称为“iPhone 12”和“iPhone 12 Pro”。  苹果之前做了一个数字上的加法,然后...
TIM4是STM8S系列单片机中的8位基本型通用定时器TIM4相关寄存器控制寄存器1(TIM4_CR1)中断使能寄存器(TIM4_IER)状态寄存器(TIM4_SR)事件产生寄存器(TIM4_EGR)计数器(TIM4_CNTR)预分频寄存器(TIM4_PSCR)自动重装载寄存器(TIM4_ARR)TIM4初始化1、设置预分频寄存器2、设置自动重装载寄存器3、开定时器更新中断4、开总中断 asm("rim"); IAR中开...

史海拾趣

问答坊 | AI 解惑

WCDMA 发射机原理及Maxim WCDMA参考设计

本文讨论了移动通信向第三代(3G)标准的演化与发展,给出了范围广泛的3G发射机关键技术与规范要求的概述。文章提供了频分复用(FDD)宽带码分多址(WCDMA)系统发射机的设计和测得的性能数据,以Maxim现有的发射机IC进行展示和说明。移动技术的发展:迈 ...…

查看全部问答∨

关于EVC开发应用程序、UI界面的疑惑

以前一直在做硬件设计和驱动开发方面的工作,现在却被安排去做上层应用,我对c、c++稍微熟悉,但是对EVC却不熟悉,什么MFC、ATL、COM等这些东东简直是一无所知,现在的工作基本已经明确了,1、UI操作界面,包括实现GPS、DTV、播放器、EBOOK、ViewIm ...…

查看全部问答∨

GPRS—AT命令:AT+CIPSEND

问一下,为什么我数据发不出去?有没有人知道AT+CIPSEND命令啊? 我前面几个命令都回复OK的: AT+CREG? // check if registration network in 2 seconds interval +CREG: 0,1 // module responses AT+CGATT? // check if attach PDU for 2 ...…

查看全部问答∨

请教一下,我做WinCE的通用程序开发,用什么设备比较好?

如题,我们的产品是一个标准usb hid外设,需要在市面上大部分使用wince系统的设备中使用,现在做研发工作,请问: 1、此方案是否可行? 2、我在开发阶段用什么硬件平台比较好? 3、是否需要为每种不同的硬件平台提供usb hid驱动程序?当然前提还 ...…

查看全部问答∨

wince起来(不是eboot)LCD初始化位置是在哪?

wince起来(不是eboot)LCD初始化位置是在哪?是在显示驱动吗?…

查看全部问答∨

EVC画图,图片从上往下刷的问题

void CUserLoginDlg::DrawBitmap(int Name,int x,int y,int nWidth,int nHeight) {         CWindowDC        dc(this);         CBitmap          &nbs ...…

查看全部问答∨

像墙纸可卷曲的LED灯,离我们不远

replyreload += \',\' + 679761;Timson,如果您要查看本帖隐藏内容请回复…

查看全部问答∨

zigbee问题??(懂的来)

  最近公司要用用ATmel的芯片做zigbee的项目。   但是为什么在ATmel官方提供的ZigBee程序里找不到主函数呢?有朋友说主函数被封装起来了,如果那样的话我怎么启动任务呢?…

查看全部问答∨

冬天到了,给大家推荐个好东东

本帖最后由 ddllxxrr 于 2016-1-7 17:15 编辑   买家常见问题: 1、这个产品安全性如何? USB口的电压是5V,不足以电S一只苍蝇。人体是没有一点感觉的: 2、这个产品对电脑会产生影响吗?. 不会。我们在设计过程中已经把产品功率设计 ...…

查看全部问答∨

有谁做过51单片机读写u盘的实验

谁做过单片机读写U盘的实验 我想把存入u盘的txt格式的文件用单片机读出然后进行数据处理 不知道该怎么做 网上有用ch375做的可是市场上很难买到 还有没有其他的方法…

查看全部问答∨
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京ICP证060456号 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved