搜索
您的当前位置:首页正文

单片机课程设计定时闹钟报告书

来源:爱go旅游网


2011级微机原理与接口技术

课题名称 姓 名 学 号 、系、部专 业 指导教师 课程设计报告

微机原理与接口技术

2014年 月 日

1

一、设计任务及要求: 设计任务: 1、基于单片机的定时闹钟 具有时间显示,闹钟响应 编程实现时、分、秒的显示 显示格式为: 时分秒: 09-12-35 2、能按键调整时间的数值; 3、可设定响铃时间,并且在规定时间响铃 4、要求至少调试出任务的前两项。 要 求: 首先进行预设计,根据设计的任务要求,先确定设计的硬件电路方案,然后进行硬件电路的初步设计,在计算机上画出硬件电路图,在老师的指导下进行修正硬件电路图,并对所涉及的参数进行计算。 在确定硬件的基础上,要进行软件的总体设计,包括软件主流程的设计以及各子程序的设计,同时,要写出详细的操作说明,如时间的调整方法,显示窗口的时间切换等,以配合软件的设计。 然后进入硬件的调试及编程工作,设计组内的同学可根据任务分工,有调试硬件各功能模块的,如键盘子程序、显示子程序等,有进行整体程序的编制的,各模块的编制过程中要注意资源的衔接。 最后进入联机调试,联机调试的原则也要采用分步走的原则,各个功能模块要逐步套入,通过一个再增加一项功能,从而达到设计的总体要求,不要上来编制个最大的程序,最后无法查找错误。 最后写出设计报告。 指导教师签名: 2014年 月 日 三、成绩 指导教师签名: 年 月 日

2

目 录

一、 绪 言………………………………………………………………………………………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.1 Keil调试………………………………………………………………………………15 6.2 Proteus调试……………………………………………………………………………16 七、结束语…………………………………………………………………………………… 16 八、参考文献……………………………………………………………………………………16

1、绪 言

本设计是定时闹钟的设计,由单片机AT89C51芯片和LED数码管为核心,辅以必要的电路,构成的一个单片机电子定时闹钟。

定时闹钟设计可采用数字电路实现,也可以采用单片机来完成。定时闹钟是用数字集成电路构成的,用数码管显示“时”,“分”,“秒”的现代计时装置。单片机具有集成度高、功能强、通用性好、特别是它能耗低、价格便宜、可靠性高、抗干扰能力强和使用方便等独特的优点,所以单片机现在广泛的应用到家用电器、机电产品、儿童玩具、机器人、办公自动化产品等领域

2、系统设计

2.1 设计任务

1、基于单片机的定时闹钟 具有时间显示,闹钟响应 编程实现时、分、秒的显示

显示格式为: 时分秒: 09-12-35 2、能按键调整时间的数值;

3、可设定响铃时间

4、要求至少调试出任务的前两项。

2.2 方案比较与论证

2.2.1 系统整体流程图

复位、时钟等电路 CPU 按钮电路 电源系统 闹铃声指示电路 6位数码管显示电路

2.2.2 定时闹钟控制方案论证

闹铃功能的实现涉及到两个方面:闹铃时间设定和是否闹铃判别与相应处理。闹铃时间设

定模块的设计可参照时间设定模块,这里着重阐述闹铃判别与处理模块的设计问题。闹铃判别与闹铃处理的关键在于判别何时要进行闹铃。当时十位、时个位、分十位、分个位中任一位发生改变(进位)时,就必须进行闹铃判别。译码显示电路将“时”、“分”、“秒”计数器的输出送到七段显示译码驱动器译码驱动,通过六个七段LED显示器显示出来。闹铃电路根据计时系统的输出状态产生一脉冲信号,然后加上一个高频或低频信号送到放大电路驱动蜂鸣器发声实现报时。校时电路是直接加一个脉冲信号到时计数器或者分计数器或者秒计数器来对“时”、“分”、“秒”显示数字进行校对调整。 2.2.3 单片机的选择方案论证

1

方案一:采用可编程逻辑期间CPLD 作为控制器。CPLD可以实现各种复杂的逻辑功能、规模大、密度高、体积小、稳定性高、IO资源丰富、易于进行功能扩展。采用并行的输入输出方式,提高了系统的处理速度,适合作为大规模控制系统的控制核心。但本系统不需要复杂的逻辑功能,对数据的处理速度的要求也不是非常高,且从使用及经济的角度考虑我们放弃了此方案

方案二:采用Atmel公司的AT89S52单片机作为控制器。AT89S52是一个低功耗,高性能的51内核的CMOS 8位单片机,片内含8k空间的可反复擦些1000次的Flash只读存储器,具有256 bytes的随机存取数据存储器(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口资源较多,对于简单的电路可以选用此方案。

定时闹钟,电路并不很复杂,选用方案二,显示所需信息。

2

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口控

3

制,即P0口。译码显示电路将“时”、“分”、“秒”计数器的输出状态菁七段显示译码器译码,通过6位LED七段显示器显示出来。到达定时电路时根据计时系统的输出状态产生一脉冲信号,然后去触发一音频发生器实现闹铃。校时电路时用来对“时”、“分”、“秒”显示数字进行校对调整的。

其电路如图3所示。

图4 数码管显示电路

3.4 蜂鸣器驱动电路的设计

闹钟电路是用比较器来比较计时系统和定时系统的输出状态,如果计时系统和定时系统的输出状态相同,则发出一个脉冲信号,再和一个高频信号混合,送到放大电路驱动扬声器发声,从而实现定时闹响的功能其电路如图5 所示。

图5 蜂鸣器电路图

3.5 主要元器件选择

主要元器件选用型号和数量如表1所示:

表1 主要元器件清单

序号 1 2 材料名称 单片机 晶振 4

规格型号 AT89C51 12MHz 数量 1 1 元件代号 U1 X1

3 4 5 6 7 8 电容 键盘 数码管 蜂鸣器 电阻 排阻 45PF100 4*1 MPX6 10k 10k 3 4 1 1 1 1 C1C2C3 Ls1 R1 RP1 4 程序流程图

串口初始化 CPU系统初始化 定时0初始化 中断初始化 启动走时 有关变量初始化 判时或分变化否? Y 刷新显示 判1秒到否? Y 秒指示 判是否到闹铃时间? Y 显示刷新 闹铃 延时

显示待机指示符 判设置闹铃时间否? Y 设定闹铃时间 5 C语言程序设计 程序清单:

K1 EQU P1.0 ;在程序开始前定义变量

K2 EQU P1.1 K3 EQU P1.2 K4 EQU P1.3 ORG 0000H LJMP MAIN ORG 000BH LJMP TIME

ORG 0100H

MAIN:MOV SP,#50H

5

MOV 20H,#00H ;时间 BIN SECOND

MOV 21H,#00H ; BIN MINUTE MOV 22H,#00H ; BIN HOUR MOV 23H,#01H ;闹铃 BIN MINUTE MOV 24H,#01H ; BIN HOUR MOV 25H,#00H ;定义一个标志位 MOV 30H,#00H ;时间 BCD SECOND MOV 31H,#00H ;

MOV 32H,#00H ; BCD MINUTE MOV 33H,#00H ;

MOV 34H,#00H ; BCD HOUR MOV 35H,#00H ;

MOV 36H,#01H ;闹铃 BCD MINUTE MOV 37H,#00H ;

MOV 38H,#01H ; BCD HOUR MOV 39H,#00H ;

MOV TMOD,#01H ;16位计数器 T0,方式1

MOV TH0,#03CH ;赋初值 MOV TL0,#0B0H

MOV IE,#10000111B ;开中断 T0,EA=1 SETB TR0 ;T0启动计数 MOV P2,#0FFH

LOOP:LCALL TIMEPRO ; 调用现在时间与闹铃时间比较程序 LCALL DISPLAY1 ; 调用现在时间显示子程序 JB K1,M1 ; 判断按键是否按下 LCALL XIAOZHEN1 ; 调用消抖程序 MOV C,25H.0 JC A1 A1:CLR 25H.0

LCALL SETTIME ; 调用设置现在时间子程序 LJMP LOOP M1:JB K2,M2

LCALL XIAOZHEN2 MOV C,25H.0 JC A2 A2:CLR 25H.0

LCALL SETATIME ; 调用设置闹钟的程序 LJMP LOOP

6

MOV R2,#14H ;计数器

M2:JB K4,M3

A3:LCALL XIAOZHEN3 MOV C,25H.0 JC A4 A4:CLR 25H.0 M3:LJMP LOOP SETTIME:

L0:LCALL DISPLAY1 JB K2,L1

LCALL XIAOZHEN4 MOV C,25H.0 JC A5 A5:CLR 25H.0 INC 22H MOV A,22H CJNE A,#18H,GO12 MOV 22H,#00H MOV 34H,#00H MOV 35H,#00H LJMP L0 L1:JB K3,L2

LCALL XIAOZHEN5 MOV C,25H.0 JC A6 A6:CLR 25H.0 INC 21H MOV A,21H CJNE A,#3CH,GO11 MOV 21H,#00H MOV 32H,#00H MOV 33H,#00H LJMP L0 GO11:MOV B,#0AH DIV AB MOV 32H,B MOV 33H,A LJMP L0 GO12:MOV B,#0AH DIV AB

7

MOV 34H,B MOV 35H,A LJMP L0 L2:JB K4,L0

LCALL XIAOZHEN3 MOV C,25H.0 JC AX AX:CLR 25H.0 RET

SETATIME:LCALL DISPLAY2 ;调用闹钟设置,闹铃响时的显示程序 N0:LCALL DISPLAY2 JB K3,N1

LCALL XIAOZHEN6 MOV C,25H.0 JC A7 A7:CLR 25H.0 INC 24H MOV A,24H CJNE A,#24,GO22 MOV 24H,#00H MOV 38H,#00H MOV 39H,#00H LJMP N0 N1:JB K1,N2

LCALL XIAOZHEN7 MOV C,25H.0 JC A8 A8:CLR 25H.0 INC 23H MOV A,23H CJNE A,#60,GO21 MOV 23H,#00H MOV 36H,#00H MOV 37H,#00H LJMP N0 GO21:MOV B,#0AH DIV AB MOV 36H,B MOV 37H,A

8

LJMP N0 GO22:MOV B,#0AH DIV AB MOV 38H,B MOV 39H,A LJMP N0 N2:JB K4,N0

LCALL XIAOZHEN3 MOV C,25H.0 JC A9 A9:CLR 25H.0 RET TIMEPRO:MOV A,21H MOV B,23H CJNE A,B,BK MOV A,22H MOV B,24H CJNE A,B,BK SETB 25H.0 MOV C,25H.0 JC XX

XX:LCALL TIMEOUT BK:RET TIMEOUT:

X1:LCALL BZ LCALL DISPLAY2 CLR 25H.0 JB K4, X1 RET

BZ:CLR P3.7 MOV R7,#250 T2:MOV R6,#124 T3:DJNZ R6,T3 DJNZ R7,T2 SETB P3.7 JB K4,XY

LCALL XIAOZHEN3 MOV C,25H.0 JC XY1

9

XY:RET XY1:LJMP LOOP

XIAOZHEN1:LCALL DISPLAY1 JB K1,XIAOZHEN1 MOV C,K1 JC XIAOZHEN1 LCALL DELAY MOV C,K1 JC XIAOZHEN1 STOP1:MOV C,K1 JNC STOP1 LCALL DELAY MOV C,K1 JNC STOP1 SETB 25H.0 RET

XIAOZHEN2:LCALL DISPLAY2 JB K2,XIAOZHEN2 MOV C,K2 JC XIAOZHEN2 LCALL DELAY MOV C,K2 JC XIAOZHEN2 STOP2:MOV C,K2 JNC STOP2 LCALL DELAY MOV C,K2 JNC STOP2 SETB 25H.0 RET

XIAOZHEN3:LCALL DISPLAY1 JB K4,XIAOZHEN3 MOV C,K4 JC XIAOZHEN3 LCALL DELAY MOV C,K4 JC XIAOZHEN3

1 0

STOP3:MOV C,K4 JNC STOP3 LCALL DELAY MOV C,K4 JNC STOP3 SETB 25H.0 RET

XIAOZHEN4:LCALL DISPLAY1 JB K2,XIAOZHEN4 MOV C,K2 JC XIAOZHEN4 LCALL DELAY MOV C,K2 JC XIAOZHEN4 STOP4:MOV C,K2 JNC STOP4 LCALL DELAY MOV C,K2 JNC STOP4 SETB 25H.0 RET

XIAOZHEN5:LCALL DISPLAY1 JB K3,XIAOZHEN5 MOV C,K3 JC XIAOZHEN5 LCALL DELAY MOV C,K3 JC XIAOZHEN5 STOP5:MOV C,K3 JNC STOP5 LCALL DELAY MOV C,K3 JNC STOP5 SETB 25H.0 RET

XIAOZHEN6:LCALL DISPLAY2

1 1

JB K3,XIAOZHEN6 MOV C,K3 JC XIAOZHEN6 LCALL DELAY MOV C,K3 JC XIAOZHEN6 STOP6:MOV C,K3 JNC STOP6 LCALL DELAY MOV C,K3 JNC STOP6 SETB 25H.0 RET

XIAOZHEN7:LCALL DISPLAY2 JB K1,XIAOZHEN7 MOV C,K1 JC XIAOZHEN7 LCALL DELAY MOV C,K1 JC XIAOZHEN7 STOP7:MOV C,K1 JNC STOP7 LCALL DELAY MOV C,K1 JNC STOP7 SETB 25H.0 RET

DELAY:MOV R4,#14H

DL00:MOV R5,#0FFH DL11:DJNZ R5,DL11 DJNZ R4,DL00 RET

TIME:PUSH ACC

PUSH PSW MOV TH0,#03CH MOV TL0,#0B0H DJNZ R2,RET0

MOV R2,#14H

1 2

MOV A,20H CLR C INC A

CJNE A,#3CH,GO1

MOV 20H,#0

MOV 30H,#0 MOV 31H,#0 MOV A,21H

INC A

CJNE A,#3CH,GO2 MOV 21H,#0H MOV 32H,#0 MOV 33H,#0 MOV A,22H INC A

CJNE A,#18H,GO3

MOV 22H,#00H

MOV 34H,#0 MOV 35H,#0

AJMP RET0 GO1:MOV 20H,A MOV B,#0AH DIV AB MOV 31H,A MOV 30H,B

AJMP RET0 GO2:MOV 21H,A MOV B,#0AH DIV AB MOV 33H,A MOV 32H,B

AJMP RET0 GO3:MOV 22H,A MOV B,#0AH DIV AB MOV 35H,A MOV 34H,B AJMP RET0 RET0:POP PSW

1 3

POP ACC RETI

DISPLAY1:MOV R0,#30H MOV R3,#0FEH

MOV A,R3

PLAY1:MOV P2,A MOV A,@R0 MOV DPTR,#DSEG1 MOVC A,@A+DPTR MOV P0,A LCALL DL1 MOV P2,#0FFH MOV A,R3 RL A

JNB ACC.6,LD1 INC R0 MOV R3,A LJMP PLAY1 LD1:RET

DISPLAY2:PUSH ACC PUSH PSW MOV R0,#36H MOV R3,#0FBH

MOV A,R3

PLAY2:MOV P2,A MOV A,@R0 MOV DPTR,#DSEG1 MOVC A,@A+DPTR MOV P0,A LCALL DL1 MOV P2,#0FFH MOV A,R3 RL A

JNB ACC.6,LD2 INC R0 MOV R3,A LJMP PLAY2 LD2:POP PSW

1 4

POP ACC RET

DL1:MOV R7,#05H DL:MOV R6,#0FFH DL6:DJNZ R6,$

DJNZ R7,DL RET

DSEG1:DB 3FH,06H,5BH,4FH,66H DB 6DH,7DH,07H,7FH,6FH

END

6 定时闹钟仿真

在完成了电子密码锁硬件设计和软件设计以后,便进入系统的调试阶段。系统的调试步骤和方法基本上是相同的,但具体细节和所采用的开发系统以及用户系统选用的单片机型号有关,如可选用Keil软件进行软件调试,用Proteus软件完成硬件调试。

6.1 Keil调试

1 5

6.2 Proteus调试

7 结束语

通过这次课程设计,使我对这们功课有了更深刻的认识和了解。首先对于硬件电路的工作原理有了进一步系统的学习,同样就有了进一步的认识,使我懂得了理论与实际相结合的重要性,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,才能提高自己的实际动手能力和独立思考的能力。其次软件在这次设计中也有不足之处,但又不知道从哪个地方入手解决这个问题,这要求在以后的学习中,拓宽自己的知识面,解决设计的不足之处。

8 参考文献

[1] 余发山 单片机原理及应用技术,徐州:中国矿业大学出版社,2003

[2] 杨刚,周群.电子系统设计与实践.电子工业出版社.2004:18-23 341-347 118-122 [3] 何立民.单片机高级教程(应用与设计).北京:北京航空航天大学出版社,2000年.53-98

[4] 涂时亮,张友德.单片微机控制技术.清华大学出版社.1994:86-87 146-147 [5] 《融会贯通 Protel99电路设计》 弘道工作室 北京 人民交通出版设,2000. [6] 《单片机原理及接口技术实验》 朱定华 北京 北方交通大学出版社2002.11 [7] 《微型计算机控制技术》 潘新民 北京 电子工业出版社 316-325 [8]《单片机原理及接口技术》 张毅刚 北京 人民邮电出版社 95-108 [9] 何立民. 单片机高级教程. 第1版.北京:北京航空航天大学出版社,2001

1 6

[10] 赵晓安. MCS-51单片机原理及应用. 天津:天津大学出版社,2001.3 [11]李广第. 单片机基础. 第1版.北京:北京航空航天大学出版社,1999

1 7

因篇幅问题不能全部显示,请点此查看更多更全内容

Top