51单片机数码管时钟电路的设计AT89C51Word格式文档下载.docx

上传人:b****3 文档编号:7853645 上传时间:2023-05-09 格式:DOCX 页数:34 大小:35.80KB
下载 相关 举报
51单片机数码管时钟电路的设计AT89C51Word格式文档下载.docx_第1页
第1页 / 共34页
51单片机数码管时钟电路的设计AT89C51Word格式文档下载.docx_第2页
第2页 / 共34页
51单片机数码管时钟电路的设计AT89C51Word格式文档下载.docx_第3页
第3页 / 共34页
51单片机数码管时钟电路的设计AT89C51Word格式文档下载.docx_第4页
第4页 / 共34页
51单片机数码管时钟电路的设计AT89C51Word格式文档下载.docx_第5页
第5页 / 共34页
51单片机数码管时钟电路的设计AT89C51Word格式文档下载.docx_第6页
第6页 / 共34页
51单片机数码管时钟电路的设计AT89C51Word格式文档下载.docx_第7页
第7页 / 共34页
51单片机数码管时钟电路的设计AT89C51Word格式文档下载.docx_第8页
第8页 / 共34页
51单片机数码管时钟电路的设计AT89C51Word格式文档下载.docx_第9页
第9页 / 共34页
51单片机数码管时钟电路的设计AT89C51Word格式文档下载.docx_第10页
第10页 / 共34页
51单片机数码管时钟电路的设计AT89C51Word格式文档下载.docx_第11页
第11页 / 共34页
51单片机数码管时钟电路的设计AT89C51Word格式文档下载.docx_第12页
第12页 / 共34页
51单片机数码管时钟电路的设计AT89C51Word格式文档下载.docx_第13页
第13页 / 共34页
51单片机数码管时钟电路的设计AT89C51Word格式文档下载.docx_第14页
第14页 / 共34页
51单片机数码管时钟电路的设计AT89C51Word格式文档下载.docx_第15页
第15页 / 共34页
51单片机数码管时钟电路的设计AT89C51Word格式文档下载.docx_第16页
第16页 / 共34页
51单片机数码管时钟电路的设计AT89C51Word格式文档下载.docx_第17页
第17页 / 共34页
51单片机数码管时钟电路的设计AT89C51Word格式文档下载.docx_第18页
第18页 / 共34页
51单片机数码管时钟电路的设计AT89C51Word格式文档下载.docx_第19页
第19页 / 共34页
51单片机数码管时钟电路的设计AT89C51Word格式文档下载.docx_第20页
第20页 / 共34页
亲,该文档总共34页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

51单片机数码管时钟电路的设计AT89C51Word格式文档下载.docx

《51单片机数码管时钟电路的设计AT89C51Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《51单片机数码管时钟电路的设计AT89C51Word格式文档下载.docx(34页珍藏版)》请在冰点文库上搜索。

51单片机数码管时钟电路的设计AT89C51Word格式文档下载.docx

主循环流程图大致如下:

(一)主循环流程图

定时器1中断服务程序流程图如下:

(二)定时器1中断服务程序流程图

3.系统主要程序的设计

1)主程序

本设计中的主程序主要负责对键盘扫描及显示数据,还包括判断是否闹钟正在活动。

若键盘中的P1.6(模式键)或P1.7(设置键)被按下,登记将被执行的功能,主循环不负责功能模块的执行。

若闹钟正在活动,调用蜂鸣函数。

其中bPalse标识了一秒的前半秒和后半秒,是为了控制显示数据的半秒闪烁。

主函数还包含初始化操作,以下省略。

loop:

MOVB,#01111111B;

位选通信号

MOVR0,#prebuf-01H;

数据缓冲区

nextnum:

ACALLkeyscan;

扫描键盘

INCR0

MOVA,@R0

PUSHACC

MOVA,B

RLA

MOVB,A

JBbPalse,show

ORLA,dmask

JNBbAlaIng,show

MOVled,#0FFH

ACALLbeeponce若闹铃活动,调用蜂鸣函数

DECSP

SJMPloop

show:

PUSHACC

ACALLdisplayone在特定数码管显示数据。

ACALLdelay

CJNER0,#prebufend,nextnum

keyscan:

JNBkeym,keymode;

若切换键被按下,登记“切换”功能

JNBkeyc,keyconf;

若设置键被按下,登记“设置”功能

RET

;

=====================

logfunction'

mode'

keymode:

MOVfunclog,#01H;

keyact

ACALLfuncperform;

激活“功能执行模块”(见下文),

config'

keyconf:

MOVfunclog,#02H

激活“功能执行模块”(见下文)

2)显示子程序

在特定数码管显示数据,通过堆栈传递参数。

第一个参数是待显示的字符,第二个参数是位选通信号。

函数通过查字形码表将字形显示至数码管。

displayone:

PUSHPSW

MOVA,R0

PUSHB

MOVPSW,#00H

MOVA,SP

SUBBA,#07H

MOVR0,A

MOVB,@R0

PUSHDPL

PUSHDPH

MOVDPTR,#metrix

MOVCA,@A+DPTR

JNBbPalse,noft

ANLA,ft

noft:

MOVlmask,B

MOVled,A

POPDPH

POPDPL

POPB

POPACC

POPPSW

3)定时器TO中断服务程序

电子钟的计秒程序,负责计算时间。

act:

;

maintimeractor

CJNER2,#0BH,con

CLRbPalse;

palsepersecond

con:

DJNZR2,leave

MOVR2,#14H

MOVA,s;

s

INCA

DAA

MOVs,A

CJNEA,#60H,incn

MOVs,#00H

MOVA,m;

m

MOVm,A

MOVm,#00H

MOVA,h;

h

MOVh,A

CJNEA,#24H,incn

MOVh,#00H

incn:

SETBbPalse

JNBbAlaOn,alarmoff

ACALLcheckala;

checkalarmwhenalarmisON

alarmoff:

MOVA,npage

ANLA,#02H

JNZskip

ACALLprepare

skip:

leave:

MOVTH0,#03CH

MOVTL0,#0B0H

RETI

4)模式切换程序

切换设置模式,包括时间时设置、时间分设置、时间秒设置、闹铃开关设置、闹铃时设置、闹铃分设置。

mode:

mode

SETBP3.2

JNBbAlaIng,modeskip

SETBbKick;

stopalarm

CLRbAlaIng

SJMPmodeleave

modeskip:

MOVnpage,#00H

MOVDPTR,#maskdat

MOVA,cmode

CJNEA,#07H,enmode

MOVA,#00H

enmode:

MOVcmode,A

ANLA,#04H

JZnotalapage

MOVnpage,#02H

ACALLpreala;

时钟调整页准备

notalapage:

MOVdmask,A;

设置时闪烁

modeleave:

5)模式设置程序

对时间量执行加1,特别的闹铃开关执行开关设置。

conf:

conf

SETBP3.3

JNBbAlaIng,confskip

SETBbKick;

CLRbAlaIng

SJMPconfleave

confskip:

MOVDPTR,#confset

JMP@A+DPTR

set1:

时设置

MOVA,h

CJNEA,#24H,notset

SJMPnotset

set2:

分设置

MOVA,m

CJNEA,#60H,notset

set3:

秒设置

MOVA,s

MOVs,A

setae:

CPLbAlaOn;

闹钟开关

SJMPnotseta

setah:

MOVA,ah;

闹钟时设置

MOVah,A

CJNEA,#24H,notseta

MOVah,#00H

setam:

MOVA,am;

闹钟分设置

MOVam,A

CJNEA,#60H,notseta

MOVam,#00H

notseta:

ACALLpreala

CLRbKick

notset:

confleave:

confset:

SJMPset1

SJMPset2

SJMPset3

SJMPsetae

SJMPsetah

SJMPsetam

6)功能执行程序

执行程序负责执行被登记的功能,功能由主循环扫描键盘并登记。

主循环中,当扫描到有键盘按下时,登记下将被执行的功能,然后启动定时器1,定时器1的中断服务程序即是功能执行程序,中断程序分析并执行被登记的功能。

encperform:

CLRTR1;

actonce

MOVA,funclog

CJNEA,#01H,encconf

JNBkeym,encperformleave;

actionjustatbuttonup;

ACALLmode;

do'

function

SJMPencperformleave

encconf:

CJNEA,#02H,encperformleave

JNBkeyc,encperformleave;

ACALLconf;

encperformleave:

四、完整源代码

sEQU30H

mEQU31H

hEQU32H

dmaskEQU33H

cmodeEQU34H

ftEQU36H

prebufEQU37H;

8bytebuffer

prebufendEQU3EH

amEQU3FH;

alarmminite

ahEQU40H;

alarmhour

npageEQU41H;

functionpage

funclogEQU42H;

functoact

stackEQU4FH

pin

ledEQUP0

lmaskEQUP2

beepEQUP3.3

keymEQUP1.6;

key'

keycEQUP1.7;

bitaddr

bPalseEQU00H

bAlaIngEQU01H

bAlaOnEQU02H

bKickEQU03H

metrixelement

m_noneEQU0AH

m_oEQU0BH

m_fEQU0CH

m_nEQU0DH

org0000H

LJMPstart

org0003H

LJMPmodelogger;

INT0tomode

org000BH

LJMPact;

timer

org0013H

LJMPconflogger;

INT1toconfig

org001BH

LJMPencperform;

performer

org0100H

start:

MOVSP,#stack

MOVTMOD,#11H

MOVTH0,#3CH

MOVR2,#14H;

R2usedbyT0

MOVdmask,#00H

MOVcmode,#00H

MOVah,#23H

MOVam,#59H

SETBEA

SETBET0;

T0

SETBPT0

SETBTR0

SETBET1;

T1

SETBEX0;

INT0

SETBIT0

SETBEX1;

INT1

SETBIT1

SETBP3.2

SETBP3.3

SETBkeym

SETBkeyc

CLRbAlaIng

CLRbAlaOn

CLRbKick

MOVB,#01111111B

MOVR0,#prebuf-01H

ACALLkeyscan

MOVled,#0FFH;

clrledwhenalarm

ACALLbeeponce

ACALLdisplayone

SJMPloop;

endstart

beeponce:

CPLbeep

MOVR5,#02H

beeploop2:

MOVR6,#0FFH

beeploop1:

NOP

DJNZR6,beeploop1

DJNZR5,beeploop2

RET;

endbeeponce

displayonecharacter

@paramcharCharactertodisplay

@parammaskPositioncharactertodisplay

enddisplayone

delay:

MOVA,R5

MOVA,R6

MOVR5,#03H

dloopo:

dloop:

DJNZR6,dloop

DJNZR5,dloopo

MOVR6,A

MOVR5,A

enddelay

ORG0200H

preparetimedatas

tothedisplaybuffer

prepare:

MOVft,#11011111B;

enableft

MOVA,R1

MOVR1,#prebuf

MOV@R1,#m_none

INCR1

SWAPA

ANLA,#0FH

MOV@R1,A

ANLB,#0FH

MOV@R1,B

MOV@R1,A

MOVR1,A

endprepare

preparealarmdatas

preala:

MOVft,#0FFH;

noft

MOV@R1,#m_o

JNBbAlaOn,alaoff

MOV@R1,#m_n

SJMPalacon

alaoff:

MOV@R1,#m_f

alacon:

MOVA,ah

MOVA,am

endpreala

ORG0300H

performaction

preparetodofunction

funcperform:

MOVTH1,#0D8H

MOVTL1,#0F0H

SETBTR1

modelogger:

MOVfunclog,#01H

ACALLfuncperform

conflogger:

ORG0400H

tochangefunction

orstopalarmwh

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 自然科学 > 物理

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2