今天小编要和大家分享的是自动打铃系统基本方案 自动打铃系统拓展方案,接下来我将从基本方案,拓展方案,软件设计,这几个方面来介绍。

自动打铃系统基本方案 自动打铃系统拓展方案

该系统内设有一服务器,该服务器透过网络与一个以上的自动打铃装置及工作站相连接,该服务器及打铃装置中分别设有一时钟芯片(RTC),该等时钟芯片系用来产生时间讯息,当该打铃装置透过网络定时将时钟芯片(RTC)所产生之时间讯息传送至服务器时,该服务器在接收到该时间讯息,会将本身时钟芯片所产生之时间讯息与之比较,若不符,则将其所产生之时间讯息回馈至各打铃装置上,使各打铃装置之时间讯息统一,而使所设定之打铃时间亦统一,本系统具有打铃时间统一、设备维护方便的优点。

自动打铃系统基本方案,自动打铃系统拓展方案,

基本方案

(1)基本计时和显示功能(用12小时制显示)。包括上下午标志,时、分的数字显示,秒信号指示。

(2)能设置当前时间(含上、下午,时,分)

(3)能实现基本打铃功能,规定:

上午6:00起床铃:打铃5秒、停2秒、再打铃5秒。

下午10:30熄灯铃:打铃5秒、停2秒、再打铃5秒。

铃声可用小喇叭播放,凡是用到铃声功能的均按此处理。

拓展方案

(1)增加整点报时功能,整点时响铃5秒,要求有控制启动和关闭功能。

(2)增加调整起床铃、熄灯铃时间的功能。

(3)增设上午4节课的上下课打铃功能,规定如下:

7.30上课,8.20下课:8.30上课,9.20下课;9.40上课,10.30下课;10.40上课,11.30下课;每次铃声5秒。

软件设计

程序简要说明

1)实现24小时制电子钟,8位R1,#0;调整选择键功能标志:0正常走时、1调时、2调分、3调秒

MOV20H,#00H;用于控制秒基准时钟源的产生

MOV21H,#00H;清零秒寄存器

MOV22H,#00H;清零分寄存器

MOV23H,#00H;清零时寄存器

MOV24H,#00H;用于控制调时闪烁的基准时钟的产生

MOVIp,#02H;Ip,IE初始化

MOVIE,#82H

MOVTMOD,#01H;设定定时器0工作方式1

MOVTH0,#3CH

MOVTL0,#0B0H;赋定时初值,定时50ms

SETBTR0;启动定时器0

MOVSp,#40H;重设堆栈指针

/*****主程序*****/

MAIN:

CJNER1,#00H,MAIN1;是否为正常走时状态

LCALLBIJIAO1;调用起床、熄灯打铃比较子程序

LCALLBIJIAO2;调用上、下课打铃比较子程序

LCALLDALING1;调用响铃方式1执行子程序

LCALLDALING2;调用响铃方式2执行子程序

MAIN1:

LCALLDISpLAY;调用显示子程序

LCALLKEY[_]SCAN;调用按键检测子程序

JZMAIN;无键按下则返回重新循环

LCALLSET[_]KEY;调用选择键处理子程序

JB46H,MAIN;如果已进行长按调整(调时快进),则不再执行下面的单步调整

LCALLADD[_]KEY;调用增加键处理子程序

LCALLDEC[_]KEY;调用减少键处理子程序

LCALLDALING[_]KEY;处理强制打铃/强制关闭铃声键

LJMpMAIN;重新循环

/*****定时中断服务程序*****/

TIMER[_]0:

pUSHACC

pUSHpSW;保护现场

MOVTH0,#3CH

MOVTL0,#0B0H;重新赋定时初值

CpL47H;产生脉冲用于调时快进时基

INC24H

MOVA,24H

CJNEA,#10,ADD[_]TIME;产生0.5秒基准时钟,用于调时闪烁

CpL48H;取反调时闪烁标志位

MOV24H,#00H

ADD[_]TIME:

INC20H

MOVA,20H

CJNEA,#20,RETI1;产生1秒基准时钟

MOV20H,#00H;一秒钟时间到,清零20H

MOVA,21H

ADDA,#01H

DAA;作十进制调整

MOV21H,A

CJNEA,#60H,RETI1

MOV21H,#00H;一分钟到

MOVA,22H

ADDA,#01H

DAA

MOV22H,A

CJNEA,#60H,RETI1

MOV22H,#00H;一小时到

MOVA,23H

ADDA,#01H

DAA

MOV23H,A

CJNEA,#24H,RETI1

MOV23H,#00H;到24点,清零小时

RETI1:

pOppSW

pOpACC;恢复现场

RETI;中断返回

/*****显示处理*****/

DISpLAY:

MOVA,21H;秒

ANLA,#0FH

MOV2FH,A;转换出秒个位,存入2FH

MOVA,21H

ANLA,#0F0H

SA

MOV2EH,A;转换出秒十位,存入2EH

JB46H,MIN;如果长按按键(调时快进),则跳过闪烁处理

CJNER1,#3,MIN;如果R1为3,闪烁秒位待调整

JB48H,MIN

MOV2FH,#0AH;使该位为10,查表得到使该位不显示的输出

MOV2EH,#0AH

MIN:

MOVA,22H;分

ANLA,#0FH

MOV2DH,A;转换出分个位,存入2DH

MOVA,22H

ANLA,#0F0H

SWApA

MOV2CH,A;转换出分十位,存入2CH

JB46H,HOUR;如果长按按键(调时快进),则跳过闪烁处理

CJNER1,#2,HOUR;如果R1为2,闪烁分位待调整

JB48H,HOUR

MOV2DH,#0AH;使该位为10,查表得到使该位不显示的输出

MOV2CH,#0AH

HOUR:

MOVA,23H;时

ANLA,#0FH

MOV2BH,A;转换出时个位,存入2BH

MOVA,23H

ANLA,#0F0H

SWApA

MOV2AH,A;转换出时十位,存入2AH

JB46H,DISp;如果长按按键(调时快进),则跳过闪烁处理

CJNER1,#1,DISp;如果R1为1,闪烁时位待调整

JB48H,DISp

MOV2BH,#0AH;使该位为10,查表得到使该位不显示的输出

MOV2AH,#0AH

/*****数码管动态扫描显示*****/

DISp:

MOVDpTR,#TABLE

MOVA,2FH

MOVCA,@A+DpTR

MOVp0,A

CLRp2.7

LCALLDELAY

SETBp2.7;显示秒个位

MOVA,2EH

MOVCA,@A+DpTR

MOVp0,A

CLRp2.6

LCALLDELAY

SETBp2.6;显示秒十位

MOVA,#0BFH

MOVp0,A

CLRp2.5

LCALLDELAY

SETBp2.5;显示“-”

MOVA,2DH

MOVCA,@A+DpTR

MOVp0,A

CLRp2.4

LCALLDELAY

SETBp2.4;显示分个位

MOVA,2CH

MOVCA,@A+DpTR

MOVp0,A

CLRp2.3

LCALLDELAY

SETBp2.3;显示分十位

MOVA,#0BFH

MOVp0,A

CLRp2.2

LCALLDELAY

SETBp2.2;显示“-”

MOVA,2BH

MOVCA,@A+DpTR

MOVp0,A

CLRp2.1

LCALLDELAY

SETBp2.1;显示时个位

MOVDpTR,#TABLE1;该位使用TABLE1以消除前置0

MOVA,2AH

MOVCA,@A+DpTR

MOVp0,A

CLRp2.0

LCALLDELAY

SETBp2.0;显示时十位

RET

/*****按键检测子程序*****/

KEY[_]SCAN:

CLR46H;关闭长按调整(调时快进)标志

MOVp1,#0FFH;将p1口设置成输入状态

MOVA,p1

CpLA

ANLA,#0FH;p1口低4位连接4个按键,只判断该4位

JZEXIT[_]KEY;无键按下则返回

LCALLDELAY;延时去抖动

MOVA,p1;重新判断

CpLA

ANLA,#0FH

JZEXIT[_]KEY;键盘去抖动

MOVR5,A;临时将键值存入R5

MOVR4,#00H;用于控制调时快进速度

;设置为00H是为了在进入长按处理前加长延时区分用户的长按与短按,防止误快进

LOOp:;进入长按处理

LCALLDISpLAY;使长按时显示正常

MOVA,p1

CpLA

ANLA,#0FH

JB47H,LOOp1

INCR4;调时快进间隔时间基准加1

LOOp1:

CJNER1,#03H,LOOp2;如果调秒时长按,则不处理

LJMpLOOp3

LOOp2:

CJNER4,#99H,LOOp3

MOVR4,#70H;确认用户长按后,重新设定起始值,加快调时快进速度

SETB46H;长按调整(调时快进)标志

LCALLADD[_]KEY

LCALLDEC[_]KEY

LOOp3:

JNZLOOp;等待键释放

MOVA,R5;输出键值

RET

EXIT[_]KEY:

RET

/*****延时子程序*****/

DELAY:

MOVR7,#150

DJNZR7,

关于自动打铃系统,电子元器件资料就介绍完了,您有什么想法可以联系小编。