时钟计时器课程设计.docx

上传人:b****4 文档编号:3766699 上传时间:2022-11-25 格式:DOCX 页数:31 大小:117.23KB
下载 相关 举报
时钟计时器课程设计.docx_第1页
第1页 / 共31页
时钟计时器课程设计.docx_第2页
第2页 / 共31页
时钟计时器课程设计.docx_第3页
第3页 / 共31页
时钟计时器课程设计.docx_第4页
第4页 / 共31页
时钟计时器课程设计.docx_第5页
第5页 / 共31页
点击查看更多>>
下载资源
资源描述

时钟计时器课程设计.docx

《时钟计时器课程设计.docx》由会员分享,可在线阅读,更多相关《时钟计时器课程设计.docx(31页珍藏版)》请在冰豆网上搜索。

时钟计时器课程设计.docx

时钟计时器课程设计

课程设计报告

微机原理与单片机课程设计

微机原理与单片机课程设计

 

单片机课程设计——时钟计时器的设计

专业

电气工程及其自动化

班级

133521

姓名

刘合琛尹锥丁大胜

学号

133521016133521017133521026

指导教师

万青

 

2015年12月

时钟计时器的设计

1.引言

1.1.设计意义

随着时代的进步和发展,单片机技术已经普及到我们生活,工作,科研,各个领域,已经成为一种比较成熟的技术,本文将介绍一种基于单片机控制的数字时钟计时器,本数字时钟计时器,可以显示时、分、秒,以24小时计时方式运行,能整点提醒(短蜂鸣,次数代表整点时间),使用按键开关可实现时、分调整,秒表/时钟功能转换,省电(关闭显示)及定时设定提醒(蜂鸣器)等功能。

人们生活水平的不断提高,单片机控制无疑是人们追求的目标之一,它所给人带来的方便也是不可否定的,其中数字时钟计时器就是一个典型的例子,但人们对它的要求越来越高,要为现代人工作、科研、生活、提供更好的更方便的设施就需要从单片机技术入手,一切向着数字化控制,智能化控制方向发展。

本设计所介绍的数字时钟计时器与传统的计时器相比,具有读数方便,操作简单,计时精准,还能实现整点提醒,定时提醒等功能。

其输出时间采用数字显示,主要用于对时间要求精度高的场所,或科研实验室使用,该设计控制器使用单片机AT89C52,用6位共阳极LED数码管以串口传送数据,实现数字显示功能,能准确达到以上要求。

1.2.系统功能要求

用单片机及6位LED数码管显示时、分、秒,以24小时计时方式运行,能整点提醒(短蜂鸣,次数代表整点时间),使用按键开关可实现时、分调整,秒表/时钟功能转换,省电(关闭显示)及定时设定提醒(蜂鸣器)等功能。

2.方案设计

1.3.数字时钟计时器设计方案论证

为了实现LED显示器的数字显示,可以采用静态显示法和动态显示法。

由于静态显示法需要数据锁存器等硬件,接口复杂一些,又考虑到时钟显示只有6位,且系统没有其他复杂的处理任务,所以决定采用动态扫描法实现LED的显示。

单片机采用易购的AT89C52系列,这种单片机具有足够的空余硬件资源,可以实现其他的扩充功能。

如果考虑使用电池供电,则可采用LV系列单片机。

1.4.硬件系统的总体设计框图

时钟计时器硬件系统的总体设计方框图如图2-1所示,控制器采用单片机AT89C52,数字输出采用6位共阳极LED数码管以动态扫描法实现数字显示。

图2-1硬件系统的总体设计方框图

3硬件设计

时钟计时器的硬件电路如图2.2所示。

该电路采用AT89C52单片机最小化应用设计,采用共阳7段LED显示器,P0口段码数据,P2.0~P2.5口作列扫描输出,P1.0,P1.1,P1.2,P1.3口接4个按钮开关,用于调时及功能设置,P1.7端口接5V的小蜂鸣器,用于按键发音及定时提醒、整点到时提醒等,为了提供共阳LED数码管的列扫描驱动电压,用三极管9012做电源驱动输出,采用12MHZ晶振,可提高秒计时的精确性。

图3-1时钟计时器的硬件电路

2.软件设计

1.5.主程序

本设计中计时采用定时器T0中断完成,秒表使用定时器T1中断完成。

主程序循环调用显示子程序和查键子程序,当端口有开关按下时,转入相应功能程序。

其主程序执行流程如图2.3所示。

图4-1主程序流程图

1.6.显示子程序

时间显示子程序每次显示6个连续内存单元的十进制BCD码数据,首地址在调用显示程序时先指定。

内存中50H~55H为闹钟定时单元,60H~66H为秒表计时单元,70H~75H为时钟显示单元。

由于采用7段共阳极LED数码管动态扫描实现数据显示,所以显示用十进制BCD码数据的对应段码存放在ROM表中。

显示时,先取出内存地址中的数据,然后查得对应的显示用段码从P0口输出,P2口将对应的数码管选中供电,就能显示该地址单元的数据值。

为了显示小数点及“—”、“A”等特殊字符,在显示班级和计时时应采用不同的显示子程序。

1.7.定时器T0中断服务程序

定时器T0用于时间计时。

定时溢出中断周期设为50ms,中断进入后先进行定时中断初值校正,当中断累计20次时,对秒计数单元进行加1操作。

时钟计数单元地址分别在70H~71H(秒)、76H~77H(分)、78H~79H(时)中,最大计时值为23时59分59秒。

7AH单元内存放“熄灭符”数据(#0AH),用于时间调整时的闪烁功能。

在计数单元中,采用十进制BCD码计数,满10进位。

T0中断计时程序流程图如图2.4所示。

图4-2T0中断计时程序流程图

1.8.定时器T1中断服务程序

T1中断程序用于指示时间调整单元数字的闪烁或秒表计数,在时间调整状态下,每过0.3s左右,将对应调整单元的显示数据换成“熄灭符”数据(#0AH).这样,在调整时间时,对应调整单元的显示数据会间隔闪亮。

在做秒表计时时,每10ms中断一次,计数单元加1,每100次为1s.秒表计数单元地址在60H~61H(10毫秒)、62H~63H(秒)、64H~65H(分)中,最大计数值为99分59.99秒。

T1中断服务程序流程图如图2.5所示。

图4-3T1中断服务程序流程图

1.9.调时功能程序

调时功能程序的设计方法是:

按下P1.0口按键,若按下时间小于1s,则进入省电状态(数码管不亮,时钟不停);否则进入调分状态,等待操作,此时计时器停止走动。

当再按下P1.0口按键时,若按下时间小于0.5s,则时间加1分钟;若按下时间大于0.5s,则进入小时状态。

按下P1.1口按键时,可进行减1调整。

在消失调整状态下,当按键按下的时间大于0.5s时,退出时间调整状态,时钟从0s开始计时。

1.10.秒表功能程序

在正常时钟状态下,若按下P1.1口按键,则进行时钟/秒表显示功能的转换,秒表中断计时程序启动,显示首地址改为60H,LED将显示秒表计时单元60H-65H中的数据。

按下P1.2口的按键开关,可实现秒表清0、秒表启动、秒表暂停功能;当再按下P1.1口按键时,关闭T1秒表中断计时,显示首址又改为70H,恢复正常时间的显示功能。

1.11.闹钟时间设定功能程序

在正常时钟状态下,若按下P1.3口的按键开关,则进入这顶闹时调分状态,显示首地址改为50H。

LED将显示50H-55H中的闹钟设定时间,显示式样为00:

00—,其中高2位代表时,低2位代表分,在定时闹铃时精确到分。

按P1.2键,分加1;按P1.0键,分减1.若再按P1.3键,则进入时调整状态,显示式样为00:

00:

—,再按P1.2键,时加1,按P1.0键,时减1.按P1.1键,闹铃有效,显示式样变为00:

00:

-0;再按P1.1键,闹铃无效,显示式样又变为00:

00:

—。

再按P1.3键,调整闹钟时间结束,回复正常时间的显示。

在闹铃时,可按一下P1.3口的按键开关使蜂鸣停止,不按则蜂鸣器将鸣叫1min后自行停止。

在设定闹钟后,若要取消闹时功能,则可按下P1.3键,当听到“滴”的一声时表明已取消了闹铃功能。

2.调试及性能分析

1.12.硬件调试

在上电前先对照硬件电路原理图检查电路板的焊接情况,看有没有虚焊及漏焊的地方,检查的方式是用万用表欧姆档对照电路原理图一块块的检查,最主要的是对数码管之间连接的检查,这一块接线较多,检查时一定要每一个管脚都对应上,比如a脚对a脚,b脚对b脚,按此顺序一步步检查。

接着就是列驱动电路的检查也就是三极管的检查,先要弄清三极管的每个脚对应的是哪个极,然后再按线路检查。

最后是单片机的检查,先要检查是否接入正负极,其次要检查晶振是否接上,后再检查其他部位。

待所有都检查完后再上电,此时一般都没什么问题,都能得出实验现象。

我在调试时主要问题是晶振没有接入,所以刚开始只是显示0而没其他现象,后来接入后就好了。

1.13.软件调试

软件调试是在KeilC51编译器下进行的,主要改的地方是日期显示地方。

在提供的汇编源程序中,显示日期和学号的子程序中将STAB表,启动时显示2006年12月23日、C04-2-28(学号)用

STAB:

DB0AH,0AH,0AH,0AH,0AH,0AH,08H,02H,0CH,02H,0CH,04H,00H,0BH,0AH,0AH

DB03H,02H,0CH,02H,01H,0CH,06H,00H,00H,02H,0AH,0AH,0AH,0AH,0AH,0AH

改为

STAB:

DB0AH,0AH,0AH,0AH,0AH,01H,05H,00H,02H,02H,05H,03H,08H,00H,0AH,0AH

DB00H,02H,0CH,05H,00H,0CH,01H,01H,00H,02H,0AH,0AH,0AH,0AH,0AH,0AH

通过编译可以正确显示学号:

083522051日期:

2011-5-20,然后通过下载工具将此程序烧到单片机内。

1.14.性能分析

根据设计程序的分析可知,LED显示器动态扫描的频率约为167Hz,实际使用观察时完全没有闪烁。

由于计时中断中加了中断延时误差处理,所以实际计时精度很高,可满足多种场合要求。

根据设计,可以设计一个滚动显示子程序,使制作日期,学号以一定速度滚动显示。

2.设计总结

通过此次的单片机课程设计,使我学到了很多知识,也提高了动手实践能力。

在这次课程设计中,我们首先要进行原理图的设计,然后把所有原件检测和整理好,待所有的元器件配齐后再进行元件的布局,布局的好坏很重要,一方面它会影响到整体的美观性,另一方面也影响焊接的难易程度及用线的数量。

接着就是要对原理图进行分析,这是至关重要的环节,原理是否弄懂直接关系到实验能不能成功,原理图的分析主要包括弄懂各芯片、各器件的功能,比如说要清楚74LS244芯片的各引脚图的功能,还要知道6位LED数码管的引脚图以及三极管的各个脚对应的是哪个极等问题。

在这些都弄懂后接下来就是焊接了,,焊接时既要要焊的牢,又要焊的美观,这些都需要在焊接过程中十分注意。

焊接工作完成后需要进行调试,调试一般情况下都会出现各种各样的问题,幸运的是,我第一次调试就成功了,从而证明了硬件没问题啦。

剩下就是软件的调试,软件的调试比较简单,主要看懂程序的每一部分,并正确修改有错误的地方就行啦。

本次课程设计时间虽然不是很长,但它是一个很好的实践机会。

上学期我们对单片机的理论进行了学习,使我对单片机有了初步的了解,通过本次的课程设计使我对单片机的理解更深刻了,许多的知识动手后掌握的也更好。

总之,通本次课程设计,使我收获很大,我也会在今后的学习中加强这方面知识的学习和掌握。

 

2.附录A:

汇编源程序

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

;;AT89C52时钟程序;;

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

;*********************************************************************************************;

;以下程序能用于24小时计时,能作为秒表使用,能定时闹铃1分钟(也可关).

;使用方法:

开机后在00:

00:

00起开始计时,

(1)长按P1.0进入调分状态:

分单元闪烁

;按P1.0加1,按P1.1减1.再长按P1.0进入时调整状态,时单元闪烁,加减调整同调分.

;按长按退出调整状态.

(2)按下P1.1进入秒表状态:

按P1.2暂停,再按P1.2秒表清零,再按

;P1.2秒表又启动,按P1.1退出秒表回到时钟状态.(3)按P1.3进入设定闹时状态:

00:

00:

-,可进

;行分设定,按P1.2分加1,再按P1.3为时调整,00:

00:

-,按P1.2时加1,按P1.1闹铃有效,显示为00:

00:

-0,再按

;P1.1闹铃无效(显示00:

00:

-,),按P1.3调闹钟结束.在闹铃时可按P1.3停闹,不按闹铃1分钟.

;定时器T0、T1溢出周期为50MS,T0为秒计数用,T1为调整时闪烁及秒表定时用,

;P1.0、P1.1、P1.2、P1.3为调整按钮,P0口为字符输出口,P2为扫描口,P1.7为蜂呜器口,采用共阳显示管。

;50H-55H为闹钟定时单元,60H-65H为秒表计时单元,70H-75H为显示时间单元,76H-79H为分时计时单元。

;03H标志=0时钟闪烁,=1秒表,05H=0,不闹铃,=1要闹铃.07H每秒改变一次,用作间隔呜叫.

;***********************************************************************************************;

DISPFIRSTEQU30H;显示首址存放单元

BELLEQUP1.7;小喇叭

CONBSEQU2FH;存放报时次数

;

;****************************************

;;中断入口程序;;

;****************************************

;

ORG0000H;程序执行开始地址

LJMPSTART;跳到标号START执行

ORG0003H;外中断0中断程序入口

RETI;外中断0中断返回

ORG000BH;定时器T0中断程序入口

LJMPINTT0;跳至INTTO执行

ORG0013H;外中断1中断程序入口

RETI;外中断1中断返回

ORG001BH;定时器T1中断程序入口

LJMPINTT1;跳至INTT1执行

ORG0023H;串行中断程序入口地址

RETI;串行中断程序返回

;

;****************************************

;;以下程序开始;;

;****************************************

;整点报时用

QQQQ:

MOVA,#10H

MOVB,79H

MULAB

ADDA,78H

MOVCONBS,A

BSLOOP:

LCALLDS20MS

LCALLDL1S

LCALLDL1S

LCALLDL1S

DJNZCONBS,BSLOOP

CLR08H;清整点报时标志

AJMPSTART1

;

;****************************************

;;主程序开始;;

;****************************************

;

START:

LCALLST;上电显示年月日及班级学号

MOVR0,#00H;清00H-7FH内存单元

MOVR7,#80H;

CLEARDISP:

MOV@R0,#00H;

INCR0;

DJNZR7,CLEARDISP;

MOV20H,#00H;清20H(标志用)

MOV7AH,#0AH;放入"熄灭符"数据

MOVTMOD,#11H;设T0、T1为16位定时器

MOVTL0,#0B0H;50MS定时初值(T0计时用)

MOVTH0,#3CH;50MS定时初值

MOVTL1,#0B0H;50MS定时初值(T1闪烁定时用)

MOVTH1,#3CH;50MS定时初值

SETBEA;总中断开放

SETBET0;允许T0中断

SETBTR0;开启T0定时器

MOVR4,#14H;1秒定时用计数值(50MS×20)

MOVDISPFIRST,#70H;显示单元为70-75H

;以下主程序循环

START1:

LCALLDISPLAY;调用显示子程序

JNBP1.0,SETMM1;P1.0口为0时转时间调整程序

JNBP1.1,FUNSS;秒表功能,P1.1按键调时时作减1加能

JNBP1.2,FUNPT;秒表STOP,PUSE,CLR

JNBP1.3,TSFUN;定时闹铃设定

JB08H,QQQQ

AJMPSTART1;P1.0口为1时跳回START1

;

FUNPT:

LJMPFUNPTT

;以下闹铃时间设定程序,按P1.3进入设定

TSFUN:

LCALLDS20MS

JBP1.3,START1;

WAIT113:

JNBP1.3,WAIT113;等待键释放

JB05H,CLOSESP;闹铃已开的话,关闹铃

MOVDISPFIRST,#50H;进入闹铃设定程序,显示50-55H闹钟定时单元

MOV50H,#0CH;"-"闹铃设定时显示格式00:

00:

-

MOV51H,#0AH;"黑"

;

DSWAIT:

SETBEA

LCALLDISPLAY

JNBP1.2,DSFINC;分加1

JNBP1.0,DSDEC;分减1

JNBP1.3,DSSFU;进入时调整

AJMPDSWAIT

;

CLOSESP:

CLR05H;关闹铃标志

CLRBELL

AJMPSTART1

DSSFU:

LCALLDS20MS;消抖

JBP1.3,DSWAIT

LJMPDSSFUNN;进入时调整

;

SETMM1:

LJMPSETMM;转到时间调整程序SETMM

;

DSFINC:

LCALLDS20MS;消抖

JBP1.2,DSWAIT

DSWAIT12:

LCALLDISPLAY;等键释放

JNBP1.2,DSWAIT12

CLREA

MOVR0,#53H;

LCALLADD1;闹铃设定分加1

MOVA,R3;分数据放入A

CLRC;清进位标志

CJNEA,#60H,ADDHH22;

ADDHH22:

JCDSWAIT;小于60分时返回

ACALLCLR0;大于或等于60分时分计时单元清0

AJMPDSWAIT

DSDEC:

LCALLDS20MS;消抖

JBP1.0,DSWAIT

DSWAITEE:

LCALLDISPLAY;等键释放

JNBP1.0,DSWAITEE

CLREA

MOVR0,#53H;

LCALLsub1;闹铃设定分减1

LJMPDSWAIT

;以下秒表功能/时钟转换程序

;按下P1.1可进行功能转换

FUNSS:

LCALLDS20MS

JBP1.1,START11

WAIT11:

JNBP1.1,WAIT11

CPL03H

JNB03H,TIMFUN

MOVDISPFIRST,#60H;显示秒表数据单元

MOV60H,#00H

MOV61H,#00H

MOV62H,#00H

MOV63H,#00H

MOV64H,#00H

MOV65H,#00H

MOVTL1,#0F0H;10MS定时初值()

MOVTH1,#0D8H;10MS定时初值

SETBTR1

SETBET1

START11:

LJMPSTART1

TIMFUN:

MOVDISPFIRST,#70H;显示时钟数据单元

CLRET1

CLRTR1

START12:

LJMPSTART1

;以下秒表暂停\清零功能程序

;按下P1.2暂停或清0,按下P1.1退出秒表回到时钟计时

FUNPTT:

LCALLDS20MS

JBP1.2,START12

WAIT22:

JNBP1.2,WAIT21

CLRET1

CLRTR1

WAIT33:

JNBP1.1,FUNSS

JBP1.2,WAIT31

LCALLDS20MS

JBP1.2,WAIT33

WAIT66:

JNBP1.2,WAIT61

MOV60H,#00H

MOV61H,#00H

MOV62H,#00H

MOV63H,#00H

MOV64H,#00H

MOV65H,#00H

WAIT44:

JNBP1.1,FUNSS

JBP1.2,WAIT41

LCALLDS20MS

JBP1.2,WAIT44

WAIT55:

JNBP1.2,WAIT51

SETBET1

SETBTR1

AJMPSTART1

;以下键等待释放时显示不会熄灭用

WAIT21:

LCALLDISPLAY

AJMPWAIT22

WAIT31:

LCALLDISPLAY

AJMPWAIT33

WAIT41:

LCALLDISPLAY

AJMPWAIT44

WAIT51:

LCALLDISPLAY

AJMPWAIT55

WAIT61:

LCALLDISPLAY

AJMPWAIT66

;

;

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

;;1秒计时程序;;

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

;T0中断服务程序

INTT0:

PUSHACC;累加器入栈保护

PUSHPSW;状态字入栈保护

CLRET0;关T0中断允许

CLRTR0;关闭定时器T0

MOVA,#0B7H;中断响应时间同步修正

ADDA,TL0;低8位初值修正

MOVTL0,A;重装初值(低8位修正值)

MOVA,#3CH;高8位初值修正

ADDCA,TH0;

MOVTH0,A;重装初值(高8位修正值)

SETBTR0;开启定时器T0

DJNZR4,OUTT0;20次中断未到中断退出

ADDSS:

MOVR4,#14H;20次中断到(1秒)重赋初值

CPL07H;闹铃时间隔呜叫用

MOVR0,#71H;指向秒计时单元(71H-72H)

ACALLADD1;调用加1程序(加1秒操作)

MOVA,R3;秒数据放入A(R3为2位十进制数组合)

CLRC;清进位标志

CJNEA,#60H,ADDMM;

ADDMM:

JCOUTT0;小于60秒时中断退出

ACALLCLR0;大于或等于60秒时对秒计时单元清0

MOVR0,#77H;指向分计时单元(76H-77H)

ACALLADD1;分计时单元加1分钟

MOVA,R3;分数据放入A

CLRC;清进位标志

CJNEA,#60H,ADDHH;

ADDHH:

JCOUTT0;小于60分时中断退出

ACALLCLR0;大于或等于60分时分计时单元清0

LCALLDS20MS;正点报时

SETB08H

MOVR0,#79H;指向小时计时单元(78H-79H)

ACALLADD1;小时计时单元加1小时

MOVA,R3;时数据放入A

CLRC;清进位标志

CJNEA,#24H,HOUR;

HOUR:

JCOUTT0;小于24小

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 求职职场 > 简历

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1