单片机课程设计报告定时闹钟含程序.docx
- 文档编号:9712758
- 上传时间:2023-02-06
- 格式:DOCX
- 页数:39
- 大小:283.87KB
单片机课程设计报告定时闹钟含程序.docx
《单片机课程设计报告定时闹钟含程序.docx》由会员分享,可在线阅读,更多相关《单片机课程设计报告定时闹钟含程序.docx(39页珍藏版)》请在冰豆网上搜索。
单片机课程设计报告定时闹钟含程序
大学
单片机课程设计报告
定时闹钟
摘要
本设计是用单片机原理及其相关硬件的运用实现的定时闹钟。
数字电子钟设计与制作可采用数字电路实现,也可以采用单片机来完成。
若用数字电路完成,所设计的电路相当复杂,大概需要十几片数字集成块,其功能也主要依赖于数字电路的各功能模块的组合来实现,焊接的过程比较复杂,成本也非常高。
若用单片机来设计制作完成,由于其功能的实现主要通过软件编程来完成,那么就降低了硬件电路的复杂性,而且其成本也有所降低,所以在该设计与制作中采用单片机AT89C51,它是低功耗、高性能的CMOS型8位单片机。
片内带有4KB的Flash存储器,且允许在系统内改写或用编程器编程。
另外,AT89C51的指令系统和引脚与8051完全兼容,片内有128B的RAM、32条I/O口线、2个16位定时计数器、5个中断源、一个全双工串行口等。
显示部分采用六位一体的共阳极数码管,运用同相三态双向总线收发器74LS245作为输出驱动显示部件的元件。
在编写程序的过程采用了定时程序和时间调整程序对称的编写方法。
并且在时间的调整或设置过程中本设计采用了长按进行调时或调分的选择,短按是进行在选择后进行加1,每短按一次,该单位加1.调整完毕以后再次长按原设置键即可跳出设置循环,显示部分――共阳极数码管显示正常走时的时间。
但是该程序在硬件的仿真过程中有点瑕疵。
在仿真开始时警示灯直接亮,必须通过闹钟定时键K2的闹钟设置以后时间才可以正常走时。
之后可以进行时间的调整或闹钟的重新调整。
目录
1概述3
1.1设计任务3
1.2设计要求3
1.3设计意义3
2系统总体方案与硬件选择设计4
2.1系统总体方案4
2.2硬件选择设计4
3软件设计9
3.1程序流程图9
3.2程序模块10
4Proteus软件仿真17
5课程设计体会19
参考文献19
附1:
源程序代码21
附2:
系统原理图33
1概述
1.1设计任务
在熟练掌握单片机及其仿真系统的使用方法的基础上,综合应用单片机原理,微机原理,微机接口技术等专业知识,设计采用一个AT89C51单片机控制的定时闹钟。
1.2设计要求
1)能够显示 时时-分分-秒秒。
2)设定定时时间、修改定时时间。
3)定时时间到能发出报警声或者启动继电器,从而控制电器的启停。
在此设计中该定时闹钟的报警启动继电器的动作用LED灯的变化来显示。
1.3设计意义
通过利用MCS-51单片机制作定时闹钟,可以更加深刻的理解单片机在自动化仪表中的作用以及掌握单片机的编程方法;从而进一步熟悉和掌握单片机的内部结构和工作原理,了解单片机应用系统设计的基本方法和步骤;通过设计定时数字闹钟数字输出输入及扫描显示模拟系统,熟练掌握单片机仿真软件Proteus的使用方法。
2系统总体方案与硬件选择设计
2.1系统总体方案
定时闹钟的系统可分为四个环节,分别是单片机控制系统、时间显示模块、控制键模块和闹铃模块。
通过若干模块的协调工作就可以完成相应的时间调整和定时闹钟的相应功能以及显示功能。
模块的相互连接如下图(图1)所示:
图1
2.2硬件选择设计
1单片机控制系统与相关附件
可编程可擦除只读存储器AT89C51(如图2)
图2
(1)简介该元件由CPU、振荡器与时序电路、4KB的ROM、256B的RAM、两个16位的定时器/计数器T0和T1、4个8位的I/O端口(P0、P1、P2、P3)、串行口等组成。
其中振荡器时序电路与外时钟组成了定时控制部件。
(2)CPU的主要功能是产生各种控制信号,控制存储器、输入/输出接口的数据传送、数据的算术运算、逻辑运算以及位操作处理等。
它是单片机的头脑。
(3)CPU从功能上可以分为运算器和控制器两部分。
其中运算器由算术逻辑运算部件ALU、累加器、暂存器、程序状态字寄存器、BCD码运算调整电路等组成。
为了提高数据处理和位操作能力,片内增加了一个通用寄存器B和一些专用寄存器,还增加了位处理逻辑电路的功能。
主要完成对数据进行算术四则运算和逻辑运算、移位操作、位操作等。
控制器由程序计数器、指令寄存器、指令译码器、定时控制与条件转移逻辑电路等组成。
主要功能是对来自存储器中的指令进行译码,通过定时控制电路,在规定的时刻发出各种操作所需的全部内部和外部控制信号,协调各功能元件的工作,完成指令所规定的功能。
而控制器中的定时控制部件与时序是在规定时刻发出各种操作所需的全部内部和外部控制信号,使各功能元件能够协调工作,完成指令所规定动作的功能。
主要任务是产生一个工作时序,其工作需要时钟电路提供一个工作频率。
(4)管脚说明
VCC:
供电电压
GND:
接地
P0口:
P0口为一个8位漏级开路双向I/O口,每脚可吸收8TTL门电流。
当P1口的管脚第一次写1时,被定义为高祖输入.P0能够用于外部程序数据存储器,它可以被定义为数据/地址的第八位.在FLASH编程时,P0口作为原码输入口,当FLASH进行校验时,P0输出原码,此时P0外部必须被拉高。
P1口:
P1口是一个内部提供上拉电阻的8位双向I/O口,P1口缓冲器能接受输出4TTL门电流。
P1口管脚写入1后,被内部上拉为高,可用做输入,P1口被外部下拉为低电平时,将输出电流,这是由于内部上拉的缘故.在FLASH编程和校验时,P1口作为第八位地址接收。
P2口:
P2口为一个内部上拉电阻的8位双向I/O口,P2缓冲器可接收输出4个TTL门电流,当P2口被写1时,其管脚被内部上拉电阻拉高,且作为输入。
并因此作为输入时,P2口的管脚被外部拉低,将输出电流.这是由于内部上拉的缘故。
P2口当用于外部程序存储器或16位地址外部数据存储器进行存取时,P2口作为地址的高8位。
在给出地址1时,它利用内部上拉优势,当对外部八位地址数据存储器进行读写时,P2口输出其特殊功能寄存器的内容。
P2口在FLASH编程和校验时接收高八位地址信号和控制信号。
P3口:
P3口管脚是8个带内部上拉电阻的双向I/O口,可接收输出4个TTL门电流,当P3口写入1后,它们被内部上拉为高电平,并用作输入.作为输入,由于外部下拉为低电平,P3口将输出电流(ILL)这是由于上拉的缘故。
2系统时钟电路如图3
图3
MCS-51内部有一个用于构成振荡器的高增益反相放大器,此放大器的输入和输出端分别是引脚XTAL1和XTAL2,在XTAL1和XTAL2上外接时钟源即可构成时钟电路。
单片机的生产工艺不同,时钟的产生方式也不同,有内部和外部两种时钟产生方式。
根据该设计的需要,采取了内部方式。
(1)HMOS型MCS-51外部时钟源的接法。
内部时钟产生方式:
XTAL1和XTAL2两端跨接晶体或陶瓷振谐器,与内部反相器构成稳定的自激振荡器。
其发出的时钟脉冲直接送入片内定时控制部件。
C1、C2对频率有微调作用。
(2)CHMOS型的外部时钟源的接法与HMOS型的单片机内部时钟电路不同:
(2.1)内部时钟信号取自反相放大器的输入端。
(2.2)振荡器的工作可编程控制。
即当相应的部件进入掉电保护,系统进入低功耗运行。
因内部时钟发生器的信号取自放大器的输入端,故采用外部时钟源时,接线方法与HMOS型的单片机有所不同。
3同相三态双向总线收发器74LS245如图4
图4
用来驱动LED或其他的设备,可双向传输数据.还具有三态功能,既可以输出,也可以输入数据。
当8051单片机的P0口总线负载达到或超过P0口负载能力时,必须接入74LS245等总线驱动器。
(2)控制键模块(如图5)
图5
K1键为时间设置和正常走时的设置键。
第一次长按该键即可进行分钟的设置状态,调整的部分为闪烁状态,之后短按该键每按下一次即可在要设置的分钟上加1。
设置完成以后再次长按该键即可进入小时的设置,分钟的显示位置不再闪烁。
而小时的显示位置为闪烁状态,之后短按该键每按下一次即可在要设置的小时上加1。
设置完成之后再次长按该键(显示部分无闪烁状态),即可显示设置时间后的正常走时。
K2键为闹钟设置键和正常走时的调整键。
调整的过程与时间的设置过程类似。
第一次长按该键即可进行分钟的调整状态,调整的部分为闪烁状态,之后短按该键每按下一次即可在要设置的分钟上加1。
设置完成以后再次长按该键即可进入小时的设置,分钟的显示位置不再闪烁。
而小时的显示位置为闪烁状态,之后短按该键每按下一次即可在要调整的小时上加1。
调整完成以后长按该键(显示部分无闪烁状态),即可显示正常走时。
须注意:
该定时闹钟在定时之后才可以正常走时。
(3)时间显示模块显示部分(如图6)
图6
显示部分采用六位一体共阳数码管,自左到右分别显示时时-分分-秒秒。
在进行时间的闹钟设置和时间的调整过程中相应的设置或调整的单元部分为闪烁状态。
(4)闹铃模块(如图7)
图7
警示灯,定时时间输出低电平,LED灯两端存在电位差即灯亮。
3软件设计
3.1程序流程图
3.2程序模块
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;主程序;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
START:
MOVR0,#70H
MOVR7,#0BH
MOV20H,#00H
CLEARDISP:
MOV@R0,#00H
INCR0
DJNZR7,CLEARDISP;/给显示缓冲单元70-75H赋初值/
MOV7AH,#0AH
MOV3AH,#0AH
MOVR0,#30H
MOVR7,#0BH
MOV20H,#00H
CLEARdDISP:
MOV@R0,#00H
INCR0
DJNZR7,CLEARdDISP
MOV3AH,#0AH
MOVTMOD,#11H;/定时器等状态初始化/
MOVTL0,#0B0H
MOVTH0,#3CH
MOVTL1,#0B0H
MOVTH1,#3CH
SETBEA;/开中断/
SETBET0
SETBTR0;/T0开始工作/
MOVR4,#14H
start1:
LCALLDISPLAY
JNBP3.2,SETMM1
JNBP3.3,DSETMM1
SJMPStart1
SETMM1:
LJMPSETMM
DSETMM1:
LJMPDSETMM
程序开始先调用调整与正常走时显示程序,判断K1键是否按下,若按下择调用时钟调整程序,若无按下则判断K2是否按下,若按下则调用闹钟设置程序。
若无键按下则返回主程序继续循环
当定时器计数满溢出时,调用计时秒进位程序,时钟每增加一秒,通过以下语句:
CJNEa,70H,yyy
MOVa,31H
CJNEa,71H,yyy
MOVa,32H
CJNEa,72H,yyy
MOVa,33H
CJNEa,73H,yyy
MOVA,34H
CJNEA,74H,yyy
MOVA,35H
CJNEA,75H,yyy
判断定时时间是否到,若没有则返回主程序,若有则调用闹钟服务子程序。
由于定时设置时的初值和正常走时的初值全部为00H,所以在刚开始运行时灯直接亮。
之后可以通过长按k2键设置定时闹钟的时间进而实现该闹钟的正常走时。
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;计时秒进位程序;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
INTT0:
PUSHACC
PUSHPSW
CLRET0
CLRTR0
MOVA,#0B7H;中断同步修正
ADDA,TL0
MOVTL0,A
MOVA,#3CH
ADDA,TH0
MOVTH0,A
SETBTR0
DJNZR4,OUTT0
ADDSS:
MOVR4,#14H
MOVR0,#71H
ACALLADD1;加1程序
MOVA,R3
CLRC
CJNEA,#60H,ADDMM
ADDMM:
JCOUTT0
ACALLCLR0
MOVR0,#77H
ACALLADD1
MOVA,R3
CLRC
CJNEA,#60H,ADDHH
ADDHH:
JCOUTT0
ACALLCLR0
MOVR0,#79H
ACALLADD1
MOVA,R3
CLRC
CJNEA,#24H,HOUR
HOUR:
JCOUTT0
ACALLCLR0
OUTT0:
MOV72H,76H
MOV73H,77H
MOV74H,78H
MOV75H,79H
MOVA,30H
CJNEA,70Hyyy
MOVA,31H
CJNEA,71H,yyy
MOVA,32H
CJNEA,72H,yyy
MOVA,33H
CJNEA,73H,yyy
MOVA,34H
CJNEA,74H,yyy
MOVA,35H
CJNEA,75H,yyy
CLRp1.0
LCALLALARMPROCESS
yyy:
POPPSW
POPACC
SETBET0
RETI
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;时钟调整程序;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;
SETMM:
cLRET0
CLRTR0
LCALLDL1S
JBP3.2,CLOSEDIS
MOVR2,#06H
SETBET1
SETBTR1
SET2:
JNBP3.2,SET1
SETB00H
SET4:
JBP3.2,SET3
LCALLDL05S
JNBP3.2,SETHH
MOVR0,#77H;加1分程序
LCALLADD1
MOVA,R3
CLRC
CJNEA,#60H,HHH
HHH:
JCSET4
LCALLCLR0
CLRC
AJMPSET4
CLOSEDIS:
SETBET0
SETBTR0
CLOSE:
JBP3.2,CLOSE
LCALLDISPLAY
JBP3.2,CLOSE
WAITH:
JNBP3.2,WAITH
LJMPSTART1
SETHH:
CLR00H
SETHH1:
JNBP3.2,SET5
SETB01H
SET6:
JBP3.2,SET7
LCALLDL05S
JNBP3.2,SETOUT
MOVR0,#79H
LCALLADD1
MOVA,R3
CLRC
CJNEA,#24H,HOUU
HOUU:
JCSET6
LCALLCLR0
AJMPSET6
SETOUT:
JNBP3.2,SETOUT1
LCALLDISPLAY
JNBP3.2,SETOUT
CLR01H
CLR00H
CLR02H
CLRTR1
CLRET1
SETBTR0
SETBET0
LJMPSTART1
SET1:
LCALLDISPLAY
AJMPSET2
SET3:
LCALLDISPLAY
AJMPSET4
SET5:
LCALLDISPLAY
AJMPSETHH1
SET7:
LCALLDISPLAY
AJMPSET6
SETOUT1:
LCALLDISPLAY
AJMPSETOUT
;
调整通过判断按键按下时间的长短来判断是调小时还是调分,通过调用闪烁程序可以判断当前状态是调整小时或是调整分钟。
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;闹铃时钟调整程序;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
DSETMM:
CLRET0
CLRTR0
SETB04H
LCALLDDL1S
JBP3.3,DCLOSEDIS
MOVR2,#06H
SETBET1
SETBTR1
DSET2:
JNBP3.3,DSET1
SETB03H
DSET4:
JBP3.3,DSET3
LCALLDDL05S
JNBP3.3,DSETHH
MOVR0,#37H;加1分程序
LCALLADD1
MOVA,R3
CLRC
CJNEA,#60H,DHHH
DHHH:
JCDSET4
LCALLCLR0
CLRC
AJMPDSET4
DCLOSEDIS:
SETBET0
SETBTR0
DCLOSE:
JBP3.3,DCLOSE
LCALLDISPLAY2
JBP3.3,DCLOSE
DWAITH:
JNBP3.3,DWAITH
LJMPSTART1
DSETHH:
CLR03H
DSETHH1:
JNBP3.3,DSET5
SETB06H
DSET6:
JBP3.3,DSET7
LCALLDDL05S
JNBP3.3,DSETOUT
MOVR0,#39H
LCALLADD1
MOVA,R3
CLRC
CJNEA,#24H,DHOUU
DHOUU:
JCDSET6
LCALLCLR0
AJMPDSET6
DSETOUT:
JNBP3.3,DSETOUT1
LCALLDISPLAY2
JNBP3.3,DSETOUT
CLR06H
CLR03H
CLR05H
CLR04H
CLRTR1
CLRET1
SETBTR0
SETBET0
LJMPSTART1
DSET1:
LCALLDISPLAY2
AJMPDSET2
DSET3:
LCALLDISPLAY2
AJMPDSET4
DSET5:
LCALLDISPLAY2
AJMPDSETHH1
DSET7:
LCALLDISPLAY2
AJMPDSET6
DSETOUT1:
LCALLDISPLAY2
AJMPDSETOUT
设置通过判断按键按下时间的长短来判断是设置小时还是设置分钟,通过调用闪烁程序可以判断当前状态是设置小时或是设置分钟。
4Proteus软件仿真
正常走时的仿真图(如图8)
图8
定时时间到灯亮时的仿真图(如图9,图10)
图9
图10
5课程设计体会
当今时代是一个新技术层出不穷的时代,在电子领域尤其是自动化智能控制领域,传统的分立元件或数字逻辑电路构成的控制系统,正以前所未见的速度被单片机智能控制系统所取代。
单片机具有体积小、功能强、成本低、应用面广等优点,可以说,智能控制与自动控制的核心就是单片机。
它在科学技术的发展与生活中的重要性随着时间的发展越来越显著。
通过这次单片机课程设计我对常用的单片机的工作原理与设置应用有了具体的操作上的认识。
对于程序中编程过程掌握欠缺的地方在此次单片机的课程设计中得到很大的提高。
对于指令的认识与运用在这次课程设计中有了更多的认识。
并且对PROTEUS软件与WAVE软件的应用得到了掌握。
并且通过这次单片机课程设计我深刻的感受到自己在编程以及硬件上的差距。
虽然实现了老师对这个课程设计的基本要求,但是对于编程过程中的许多细节上的东西处理的不好,以致在数码管的刚开始的显示中显示有点混乱,只有在若干次的按键才能正常显示。
并且开始的正常走时必须在定时的前提下才能正常走时。
我的这次课设存在瑕疵。
通过这次课设让我更深刻的感受到单片机是与实践是紧密联系在一起的.因此我更要在以后的学习中注重对这方面能力的培养!
为走向工作岗位增加自己的竞争力,也为更好的适应社会与时代的发展做准备!
参考文献
期刊论文:
[1]金素华,张尉.单片机调试方法的讨论.电子世界,2004,25(4):
34-65
[2]宋凤娟,廉文利,付云强.单片机89C51在调速系统中的应用.微计算机信息,2007,12(6):
113-114
书、专著:
[1]余发山.单片机原理及应用技术.中国矿业大学出版社,2003,21-30
[2]何立民编著.单片机中级教程(原理与应用).北京:
北京航天大学出版社,2000.78-100
[3]张迎新编著.单片微型计算机原理应用及接口技术.北京:
国防工业出版社,1993.67-89
电子文献:
[1]步步鱼.单片机AT89C51介绍.
2007-05-20/2007-08-06
[2]海子.同相三态双向总线收发器74LS245简介.
2007-04-12/2007-08-06
附1:
源程序代码
;显示缓冲单元在70H—75H,70H—71H显示秒,72H—73H显示分,74H—75H显示时
;定时缓冲单元在30H——35H,30H-31H显示秒,32H-33H显示分,34H-35H显示小时
;时间计数单元在70H—71H(秒)、76H—77H(分)、78H—79H(时),7AH单元放熄;灭符(#0AH)
;计数单元采用BCD码计数,定时器T0设置为50MS溢出中断,为秒计数用,定时器T1;为调整时闪烁用
;P3.2为调整按钮,P1口为字符输出口,采用共阳显示管。
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;中断入口程序;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
ORG0000H
LJMPSTART
ORG0003H
RETI
ORG000BH
LJMPINTT0
ORG0013H
RETI
ORG001BH
LJMPINTT1
ORG0023H
RETI
ORG002BH
RETI
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;主程序;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
START:
MOVR0,#70H
MOVR7,#0BH
MOV20H,#00H
CLEARDISP:
MOV@R0,#00H
INCR0
DJNZR7,CLEARDISP
MOV7AH,#0AH
MOV3AH,#0AH
MOVTMOD,#11H
MOVTL0,#0B0H
MOVTH0,#3CH
MOVTL1,#0B0H
MOVTH1,#3CH
SETBEA
SETBET0
SETBTR0
MOVR4,#14H
start1:
LCALLDISPLAY
JNBP3.2,SETMM1
JNBP3.3,DSETMM1
SJMPStart1
SETMM1:
LJMPSETMM
DSETMM1:
LJMPDSETMM
;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 单片机 课程设计 报告 定时 闹钟 程序