工程设计 04103043吴江平.docx
《工程设计 04103043吴江平.docx》由会员分享,可在线阅读,更多相关《工程设计 04103043吴江平.docx(12页珍藏版)》请在冰豆网上搜索。
工程设计04103043吴江平
工程设计报告
学院:
机电院
班级:
041031
学号:
04103043
姓名:
吴江平
教师:
千博
一、设计简介
随着现代生活的推进,电子时间在人们的生活中已经普及,此电子时钟是一款基于单片机AT98C51的计时工具,它的工作原理是利用程序使定时器每50ms产生一次时间中断,以20次时间中断定义一秒,再利用程序达到每六十秒,秒钟清零,分钟进一,每60分钟,分钟清零,时钟进一,每24小时,时钟清零,并使用八段LED显示管来实现时、分、秒的显示。
二、电路原理图
三、系统功能描述
这是一款基于单片机AT89C51的电子时钟,是通过定时中断来实现计时的。
该电子时钟共有五个按钮,分别为复位电路按钮,时、分、秒控制按钮以及声音控制按钮。
复位电路按钮用于对系统进行复位操作;时、分、秒控制按钮用于对时钟、分钟及秒钟进行调整操作,每按一次,则相应的时间钟数加1;声音控制按钮是用于控制时间控制按钮声音及整点报时声音的开关。
此电子时钟操作简易,能够方便快捷地对时、分秒、以及声音进行控制,并能准确地显示时间,是一款简单实用的电子时钟。
四、程序框图
五、程序清单
HOUREQU30H
MINUTEEQU31H
SECONDEQU32H
T_SECEQU33H
SD_CONBITP1.6
H_CONBITP1.4;数字钟小时控制位
M_CONBITP1.2;数字钟分钟控制位
S_CONBITP1.0;数字钟秒控制位
ORG00H
SJMPMAIN
ORG0BH
LJMPINT_T0
MAIN:
MOVDPTR,#TABLE
MOVHOUR,#0
MOVMINUTE,#0
MOVSECOND,#0
CLRP2.6
LCALLSHOW;检视LED
MOVT_SEC,#0
MOVTMOD,#01H
MOVTH0,#3CH;定时50毫秒
MOVTL0,#80H
MOVIE,#82H
SETBTR0
MOVR4,#0;初始化
MAIN_C:
LCALLDISPLAY
LCALLKEY
LCALLKEY_S
SJMPMAIN_C
****************************************************
;声音开关
KEY_S:
JNBSD_CON,SOUND_C
RET
SOUND_C:
MOVA,R4
CPLA
MOVR4,A
SOUND_C1:
JBSD_CON,KEY_S
LCALLDISPLAY
SJMPSOUND_C1
****************************************************
;判断是否有控制键按下,是哪一个键按下
KEY:
JNBS_CON,KEY_SEC
JNBM_CON,KEY_MIN
JNBH_CON,KEY_HOU
RET
KEY_SEC:
LCALLDELAY_S;去抖动
JBS_CON,KEY
INCSECOND;秒值加1
LCALLSOUND
MOVA,SECOND
CJNEA,#60,W_SEC;判断是否加到60秒
MOVSECOND,#0
LJMPKEY_MINU
KEY_MIN:
LCALLDELAY_S
JBM_CON,KEY
KEY_MINU:
INCMINUTE;分钟值加1
LCALLSOUND
MOVA,MINUTE
CJNEA,#60,W_MIN;判断是否加到60分
MOVMINUTE,#0
LJMPKEY_HOUR
KEY_HOU:
LCALLDELAY_S
JBH_CON,KEY
KEY_HOUR:
INCHOUR;小时值加1
LCALLSOUND
MOVA,HOUR
CJNEA,#24,W_HOU;判断是否加到24小时
MOVHOUR,#0
MOVMINUTE,#0
MOVSECOND,#0
LJMPKEY
****************************************************
;等待按键抬起
W_SEC:
JBS_CON,KEY
LCALLDISPLAY
SJMPW_SEC
W_MIN:
JBM_CON,KEY
LCALLDISPLAY
SJMPW_MIN
W_HOU:
JBH_CON,KEY
LCALLDISPLAY
SJMPW_HOU
****************************************************
;检视八段LED显示
SHOW:
CLRP3.7
MOVP0,#7FH
MOVR5,#125
DELAY_7:
LCALLDELAY_S
DJNZR5,DELAY_7
SETBP3.7
CLRP3.6
MOVR5,#100
DELAY_6:
LCALLDELAY_S
DJNZR5,DELAY_6
SETBP3.6
CLRP3.5
MOVR5,#100
DELAY_5:
LCALLDELAY_S
DJNZR5,DELAY_5
SETBP3.5
CLRP3.4
MOVR5,#100
DELAY_4:
LCALLDELAY_S
DJNZR5,DELAY_4
SETBP3.4
CLRP3.3
MOVR5,#100
DELAY_3:
LCALLDELAY_S
DJNZR5,DELAY_3
SETBP3.3
CLRP3.2
MOVR5,#100
DELAY_2:
LCALLDELAY_S
DJNZR5,DELAY_2
SETBP3.2
CLRP3.1
MOVR5,#100
DELAY_1:
LCALLDELAY_S
DJNZR5,DELAY_1
SETBP3.1
CLRP3.0
MOVR5,#100
DELAY_0:
LCALLDELAY_S
DJNZR5,DELAY_0
SETBP3.0
***********************************************
;定时器中断服务程序,对秒,分钟和小时的计数
INT_T0:
MOVTH0,#3CH
MOVTL0,#80H
INCT_SEC
MOVA,T_SEC
CJNEA,#20,T0_RET;计时1秒
INCSECOND
MOVT_SEC,#0
MOVA,SECOND
CJNEA,#60,T0_RET
INCMINUTE
MOVSECOND,#0
MOVA,MINUTE
CJNEA,#60,T0_RET
INCHOUR
LCALLSOUND
MOVMINUTE,#0
MOVA,HOUR
CJNEA,#24,T0_RET
MOVHOUR,#0
MOVMINUTE,#0
MOVSECOND,#0
MOVT_SEC,#0
T0_RET:
RETI
******************************************
;显示控制子程序
DISPLAY:
MOVA,SECOND;显示秒
MOVB,#10
DIVAB
CLRP3.6
MOVCA,@A+DPTR
MOVP0,A
LCALLDELAY_S
SETBP3.6
MOVA,B
CLRP3.7
MOVCA,@A+DPTR
MOVP0,A
LCALLDELAY_S
SETBP3.7
CLRP3.5
MOVP0,#40H;显示分隔符
LCALLDELAY_S
SETBP3.5
MOVA,MINUTE;显示分钟
MOVB,#10
DIVAB
CLRP3.3
MOVCA,@A+DPTR
MOVP0,A
LCALLDELAY_S
SETBP3.3
MOVA,B
CLRP3.4
MOVCA,@A+DPTR
MOVP0,A
LCALLDELAY_S
SETBP3.4
CLRP3.2
MOVP0,#40H;显示分隔符
LCALLDELAY_S
SETBP3.2
MOVA,HOUR;显示小时
MOVB,#10
DIVAB
CLRP3.0
MOVCA,@A+DPTR
MOVP0,A
LCALLDELAY_S
SETBP3.0
MOVA,B
CLRP3.1
MOVCA,@A+DPTR
MOVP0,A
LCALLDELAY_S
SETBP3.1
RET
******************************************
;延时,用于去抖动及检查LED显示
DELAY_S:
MOVR6,#10
DEL_S1:
MOVR7,#250
DJNZR7,$
DJNZR6,DEL_S1
RET
******************************************
;声音
SOUND:
CJNER4,#0,SOUND_OFF
SETBP2.6
MOVR6,#50
DEL_L1:
MOVR7,#250
DJNZR7,$
DJNZR6,DEL_L1
CLRP2.6
SOUND_OFF:
RET
TABLE:
DB3FH,06H,5BH,4FH,66H
DB6DH,7DH,07H,7FH,6FH
END
六、收获及体会
单片机是我所学专业的主要课程之一,因此我认为单片机课程设计是十分必要而且十分重要的。
尽管刚刚拿到课程设计题目时有点迷惘,不知道如何着手,但通过上网和图书馆查阅相关资料,自己认真钻研以及虚心询问同学,终于解决了一个又一个的困难和障碍,成功完成了任务。
通过本次的工程课程设计,不仅大大地丰富了我的理论知识,而且在实践过程中更令我学会了坚持、耐心和努力。
此次工程课程设计需要运用到许多之前所学过的知识,令我认识到自己以前学习的一些不足之处,例如对以前所学知识的理解不够深刻,掌握得不够牢固,运用不够灵活。
这让我懂得了认真学习的重要性,以及要孜孜不倦地钻研所学过的知识,做得融会贯通,不能一览而过,不求甚解。
在边学习边动手的过程中,我对电子时钟的构造以及原理有了进一步的了解,同时也加深和巩固了我对单片机汇编语言的认识。
除此之外,由于是第一次做单片机,因此在此次工程设计的过程中,无论是电路绘制还是汇编语言编写都难免遇到了不少困难和障碍,例如汇编语言编写出错、电路元件无从入手等。
在面对困难和障碍时,我庆幸自己没有退缩和逃避,而是通过各种方法,迎难而上,以坚持、耐心和努力勇敢无畏地面对困难,克服困难,解决困难。
让我发现问题、分析问题、解决问题以及动手实践的能力都有了很大的提高,并了解到理论知识与实践相结合的重要意义。
从这次的工程设计中,我们真真正正的意识到,在以后的学习中,要理论联系实际,把我们所学的理论知识用到实际当中,学习单机片机更是如此,程序只有在经常的练习的过程中才能提高。
本次课程设计尽管时间不长,但从中所获,将令我受益终生。