您当前的位置:五五电子网电子知识单片机-工控设备51单片机电子钟(1) 正文
电子钟(1)

电子钟(1)

点击数:7178 次   录入时间:03-04 11:37:22   整理:http://www.55dianzi.com   51单片机

程序及操作指南:程序写入上电后 , 将在四个数码管

上显示 0000 ,然后每隔一分钟,数码管将从低位跳变,该

程序模拟的就是时钟。用按键数显键可将时间调至正确时

间。按按键数键一下,数码管将在低位闪烁,然后依次按

一下,数码管的闪烁位置就向前移一个数码管,按到第五

下时,退出。将对应的数码管按闪烁以后,长按按键数显

键,数码管将会显示从 1 至 9 ,显示到所需时间,松开按键

数显键,数码管显示对应所设时间,程序也会记下这个值。

例设置成 2334,

即晚上 11 点 34 分。设置步骤如下:按键一下长按至

数码管分低显示到 4 时松开按键一下长按至

数码管分高位显示到 3 时松开按键一下长按

至数码管时低位显示到 3 时松开按键一下长

按至数码管时高位显示到 2 时松开。

注意:如果小时设置超过 23 ,数码管将显示 ERR (错

误),再按一下键恢恢复。

程序实例( cLOCk.asm ) :

ORG 0000H

AJMP MAIN

ORG 0003H

AJMP INT ; 外中断 0 入口

ORG 000BH

AJMP DIN0 ; 定时器 0 入口

MAIN :

92

DISML EQU 30H

DISMH EQU 31H

DISHL EQU 32H

DISHH EQU 33H ; 显示分,时的个时位

TFLAG EQU 34H ; 时间秒标志,判是否到 50

个 0.2 秒,即 50*0.2=1 秒

SETFLAG EQU 35H ; 设置标志,依次从个位到

十位到百位到千位

ADDFLAG EQU 36H

MFLAG EQU 37H ; 时间分标志,判是否到 60

个一秒,即一分

MOV DISML,#00H

MOV DISMH,#00H

MOV DISHL,#00H

MOV DISHH,#00H ; 显示分,时的个时位初值

MOV TFLAG,#00H ; 时间秒标志初值

MOV SETFLAG,#00H ; 设置标志初值

MOV ADDFLAG,#00H ; 设数加标志

MOV MFLAG,#00H ; 时间分标志

MOV SCON,#00H ; 串行口工作于方式 0 (同

步移位)

MOV TMOD,#00000001B; 定时器 0 工作于方式 1

MOV TL0,#0EEH

MOV TH0,#31H ; 设定时时间为 0.05 秒,定

时 20 次则一秒

SETB EA ; 开总中断

SETB ET0 ; 开定时器 0 中断允许

SETB EX0 ; 开外中断 0 允许

93

SETB TR0 ; 开定时 0 运行

SETB IT0 ; 外中断 0 下降沿触发

DIS:

ACALL DISPLAY ; 调用显示时钟程序

AJMP CRITERION ; 调判断程序,按键是否按

了。

; ACALL DELAY

; AJMP DIS

DIN0:

PUSH ACC

; 设置时是否出错,比如小时设到超过了 23//////////

MOV A,DISHH

CJNE A,#02H,INCC

MOV A,DISHL

CLR C

SUBB A,#04H

JC INCC

MOV SETFLAG,#06H

AJMP RE

;/////////////////////////////////////////////

; 是否到一秒 ///////////////////////////////////

INCC: INC TFLAG

MOV A,TFLAG

CJNE A,#19,RE

MOV TFLAG,#00H

;/////////////////////////////////////////////

; 是否到一分 ///////////////////////////////////

INC MFLAG

94

MOV A,MFLAG

CJNE A,#60,RE

MOV MFLAG,#00H

;/////////////////////////////////////////////

; 计分 /////////////////////////////////////////

INC DISML

MOV A,DISML

CJNE A,#0AH,RE

MOV DISML,#00H

INC DISMH

MOV A,DISMH

CJNE A,#06H,RE

MOV DISMH,#00H

;/////////////////////////////////////////////

; 计时 /////////////////////////////////////////

; 计时分两种情况,分为小时的高位到 2 和没到 2 ,没到 2 时时

低位是逢 10 进位,到 2 后,时低位到 4 则全归 0

MOV A,DISHH

CJNE A,#02H,HJ

;/////////////////////////////////////////////

; 第一种情况 ///////////////////////////////////

INC DISHL

MOV A,DISHL

CJNE A,#04H,RE

MOV DISHL,#00H

MOV DISHH,#00H

AJMP RE

;/////////////////////////////////////////////

95

; 第二种情况 ///////////////////////////////////

HJ: INC DISHL

MOV A,DISHL

CJNE A,#0AH,RE

MOV DISHL,#00H

INC DISHH

;/////////////////////////////////////////////

RE:

MOV TL0,#0EEH

MOV TH0,#31H ; 设定时时间为 0.02 秒,定

时 50 次则一秒

POP ACC

RETI ; 退出中断

INT:

PUSH ACC

JB P3.2,EXIT

MOV R3,#0FFH

DJNZ R3,$

JB P3.2,EXIT ; 判键抖

MOV A,SETFLAG

CJNE A,#00H,ADD2

AJMP SETKEY

ADD2: CJNE A,#06H,B0 ; 是错误了吗,是的,去恢

MOV SETFLAG,#00H

[1] [2]  下一页


本文关键字:电子钟  51单片机单片机-工控设备 - 51单片机