多功能时钟课程设计报告.docx
《多功能时钟课程设计报告.docx》由会员分享,可在线阅读,更多相关《多功能时钟课程设计报告.docx(50页珍藏版)》请在冰豆网上搜索。
多功能时钟课程设计报告
多功能时钟课程设计报告
沈阳工程学院
课程设计
设计题目:
多功能时钟程序设计
系别:
自控系班级:
测控本101
学生姓名:
鞠智恒学号:
2010312140
指导老师:
吕勇军职称:
教授
起止日期:
2013年1月6日至2013年1月18日
沈阳工程学院
课程设计任务书
课程设计题目:
多功能时钟程序设计
系别自控系班级测控本101
学生姓名鞠智恒学号2010312140
指导教师吕勇军职称教授
课程设计进行地点:
实训F422
任务下达时间:
13年1月6日
起止日期:
13年1月6日起——至13年1月18日止
教研室主任年月日批准
多功能时钟程序设计成绩评定表
指导教师评审意见
评价内容
具体要求
权重
评分
加权分
论证
独立查阅文献,制定课程设计方案和日程安排。
0.1
5
4
3
2
工作能力态度
工作态度认真,遵守纪律,出勤情况是否良好,能够独立完成设计工作。
0.2
5
4
3
2
工作量
按期圆满完成规定的设计任务,工作量饱满,
0.2
5
4
3
2
说明书的质量
说明书立论正确,论述充分,文字通顺,技术用语准确,符号统一,书写工整规范。
0.5
5
4
3
2
指导教师评审成绩
(加权分合计乘以12)
分
加权分合计
指导教师签名:
年月日
评阅教师评审意见
评价内容
具体要求
权重
评分
加权分
查文献
查阅文献有广泛性,有综合归纳资料的能力
0.2
5
4
3
2
工作量
工作量饱满,难度适中
0.5
5
4
3
2
说明书的质量
说明书立论正确,论述充分,文字通顺,技术用语准确,符号统一,书写工整规范。
0.3
5
4
3
2
评阅教师评审成绩
(加权分合计乘以8)
分
加权分合计
评阅教师签名:
年月日
课程设计总评成绩
分
系部:
自控系班级:
测控本101学生姓名:
鞠智恒
中文摘要
时钟,自从它发明的那天起,就成为人类的朋友,但随着时间的推移,科学技术的不断发展,人们对时间计量的精度要求越来越高,应用越来越广。
怎样让时钟更好的为人民服务,怎样让我们的老朋友焕发青春呢?
这就要求人们不断设计出新型时钟。
电子时钟主要是采用先进的当代电子技术,使用微型时钟芯片的时钟,与传统的机械钟相比,它的时钟精度,显示直观,无机械传动装置,广泛应用于人们的生活环境之中。
此外,人们在生活和工业、农业生产中对时钟的功能的也提出了许多更高的要求如:
闹钟,日历,所以需要具有多种功能的新型电子时钟。
根据人们的不同需求,我们就需要设计一种具有可以正常显示时钟/日历并具有定时报时功能的多功能电子钟。
通过采集各种电子钟发展的相关资料,对比分析后决定利用单片机技术,实现多功能电子钟的各项设计。
该数字钟采用液晶显示屏显示其时间与定时时间,即采用P6口输入,P7口输出,由R0输入需显示的时间,再通过延时程序将时间稳定的显示在液晶屏上。
校准时间由外部中断4及开关按键控制;定时时间由外部中断3及开关按键控制,KEY3、KEY4键每按一次其时分秒的数字增加一。
关键字:
单片机,数字钟,校时,定时器,日历
1课程设计要求
1.1设计主要内容及要求
1)编写多功能时钟程序
2)能够显示时、分、秒的时钟程序。
3)具有闹钟功能。
4)能够进行时间调整。
1.2对设计论文撰写内容、格式及字数的要求
1)课程设计论文是体现和总结课程设计成果的载体,一般不应少于3000字。
2)学生应撰写时应做到文理通顺,内容正确完整,书写工整,装订整齐。
3)论文要求打印,打印时按《沈阳工程学院毕业设计(论文)撰写规范》的要求
4)课程设计论文装订顺序为:
封面、任务书、成绩评审意见表、中文摘要和关键词、目录、正文、参考文献。
1.3时间进度安排
顺序
阶段日期
计划完成内容
地址
1
1月2日
教师讲解题目,学生查阅相关资料
实训F422
2
1月3日
查阅相关资料、进行方案论证
实训F422
3
1月4日
确定闹钟设置时间调整方法
实训F422
4
1月5、6、9日
编写程序
实训F422
5
1月10、11日
调试程序
实训F422
6
1月12日
撰写论文
实训F422
7
1月13日
论文答辩
实训F422
2课程设计思路
本文主要介绍用单片机编程来实现多功能时钟的方法,本设计由单片机C8051F芯片、开关K1~K8、LED灯及液晶显示屏为核心,编辑一个程序使他们构成了一个单片机数字时钟。
与传统时钟相比,它具有走时精确,显示直观等特点。
它的计时周期为24小时,显满刻度为“23时59分59秒”,另外具有校时、日期、星期、闹钟等功能等特点。
2.1计时
当T0进入中断后,先给T0计时1s,再计时60s;当秒计数满60s后开始分的计数,同时将秒清零,否则返回程序继续执行;同理当分计数到60min,开始时的计时并共计数24次,与此同时分、秒清零。
当完成24小时的计时后,开始日期计数与时分计数原理相同结束计时后返回主程序。
2.2校时
校时就是对时间进行调整,当时钟时刻不准时可以进行校时。
通过开关K1~K4来选择调整时分秒,并用KEY3进行加一调整。
2.3闹铃
定时程序实则就是让系统设定一个闹铃时间,并使LED灯在到达时间时亮灯。
先判断星期是否相等,不等跳出闹铃程序,相等则继续判断时是否相等,不等跳出,相等继续向下判断分和秒。
当系统设定的秒、分、时、星期与显示的时间都相等时跳到程序TSR使LED亮。
定时的时刻由K1、K2、K3、K4来选择时分秒和星期的调整并用KEY4来进行加一调整。
3设计流程图
判断是否为24h
时加一
判断是否相等
4各模块设计
4.1时钟部分
主程序主要是使各端口使能,保证各端口正常使用(主程序请参考附录)。
T0工作于定时方式1,进行16位计数。
其中秒的地址为30H,分的地址为31H,小时的地址为32H,星期地址为33H,日的地址为34H,月的地址为35H,年的地址为36H。
当T0进入中断后,先给T0赋初值3CB0,定时50ms,循环7次计时1s,再跳入加一子程序JIA1中实现秒加一,循环60次计时60s;当秒计数满60s后开始分的计数,同时将秒清零重新计时,否则返回程序继续执行;同理当分计数到60min,程序开始时的计时并共计数24次,同理计时日期。
即时结束后返回主程序等待。
在时钟程序里还加了一个判定K8口的开关来控制计时暂停和继续。
$INCLUDE(C8051F020.INC)
ORG0000H
AJMPMAIN
ORG000BH
AJMPTINT0
ORG0093H
LJMPKEY3
ORG009BH
LJMPKEY4
ORG0100H
MAIN:
MOVWDTCN,#0DEH;关看门狗
MOVWDTCN,#0ADH
MOVOSCICN,#05H;内部振荡4MHz
MOVP1MDOUT,#0FFH;设置P1的输出方式
MOVP74OUT,#0F0H;端口6、端口7输出方式为推挽输出
MOVCKCON,#00H;T0定时器12分频
MOVTMOD,#01H;T0处于工作方式一,16位
MOVTCON,#10H;TR0=1,允许T0计数
MOVXBR2,#40H;交叉开关总使能
MOVEIE2,#30H;中断6、中断7使能
MOVP3IF,#0CH;中断7上升沿触发
MOVTH0,#00H;赋初值
MOVTL0,#00H
MOV30H,#00H;秒存储地址
MOV31H,#00H;分存储地址
MOV32H,#00H;时存储地址
MOV33H,#01H;星期存储地址
MOV34H,#01H;日存储地址
MOV35H,#01H;月存储地址
MOV36H,#00H;年存储地址
MOV40H,#00H;定时秒存储地址
MOV41H,#00H;定时分存储地址
MOV42H,#00H;定时时存储地址
MOV43H,#01H;定时星期存储地址
MOVR1,#07H;1s循环次数
MOVIE,#82H;中断使能
AJMP$
TINT0:
MOVTL0,#00H;定时50ms
MOVTH0,#00H
DJNZR1,X;计时1s
MOVR1,#07H
MOV20H,P5;开关
JNB07H,LOP_1;计时开关
LCALLJIA1;跳转到计时程序
LOP_1:
JNB06H,LOP_2;定时开关
LCALLDING;跳转到定时程序
LOP_2:
LCALLTIME;跳转到显示程序
X:
RETI
JIA1:
MOVA,30H;计时程序
ADDA,#01H;秒加1
DAA;做十进制调整
MOV30H,A
CJNEA,#60H,Y;是否等于60s?
若不是,则跳至Y
MOV30H,#00H;若是,则30H清零
MOVA,31H
ADDA,#01H;分加1
DAA;做十进制调整
MOV31H,A
CJNEA,#60H,Y;是否等于60s?
若不是,则跳至Y
MOV31H,#00H;若是,则31H清零
MOVA,32H
ADDA,#01H;时加1
DAA;做十进制调整
MOV32H,A
CJNEA,#24H,Y;是否等于60s?
若不是,则跳至Y
MOV32H,#00H;若是,则32H清零
MOVA,34H
ADDA,#1
DAA
MOV34H,A
CJNEA,#32H,YB
MOV34H,#01H
MOVA,#35H
ADDA,#1
DAA
MOV35H,A
CJNEA,#13H,YB
MOV35H,#01H
MOVA,36H
INCA
DAA
MOV36H,A
YB:
MOVA,33H
ADDA,#1
DAA
MOV33H,A
CJNEA,#08H,Y
MOV33H,#01H
Y:
RET
4.2定时部分
定时程序实则就是人为设定一个闹铃时间,并使LED灯在到达时间时亮。
将时钟的星期、时、分、秒先后赋值给A,判断是否与设定的闹铃时间一致,不等则跳出子程序返回主程序继续执行下一步,相等则跳转到TSR子程序。
定时时间由外部中断4控制,每按一下,其值增加一,时、分、秒、星期由开关按键K1,K2,K3,K4控制。
将P5给20H判断位00H、01H、02H、03H是否为0,不为0跳转到时分秒程序中。
在43H、42H、41H、40H中存放星期、时、分、秒。
当系统设定的秒、分、时、星期与显示的时间都相等时LED灯亮,表示闹铃时间到。
期间时间会继续显示,但LED灯依旧亮,闭合K1、K2、K3、K4按下KEY4键可熄灭LED灯。
定时功能还可以通过K7来控制关闭K7则显示器显示DINGSHIOFF提示定时功能关闭。
DING:
MOVA,33H;判断闹钟是否启动
CJNEA,43H,N
MOVA,32H
CJNEA,42H,N
MOVA,31H
CJNEA,41H,N
MOVA,30H
CJNEA,40H,N
LJMPTSR
N:
RET
TSR:
MOVP1,#00H;LED灯循环闪烁
RET
KEY4:
LCALLT2
LCALLTIME;显示
MOVP3IF,#00H
RETI
T2:
MOV20H,P5;定时程序
JNB00H,SHI1
JNB01H,FEN1
JNB02H,MIAO1
JNB03H,XQ1
MOVP1,#0FFH;关闭闹钟
RET
SHI1:
MOVA,42H
ADDA,#1
DAA
MOV42H,A
CJNEA,#24H,MB
MOV42H,#00H
RET
FEN1:
MOVA,41H
ADDA,#1
DAA
MOV41H,A
CJNEA,#60H,MB
MOV41H,#00H
RET
MIAO1:
MOVA,40H
ADDA,#1
DAA
MOV40H,A
CJNEA,#60H,MB
MOV40H,#00H
RET
XQ1:
MOVA,43H
ADDA,#1
DAA
MOV43H,A
CJNEA,#08H,MB
MOV43H,#01H
MB:
RET
4.3校时部分
校时部分就是在系统时间不准确的情况下,给系统赋定值,使系统时间可以从该值开始变化,使用外部中断KEY3,先给30H、31H、32H赋所需时间,然后调用程序将其显示。
其中进入中断后调用子程序T1可以由KEY3键设置所定时间每按一次KEY3键值增加一,是调整时还是分或秒,可由开关量输入键K1、K2、K3分别控制。
其主程序中加入了外不中断的有关指令.但需注意的是,在调解时除打开时、分、秒控制键外还需打开K11键。
KEY3:
;KEY3中断程序
LCALLT1
LCALLTIME;显示
MOVP3IF,#00H
RETI
T1:
MOV20H,P5;时间校准程序
JNB04H,RQ;选择修改时间/日期
JNB00H,SHI
JNB01H,FEN
JNB02H,MIAO
JNB03H,XQ
RET
RQ:
JNB00H,NIAN
JNB01H,YUE
JNB02H,RI1
JNB03H,XINGQI
RET
SHI:
MOVA,32H
ADDA,#1
DAA
MOV32H,A
CJNEA,#24H,M
MOV32H,#0
RET
FEN:
MOVA,31H
ADDA,#1
DAA
MOV31H,A
CJNEA,#60H,M
MOV31H,#0
RET
MIAO:
MOVA,30H
ADDA,#1
DAA
MOV30H,A
CJNEA,#60H,M
MOV30H,#0
XQ:
MOVA,33H
ADDA,#1
DAA
MOV33H,A
CJNEA,#08H,M
MOV33H,#01H
M:
RET
NIAN:
MOVA,36H;日期校准
INCA
DAA
MOV36H,A
RET
YUE:
MOVA,35H
ADDA,#1
DAA
MOV35H,A
CJNEA,#13H,ASD
MOV35H,#01H
RET
RI1:
MOVA,34H
ADDA,#1
DAA
MOV34H,A
CJNEA,#32H,ASD
MOV34H,#01H
RET
XINGQI:
MOVA,33H
ADDA,#1
DAA
MOV33H,A
CJNEA,#08H,ASD
MOV33H,#01H
ASD:
RET
4.4显示部分
显示程序就是将程序中的时分秒显示在液晶显示屏上使其看起来更直观、方便。
其中第一行显示系统运行时间,第二行显示定时时间。
通过K6来控制第一行显示时间和日期。
该程序主要根据老师所给程序改编,利用子程序LINE设定显示屏的主要参数.让时间显示在上一行且只显示一个时分秒,如“23:
28:
20”,不造成显示多个的后果。
NCD为常函数表,将0-9数字依次存放到以左边标号为起始地址的存储单元中。
TIME中就是将时分秒的十位、各位分别赋予R0,然背后调用查表程序将其显示在液晶屏上。
值得注意的是:
时与分、分与秒之间需将冒号也显示出来。
同理,定时时间的显示在第二行,由TIME1控制。
TIME:
CLRA;液晶显示程序
MOVXBR0,A
LCALLLCD
MOVDPTR,#NCD
MOV20H,P5
JNB05H,LP1;选择显示时间/日期
MOVA,32H
SWAPA
MOVR0,A
LCALLLINE1
LCALLDELAY
MOVR0,32H
LCALLLINE1
LCALLDELAY
MOVR0,#10
LCALLLINE1
LCALLDELAY
MOVA,31H
SWAPA
MOVR0,A
LCALLLINE1
LCALLDELAY
MOVR0,31H
LCALLLINE1
LCALLDELAY
MOVR0,#10
LCALLLINE1
LCALLDELAY
MOVA,30H
SWAPA
MOVR0,A
LCALLLINE1
LCALLDELAY
MOVR0,30H
LCALLLINE1
LCALLDELAY
LJMPLP2
LP1:
MOVR0,#2
LCALLLINE1
LCALLDELAY
MOVR0,#0
LCALLLINE1
LCALLDELAY
MOVA,36H
SWAPA
MOVR0,A
LCALLLINE1
LCALLDELAY
MOVR0,36H
LCALLLINE1
LCALLDELAY
MOVR0,#11
LCALLLINE1
LCALLDELAY
MOVA,35H
SWAPA
MOVR0,A
LCALLLINE1
LCALLDELAY
MOVR0,35H
LCALLLINE1
LCALLDELAY
MOVR0,#11
LCALLLINE1
LCALLDELAY
MOVA,34H
SWAPA
MOVR0,A
LCALLLINE1
LCALLDELAY
MOVR0,34H
LCALLLINE1
LCALLDELAY
LP2:
MOVR0,#11;NAOZHONG
LCALLLINE1
LCALLDELAY
MOVR0,#12;NAOZHONG
LCALLLINE1
LCALLDELAY
MOVR0,#13;NAOZHONG
LCALLLINE1
LCALLDELAY
MOVR0,33H;NAOZHONG
LCALLLINE1
LCALLDELAY
MOVR0,#11;NAOZHONG
LCALLLINE1
LCALLDELAY
JBP1.0,LOP1
MOVR0,#15;NAOZHONG
LCALLLINE1
LCALLDELAY
MOVR0,#0;NAOZHONG
LCALLLINE1
LCALLDELAY
MOVR0,#14;NAOZHONG
LCALLLINE1
LCALLDELAY
LOP1:
MOV20H,P5
JNB06H,LP3;关闭定时显示
MOVDPTR,#NED
MOVP7,#0C0H
MOVP6,#1H
MOVP6,#0H
MOVR0,#11
LCALLLINE1
LCALLDELAY
MOVA,42H
SWAPA
MOVR0,A
LCALLLINE1
LCALLDELAY
MOVR0,42H
LCALLLINE1
LCALLDELAY
MOVR0,#10
LCALLLINE1
LCALLDELAY
MOVA,41H
SWAPA
MOVR0,A
LCALLLINE1
LCALLDELAY
MOVR0,41H
LCALLLINE1
LCALLDELAY
MOVR0,#10
LCALLLINE1
LCALLDELAY
MOVA,40H
SWAPA
MOVR0,A
LCALLLINE1
LCALLDELAY
MOVR0,40H
LCALLLINE1
LCALLDELAY
MOVR0,#11;NAOZHONG
LCALLLINE1
LCALLDELAY
MOVR0,#12;NAOZHONG
LCALLLINE1
LCALLDELAY
MOVR0,#13;NAOZHONG
LCALLLINE1
LCALLDELAY
MOVR0,43H;NAOZHONG
LCALLLINE1
LCALLDELAY
RET
LP3:
MOVDPTR,#NFD
MOVP7,#0C0H
MOVP6,#1H
MOVP6,#0H
MOVR0,#11
LCALLLINE1
LCALLDELAY
MOVR0,#0
LCALLLINE1
LCALLDELAY
MOVR0,#1
LCALLLINE1
LCALLDELAY
MOVR0,#2
LCALLLINE1
LCALLDELAY
MOVR0,#3
LCALLLINE1
LCALLDELAY
MOVR0,#4
LCALLLINE1
LCALLDELAY
MOVR0,#5
LC