数字电子钟的设计课程设计论文 精品.docx

上传人:b****6 文档编号:7534200 上传时间:2023-01-24 格式:DOCX 页数:27 大小:327.21KB
下载 相关 举报
数字电子钟的设计课程设计论文 精品.docx_第1页
第1页 / 共27页
数字电子钟的设计课程设计论文 精品.docx_第2页
第2页 / 共27页
数字电子钟的设计课程设计论文 精品.docx_第3页
第3页 / 共27页
数字电子钟的设计课程设计论文 精品.docx_第4页
第4页 / 共27页
数字电子钟的设计课程设计论文 精品.docx_第5页
第5页 / 共27页
点击查看更多>>
下载资源
资源描述

数字电子钟的设计课程设计论文 精品.docx

《数字电子钟的设计课程设计论文 精品.docx》由会员分享,可在线阅读,更多相关《数字电子钟的设计课程设计论文 精品.docx(27页珍藏版)》请在冰豆网上搜索。

数字电子钟的设计课程设计论文 精品.docx

数字电子钟的设计课程设计论文精品

 

XX学院课程设计论文

 

论文题目:

数字电子钟的设计

姓名:

所在院系:

电信学院

班级:

学号:

指导教师:

 

XX学院

二〇一三年一月六日

 

摘要

单片机又称单片微控制器,它不是完成某一个逻辑功能的芯片,而是把一个计算机系统集成到一个芯片上。

概括的讲,一块芯片就成了一台计算机。

单片机具有体积小、功能强、应用面广等优点,为学习、应用和开发提供了便利条件。

现在,这种单片机的使用领域已十分广泛。

彩电、冰箱、空调、录像机、VCD、遥控器、游戏机、电饭煲等无处不见单片机的影子,单片机早已深深地融入我们每个人的生活之中。

单片机能大大地提高这些产品的智能性,易用性及节能性等主要性能指标,给我们的生活带来舒适和方便的同时,在工农业生产上也极大地提高了生产效率和产品质量。

此外,单片机在工商、金融、科研、教育、国防航空等领域都有着十分广泛的用途。

数字钟是采用数字电路实现对“时”、“分”、“秒”数字显示的计时装置。

该课程设计为数字电子钟的设计。

以AT89C51为核心,配合LED数码管显示器和按键为用户提供长期、连续、可靠、稳定的工作环境。

该数字电子钟有时分秒显示和日期显示以及时间和日期调整的功能。

系统软件设计包括单片机计算机两部分的编程。

计算机软件编程主要实现参数设置、串行口数据接收、指令发送以及数据的显示和存储。

单片机软件编程主要实现键盘、LED显示等各模块的功能,采用汇编语言编程。

数字钟是其小巧,价格低廉,走时精度高,使用方便,功能多,便于集成化而受广大消费的喜爱,

因此得到了广泛的使用。

关键词数字电子钟;单片机;LED显示

第一章设计目的和方案4

1.1设计任务4

1.1.1设计题目:

数字电子钟4

1.1.2设计目的与任务4

1.2功能要求说明4

1.3设计总体方案及工作原理4

第二章数字电子钟的硬件系统的设计5

2.1硬件系统各模块功能设计5

2.1.1单片机最小系统6

2.1.2键盘模块6

2.1.3LED显示电路6

2.1.4接口电路6

2.2电路原理图、PCB图和元器件布局6

2.3元器件清单7

第三章数字电子钟的软件系统的设计7

3.1使用的单片机资源的情况7

3.2各模块功能简要介绍8

3.3程序的流程图8

3.4程序清单12

第四章设计仿真和结果分析13

4.1设计结论和功能使用说明13

4.1.1设计结论13

4.1.2功能及使用说明13

4.2仿真结果14

4.3设计系统误差分析15

第五章设计小结16

致谢16

参考文献17

附录19

第一章设计目的和方案

1.1设计任务

1.1.1设计题目:

数字电子钟

1.1.2设计目的与任务

通过理论设计和实物制作解决相应的实际问题,巩固和运用在《单片机原理及接口技术》中所学的理论知识和实验技能,掌握单片机应用系统的一般设计方法,提高设计能力和实践动手能力,为以后从事电子电路设计、研发电子产品打下良好的基础。

1.2功能要求说明

1、显示准确的北京时间(时、分、秒),可用24小时制式;

2、随时可以调校时间。

3、增加公历日期显示功能(年、月、日),年号只显示最后两位;

4、随时可以调校年、月、日;

5、允许通过转换功能键转换显示时间或日期。

硬件方案:

⑴显示器采用6位LED数码管(共阳),可分别显示时间或日期;(通过KB键可切换)

⑵显示器的驱动采用动态扫描电路形式,以达到简化电路的目的。

但要注意所需的驱动电流比静态驱动时要大,因此要增加驱动电路。

可采用74LS244或者晶体管;其中74ls244是用来驱动段选码,晶体管是驱动位选码

1.3设计总体方案及工作原理

设计中采用AT89C51芯片及LED显示器,一些独立式按键构成一个简单的数字电子钟。

设计中是采用单片机的内部定时器进行定时,程序框图如图所示。

整个电子钟的工作原理是:

在正常的供电状态下,首先利用单片机定时,到了相应的时间由单片机将所需要显示的数据送到LED显示器的输入口,当有键按下时则进入相应的按键显示和调整状态,进行按键调整。

总体硬件原理图如图所示

 

第二章数字电子钟的硬件系统的设计

2.1硬件系统各模块功能设计

该数字电子钟由单片机最小系统、键盘模块、LED显示电路模块、接口电路模块组成。

各模块的功能如下:

2.1.1单片机最小系统

由AT89C51单片机、时钟电路和复位电路构成。

AT89C51是一种带8K字节闪烁可编程可擦除只读存储器(FPEROM—FalshProgrammableandErasableReadOnlyMemory)的低电压,高性能CMOS8位微处理器,俗称单片机。

时钟电路由一个12MHZ的石英晶体振荡器和两个22pF的的电容组成振荡电路和分频电路,为单片机提供内部时钟。

复位电路采用上电复位和按键复位结合的方式对电路进行复位,主要是通过RST引脚送入单片机。

2.1.2键盘模块

采用独立式键盘接法,共有四个按键来对电路进行控制。

分别接在单片机的P1口线上。

一个键控制开和关,一个键负责调整,另外两个键辅助调整。

2.1.3LED显示电路

采用六个共阳的数码管显示器进行显示,加上一个74LS244作为驱动和8个220Ω的电阻起限流的作用。

将段控口接在P0口上,位控口接在P3口上,实现对显示的控制。

2.1.4接口电路

接上一个电容组成的滤波电路和电源显示灯组成一个电源接口,为单片机工作供电。

2.2电路原理图、PCB图和元器件布局

采用Protel软件,Protel99SE是Protel公司近10年来致力于Windows平台开发的最新结晶,能实现从电学概念设计到输出物理生产数据,能够和形象的画出我们所要设计的产品。

电路原理图和PCB图及元器件布局见附录。

各模块拼接图

 

2.3元器件清单

见附录。

第三章数字电子钟的软件系统的设计

3.1使用的单片机资源的情况

该数字电子钟用到了单片机的定时器的功能,此外用到了单片机的中断功能,在数据的显示时所采用的是查表的方法,因此需要将表格、数据存到单片机的程序存储器中去。

由于电子钟需要可以进行调节,因此,需要在单片机的P口上加上按键,本设计采用独立式键盘,直接接在P1口上且按键的结果存贮在单片机的内部数据存储器里面。

用到的LED显示器接到了单片机的P0口线上和P3口线上。

3.2各模块功能简要介绍

该数字电子钟所用的软件模块有定时器模块、按键模块、LED显示模块。

(1)定时器模块

选择定时器0,设置定时方式为方式1,设置定时时间为50mS。

(2)按键模块

采用独立式键盘,共用四个按键对电路进行控制和操作,分别为K0、K1、K2、K3来控制电子钟的开/关和调整。

(3)LED显示模块

该电子钟一通电即让它显示P.,按开启键即可显示时分秒,再按切换键即可显示年月日,然后结合键盘操作还可以对时间进行调整。

3.3程序的流程图

(1)整体设计流程图

 

 

(2)键盘设计流程图

图3.2键盘设计流程图

(3)显示设计流程图

 

 

图3.3显示时分秒设计流程图

 

 

图3.4显示年月日设计流程图

3.4程序清单

见附录。

第四章设计仿真和结果分析

4.1设计结论和功能使用说明

4.1.1设计结论

通过对单片机进行外接键盘和LED数码管的操作以及加上硬件电路和软件的结合,实现了该数字电钟显示P.以及时分秒和年月日的显示,同时还可实现对该电子钟进行调整的功能。

通过测试和仿真以及修改,该电子钟最终能正常的工作。

4.1.2功能及使用说明

该数字电子钟采用八位数码管能实现年月日和时分秒的显示。

当电子钟一上电即可显示P.,设置数字钟的初始日期和时间为12年02月23日00时00分00秒.用四个按键实现电子钟的显示和调整的功能,分别为K0,K1,K2,K3,其中K0键为开启键,且显示的是时分秒,开启之后K2键可实现切换的功能,即可实现年月日和时分秒的切换显示;按K3键可实现年月日和时分秒的调整,按一下可以对当前显示的进行调整,再按一下即可切换到一个界面进行调整,调整的时候数字钟停止计时,当进行时分秒的调整时,K0键可实现对秒进行增大的调整,每按一下秒的值就加一,当秒增加到59时就重新从0开始继续增大,K1键可实现对分进行增大的调整,每按一下分的值就加一,当分增加到59的时候就重新从0开始继续增大,K2键可实现对时进行增大的调整,每按一下时的值就加一,当时的值增大到23的时候就重新从0开始继续增大.当进行年月日的调整时,K0键可实现对日进行增大的调整,每按一下秒的值就加一,当日增加到28或者30或者31(看不同的年份和月份)时就重新从0开始继续增大,K1键可实现对月进行增大的调整,每按一下月的值就加一,当月增加到12的时候就重新从0开始继续增大,K2键可实现对年进行增大的调整,每按一下时的值就加一,当时的值增大到99的时候就重新从0开始继续增大.当对年月日和时分秒都调整完之后,再按一下K3键即可跳出调整的状态,数字钟继续开始计时工作,在电子钟正常计时的时候再按K0键即可对电子钟进行关闭.

4.2仿真结果

在仿真时用到了两个软件,第一个是Keil,第二个是Protues,本次仿真是将两个软件结合起来进行的。

用Protues软件进行仿真,其仿真的电路图如图4.1所示

图4.1Protues仿真电路图

 

数字电子钟正常工作时,仿真的LED显示器显示如图4.2所示,当按下切换键时,数字电子钟进入日期显示界面,此时LED数码管显示器的显示如图4.3和4.4所示,当按下调整键时,数字电子钟进入调整界面,此时LED数码管显示器的显示如图4.5和4.5所示。

图4.2数字电子钟正常工作时的显示图

P.

图4.3数字电子钟显示时分秒的显示图

000000.

图4.4数字电子钟显示日期的显示图

120223.

4.3设计系统误差分析

本数字电子钟在跟标准的电子钟比较时,时间稍微慢一点,产生此种情况的原因有:

其一是在执行程序指令时,由于需要耗费一定的时间,因此会比标准的电子钟要慢一点。

其二是晶振不够标准,使得定时器定时时不够精准。

 

第五章设计小结

从硬件电路的设计到软件电路的设计,整个过程当中我学到了很多的东西,在绘制原理图时我查找了相关软件的使用方法,并悉心向老师和同学请教,学会对PROTEL和PROTEUS的使用;在软件系统的设计中,我遇到了很多的问题,不能把一些小模块系统联系起来,但通过不断的探索,最终把整个程序完整的编出来了,并能进行仿真使用;

本次的设计使我学到如何从理论转化为实践,怎样将我所学到的知识运用到我以后的工作中。

通过单片机硬件电路的调试,实现了预先设定的功能,设计主要用到的元件不多,最主要的是程序也比较长比较麻烦,同时也遇到了不少困难,尤其是关于校时模块的设计实现。

虽然过程中遇到了一些困难,但是在解决这些问题的过程无疑也是对自己自身专业素质的一种提高。

此次的电子时钟设计给我奠定了一个实践基础,同时在查找资料的过程中我也学到了许多新的知识,在和同学协作过程中增进同学间的友谊,使我对团队精神的积极性和重要性有了更加充分的认识和理解。

 

致谢

 

首先衷心感谢在此次课程设计中给予我帮助的老师及同学们,帮助我分析和解决问题。

在开始设计的时候,经过老师悉心的指导和讲解,让我渐渐有自己的方案和选择方向,在每一步的进展当中,我都碰到了很多的问题,画原理图的时候和分析电子钟工作的原理以及怎么确定和修改,都是经过一步步修改而成的。

设计软件的时候,因为是设计一个系统的程序,所以开始还没形成系统的思维,但在老师的讲解和同学的教导下,渐渐的将一个个子程序联系起来调试运行。

在此,谨向给予我帮助的老师和同学深表言谢。

 

参考文献

[1]彭勇,叶晓勇,王万刚单片机技术北京电子工业出版社2009

[2]李广弟,朱月秀,冷祖祁单片机基础[M].北京:

北京航空航天大学出版社,2007

[3]刘湘涛.江世明.单片机原理与应用[M].北京:

电子工业出版社,2006.

[4]李光飞.单片机课程设计实例指导[M].北京:

北京航空航天大学出版社,2004.9

[5]朱定华.单片机原理及接口技术实验[M].北京:

北方交通大学出版社2002.11

[6]张洪润,兰清华.单片机应用技术教程[M].北京:

清华大学出版社,1997.11

 

附录

*******************************************************************************

***;按键接P1.0~P1.3分别为K0、K1、K2、K3;**************************

***;数码管显示器段控口接单片机的P0口,位控口接单片机的P3口;*****

********************************************************************

**********;存储单元定义;*******************************************************

YEAREQU40H

MONTHEQU41H

DAYEQU42H

HOUREQU43H

MINUTEEQU44H

SECONDEQU45H

TIMEEQU46H

ORG0000H

AJMPSTART

ORG000BH

AJMPET_0

START:

LCALLLING

MOVTIME,#00H

MOVTMOD,#01H;设置定时器的工作方式为方式一

MOVTH0,#(65536-50000)/256;定时50毫秒

MOVTL0,#(65536-50000)MOD256

MOVIE,#82H

LOOP:

LCALLDISPLAY0;显示P.

JNBP1.0,MAIN1

JMPLOOP

MAIN1:

LCALLDISPLAY0

JNBP1.0,MAIN1

SETBTR0;开启定时器

*****************;主函数;******************************************************

MAIN:

LCALLKEY

JB20H.3,SET1

JB20H.0,GUAN

JB20H.2,RIQI

LCALLDISPLAY2;显示时分秒

AJMPMAIN

*********************;显示日期;************************************************

RIQI:

LCALLDISPLAY1

LCALLKEY

JB20H.2,MAIN

JMPRIQI

GUAN:

MOVP2,#0FFH;关显示

LCALLKEY

JB20H.0,MAIN

JMPGUAN

***************;进入时分秒的调整界面;******************************************

SET1:

CLRTR0;时分秒的调整

LCALLDISPLAY2

LCALLKEY

JB20H.3,SET2

JB20H.2,TS

JB20H.1,TF

JB20H.0,TM

JMPSET1

TS:

INCHOUR;时的调整

MOVA,HOUR;是否达到了24小时到了就清零

CJNEA,#24,SET1

AJMPLL1

LL1:

MOVHOUR,#0

JMPSET1

TF:

INCMINUTE;分的调整

MOVA,MINUTE;是否达到了60分到了就清零

CJNEA,#60,SET1

AJMPLL2

LL2:

MOVMINUTE,#0

JMPSET1

TM:

INCSECOND;秒的调整

MOVA,SECOND;是否达到了60秒到了就清零

CJNEA,#60,SET1

AJMPLL3

LL3:

MOVSECOND,#0

JMPSET1

SET2:

LCALLKEY;进入年月日的调整界面

LCALLDISPLAY1;显示年月日

JB20H.3,EXIT

JB20H.2,TN

JB20H.1,TY

JB20H.0,TR

JMPSET2

EXIT:

SETBTR0;关定时器

JMPMAIN

TN:

INCYEAR;年的调整

MOVA,YEAR;是否达到了99年到了就清零

CJNEA,#99,SET2

AJMPLL4

LL4:

MOVYEAR,#0

JMPSET2

TY:

INCMONTH;月的调整

MOVA,MONTH;是否达到了12月到了就清零

CJNEA,#13,SET2

AJMPLL5

LL5:

MOVMONTH,#0

JMPSET2

TR:

INCDAY;日的调整

MOVA,YEAR;看是闰年还是非闰年

MOVB,#4

DIVAB

MOVA,B

JZWW1;闰年则转WW1

JMPWW2;非闰年则转WW2

WW1:

MOVA,MONTH;看是闰年的哪一月份

CJNEA,#2,LL6;是闰年中的2月则为29天MOVA,DAY到29就清零

CJNEA,#29,SET2

MOVDAY,#0

AJMPSET2

LL6:

CJNEA,#4,LL7;闰年中的4、6、9、11为30天

MOVA,DAY到30就清零

CJNEA,#30,SET2

MOVDAY,#0

AJMPSET2

LL7:

MOVA,MONTH

CJNEA,#6,LL8

MOVA,DAY

CJNEA,#30,SET2

MOVDAY,#0

AJMPSET2

LL8:

MOVA,MONTH

CJNEA,#9,LL9

MOVA,DAY

CJNEA,#30,SET2

MOVDAY,#0

AJMPSET2

LL9:

MOVA,MONTH

CJNEA,#11,LLA

MOVA,DAY

CJNEA,#30,ZHUAN

MOVDAY,#0

AJMPSET2

LLA:

AJMPWW6

WW6:

MOVA,DAY;闰年中的1、3、5、7、8、10、12月

CJNEA,#31,ZHUAN

MOVDAY,#0

ZHUAN:

AJMPSET2

WW2:

MOVA,MONTH;看是闰年中的哪一月

CJNEA,#2,LL6;非闰年中的2月为28天,到28则清零

MOVA,DAY;非润年中的4、6、9、11月为30天其他

CJNEA,#28,ZHUAN31天

MOVDAY,#0

AJMPSET2

*********************;中断子程序和时间的增一;**********************************

ET_0:

MOVTH0,#(65536-50000)/256

MOVTL0,#(65536-50000)MOD256

INCTIME

MOVA,TIME

CJNEA,#20,DIAN

AJMPZM

ZM:

INCSECOND

MOVTIME,#0;TIME为20时SECOND加一同时对TIME

MOVA,SECOND清零

CJNEA,#60,DIAN

ZF:

INCMINUTE

MOVSECOND,#0;SECOND为60时MINUTE加一同时SECOND

MOVA,MINUTE清零

CJNEA,#60,DIAN

ZS:

INCHOUR;MINUTE为60时HOUR加一同时MINUTE

MOVMINUTE,#0清零

MOVA,HOUR

CJNEA,#24,DIAN

AJMPZR;HOUR为23时DAY加一同时HOUR清零

ZR:

INCDAY

MOVHOUR,#0

MOVA,YEAR

MOVB,#4

DIVAB

JZRUN;闰年则转RUN

AJMPNRUN;非闰年则转NRUN

DIAN:

RETI;是否为闰年中的2月,是则到了29就

RUN:

MOVA,MONTHMONTH加一同时DAY清零

CJNEA,#3,NEXT1;是否为闰年中的4、6、9、11月,是则到

了30MONTH就加一同时DAY清零

AJMPBB1;闰年中的1、3、5、7、8、10、12月为31

天到了31则MONTH加一DAY清零

NEXT1:

MOVA,MONTH

CJNEA,#5,NEXT2

AJMPBB2

NEXT2:

MOVA,MONTH

CJNEA,#7,NEXT3

AJMPBB2

NEXT3:

MOVA,MONTH

CJNEA,#10,NEXT4

AJMPBB2

NEXT4:

MOVA,MONTH

CJNEA,#12,NEXT5

AJMPBB2

NEXT5:

AJMPBB3

BB1:

MOVA,DAY

CJNEA,#30,DIAN

AJMPZY

BB2:

MOVA,DAY

CJNEA,#31,DIAN

AJMPZY

BB3:

MOVA,DAY

CJNEA,#32,DIAN

AJMPZY

BB4:

MOVA,DAY

CJNEA,#29,DIAN

AJMPZY

NRUN:

MOVA,MONTH

CJNEA,#3,NEXT6;非闰年中的2月到了28就MONTH

加一同时DAY清零

AJMPBB4;非闰年中的4、6、9、11月到了30天

NEXT6:

MOVA,MONTH则MONTH加一同时DAY清零CJNEA,#5,NEXT7;非闰年中的1、3、5、7、8、10、12

AJMPBB2月为31天到了则MONTH加一同时DAY清零

NEXT7:

MOVA,MONTH

CJNEA,#7,NEXT8

AJMPBB2

NEXT8:

MOVA,MONTH

CJNEA,#

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

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

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

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