单片机多功能时钟.docx
《单片机多功能时钟.docx》由会员分享,可在线阅读,更多相关《单片机多功能时钟.docx(56页珍藏版)》请在冰点文库上搜索。
单片机多功能时钟
沈阳工程学院
课程设计
设计题目:
多功能时钟程序设计
系别:
班级:
测控本101
学生姓名:
学号:
2010312116
指导老师:
职称:
教授
起止日期:
2013年1月7日至2013年1月18日
沈阳工程学院
课程设计任务书
课程设计题目:
多功能时钟程序设计
系别班级测控本101
学生姓名学号2010312116
指导教师职称教授
课程设计进行地点:
实训F422
任务下达时间:
13年1月7日
起止日期:
13年1月7日起——至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)
分
加权分合计
评阅教师签名:
年月日
课程设计总评成绩
分
系部:
班级:
学生姓名:
中文摘要
时钟,自从它发明的那天起,就成为人类的朋友,但随着时间的推移,科学技术的不断发展,人们对时间计量的精度要求越来越高,应用越来越广。
怎样让时钟更好的为人民服务,怎样让我们的老朋友焕发青春呢?
这就要求人们不断设计出新型时钟。
数字电子钟的设计方法有多种,其中,利用单片机实现的电子钟具有编程灵活,便于电子钟功能的扩充,即可用该电子钟发出各种控制信号,精确度高等特点,同时可以用该电子钟发出各种控制信号。
该数字钟采用液晶显示屏显示其时间与定时时间,即采用P6口输入,P7口输出,由R0输入需显示的时间,再通过延时程序将时间稳定的显示在液晶屏上。
校准时间由外部中断4及开关按键控制;定时时间由外部中断3及开关按键控制,KEY3、KEY4键每按一次其时分秒的数字增加一。
关键字:
单片机,数字钟,校时,定时器
目录
1课程设计要求1
1.1设计主要内容及要求1
1.2对设计论文撰写内容、格式及字数的要求1
1.3时间进度安排1
2课程设计思路2
2.1计时2
2.2校时2
2.3闹铃2
3设计流程图3
4各模块设计4
4.1时钟部分4
时钟程序分析4
时钟部分程序4
4.2定时部分6
定时程序分析6
定时部分程序6
4.3校时部分8
校时程序分析8
校时部分程序8
4.4显示部分10
显示程序分析10
显示部分程序10
5工作过程分析16
5.1时钟程序分析16
5.2定时程序分析17
5.3校时程序分析19
5.4显示程序分析20
6主要元器件介绍23
6.1C8051F020单片机23
6.2液晶显示器24
总结26
致谢27
参考文献27
附录28
1课程设计要求
1.1设计主要内容及要求
1)编写多功能时钟程序
2)能够显示时、分、秒的时钟程序。
3)具有闹钟功能。
4)能够进行时间调整。
1.2对设计论文撰写内容、格式及字数的要求
1)课程设计论文是体现和总结课程设计成果的载体,一般不应少于3000字。
2)学生应撰写时应做到文理通顺,内容正确完整,书写工整,装订整齐。
3)论文要求打印,打印时按《沈阳工程学院毕业设计(论文)撰写规范》的要求
4)课程设计论文装订顺序为:
封面、任务书、成绩评审意见表、中文摘要和关键词、目录、正文、参考文献。
1.3时间进度安排
顺序
阶段日期
计划完成内容
地址
1
1月7日
教师讲解题目,学生查阅相关资料
实训F422
2
1月8日
查阅相关资料、进行方案论证
实训F422
3
1月9日
确定闹钟设置时间调整方法
实训F422
4
1月10、11、14日
编写程序
实训F422
5
1月15、16日
调试程序
实训F422
6
1月17日
撰写论文
实训F422
7
1月18日
论文答辩
实训F422
2课程设计思路
本文主要介绍用单片机编程来实现多功能时钟的方法,本设计由单片机C8051F芯片、LED灯液晶显示屏为核心,辅以必要的程序,构成了一个单片机数字时钟。
与传统时钟相比,它具有走时精确,显示直观等特点。
它的计时周期为12小时,分上下午,显满刻度为“11时59分59秒”,然后上下午交替,另外具有校时、闹钟显示星期等功能等特点。
2.1计时
当T0进入中断后,先给T0计时1s,再计时60s;当秒计数满60s后开始分的计数,同时将秒清零,否则返回程序继续执行;同理当分计数到60min,开始时的计时并共计数12次,与此同时分、秒清零。
当完成12小时的计时后,切换上下午,当从下午切换到上午时为12:
00:
00星期加一,加到8时再变到1,然后返回主程序继续。
2.2校时
校时就是对时间进行调整,现将其赋一初值,然后将初值带入计时程序中,然后将其作为初值,计时从该值开始显示.。
其中初值的设置由外部中断KEY3和开关按键设定,K1、K2、K3、K4、K6分别控制时、分、秒、上下午、星期。
2.3闹铃
定时程序实则就是让系统设定一个闹铃时间,并使LED灯在到达时间时亮。
先判断秒是否相等,不等则继续,相等则判断分,同理分相等时判断时、上下午、星期,当系统设定的秒、分、时、上下午、星期与显示的时间都相等时跳到程序TSR使LED亮。
其中初值的设置由外部中断KEY4和开关按键设定,K1、K2、K3、K4、K6分别控制时、分、秒、上下午、星期。
3设计流程图
4各模块设计
4.1时钟部分
Ø时钟程序分析
主程序主要是使各端口使能,保证各端口正常使用(主程序请参考附录)。
T0工作于定时方式1,进行16位计数。
其中秒的地址为30H,分的地址为31H,小时的地址为32H,上下午的地址是50H,星期的地址是34H。
当T0进入中断后,先给T0赋初值3CB0,定时50ms,循环20次计时1s,再跳入子程序ABC中循环60次计时60s;当秒计数满60s后开始分的计数,同时将秒清零重新计时,否则返回程序继续执行;同理当分计数到60min,程序开始时的计时并共计数12次,当计数满12次时,上下午翻转,计满13次时时针变为1,与此同时分、秒清零需重新开始计数,当从下午变成上午时,星期加1,星期计满7次变为1。
Ø时钟部分程序
$INCLUDE(C8051F020.INC)
ORG0000H
AJMPMAIN
ORG000BH
AJMPT0
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上升沿触发
MOV50H,#00H
MOV60H,#00H
MOVTH0,#3CH;赋初值
MOVTL0,#0B0H
MOV30H,#00H;秒存储地址
MOV31H,#00H;分存储地址
MOV32H,#12H;时存储地址
MOV33H,#00H;上下午储存地址
MOV34H,#01H;星期储存地址
MOV40H,#00H
MOV41H,#00H
MOV42H,#12H
MOV43H,#00H
MOV44H,#01H
MOVR1,#04H;1s循环次数
MOVIE,#82H;中断使能
AJMP$
T0:
MOVTL0,#0B0H;定时50ms
MOVTH0,#3CH
DJNZR1,X;计时1s
MOVR1,#04H
LCALLABC;跳转到计时程序
LCALLDING;跳转到定时程序
LCALLTIME;跳转到显示程序
X:
RETI
ABC:
MOVA,30H
ADDA,#1;秒加1
DAA;做十进制调整
MOV30H,A
CJNEA,#60H,Y;是否等于60s?
若不是,则跳至Y
MOV30H,#00H;若是,则30H清零
MOVA,31H
ADDA,#1;分加1
DAA;做十进制调整
MOV31H,A
CJNEA,#60H,Y;是否等于60s?
若不是,则跳至Y
MOV31H,#00H;若是,则31H清零
MOVA,32H
ADDA,#1;时加1
DAA;做十进制调整
MOV32H,A
CJNEA,#12H,L
MOVA,31H
CJNEA,#00H,L
MOVA,30H
CJNEA,#00H,L
MOVA,50H
CPLA
MOV50H,A
CJNEA,#00H,Y
MOVA,34H
ADDA,#01H
DAA
MOV34H,A
CJNEA,#08H,Y
MOV34H,#01H
L:
MOVA,32H
CJNEA,#13H,Y
MOV32H,#01H
Y:
RET
4.2定时部分
Ø定时程序分析
定时程序实则就是人为设定一个闹铃时间,并使LED灯在到达时间时亮。
将秒赋予A,判断系统是否与设定的一致,不等则继续执行下一条指令,相等则跳转到lop1判断分;再将分赋予A,判断系统是否与设定的一致,不等则继续执行下一条指令,相等则跳转到lop2判断时;然后将时赋予A,判断系统是否与设定的一致,不相等则继续下一条指令,相等则跳到LOP3判断上下午;再将上下午赋予A,判断系统是否与设定的一致,不相等则继续下一条指令,相等则跳到lop4判断星期,将星期赋予A,判断系统是否与设定的相等,不相等则继续下一条指令,相等时跳转到TSR子程序。
定时时间由外部中断4控制,每按一下,其值增加一,时、分、秒、上下午星期由开关按键K1,K2,K3,K4、K6控制。
判断位00H、01H、02H、03、05是否为0,哪个不为0跳转到相应的时、分、秒、上下午、星期程序中。
在42H、41H、40H、60H、44H中存放时、分、秒、上下午、星期。
当系统设定的秒、分、时、上下午、星期与显示的时间都相等时LED灯亮,表示闹铃时间到。
将K1拨到0时,按下KEY4,可熄灭LED灯。
Ø定时部分程序
DING:
MOVA,30H;定时程序
CJNEA,40H,N
AJMPLOP1
LOP1:
MOVA,31H
CJNEA,41H,N
AJMPLOP2
LOP2:
MOVA,32H
CJNEA,42H,N
AJMPLOP3
LOP3:
MOVA,50H
CJNEA,60H,N
AJMPLOP4
LOP4:
MOVA,34H
CJNEA,44H,N
AJMPTSR
N:
RET
TSR:
MOVP1,#00H
RET
KEY4:
LCALLT2
LCALLTIME
MOVP3IF,#00H
RETI
T2:
MOV20H,P5;定时程序
JNB00H,SHI1
JNB01H,FEN1
JNB02H,MIAO1
JNB03H,XINGQI1
JNB05H,ZHOU1
RET
ZHOU1:
MOVA,44H
ADDA,#1
DAA
MOV44H,A
CJNEA,#08H,MB
MOV44H,#01H
RET
XINGQI1:
MOVA,60H
CPLA
MOV60H,A
RET
SHI1:
MOVP1,#0FFH
MOVA,42H
ADDA,#1
DAA
MOV42H,A
CJNEA,#13H,MB
MOV42H,#1
RET
FEN1:
MOVA,41H
ADDA,#1
DAA
MOV41H,A
CJNEA,#60H,MB
MOV41H,#0
RET
MIAO1:
MOVA,40H
ADDA,#1
DAA
MOV40H,A
CJNEA,#60H,MB
MOV40H,#0
MB:
RET
4.3校时部分
Ø校时程序分析
校时部分就是在系统时间不准确的情况下,给系统赋定值,使系统时间可以从该值开始变化,使用外部中断KEY3,先给30H、31H、32H、50H、34H赋所需时间,然后调用程序将其显示。
其中进入中断后调用子程序T1可以由KEY3键设置所定时间每按一次KEY3键值增加一,是调整时还是分或秒,可由开关量输入键K1、K2、K3、K4、K5分别控制。
其主程序中加入了外不中断的有关指令.但需注意的是,在调解时除打开时、分、秒上下午、星期控制键外还需打开K11键。
(主程序只给出所加指令)
Ø校时部分程序
KEY3:
LCALLT1
LCALLTIME
MOVP3IF,#00H
RETI
T1:
MOV20H,P5;校准程序
JNB00H,SHI
JNB01H,FEN
JNB02H,MIAO
JNB03H,XINGQI
JNB05H,ZHOU
RET
ZHOU:
MOVA,34H
ADDA,#1
DAA
MOV34H,A
CJNEA,#08H,MN
MOV34H,#01H
RET
XINGQI:
MOVA,50H
CPLA
MOV50H,A
RET
SHI:
MOVA,32H
ADDA,#1
DAA
MOV32H,A
CJNEA,#13H,MN
MOV32H,#01H
RET
FEN:
MOVA,31H
ADDA,#1
DAA
MOV31H,A
CJNEA,#60H,MN
MOV31H,#0
RET
MIAO:
MOVA,30H
ADDA,#1
DAA
MOV30H,A
CJNEA,#60H,MN
MOV30H,#0
MN:
RET
4.4显示部分
Ø显示程序分析
显示程序就是将程序中的时分秒显示在液晶显示屏上使其看起来更直观、方便。
其中第一行显示系统运行时间,第二行显示定时时间。
该程序主要根据老师所给程序改编,利用子程序LINE设定显示屏的主要参数.让时间显示在上一行且只显示一个时分秒,如“12:
12:
12PMXQ1”,不造成显示多个的后果。
NCD为常函数表,将0-9、A、P、M、X、Q数字和字母依次存放到以左边标号为起始地址的存储单元中。
TIME中就是将时分秒的十位、各位分别赋予R0,还有判断50H中是00H还是0FFH,如果是00H就显示上午AM,然后星期加一,如果是0FFH就显示下午PM,然背后调用查表程序将其显示在液晶屏上。
值得注意的是:
时与分、分与秒之间需将冒号也显示出来。
同理,定时时间的显示在第二行,由TIME1控制。
Ø显示部分程序
TIME:
CLRA
MOVXBR0,A
LCALLLCD
MOVDPTR,#NCD
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
MOVA,50H
CJNEA,#0FFH,LOPA
MOVR0,#12
LCALLLINE1
LCALLDELAY
MOVR0,#13
LCALLLINE1
LCALLDELAY
AJMPLOPP
LOPA:
MOVR0,#11
LCALLLINE1
LCALLDELAY
MOVR0,#13
LCALLLINE1
LCALLDELAY
LOPP:
MOVR0,#14
LCALLLINE1
LCALLDELAY
MOVR0,#15
LCALLLINE1
LCALLDELAY
MOVR0,34H
LCALLLINE1
LCALLDELAY
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
MOVA,60H
CJNEA,#0FFH,LOPA1
MOVR0,#12
LCALLLINE1
LCALLDELAY
MOVR0,#13
LCALLLINE1
LCALLDELAY
LJMPLOP44
LOPA1:
MOVR0,#11
LCALLLINE1
LCALLDELAY
MOVR0,#13
LCALLLINE1
LCALLDELAY
LOP44:
MOVR0,#14
LCALLLINE1
LCALLDELAY
MOVR0,#15
LCALLLINE1
LCALLDELAY
MOVR0,44H
LCALLLINE1
LCALLDELAY1
RET
LINE1:
MOVA,R0
ANLA,#0FH
MOVCA,@A+DPTR
MOVP7,A
MOVP6,#05H
MOVP6,#04H
RET
LCD:
LCALLDELAY
MOVP7,#38H
MOVP6,#01H
MOVP6,#00H
LCALLDELAY
MOVP7,#0EH
MOVP6,#01H
MOVP6,#00H
LCALLDELAY
MOVP7,#06H
MOVP6,#01H
MOVP6,#00H
LCALLDELAY
MOVP7,#01H
MOVP6,#01H
MOVP6,#00H
LCALLDELAY
RET
DELAY:
MOVR6,#50
DELAY0:
MOVR5,#50
DJNZR5,$
DJNZR6,DELAY0
RET
DELAY1:
MOVR4,#35;DD
DELAY2:
MOVR3,#150
DELAY3:
MOVR2,#250
DJNZR2,$
DJNZR3,DELAY3
DJNZR4,DELAY2
RET
NCD:
DB'0','1','2','3','4','5','6','7','8','9',':
','A','P','M','X','Q','';常数表
NED:
DB'0','1','2','3','4','5','6','7','8','9',':
','A','P','M','X','Q'