基于51单片机的电子闹钟设计报告.docx

上传人:b****4 文档编号:4035644 上传时间:2022-11-27 格式:DOCX 页数:37 大小:192.39KB
下载 相关 举报
基于51单片机的电子闹钟设计报告.docx_第1页
第1页 / 共37页
基于51单片机的电子闹钟设计报告.docx_第2页
第2页 / 共37页
基于51单片机的电子闹钟设计报告.docx_第3页
第3页 / 共37页
基于51单片机的电子闹钟设计报告.docx_第4页
第4页 / 共37页
基于51单片机的电子闹钟设计报告.docx_第5页
第5页 / 共37页
点击查看更多>>
下载资源
资源描述

基于51单片机的电子闹钟设计报告.docx

《基于51单片机的电子闹钟设计报告.docx》由会员分享,可在线阅读,更多相关《基于51单片机的电子闹钟设计报告.docx(37页珍藏版)》请在冰豆网上搜索。

基于51单片机的电子闹钟设计报告.docx

基于51单片机的电子闹钟设计报告

 

*********大学********学院

 

电子闹钟设计报告

 

专业:

******

学号:

******

姓名:

*******

 

一.仿真电路图:

二.器件

30P电容2个

12MHZ晶振1个

喇叭1个

38译码器1个

89c52单片机1个

按键4个

5V电源

300欧电阻7个

8位共阴数码管1个

 

三.流程图:

电子闹钟主流程图:

调时、调日期、调星期流程图:

倒计时结束流程图:

音乐播放流程图:

闹铃功能流程图:

四.功能介绍:

有计时,计日期,计星期,调时、调日期、调星期、闹钟、调闹钟、音乐闹铃、秒表、99秒倒计时、60秒倒计时、5秒倒计时、倒计时结束播放提醒音乐、直接按键播放音乐共计15个小的功能,分为四个功能模块,用四个按键来实现

1.调时,查看日期以及调日期,查看星期以及调星期

按键1进入该模块后,显示该模块的界面“1234”,分别代表在该界面中要用到的按键编号。

此时按1即进入调时界面,显示当前时间,按1秒加1,按2分加1,按3时加1,按4退出该界面而回到模块界面。

此时按2即进入查看日期以及调日期的界面,显示当前日期,按1天加1,按2月加1,按3年加1,按4退出该界面而回到模块界面。

此时按3即进入查看星期以及调星期的界面,显示当前星期,按1星期加1,按4退出该界面而回到模块界面。

此时按4则退出功能模块1而回到主界面。

2.调闹钟

进入该模块时,显示闹钟时间,按1秒加1,按2分加1,按3时加1,按4退出调闹钟模块而回到主界面

3.秒表,倒计时

进入该模块后,显示界面“124”,分别代表在该界面中要用到的按键编号。

此时按1进入秒表计时状态,按4退出,回到模块界面。

此时按2进入99秒倒计时状态,按1切换到60秒倒计时,按1切换到5秒倒计时,在倒计时进行中,按4可以回到模块界面。

此时按4,可以回到主界面

4.音乐

进入该界面后,显示界面“00-00-00”,按1播放歌曲1,按2播放歌曲2,按3播放歌曲3,按4播放歌曲4,在播放歌曲时,按4可以结束播放音乐并且回到主界面。

 

五.程序清单:

;****************************************************************************

AN_JIAN1BITP3.0

AN_JIAN2BITP3.1

AN_JIAN3BITP3.2

AN_JIAN4BITP3.3

SECONDEQU30H

MINUTEEQU31H

HOUREQU32H

TIMEJEQU34H

M_NAOEQU35H

H_NAOEQU36H

S_NAOEQU37H

SECOND_MIAOEQU38H

MINUTE_MIAOEQU39H

B_NAOEQU40H

SECOND_DAOEQU41H

MINUTE_DAOEQU42H

HOUR_DAOEQU43H

SECOND_1EQU44H

HAO_MIAOEQU45H

YEAREQU46H

MONTHEQU47H

DAYEQU48H

XIANSHI1EQU49H

XIANSHI2EQU50H

XIANSHI3EQU51H

XING_QIEQU52H

NUM_YINEQU53H

;*************************************************************

;代码段

ORG00H

JMPSTART

ORG0BH;中断T0入口

LJMPINT_T0

ORG001BH;中断T1入口

LJMPINT_T1

ORG100H

START:

MOVDPTR,#TABLE

MOVNUM_YIN,#0

MOVXING_QI,#01

MOVYEAR,#10

MOVMONTH,#01

MOVDAY,#03

MOVHAO_MIAO,#0

MOVSECOND_MIAO,#0

MOVMINUTE_MIAO,#0

MOVB_NAO,#0

MOVH_NAO,#07

MOVM_NAO,#0

MOVS_NAO,#0

MOVHOUR,#0

MOVMINUTE,#0

MOVSECOND,#0

MOVSECOND_1,#0

MOVTIMEJ,#0

MOVTMOD,#11H

MOVTH0,#3CH

MOVTL0,#0B0H

SETBEA

SETBET1

SETBET0

SETBTR0

;****************************************************

;主循环:

显示当前时间,并检测按键状态,按1进入循环1,按2进入循环2,按3进入循环3,按4进入循环4

MAIN:

MOVXIANSHI1,SECOND

MOVXIANSHI2,MINUTE

MOVXIANSHI3,HOUR

LCALLDISPLAY

JNBAN_JIAN1,KMAIN1_T

JNBAN_JIAN2,KMAIN2_T

JNBAN_JIAN3,KMAIN3_T

JNBAN_JIAN4,KMAIN4_T

MOVA,B_NAO

CJNEA,#0,P_NAO

JMPMAIN

;******************************************************

;检测是否达到所设置的闹钟时刻,若达到则调用闹铃程序

P_NAO:

MOVA,HOUR

CJNEA,H_NAO,MAIN

MOVA,MINUTE

CJNEA,M_NAO,MAIN

MOV56H,#HIGHTABLE1

MOV57H,#LOWTABLE1

MOVNUM_YIN,#0FH

LCALLSTART1

CLRTR1

SETBTR0

LJMPSTART_L

;******************************************************

;跳转服务

KMAIN1_T:

LJMPKMAIN1

KMAIN2_T:

LJMPKMAIN2

KMAIN3_T:

LJMPKMAIN3

KMAIN4_T:

LJMPKMAIN4

;*******************************************************

;主循环中各个按键功能的具体实现,加入了防抖动和应对按键被长时间按下

KMAIN1:

LCALLDELAY

JBAN_JIAN1,MAIN1_T

LJMPTIAO_MAIN1

KMAIN2:

LCALLDELAY

JBAN_JIAN2,MAIN2_T

LJMPTIAO_MAIN2

KMAIN3:

LCALLDELAY

JBAN_JIAN3,MAIN3_T

MOVHAO_MIAO,#0

MOVSECOND_MIAO,#0

MOVMINUTE_MIAO,#0

LJMPTIAO_MAIN3

KMAIN4:

LCALLDELAY

MOVNUM_YIN,#0

JBAN_JIAN4,MAIN4_T

LJMPTIAO_MAIN4

;**************************************************************

;跳转服务

MAIN1_T:

LCALLDELAY

LJMPMAIN1

MAIN2_T:

LCALLDELAY

LJMPMAIN2

MAIN3_T:

LCALLDELAY

LJMPMAIN3

MAIN4_T:

LCALLDELAY

LJMPMAIN4

;*************************************************************

;应对按键被长时间按下的具体代码

TIAO_MAIN1:

JBAN_JIAN1,MAIN1_T

MOVXIANSHI1,SECOND

MOVXIANSHI2,MINUTE

MOVXIANSHI3,HOUR

LCALLDISPLAY

SJMPTIAO_MAIN1

TIAO_MAIN2:

JBAN_JIAN2,MAIN2_T

MOVXIANSHI1,SECOND

MOVXIANSHI2,MINUTE

MOVXIANSHI3,HOUR

LCALLDISPLAY

SJMPTIAO_MAIN2

TIAO_MAIN3:

JBAN_JIAN3,MAIN3_T

MOVXIANSHI1,SECOND

MOVXIANSHI2,MINUTE

MOVXIANSHI3,HOUR

LCALLDISPLAY

SJMPTIAO_MAIN3

TIAO_MAIN4:

JBAN_JIAN4,MAIN4_T

MOVXIANSHI1,SECOND

MOVXIANSHI2,MINUTE

MOVXIANSHI3,HOUR

LCALLDISPLAY

SJMPTIAO_MAIN4

;**************************************************************

;循环1:

显示循环1的界面,检测按键,按1进入调时间的循环,按2进入调日期和查看当前日期的循环,按3进入调星期和查看当前星期的循环,按4退出循环1而回到主循环

MAIN1:

LCALLDISPLAY3

JNBAN_JIAN1,KTIME

JNBAN_JIAN2,KDATE_T

JNBAN_JIAN3,KWEEK_T

JNBAN_JIAN4,KRETURN1_T

JMPMAIN1

;**************************************************************

;跳转服务

KWEEK_T:

LJMPKWEEK

KDATE_T:

LJMPKDATE

KRETURN1_T:

LJMPKRETURN1

;***************************************************************

KTIME:

LCALLDELAY

JBAN_JIAN1,TIME

M1_TIMETIAO:

JBAN_JIAN1,TIME

LCALLDISPLAY3

SJMPM1_TIMETIAO

;**************************************************************

TIME:

MOVXIANSHI1,SECOND

MOVXIANSHI2,MINUTE

MOVXIANSHI3,HOUR

LCALLDISPLAY

JNBAN_JIAN1,KS_JIA1

JNBAN_JIAN2,KM_JIA1

JNBAN_JIAN3,KH_JIA1

JNBAN_JIAN4,KRETURN_TIME2M1

JMPTIME

;**************************************************************

;循环TIME中各个按键功能的具体实现,加入了防抖动和应对按键被长时间按下

KS_JIA1:

LCALLDELAY

JBAN_JIAN1,MAIN1_T1

INCSECOND

MOVA,SECOND

CJNEA,#60,M1_STIAO

MOVSECOND,#0

M1_STIAO:

JBAN_JIAN1,MAIN1_T1

MOVXIANSHI1,SECOND

MOVXIANSHI2,MINUTE

MOVXIANSHI3,HOUR

LCALLDISPLAY

SJMPM1_STIAO

KM_JIA1:

LCALLDELAY

JBAN_JIAN2,MAIN1_T1

INCMINUTE

MOVA,MINUTE

CJNEA,#60,M1_MTIAO

MOVMINUTE,#0

M1_MTIAO:

JBAN_JIAN2,MAIN1_T1

MOVXIANSHI1,SECOND

MOVXIANSHI2,MINUTE

MOVXIANSHI3,HOUR

LCALLDISPLAY

SJMPM1_MTIAO

MAIN1_T1:

LJMPTIME

KH_JIA1:

LCALLDELAY

JBAN_JIAN3,MAIN1_T1

INCHOUR

MOVA,HOUR

CJNEA,#24,M1_HTIAO

MOVHOUR,#0

M1_HTIAO:

JBAN_JIAN3,MAIN1_T1

MOVXIANSHI1,SECOND

MOVXIANSHI2,MINUTE

MOVXIANSHI3,HOUR

LCALLDISPLAY

SJMPM1_HTIAO

KRETURN_TIME2M1:

LCALLDELAY

JBAN_JIAN4,TIME2M1

KRETURN_TIAOM1:

JBAN_JIAN4,TIME2M1

LCALLDISPLAY

SJMPKRETURN_TIAOM1

TIME2M1:

LJMPMAIN1

;*****************************************************************

KDATE:

LCALLDELAY

JBAN_JIAN4,DATE

M1_DTIAO:

JBAN_JIAN4,DATE

LCALLDISPLAY3

SJMPM1_DTIAO

;********************************************************************

;循环DATE:

显示当前日期,并检测按键状态,按1给天加1,按2给月加1,按3给年加1,按4退出循环DATE而回到循环1

DATE:

MOVXIANSHI1,DAY

MOVXIANSHI2,MONTH

MOVXIANSHI3,YEAR

LCALLDISPLAY

JNBAN_JIAN1,KDY_JIA1

JNBAN_JIAN2,KMH_JIA1

JNBAN_JIAN3,KYR_JIA1

JNBAN_JIAN4,KRETURND

JMPDATE

;********************************************************************

;循环DATE中的各个按键功能的实现,加入了防抖动和应对按键被长时间按下

KDY_JIA1:

LCALLDELAY

JBAN_JIAN1,DATE_TD

INCDAY

MOVA,DAY

CJNEA,#32,D_DTIAO

MOVDAY,#01

D_DTIAO:

JBAN_JIAN1,DATE_TD

MOVXIANSHI1,DAY

MOVXIANSHI2,MONTH

MOVXIANSHI3,YEAR

LCALLDISPLAY

SJMPD_DTIAO

KMH_JIA1:

LCALLDELAY

JBAN_JIAN2,DATE_TD

INCMONTH

MOVA,MONTH

CJNEA,#13,D_MTIAO

MOVMONTH,#01

D_MTIAO:

JBAN_JIAN2,DATE_TD

MOVXIANSHI1,DAY

MOVXIANSHI2,MONTH

MOVXIANSHI3,YEAR

LCALLDISPLAY

SJMPD_MTIAO

DATE_TD:

LJMPDATE

KYR_JIA1:

LCALLDELAY

JBAN_JIAN3,DATE_TD

INCYEAR

MOVA,YEAR

CJNEA,#100,D_YTIAO

MOVYEAR,#0

D_YTIAO:

JBAN_JIAN3,DATE_TD

MOVXIANSHI1,DAY

MOVXIANSHI2,MONTH

MOVXIANSHI3,YEAR

LCALLDISPLAY

SJMPD_YTIAO

KRETURND:

LCALLDELAY

JBAN_JIAN4,REDT

D_RTIAO:

JBAN_JIAN4,REDT

MOVXIANSHI1,DAY

MOVXIANSHI2,MONTH

MOVXIANSHI3,YEAR

LCALLDISPLAY

SJMPD_RTIAO

REDT:

LJMPMAIN1

;********************************************************************

KWEEK:

LCALLDELAY

JBAN_JIAN3,WEEK

WEEKM1_TIAO:

JBAN_JIAN3,WEEK

LCALLDISPLAY3

SJMPWEEKM1_TIAO

;*********************************************************************

;循环WEEK:

显示当前的星期,并检测按键状态,按1给星期加1,按4退出循环WEEK而回到循环1

WEEK:

MOVXIANSHI1,XING_QI

MOVXIANSHI2,XING_QI

MOVXIANSHI3,XING_QI

LCALLDISPLAY

JNBAN_JIAN1,KXQ_JIA1

JNBAN_JIAN4,KRETURNW

JMPWEEK

;********************************************************************

;循环WEEK中的各个按键功能的具体实现,加入了防抖动和应对按键被长时间按下

KXQ_JIA1:

LCALLDELAY

JBAN_JIAN1,WEEK_TW

INCXING_QI

MOVA,XING_QI

CJNEA,#08,W_XQTIAO

MOVXING_QI,#01

W_XQTIAO:

JBAN_JIAN1,WEEK_TW

MOVXIANSHI1,XING_QI

MOVXIANSHI2,XING_QI

MOVXIANSHI3,XING_QI

LCALLDISPLAY

SJMPW_XQTIAO

WEEK_TW:

LJMPWEEK

KRETURNW:

LCALLDELAY

JBAN_JIAN4,REWT

W_RTIAO:

JBAN_JIAN4,REWT

MOVXIANSHI1,XING_QI

MOVXIANSHI2,XING_QI

MOVXIANSHI3,XING_QI

LCALLDISPLAY

SJMPW_RTIAO

REWT:

LCALLDELAY

LJMPMAIN1

;******************************************************************

KRETURN1:

LCALLDELAY

JBAN_JIAN4,RE1T

M1_RTIAO:

JBAN_JIAN4,RE1T

MOVXIANSHI1,SECOND

MOVXIANSHI2,MINUTE

MOVXIANSHI3,HOUR

LCALLDISPLAY

SJMPM1_RTIAO

RE1T:

LJMPMAIN

;*************************************************************************

;循环2:

显示闹钟时间,并检测按键状态,按1闹钟分加1,按2闹钟时加1,按3关闭闹钟功能并回到主循环,按4开启闹钟功能并回到主循环

MAIN2:

MOVXIANSHI1,S_NAO

MOVXIANSHI2,M_NAO

MOVXIANSHI3,H_NAO

LCALLDISPLAY

JNBAN_JIAN1,KNM_JIA1

JNBAN_JIAN2,KNH_JIA1

JNBAN_JIAN3,OFF_NAO

JNBAN_JIAN4,ON_NAO

JMPMAIN2

;************************************************************************

;循环2的各个按键功能的具体实现,加入了防抖动和应对按键被长时间按下

KNM_JIA1:

LCALLDELAY

JBAN_JIAN1,MAIN2_T2

INCM_NAO

MOVA,M_NAO

CJNEA,#60,M2_MTIAO

MOVM_NAO,#0

M2_MTIAO:

JBAN_JIAN1,MAIN2_T2

MOVXIANSHI1,S_NAO

MOVXIANSHI2,M_NAO

MOVXIANSHI3,H_NAO

LCALLDISPLAY

SJMPM2_MTIAO

MAIN2_T2:

LJMPMAIN2

KNH_JIA1:

LCALLDELAY

JBAN_JIAN2,MAIN2_T2

INCH_NAO

MOVA,H_NAO

CJNEA,#24,M2_HTIAO

MOVH_NAO,#0

M2_HTIAO:

JBAN_JIAN2,MAIN2_T2

MOVXIANSHI1,S_NAO

MOVXIANSHI2,M_NAO

MOVXIANSHI3,H_NAO

LCALLDISPLAY

SJMPM2_HTIAO

OFF_NAO:

LCALLDELAY

JBAN_JIAN3,RETURN2_T

MOVB_NAO,#0

M2_OTIAO:

JBAN_JIAN3,RETURN2_T

MOVXIANSHI1,S_NAO

MOVXIANSHI2,M_NAO

MOVXIANSHI3,H_NAO

LCALLDISPLAY

SJMPM2_OTIAO

RETURN2_T:

LJMPMAIN

ON_NAO:

LCALLDELAY

JBAN_JIAN4,RETURN2_T

MOVB_NAO,#01

M2_ONTIAO:

JBAN_JIAN4,RETURN2_T

MOVXIANSHI1,S_

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

当前位置:首页 > 工程科技 > 冶金矿山地质

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1