历史上的今天
今天是:2024年09月07日(星期六)
2020年09月07日 | 51单片机倒计时秒表/可调整时钟
2020-09-07 来源:51hei
(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
史海拾趣
|
本文详细讨论LED 照明系统设计的六个设计步骤: (1)确定照明需求; (2)确定设计目标估计光学; (3)热和电气系统的效率; (4)计算需要的LED 数量; (5)对所有的设计可能都予以考虑,从中选择最佳设计; (6)完成最后步骤。 虽然本文以一个室内 ...… 查看全部问答> |
|
wince下2416(2450)对串口芯片16550的驱动项目-----求助! 各位仁兄: 小弟有项目如下: 基于S3C2416的串口驱动程序,串口芯片16550, 现在有MDD+PDD(中间层)缺少最低层对16550的初始化代码 由于时间关系,现将项目外包 有意 ...… 查看全部问答> |
|
高级软件工程师 (北京) 职责描述: - 为FPGA和ASIC的调试、验测工作建立软件及必要的环境; - 开发如I2C, SPI, MPEG2/MPEG4 和USB等固件; - 与其它相关部门的工程师合作(如,硬件、ASIC工程师)完成调试及验测工作。 职位需求: - MS相 ...… 查看全部问答> |
|
NTSTATUS NewNtReadFile( IN HANDLE FileHandle, IN HANDLE Event OPTIONAL, IN PIO_APC_ROUTINE ApcRoutine OPTIONAL, IN PVOID &nb ...… 查看全部问答> |
|
我把程序烧到flash里面之后,SCI就接收不到东西了,但发送还可以正常运行,请问这是 什么问题? ECAN的中断怎么进不去,那些寄存器怎么配置???我已经搞了好几天,但不知道什么问题,希望EEWORLD的老师帮忙解决一下,我是个新手,在这了,学生 ...… 查看全部问答> |
|
用Quartus配置管脚中的I/O standard 中怎么选择啊 求助:用Quartus配置管脚时,pin planner中的I/O standard 中怎么选择啊?电压是根据Bank中的硬件输入电压配置,但后面的电平标准,比如TTL,CMOS,PCI等怎么选择啊????根据硬件电路选还是自己选????… 查看全部问答> |
|
使用UDP multicast进行数据接收,可以工作挺长时间,比如1小时或更长,然后就不能接收。 此时如果拔掉网线,然后再插上网线,则可继续接收; 或者,停止发送程序,然后再发,则收端可以继续接收。 请问是否是阻塞了,如果是,如何查或解决。谢谢 ...… 查看全部问答> |




