单片机课程设计定时闹钟报告书.docx
《单片机课程设计定时闹钟报告书.docx》由会员分享,可在线阅读,更多相关《单片机课程设计定时闹钟报告书.docx(23页珍藏版)》请在冰点文库上搜索。
单片机课程设计定时闹钟报告书
大学
2011级微机原理与接口技术
课程设计报告
课题名称
微机原理与接口技术
姓名
学号
院、系、部
专业
指导教师
2014年月日
一、设计任务及要求:
设计任务:
1、基于单片机的定时闹钟具有时间显示,闹钟响应
编程实现时、分、秒的显示
显示格式为:
时分秒:
09-12-35
2、能按键调整时间的数值;
3、可设定响铃时间,并且在规定时间响铃
4、要求至少调试出任务的前两项。
要求:
首先进行预设计,根据设计的任务要求,先确定设计的硬件电路方案,然后进行硬件电路的初步设计,在计算机上画出硬件电路图,在老师的指导下进行修正硬件电路图,并对所涉及的参数进行计算。
在确定硬件的基础上,要进行软件的总体设计,包括软件主流程的设计以及各子程序的设计,同时,要写出详细的操作说明,如时间的调整方法,显示窗口的时间切换等,以配合软件的设计。
然后进入硬件的调试及编程工作,设计组内的同学可根据任务分工,有调试硬件各功能模块的,如键盘子程序、显示子程序等,有进行整体程序的编制的,各模块的编制过程中要注意资源的衔接。
最后进入联机调试,联机调试的原则也要采用分步走的原则,各个功能模块要逐步套入,通过一个再增加一项功能,从而达到设计的总体要求,不要上来编制个最大的程序,最后无法查找错误。
最后写出设计报告。
指导教师签名:
2014年月日
三、成绩
指导教师签名:
年月日
目录
一、绪言………………………………………………………………………………………1
二、系统设计……………………………………………………………………………………1
2.1系统整体流程图…………………………………………………………………………1
2.2定时闹钟的控制方案论证……………………………………………………………1
2.3单片机的选择方案论证…………………………………………………………………1
2.4键盘选择方案论证………………………………………………………………………2
2.5显示模块的选择方案论证………………………………………………………………2
2.6模块的选择方案论证……………………………………………………………………2
三、硬件电路设计………………………………………………………………………………3
3.1定时闹钟的控制电路图…………………………………………………………………3
3.2行列式键盘的设计……………………………………………………………………3
3.3数码管电路的设计…………………………………………………………………4
3.4蜂鸣器电路的设计…………………………………………………………………4
3.5主要元器件选择…………………………………………………………………………4
四、程序流程图…………………………………………………………………………………5
五、c语言程序设计……………………………………………………………………………5
六、定时闹钟仿真……………………………………………………………………15
6.1Keil调试………………………………………………………………………………15
6.2Proteus调试……………………………………………………………………………16
7、结束语……………………………………………………………………………………16
8、参考文献……………………………………………………………………………………16
1、绪言
本设计是定时闹钟的设计,由单片机AT89C51芯片和LED数码管为核心,辅以必要的电路,构成的一个单片机电子定时闹钟。
定时闹钟设计可采用数字电路实现,也可以采用单片机来完成。
定时闹钟是用数字集成电路构成的,用数码管显示“时”,“分”,“秒”的现代计时装置。
单片机具有集成度高、功能强、通用性好、特别是它能耗低、价格便宜、可靠性高、抗干扰能力强和使用方便等独特的优点,所以单片机现在广泛的应用到家用电器、机电产品、儿童玩具、机器人、办公自动化产品等领域
2、系统设计
2.1设计任务
1、基于单片机的定时闹钟具有时间显示,闹钟响应
编程实现时、分、秒的显示
显示格式为:
时分秒:
09-12-35
2、能按键调整时间的数值;
3、可设定响铃时间
4、要求至少调试出任务的前两项。
2.2方案比较与论证
2.2.1系统整体流程图
2.2.2定时闹钟控制方案论证
闹铃功能的实现涉及到两个方面:
闹铃时间设定和是否闹铃判别与相应处理。
闹铃时间设定模块的设计可参照时间设定模块,这里着重阐述闹铃判别与处理模块的设计问题。
闹铃判别与闹铃处理的关键在于判别何时要进行闹铃。
当时十位、时个位、分十位、分个位中任一位发生改变(进位)时,就必须进行闹铃判别。
译码显示电路将“时”、“分”、“秒”计数器的输出送到七段显示译码驱动器译码驱动,通过六个七段LED显示器显示出来。
闹铃电路根据计时系统的输出状态产生一脉冲信号,然后加上一个高频或低频信号送到放大电路驱动蜂鸣器发声实现报时。
校时电路是直接加一个脉冲信号到时计数器或者分计数器或者秒计数器来对“时”、“分”、“秒”显示数字进行校对调整。
2.2.3单片机的选择方案论证
方案一:
采用可编程逻辑期间CPLD作为控制器。
CPLD可以实现各种复杂的逻辑功能、规模大、密度高、体积小、稳定性高、IO资源丰富、易于进行功能扩展。
采用并行的输入输出方式,提高了系统的处理速度,适合作为大规模控制系统的控制核心。
但本系统不需要复杂的逻辑功能,对数据的处理速度的要求也不是非常高,且从使用及经济的角度考虑我们放弃了此方案
方案二:
采用Atmel公司的AT89S52单片机作为控制器。
AT89S52是一个低功耗,高性能的51内核的CMOS8位单片机,片内含8k空间的可反复擦些1000次的Flash只读存储器,具有256bytes的随机存取数据存储器(RAM),32个IO口,2个16位可编程定时计数器。
方案三:
采用Atmel公司的AT89C51单片机,它是低功耗、高性能的CMOS型8位单片机。
片内带有4KB的Flash存储器,且允许在系统内改写或用编程器编程。
另外,AT89C51的指令系统和引脚与8051完全兼容,片内有128B的RAM、32条I/O口线、2个16位定时计数器、5个中断源、一个全双工串行口等
综合考虑,选择方案三,采用Atmel公司的AT89c51单片机作为控制器
2.2.4键盘选择方案论证
方案一:
采用独立式键盘。
由于各键相互独立,每个按键各接一根输入线,通过检测输入线的电平状态可以很容易的判断哪个按键被按下。
此种键盘适用于按键较少或操作速度较高的场合。
方案二:
采用行列式键盘。
它由行线和列线组成,按键位于行列的交叉点上,行线信号和列线信号分别通过两个接口和CPU相连,通过行列扫描法判定按键的位置,此方案适用于按键较多的场合。
根据自己需要,采用独立式式键盘。
2.2.5显示模块的选择方案论证
方案一:
采用带字库LCD模块显示。
能显示复杂的信息,具有质量轻,体积小,功耗低,指令功能强,接口简单,可靠性强等优点,显示内容丰富,图形美观,易于人机交流。
但是价格昂贵。
方案二:
采用LED数码管显示。
数码管能显示数字和符号,但是占用IO口资源较多,对于简单的电路可以选用此方案。
定时闹钟,电路并不很复杂,选用方案二,显示所需信息。
3硬件电路设计
3.1定时闹钟电路图
图2电子密码锁控制线路图
3.2独立式式键盘的设计
键盘电路如图3所示。
“一键多态”即多功能键的实现思想是,根据按键时刻的系统状态,决定按键采取何种动作,即何种功能。
图3键盘电路
3.3数码管显示电路的设计
本次课程设计采用了6位数码管显示电路。
在6位LED显示时,为了简化电路,降低成本,采用动态显示的方式,6个LED显示器共用一个8位的I/O,6位LED数码管的位选线分别由相应的P2.0~P2.5控制,而将其相应的段选线并联在一起,由一个8位的I/O口控制,即P0口。
译码显示电路将“时”、“分”、“秒”计数器的输出状态菁七段显示译码器译码,通过6位LED七段显示器显示出来。
到达定时电路时根据计时系统的输出状态产生一脉冲信号,然后去触发一音频发生器实现闹铃。
校时电路时用来对“时”、“分”、“秒”显示数字进行校对调整的。
其电路如图3所示。
图4数码管显示电路
3.4蜂鸣器驱动电路的设计
闹钟电路是用比较器来比较计时系统和定时系统的输出状态,如果计时系统和定时系统的输出状态相同,则发出一个脉冲信号,再和一个高频信号混合,送到放大电路驱动扬声器发声,从而实现定时闹响的功能其电路如图5所示。
图5蜂鸣器电路图
3.5主要元器件选择
主要元器件选用型号和数量如表1所示:
表1主要元器件清单
序号
材料名称
规格型号
数量
元件代号
1
单片机
AT89C51
1
U1
2
晶振
12MHz
1
X1
3
电容
45PF100
3
C1C2C3
4
键盘
4*1
4
5
数码管
MPX6
1
6
蜂鸣器
1
Ls1
7
电阻
10k
1
R1
8
排阻
10k
1
RP1
4程序流程图
5C语言程序设计
程序清单:
K1EQUP1.0;在程序开始前定义变量
K2EQUP1.1
K3EQUP1.2
K4EQUP1.3
ORG0000H
LJMPMAIN
ORG000BH
LJMPTIME
ORG0100H
MAIN:
MOVSP,#50H
MOV20H,#00H;时间BINSECOND
MOV21H,#00H;BINMINUTE
MOV22H,#00H;BINHOUR
MOV23H,#01H;闹铃BINMINUTE
MOV24H,#01H;BINHOUR
MOV25H,#00H;定义一个标志位
MOV30H,#00H;时间BCDSECOND
MOV31H,#00H;
MOV32H,#00H;BCDMINUTE
MOV33H,#00H;
MOV34H,#00H;BCDHOUR
MOV35H,#00H;
MOV36H,#01H;闹铃BCDMINUTE
MOV37H,#00H;
MOV38H,#01H;BCDHOUR
MOV39H,#00H;
MOVTMOD,#01H;16位计数器T0,方式1
MOVTH0,#03CH;赋初值
MOVTL0,#0B0H
MOVIE,#10000111B;开中断T0,EA=1
SETBTR0;T0启动计数
MOVR2,#14H;计数器
MOVP2,#0FFH
LOOP:
LCALLTIMEPRO;调用现在时间与闹铃时间比较程序
LCALLDISPLAY1;调用现在时间显示子程序
JBK1,M1;判断按键是否按下
LCALLXIAOZHEN1;调用消抖程序
MOVC,25H.0
JCA1
A1:
CLR25H.0
LCALLSETTIME;调用设置现在时间子程序
LJMPLOOP
M1:
JBK2,M2
LCALLXIAOZHEN2
MOVC,25H.0
JCA2
A2:
CLR25H.0
LCALLSETATIME;调用设置闹钟的程序
LJMPLOOP
M2:
JBK4,M3
A3:
LCALLXIAOZHEN3
MOVC,25H.0
JCA4
A4:
CLR25H.0
M3:
LJMPLOOP
SETTIME:
L0:
LCALLDISPLAY1
JBK2,L1
LCALLXIAOZHEN4
MOVC,25H.0
JCA5
A5:
CLR25H.0
INC22H
MOVA,22H
CJNEA,#18H,GO12
MOV22H,#00H
MOV34H,#00H
MOV35H,#00H
LJMPL0
L1:
JBK3,L2
LCALLXIAOZHEN5
MOVC,25H.0
JCA6
A6:
CLR25H.0
INC21H
MOVA,21H
CJNEA,#3CH,GO11
MOV21H,#00H
MOV32H,#00H
MOV33H,#00H
LJMPL0
GO11:
MOVB,#0AH
DIVAB
MOV32H,B
MOV33H,A
LJMPL0
GO12:
MOVB,#0AH
DIVAB
MOV34H,B
MOV35H,A
LJMPL0
L2:
JBK4,L0
LCALLXIAOZHEN3
MOVC,25H.0
JCAX
AX:
CLR25H.0
RET
SETATIME:
LCALLDISPLAY2;调用闹钟设置,闹铃响时的显示程序
N0:
LCALLDISPLAY2
JBK3,N1
LCALLXIAOZHEN6
MOVC,25H.0
JCA7
A7:
CLR25H.0
INC24H
MOVA,24H
CJNEA,#24,GO22
MOV24H,#00H
MOV38H,#00H
MOV39H,#00H
LJMPN0
N1:
JBK1,N2
LCALLXIAOZHEN7
MOVC,25H.0
JCA8
A8:
CLR25H.0
INC23H
MOVA,23H
CJNEA,#60,GO21
MOV23H,#00H
MOV36H,#00H
MOV37H,#00H
LJMPN0
GO21:
MOVB,#0AH
DIVAB
MOV36H,B
MOV37H,A
LJMPN0
GO22:
MOVB,#0AH
DIVAB
MOV38H,B
MOV39H,A
LJMPN0
N2:
JBK4,N0
LCALLXIAOZHEN3
MOVC,25H.0
JCA9
A9:
CLR25H.0
RET
TIMEPRO:
MOVA,21H
MOVB,23H
CJNEA,B,BK
MOVA,22H
MOVB,24H
CJNEA,B,BK
SETB25H.0
MOVC,25H.0
JCXX
XX:
LCALLTIMEOUT
BK:
RET
TIMEOUT:
X1:
LCALLBZ
LCALLDISPLAY2
CLR25H.0
JBK4,X1
RET
BZ:
CLRP3.7
MOVR7,#250
T2:
MOVR6,#124
T3:
DJNZR6,T3
DJNZR7,T2
SETBP3.7
JBK4,XY
LCALLXIAOZHEN3
MOVC,25H.0
JCXY1
XY:
RET
XY1:
LJMPLOOP
XIAOZHEN1:
LCALLDISPLAY1
JBK1,XIAOZHEN1
MOVC,K1
JCXIAOZHEN1
LCALLDELAY
MOVC,K1
JCXIAOZHEN1
STOP1:
MOVC,K1
JNCSTOP1
LCALLDELAY
MOVC,K1
JNCSTOP1
SETB25H.0
RET
XIAOZHEN2:
LCALLDISPLAY2
JBK2,XIAOZHEN2
MOVC,K2
JCXIAOZHEN2
LCALLDELAY
MOVC,K2
JCXIAOZHEN2
STOP2:
MOVC,K2
JNCSTOP2
LCALLDELAY
MOVC,K2
JNCSTOP2
SETB25H.0
RET
XIAOZHEN3:
LCALLDISPLAY1
JBK4,XIAOZHEN3
MOVC,K4
JCXIAOZHEN3
LCALLDELAY
MOVC,K4
JCXIAOZHEN3
STOP3:
MOVC,K4
JNCSTOP3
LCALLDELAY
MOVC,K4
JNCSTOP3
SETB25H.0
RET
XIAOZHEN4:
LCALLDISPLAY1
JBK2,XIAOZHEN4
MOVC,K2
JCXIAOZHEN4
LCALLDELAY
MOVC,K2
JCXIAOZHEN4
STOP4:
MOVC,K2
JNCSTOP4
LCALLDELAY
MOVC,K2
JNCSTOP4
SETB25H.0
RET
XIAOZHEN5:
LCALLDISPLAY1
JBK3,XIAOZHEN5
MOVC,K3
JCXIAOZHEN5
LCALLDELAY
MOVC,K3
JCXIAOZHEN5
STOP5:
MOVC,K3
JNCSTOP5
LCALLDELAY
MOVC,K3
JNCSTOP5
SETB25H.0
RET
XIAOZHEN6:
LCALLDISPLAY2
JBK3,XIAOZHEN6
MOVC,K3
JCXIAOZHEN6
LCALLDELAY
MOVC,K3
JCXIAOZHEN6
STOP6:
MOVC,K3
JNCSTOP6
LCALLDELAY
MOVC,K3
JNCSTOP6
SETB25H.0
RET
XIAOZHEN7:
LCALLDISPLAY2
JBK1,XIAOZHEN7
MOVC,K1
JCXIAOZHEN7
LCALLDELAY
MOVC,K1
JCXIAOZHEN7
STOP7:
MOVC,K1
JNCSTOP7
LCALLDELAY
MOVC,K1
JNCSTOP7
SETB25H.0
RET
DELAY:
MOVR4,#14H
DL00:
MOVR5,#0FFH
DL11:
DJNZR5,DL11
DJNZR4,DL00
RET
TIME:
PUSHACC
PUSHPSW
MOVTH0,#03CH
MOVTL0,#0B0H
DJNZR2,RET0
MOVR2,#14H
MOVA,20H
CLRC
INCA
CJNEA,#3CH,GO1
MOV20H,#0
MOV30H,#0
MOV31H,#0
MOVA,21H
INCA
CJNEA,#3CH,GO2
MOV21H,#0H
MOV32H,#0
MOV33H,#0
MOVA,22H
INCA
CJNEA,#18H,GO3
MOV22H,#00H
MOV34H,#0
MOV35H,#0
AJMPRET0
GO1:
MOV20H,A
MOVB,#0AH
DIVAB
MOV31H,A
MOV30H,B
AJMPRET0
GO2:
MOV21H,A
MOVB,#0AH
DIVAB
MOV33H,A
MOV32H,B
AJMPRET0
GO3:
MOV22H,A
MOVB,#0AH
DIVAB
MOV35H,A
MOV34H,B
AJMPRET0
RET0:
POPPSW
POPACC
RETI
DISPLAY1:
MOVR0,#30H
MOVR3,#0FEH
MOVA,R3
PLAY1:
MOVP2,A
MOVA,@R0
MOVDPTR,#DSEG1
MOVCA,@A+DPTR
MOVP0,A
LCALLDL1
MOVP2,#0FFH
MOVA,R3
RLA
JNBACC.6,LD1
INCR0
MOVR3,A
LJMPPLAY1
LD1:
RET
DISPLAY2:
PUSHACC
PUSHPSW
MOVR0,#36H
MOVR3,#0FBH
MOVA,R3
PLAY2:
MOVP2,A
MOVA,@R0
MOVDPTR,#DSEG1
MOVCA,@A+DPTR
MOVP0,A
LCALLDL1
MOVP2,#0FFH
MOVA,R3
RLA
JNBACC.6,LD2
INCR0
MOVR3,A
LJMPPLAY2
LD2:
POPPSW
POPACC
RET
DL1:
MOVR7,#05H
DL:
MOVR6,#0FFH
DL6:
DJNZR6,$
DJNZR7,DL
RET
DSEG1:
DB3FH,06H,5BH,4FH,66H
DB6DH,7DH,07H,7FH,6FH
END
6定时闹钟仿真
在完成了电子密码锁硬件设计和软件设计以后,便进入系统的调试阶段。
系统的调试步骤和方法基本上是相同的,但具体细节和所采用的开发系统以及用户系统选用的单片机型号有关,如可选用Keil软件进行软件调试,用Proteus软件完成硬件调试。
6.1Keil调试
6.2Proteus调试
7结束语
通过这次课程设计,使我对这们功课有了更深刻的认识和了解。
首先对于硬件电路的工作原理有了进一步系统的学习,同样就有了进一步的认识,使我懂得了理论与实际相结合的重要性,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,才能提高自己的实际动手能力和独立思考的能力。
其次软件在这次设计中也有不足之处,但又不知道从哪个地方入手解决这个问题,这要求在以后的学习中,拓宽自己的知识面,解决设计的不足之处。
8参考文献
[1]余发山单片机原理及应用技术,徐州:
中国矿业大学出版社,2003
[2]杨刚,周群.电子系统设计与实践.电子工业出版社.2004:
18-23341-347118-122
[3]何立民.单片机高级教程(应用与设计).北京:
北京航空航天大学出版社,2000年.53-98
[4]涂时亮,张友德.单片微机控制技术.清华大学出版社.1994:
86-87146-147
[5]《融会贯通Protel99电路设计》弘道工作室北京人民交通出版设,2000.
[6]《单片机原理及接口技术实验》朱定华北京北