数字电子钟正文.docx

上传人:b****6 文档编号:3917986 上传时间:2022-11-26 格式:DOCX 页数:29 大小:223.93KB
下载 相关 举报
数字电子钟正文.docx_第1页
第1页 / 共29页
数字电子钟正文.docx_第2页
第2页 / 共29页
数字电子钟正文.docx_第3页
第3页 / 共29页
数字电子钟正文.docx_第4页
第4页 / 共29页
数字电子钟正文.docx_第5页
第5页 / 共29页
点击查看更多>>
下载资源
资源描述

数字电子钟正文.docx

《数字电子钟正文.docx》由会员分享,可在线阅读,更多相关《数字电子钟正文.docx(29页珍藏版)》请在冰豆网上搜索。

数字电子钟正文.docx

数字电子钟正文

目录

1设计方案及工作原理1

1.1设计课题任务1

1.2功能要求说明1

1.3总体方案介绍1

1.4工作原理介绍2

2硬件系统的设计3

2.1硬件功能模块介绍时钟3

2.1.1时钟功能模块3

2.1.2键盘功能模块4

2.1.3码管显示模块5

2.1.4复位电路模块6

2.2原理图、PCB图、元器件布局图7

2.2.1数字电子钟原理图7

2.2.2数字电子钟PCB图7

2.2.3数字电子钟元器件布局图7

2.3元器件清单7

3软件系统的设计8

3.1单片机资源使用说明8

3.2软件系统各模块功能介绍8

3.3软件系统程序流程框图9

3.4软件系统的程序13

4设计总结14

4.1使用说明14

4.2设计结论14

4.3仿真结果14

4.4误差分析15

4.5心得体会15

4.6教学建议16

结束语17

致谢18

参考文献19

附录A数字电子钟原理图20

附录B数字电子钟PCB图21

附录C数字电子钟元器件布局图22

附录D数字电子钟实物图23

附录E程序清单24

1设计方案及工作原理

1.1设计课题任务

设计一个具有特定功能的电子钟。

该电子钟上电或按键复位后能自动显示系统提示符“P.”,进入时钟准备状态;第一次按电子钟启动/调整键,电子钟从0时0分0秒开始运行,进入时钟运行状态;再次按电子钟启动/调整键,则电子钟进入时钟调整状态,此时可利用各调整键调整时间,调整结束后可按启动/调整键再次进入时钟运行状态。

1.2功能要求说明

本设计设计电子钟上电显示P.进入等待状态,按下K0键选择电子钟功能,电子钟开始计时。

作为电子钟使用时,首先该电子钟在功能上具有一般电子钟的固有功能,即能比较准确显示时间,当显示至59秒时分显示自动加一;当分、秒显示至59分59秒时,小时显示自动加一;当显示至23小时59分59秒时,电子钟自动变为0时0分0秒显示;还具有调整功能,可以调节时、分、秒。

作为电子钟使用时,其最长定时是24h,最小定时是0.01s,具有暂停、连续,清零、停止功能。

1.3总体方案介绍

电子钟的总体功能原理是以AT89S52单片机为主要的控制核心,通过外接8个独立式键盘作为控制信号源,两个四位一体数码管作为显示器件,单片机实时的去执行相应的功能。

在数码管上显示出来,此时通过不同的按键来观察和调节各种数据。

本电子钟主要由单片机、4*1独立键盘、显示接口电路和复位电路构成,设计课题的总体方案如图1所示。

图1硬件设计方案

软件总设计框图如图2所示

图2软件总设计框图

1.4工作原理介绍

在本次设计里完成了电子钟功能。

数字电子钟主要是利用单片机定时/计数器的工作和中断服务的作用完成计时功能的,首先用定时计数器采用工作方式1,定时50ms,然后在累加20次实现1秒,单片机的定时时间一到,单片机会自动中断使程序转向中断服务程序执行,中断服务程序执行完就会返回原程序,等待下一次定时时间的到来再次产生中断。

在此基础上,单片机按照已设定的程序执行下去,使单片机能计算时间量完成计时功能。

在单片机并行I/O口扩展键盘和数码管,实现对时间的调整和显示。

 

2硬件系统的设计

 

2.1硬件功能模块介绍时钟

2.1.1时钟功能模块

时钟电路用于产生AT89S52单片机工作时所需要的时钟控制信号,AT89S52单片机的内部电路在时钟信号控制下,严格地按照时序执行指令进行工作,而时序所研究的是指令执行中各个信号在时间上的关系。

单片机各个功能部件的运行都是以时钟控制信号为基准,有条不紊的一拍一拍地工作。

因为,时序频率直接影响单片机的速度。

时钟电路通过在芯片的外部XTAL1和XTAL2两个引脚跨接晶体振荡器和微调电容,形成反馈电路,就构成了一个稳定的自激振荡电路。

时钟电路为单片机产生时钟脉冲序列,晶振频率为12MHz,时钟功能模块图如图3所示。

图3时钟功能模块图

 

2.1.2键盘功能模块

为了方便时钟调整与秒表的控制,在单片P1口口线上接了独立键盘,采用低电平有效地方法。

在本次电子钟设计中,调整是与键盘脱不了关系的,因为键盘是机械按钮,所以在触点闭合及释放的瞬间将出现电压抖动,所以在键扫描时应该要消除抖动,而且对于一键多功能的按钮必须要判释放,以免某个程序段多次执行,键盘功能模块电路如图4所示。

图4键盘功能模块图

2.1.3数码管显示模块

数码管显示器是单片机重要的输出设备,它不仅具有发光响应快,高频特性好,而且机械性能好,工作电压低,随着工艺发展,可以发出不同颜色的光。

在本次设计中,采用共阳极数码管,利用三极管驱动器段控口以便LED发出较亮的光。

在本次设计中采用了两个四位一体数码管,数码管的段控接在AT89S52单片机的P0口线上,从a到dp与P0.0到P0.7对应连接,位控制线接在AT89S52单片机的P2口线上,从LED0到LED7与P2.0到P2.7对应连接,数码管显示模块图如图5所示。

图5数码管显示模块图

2.1.4复位电路模块

复位是单片机的初始操作,除了进入系统的正常初始化之外,当由于程序运行出错或操作错误使系统处于死锁状态时,为摆脱困境,也需安装复位键以重新启动。

复位操作有上电自动复位和按键手动复位两种方式。

复位电路通过极性电容和1个电阻串联,电容接VCC,电阻接地完成了上电复位,在电容两端并联一个电阻就可以实现按键电平复位,复位电路图如图6所示。

图6复位电路模块图

2.2原理图、PCB图、元器件布局图

2.2.1数字电子钟原理图

数字电子原理图如附录A所示。

2.2.2数字电子钟PCB图

数字电子钟PCB图如附录B所示。

2.2.3数字电子钟元器件布局图

数字电子器元器件布局图如附录C所示。

2.3元器件清单

元器件清单如表1所示

表1元器件清单

序号

名称

数量(/个)

1

AT89S52加底座

1

2

12MHz晶振

1

3

33pF电容

2

4

22μF极性电容

1

5

LED二极管

9

6

小按键

9

7

单排插

1

8

蜂鸣器

1

9

470Ω电阻

24

10

4位一体共阳数码管加底座

2

11

10KΩ排阻

2

12

1KΩ电阻

3

13

PNP9012三极管

9

14

200Ω电阻

1

15

下载口

1

16

6脚开关

1

3软件系统的设计

 

3.1单片机资源使用说明

设计课题使用单片机资源的情况如下:

P0口输出数码管段选信号,P2口输出数码管位选信号;晶振12M;调整选择键SET_KEY:

P1.0;通过选择键选择调整位,选中位闪烁;增加键ADD_KEY:

P1.1;按一次使选中位加1;减少键DEC_KEY:

P1.2;按一次使选中位减1;P3.1为蜂鸣器发声报时;50H-5FH;16个寄存器单元作为显示单元;

50H用于控制秒基准时钟源的产生;51H清零秒寄存器;

52H清零分寄存器;53H清零时寄存器;

5FH用于秒个位;5EH用于秒十位;

5DH用于分个位;5CH用于分十位;

5BH用于时个位;5AH用于时十位;

54H用于控制调时闪烁;堆栈栈底:

70H。

3.2软件系统各模块功能介绍

主程序模块:

程序的初始化及复位后显示P.,此时进入功能选择状态,按下K0选择电子钟并同时启动电子钟。

电子钟程序模块:

当电子钟选择键按下时,先给缓冲区内清零,在通过查表给缓冲区一次送00-00-00并实现让00-00-00从左向右显示,一旦显示完则开启定时器开始计时,如果没有键按下则不断计时一直从00-00-00到23-59-59,然后重新从00-00-00开始。

这里采用定时器中断完成计时功能。

如果有键按下则启动2s定时,累计2s内K0按下的次数,按下1次则进入调秒状态,按下2次则进入调分状态,按下3次则进入调时,按下多次则无效,进入调整状态时,调整的改两位闪动显示并且蜂鸣器鸣叫以示提醒,次数按下K0键作为确认,按下K1就加1,按下K2就减1。

主要子程序模块:

为了方便软件程序编写,编写了许多子程序,有键扫描程序,用来判是否有键按下;有显示子程序,用于数码管的显示;有加1、减1子程序,用于对电子钟显时分秒的调整;还有延时程序,用于数码管动态显示、键盘扫描去抖动、延时。

3.3软件系统程序流程框图

系统软件采用汇编语言按模块化方式进行设计,然后通过Keil软件开发平台

将程序转变成十六进制程序语言,接着使用Proteous进行仿真,读出显示数据。

主程序流程框图如图7所示;

加1子程序如图8所示;

中断服务程序程序如图9所示;

键盘扫描子程序框图如图10所示;

显示子程序框图如图11所示;

图7主程序流程框图

 

图8加1子程序流程框图

图9中断子程序

 

图10键盘扫描子程序

图11显示子程序

3.4软件系统的程序

软件系统的程序清单如附录E所示。

 

4设计总结

 

4.1使用说明

本设计主要单片机最小系统完成,AT89S52为整个设计的核心主要实现功能数字电子钟,系统上电显示P.。

电子钟:

按下K0选择电子钟,数码管上00-00-00从左向右依次滚动显示直到LED7-LED1完全显示完00-00-00,开始计时,若计时时按下K0时钟暂停,按下其余键无效,暂停2s,若2s内K0键按下0次(按下其余键无效),继续开始计时;若2s内K0按下1次进入秒调整状态,若2s内K0按下2次进入分调整状态;若2s内K0按下3次进入时调整状态,按下次数多于3次则无效。

进入调整状态时,要调整的该位闪动,蜂鸣器鸣响以示提醒,此时按下K1则加1,按下K2则减1,按下K0则确认进入计时状态。

4.2设计结论

在本次设计中,我觉得重点和难点在于如何对电子钟的调整,对电子钟的调整有多种方案,既要实现调整功能又要实现调整方便等,于是在设计了个加1键基础上,又设计了一个减1键,这样大大缩短了对长时间调整的次数。

在这次设计中,精妙之处是利用定时器中断来对时钟计时和采用的一键多功能,还有增加了个虚拟键。

利用定时器中断,一旦定时器中断请求已产生立即跳往中断服务程序,只要给定时器初值初始化恰当,计时产生的误差可以忽略。

在电子钟设计时K0键有多种功能,首先作为电子钟的选择键,有暂停,调秒、调分、调时选择键,还有作为确认键。

当在计时时按下K0,就启动2s定时,2s到了就会跳开,相当于个确认键一样。

当然在本次设计中也有不足之处,比如说电子钟调整时有一定的局限性,虽然实现了随意选择时、分、秒进行调整,但是一旦进入调整状态,就只能对该选择的位进行调整,不能切换到其他位。

比如选择调时就不能在调整状态切换到调分或调秒。

4.3仿真结果

在ProteusISIS的Debug菜单中选择Execute,运行程序,系统仿真结果如图12与图13所示。

实现功能:

可调整运行的电子钟具有三种工作状态:

“P.”状态、运行状态、调整状态。

“P.”状态,依靠上电或按复位键进入,在此状态下,按S2、S3键均无效,S1键有效,进入运行状态;

运行状态,在此状态下,按S2、S3键均无效,只有按S1键有效,按下S1键后,退出运行状态,进入调整状态;

调整状态,按S1键进入时、分、秒的闪烁,在此状态下,按S2(+1键)、

S3(-1键)键均有效;调整结束后必须按S1键,即可退出调整状态,进入运行状态。

在调整状态时长按S2、S3时可以连加及连减。

时间显示格式为:

时-分-秒;

图12“P.”运行状态仿真

图13时钟运行状态仿真

4.4误差分析

该电子钟在运行中存在一定的误差,误差产生有三种可能,首先是采用的计时方案是软件计时的,计时优势利用中断来实现。

而当电子钟运行时间1秒时,又得去执行中断程序,这个过程是需要时间的,所以就产生了一定的误差,当然这个误差是避免不了的,其次还有硬件系统也有一定的影响。

第三,设计用到12MHz的晶振,计算是满20次为一秒钟,但实际会慢很多。

4.5心得体会

经过一个学期由凌老师教导的单片机的学习,我掌握了很多单片机学习的宝贵经验,尤其在编程的思路上面。

编程思路是整个程序的灵魂,没有编程思路,程序就不会编出来,就失去了编程的意义。

在开始编程之前,想好编程的思路,编程能力才会提高,编程的过程才会顺畅,程序的质量才会提高。

4.6教学建议

经过一个学期的单片机学习,我给老师一点建议是能够对我们再严格一点,虽然说自主学习很重要,但是人都是有惰性的,你不逼他,他就不会去做,所以说按照目前这种状况的话,自主学习这个办法只能是针对于少数人,我觉得还是要要求严格一点,这样可以照顾大多数人,这就是我给老师的建议。

 

 

结束语

 

在本次课程设计中,我感觉我学到了好多,最主要是自己在设计中遇到多种困难,自己通过发现问题、分析问题、解决问题,锻炼了自己的解决问题的能力,更重要是一种面对困难的态度,面对老师提出的要求,我没有退缩,而且做的很好。

在软件设计中,从一开始只能显示P.到可以计时,再到可以调整,每一个功能的实现都给了自己莫大的鼓励,感受到了成功的喜悦,一份耕耘一份收获。

但是通过相比较我也意识到自己的不足,考虑问题还不够完善。

 

致谢

 

做了两周的课程设计,有很多的心得体会,有关于单片机的,也有关于模电数电等基础科目的。

因为单片机才刚入门,刚拿到题目,不知道从哪入手,后来通过对书本的学习,加深了对单片机的理解。

有些知识会迁移和联系模电数电。

课堂教学考虑到大多数同学的需求,主要强调“基本”——基本知识、基本理论、基本方法、基本技能。

而这次设计正是为我们提供了一个深入学习、探索的机会,成为课堂教学的有益补充。

单片机理论的学习是为课程的设计作准备的,但有时学习的理论也解决不了实践中的问题。

实践中获得的知识能让我对单片机的知识有更好的认识和理解。

虽然这次的课程设计我参考了一些文献资料,没有做到创新,但在对程序的读写过程中我明白了许多。

这次课程设计的最大收获是只有把理论用到实践中我们才能真正掌握好所学知识。

 

 

参考文献

[1]马忠梅,籍顺心,张凯,马岩.单片机的C语言应用程序设计[M].北京:

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

MaZhongmei,J,ZhangKai,MaYan.MCUClanguageprogramdesign[M].beijing:

Beijingaerospaceuniversitypress,2006

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

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

LiGuangdi,ZhuYuexiu,LengZuqi.Microcontroller[M].beijing:

Beijinguniversityofaeronauticsandpress,2007

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

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

LiGuangfei.Thiscoursedesignexampleguide[M].beijing:

Beijinguniversityofaeronauticsandpress,2004.9

 

附录A数字电子钟原理图

 

附录B数字电子钟PCB图

 

附录C数字电子钟元器件布局图

 

附录D数字电子钟实物图

 

 

附录E程序清单

 

;本电子钟实现24小时制,8位数码管显示时分秒,可整点报时

;显示格式:

00-00-00(设置小时十位为0时,不显示)

;通过3只按键来调整时间

;调整选择键SET_KEY:

P1.0;通过选择键选择调整位,选中位闪烁

;增加键ADD_KEY:

P1.1;按一次使选中位加1

;减少键DEC_KEY:

P1.2;按一次使选中位减1

;如果长按ADD_KEY或DEC_KEY,可进行调时、调分快进快减,并停止闪烁

;如果选中位是秒,则按增加键或减少键可实现,但无调时快进和快减功能

;P0口输出数码管段选信号,P2口输出数码管位选信号;晶振12MHz

;50H用于控制秒基准时钟源的产生

;51H清零秒寄存器

;52H清零分寄存器

;53H清零时寄存器

;5FH用于秒个位;

;5EH用于秒十位

;5DH用于分个位;

;5CH用于分十位

;5BH用于时个位;

;5AH用于时十位

;54H用于控制调时闪烁

;程序入口

ORG0000H;程序入口地址

LJMPSTART;长跳转到显P.程序

ORG000BH;定时器0中断入口地址

LJMPTIMET0;跳转到定时器0中断程序

ORG1000H;显示P.程序起始地址

;显示P.程序

START:

MOVR6,#2;闪烁次数

MOVA,#0FEH;位选

TT:

MOVP2,A;(P2)=(A)=0FEH

MOVP0,#0CH;段码"P."

MOVP2,#0FFH;(P2)=0FFH

DJNZR6,TT;判断是否循环完成

JBP1.0,TT;键是否按下,没按下则转移

LCALLDELAY;延时去抖

JNBP1.0,KAI;再次判断键是否按下

KAI:

SETBP1.0;置位P1.0

CLRA;状态恢复

MOVP0,#0FFH;把P1口置一

LCALLDELAY1;调延时

SETB48H;用于调时闪烁标志

SETB47H;用于产生脉冲用于调时快进的脉冲

MOVR1,#0;键功能标志:

0计时、1调时、2调分、3调秒

;清16位寄存器及初始化

MOVR0,#50H;初始化

MOVR6,#10H

CLEARJCQ:

MOV@R0,#00H;清寄存器

INCR0;间址突破口指向下一地址单元

DJNZR6,CLEARJCQ;清零00H之后的16个内存单元

MOVIP,#02H;定时器0置高优先级

SETBEA;开总中断允许

SETBET0;开定时器0中断

MOVTMOD,#01H;设定定时器0工作方式1

MOVTH0,#3CH;赋定时初值TH0

MOVTL0,#0B0H;赋定时初值TL0,定时50ms

SETBTR0;启动定时器0

MOVSP,#70H;堆栈

;主程序

MAIN:

LCALLDISPLAY;调显示子程序

LCALLKEY_SCAN;调键扫描子程序

JZMAIN;无键按下则跳到主程序

LCALLSET_KEY;键处理子程序

JB46H,MAIN;如果已进行调时快进,则不再执行下面的调整

LCALLADD_KEY;调用增加键处理子程序,加一

LCALLDEC_KEY;调用减少键处理子程序,减一

LJMPMAIN;重新循环

;显示处理程序

DISPLAY:

MOVA,51H;读秒值

ANLA,#0FH;屏蔽高4位

MOV5FH,A;转换出秒个位,存入5FH

MOVA,51H;读秒值

ANLA,#0F0H;屏蔽低4位

SWAPA;A高低半字节交换

MOV5EH,A;转换出秒十位,存入5EH

JB46H,MIN;如果调时快进,则跳过闪烁处理程序

CJNER1,#3,MIN;如果R1为3,闪烁秒位待调整

JB48H,MIN;跳转至分处理程序段

MOV5FH,#0AH;使该位为10,查表得使该位不显示

MOV5EH,#0AH;使该位为10,查表得使该位不显示

MIN:

MOVA,52H;读分值

ANLA,#0FH;屏蔽高4位

MOV5DH,A;转换出分个位,存入5DH

MOVA,52H;读分值

ANLA,#0F0H;屏蔽低4位

SWAPA;累加器高低位交换

MOV5CH,A;转换出分十位,存入5CH

JB46H,HOUR;如果调时快进,跳过闪烁处理程序

CJNER1,#2,HOUR;如果R1为2,闪烁分位待调整

JB48H,HOUR;跳转至时处理程序段

MOV5DH,#0AH;分个位

MOV5CH,#0AH;分十位

HOUR:

MOVA,53H;读时值

ANLA,#0FH;屏蔽高4位

MOV5BH,A;转换出时个位,存入5BH

MOVA,53H;读时值

ANLA,#0F0H;屏蔽低4位

SWAPA;累加器高低位交换

MOV5AH,A;转换出时十位,存入5AH

JB46H,DISP;跳过闪烁处理程序

CJNER1,#1,DISP;如果R1为1,闪烁时位待调整

JB48H,DISP;跳转至显示程序

MOV5BH,#0AH;使该位为10,查表得使该位不显示

MOV5AH,#0AH

;数码管动态扫描显示

DISP:

MOVDPTR,#TABLE;送常数表首地址

MOVA,5FH;秒个位

MOVCA,@A+DPTR;取常数

MOVP0,A;常数送P0口

CLRP2.0;复位P2.0

LCALLDELAY;调延时

SETBP2.0;显示秒个位

MOVA,5EH;秒十位

MOVCA,@A+DPTR;取常数

MOVP0,A;常数送P0口

CLRP2.1;复位P2.0

LCALLDELAY;调延时

SETBP2.1;显示秒十位

MOVA,#0BFH;“-”段码送累加器

MOVP0,A;“-”段码送P0口

CLRP2.5;复位P2.0

LCALLDELAY;调延时

SETBP2.5;显示“-”

MOVA,5DH;分个位

MOVCA,@A+DPTR;取分个位段码

MOVP0,A;分个位段码送P0

CLRP2.3;复位P2.0

LCALLDELAY;调延时

SETBP2.3;显示分个位

MOVA,5CH;分十位送累加器

MOVCA,@A+DPTR;取分十位段码

MOVP0,A;分十位段码送P0口

CLRP2.4;复位P2.0

LCALLDELAY;调延时

SETBP2.4;显示分十位

MOVA,#0BFH;“-”段码送累加器

MOVP0,A;“-”段码送P0口

CLRP2.2;复位P2.0

LCALLDELAY;调延时

SETBP2.2;显示“-”

MOVA,5BH;

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

当前位置:首页 > 高中教育 > 语文

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

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