日历时钟的设计Word格式文档下载.docx

上传人:b****4 文档编号:16457693 上传时间:2022-11-23 格式:DOCX 页数:19 大小:169.60KB
下载 相关 举报
日历时钟的设计Word格式文档下载.docx_第1页
第1页 / 共19页
日历时钟的设计Word格式文档下载.docx_第2页
第2页 / 共19页
日历时钟的设计Word格式文档下载.docx_第3页
第3页 / 共19页
日历时钟的设计Word格式文档下载.docx_第4页
第4页 / 共19页
日历时钟的设计Word格式文档下载.docx_第5页
第5页 / 共19页
点击查看更多>>
下载资源
资源描述

日历时钟的设计Word格式文档下载.docx

《日历时钟的设计Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《日历时钟的设计Word格式文档下载.docx(19页珍藏版)》请在冰豆网上搜索。

日历时钟的设计Word格式文档下载.docx

七、参考文献11

八.结束语11

附录2部分源程序12

绪言

数字电子钟具有走时准确,一钟多用等特点,在生活中已经得到广泛的应用。

虽然现在市场上已有现成的电子钟集成电路芯片,价格便宜、使用也方便,但是人们对电子产品的应用要求越来越高,数字钟不但可以显示当前的时间,而且可以显示期、农历、以及星期等,给人们的生活带来了方便。

另外数字钟还具备秒表和闹钟的功能,且闹钟铃声可自选,使一款电子钟具备了多媒体的色彩。

单片机具有体积小、功能强可靠性高、价格低廉等一系列优点,不仅已成为工业测控领域普遍采用的智能化控制工具,而且已渗入到人们工作和和生活的各个角落,有力地推动了各行业的技术改造和产品的更新换代,应用前景广阔。

时钟电路在计算机系统中起着非常重要的作用,是保证系统正常工作的基础。

在一个单片机应用系统中,时钟有两方面的含义:

一是指为保障系统正常工作的基准振荡定时信号,主要由晶振和外围电路组成,晶振频率的大小决定了单片机系统工作的快慢;

二是指系统的标准定时时钟,即定时时间,它通常有两种实现方法:

一是用软件实现,即用单片机内部的可编程定时/计数器来实现,但误差很大,主要用在对时间精度要求不高的场合;

二是用专门的时钟芯片实现,在对时间精度要求很高的情况下,通常采用这种方法,典型的时钟芯片有:

DS1302,DS12887,X1203等都可以满足高精度的要求。

二、方案比较与论证

2.1系统整体流程图

LED数码管动态扫描显示模块

AT89S52

主控制模块

键盘模块

DS1302时钟模块

开始

初始化子程序

While(1

串口有数据

调用子程序,获取串口数据

调用子程序,设置日历时钟芯片

调用子程序,获取芯片的时间信息

调用显示字程序

方案一:

纯硬件电路系统,各功能采用分离的硬件电路模块实现。

用时序逻辑电路实现时钟功能,用555定时器实现闹钟的设定。

但这种实现方法可靠性差、控制精度低,灵活性小、线路复杂、安装调试不方便,而且不方便实现对系统的扩展。

方案二:

用可编程逻辑器件(PLD)实现。

这种方案与前一种相比,可靠性增加,同时可以很好的完成时钟的功能。

同时这种方案只能选用数码管显示,显示的效果不够理想,无法很好的完成扩展功能的要求,系统的灵活性不够。

方案三:

采用AT89S52单片机作为系统的控制核心。

时钟功能采用单片集成的时钟芯片DS1307来实现,可以使用液晶显示时间、日历及闹铃,有着智能化的人机界面。

由于使用了单片机,整个系统可编程,系统的灵活性大大增加了。

另外,本方案可以方便的实现其他功能的扩展。

经过以上的比较论证,选用方案三来完成项目设计的要求。

2.3时钟方案选择 

方案一:

基本门电路搭建。

用基本门电路来实现时钟发生器,电路结构复杂,故障系数大,不易调试。

方案二:

专用时钟芯片。

目前市场上已有很多实时时钟芯片。

如DS12887、DS1302、DS1307、PCF8563、X1227等,芯片内都集成了时钟/日历功能,给时钟系统设计带来很多方便。

根据设计要求,在本设计中我采用了DS1302时钟芯片。

2.4显示模块的选择 

使用多个数码管显示。

LED数码管是利用二极管发光显示数字和字母,具有亮度大、接口设计比较容易,价格相对较便宜等优点。

但是由于它工作电流较大、不能显示汉字,显示的信息量有限,若在此题目中应用就会受到很大的限制。

采用液晶显示。

液晶特别是具有汉字显示功能的液晶显示器,来实现显示功能,不仅可以实现基本的显示信息,而且可以显示丰富的符号指示信息以及文字指示信息,信息量丰富且直观易懂。

而且液晶显示有功耗低,体积小,重量轻,寿命长,不产生电磁辐射污染等优点。

系统采用方案二,设计选用LCD1602液晶显示模块。

2.5键盘模块的选择 

采用独立式按键电路。

每个键单独占有一根I/O接口线,每个I/O口的工作状态互不影响,此类键盘采用端口直接扫描方式。

但是当按键较多时占用单片机的I/O数目较多。

采用阵列式键盘。

此类键盘是采用行列扫描方式,当按键较多时可以降低占用单片机的I/O口数目。

根据设计要求我采用了方案二。

2.6具体设计分析

利用单片机(AT89S51)制作简易电子时钟,由六个LED数码管分别显示小时十位、小时个位、分钟十位、分钟个位、秒钟十位、秒钟个位。

结合本设计实验来说,要求显示的时间为时,分,秒,并且都用两位数码管来实现显示。

因此,具体设计程序时,应尽可能多用一些子程序与数据暂寄存器单元。

本程序设计中,在主程序之外,可以设置时间值处理子程序,时间值显示前的处理子程序,按键情况扫描子程序,1S定时中断子程序以及5ms延时消除按键抖动子程序等多个小型的子程序。

另外,可以设置一些数据单元作为数据寄存器。

用28H,2AH,2BH和2CH地址单元分别作为显示位数的扫描指针值寄存器,时寄存器,分寄存器和秒寄存器,再用20H地址单元作为显示寄存器

三、硬件电路设计

3.1整个电路原理图

3.2数码显示模块设计

共阴数码管

数码管的引脚图

数码管是一种把多个LED显示段集成在一起的显示设备。

有两种类型,一种是共阳型,一种是共阴型。

共阳型就是把多个LED显示段的阳极接在一起,又称为公共端。

共阴型就是把多个LED显示段的阴极接在一起,即为公共商。

阳极即为二极管的正极,又称为正极,阴极即为二极管的负极,又称为负极。

通常的数码管又分为8段,即8个LED显示段,这是为工程应用方便如设计的,分别为A、B、C、D、E、F、G、DP,其中DP是小数点位段。

而多位数码管,除某一位的公共端会连接在一起,不同位的数码管的相同端也会连接在一起。

即,所有的A段都会连在一起,其它的段也是如此,这是实际最常用的用法。

数码管显示方法可分为静态显示和动态显示两种。

静态显示就是数码管的8段输入及其公共端电平一直有效。

动态显示的原理是,各个数码管的相同段连接在一起,共同占用8位段引管线;

每位数码管的阳极连在一起组成公共端。

利用人眼的视觉暂留性,依次给出各个数码管公共端加有效信号,在此同时给出该数码管加有效的数据信号,当全段扫描速度大于视觉暂留速度时,显示就会清晰显示出来。

系统采用动态显示方式,用P0口来控制LED数码管的段控线,而用P2口来控制其位控线。

动态显示通常都是采用动态扫描的方法进行显示,即循环点亮每一个数码管,这样虽然在任何时刻都只有一位数码管被点亮,但由于人眼存在视觉残留效应,只要每位数码管间隔时间足够短,就可以给人以同时显示的感觉。

3.3按键模块

时间计数电路由秒个位和秒十位计数器、分个位和分十位计数器、时个位和时十位计数器及星期计数器电路构成,其中秒个位和秒十位计数器、分个位和分十位计数器为60进制计数器,时个位和时十位计数器为24进制计数器。

下图为按键模块电路原理图。

3.4复位电路

单片机复位的条件是:

必须使RST/VPD或RST引(9)加上持续两个机器周期(即24个振荡周期)的高电平。

例如,若时钟频率为12MHz,每机器周期为1μs,则只需2μs以上时间的高电平,在RST引脚出现高电平后的第二个机器周期执行复位。

单片机常见的复位如图所示。

电路为上电复位电路,它是利用电容充电来实现的。

在接电瞬间,RESET端的电位与VCC相同,随着充电电流的减少,RESET的电位逐渐下降。

只要保证RESET为高电平的时间大于两个机器周期,便能正常复位。

该电路除具有上电复位功能外,若要复位,只需按图中的RESET键,此时电源VCC经电阻R1、R2分压,在RESET端产生一个复位高电平。

分寄存器值加1

分按键了?

四.程序流程图

秒寄存器=60

定时器T0初始化

设置显示初值为12:

00:

00

N

使分寄存器清0

设置定时4m初值

分按键松开?

设置中断允许

设中断250次

时按键了?

启动T0中断

秒按键了?

时寄存器值加1

秒寄存器值加1

时寄存器值=20

使寄存器清0

YN

使秒寄存器清0

秒按松开了?

秒按键松开了?

NYN

五、系统仿真

运用proteus软件进行仿真现在proteus软件中建立一个新的文件,再根据自己的要求选择所需的器件,把器件进行适当的排位后进行连接,连接后运行软件进行仿真。

5.1Proteus软件应用

1.原理图编辑窗口(TheEditingWindow):

顾名思义,它是用来绘制原理图的。

蓝色方框内为可编辑区,元件要放到它里面。

注意,这个窗口是没有滚动条的,你可用预览窗口来改变原理图的可视范围。

2.预览窗口(TheOverviewWindow):

它可显示两个内容,一个是:

当你在元件列表中选择一个元件时,它会显示该元件的预览图;

另一个是,当你的鼠标焦点落在原理图编辑窗口时(即放置元件到原理图编辑窗口后或在原理图编辑窗口中点击鼠标后),它会显示整张原理图的缩略图,并会显示一个绿色的方框,绿色的方框里面的内容就是当前原理图窗口中显示的内容,因此,你可用鼠标在它上面点击来改变绿色的方框的位置,从而改变原理图的可视范围。

3.模型选择工具栏(ModeSelectorToolbar):

主要模型(MainModes):

1*选择元件(components)(默认选择的)

2*放置连接

3*放置标签(用总线时会用到)

4*放置文本

5*用于绘制总线

6*用于放置子电路

7*用于即时编辑元件参数(先单击该图标再单击要修改的元件)

配件(Gadgets):

1*终端接口(terminals):

有VCC、地、输出、输入等接口

2*器件引脚:

用于绘制各种引脚

3*仿真图表(graph):

用于各种分析,如NoiseAnalysis

4*录音机

5*信号发生器(generators)

6*电压探针:

使用仿真图表时要用到

7*电流探针:

8*虚拟仪表:

有示波器等

2D图形(2DGraphics):

1*画各种直线

2*画各种方框

3*画各种圆

4*画各种圆弧

5*画各种多边形

6*画各种文本

7*画符号

8*画原点等

4.元件列表(TheObjectSelector):

用于挑选元件(components)、端接口(terminals)、信号发生器(generators)、仿真图表(graph)等。

举例,当你选择“元件(components)”,单击“P”按钮会打开挑选元件对话框,选择了一个元件后(单击了“OK”后),该元件会在元件列表中显示,以后要用到该元件时,只需在元件列表中选择即可。

5.方向工具栏(OrientationToolbar):

旋转:

旋转角度只能是90的整数倍。

翻转:

完成水平翻转和垂直翻转。

使用方法:

先右键单击元件,再点击(左击)相应的旋转图。

6.仿真工具栏

仿真控制按钮

1*运行

2*单步运行

3*暂停

4*停止

按照自己设计的电路图就可以画出想要的电路图!

2.在软件中模拟和实际的效果为什么有如此大的差别?

答:

软件中模拟受到电脑CPU工作频率的影响,所以效果不是很明显,但是一些基本的现象还是可以看出来的。

只要我们知道原理和图是正确的,那么就没有必要考虑太多的未知因素。

在实际面包板中一定会看到正确的现象。

3.面包板连线注意事项!

面包板连线时一定要弄清楚它的原理,不然就会一点头绪都找不到。

连接芯片是要弄清楚各个引脚对应的端口号,该接地的地方一定要接地,该接高电平的地方一定要接高电平。

5.2实验测试

主要的设计要求是能够实现时钟的一般功能,以及包括时间的调整功能,这个基于单片机的电子时钟基本上实现了上述功能,能够通过时间调整电路对时间进行调整以及复位。

下述为12:

00的仿真图:

图812:

00:

00时刻的仿真效果图

六主要元器件选择

表6-1主要元器件清单

序号

材料名称

规格型号

数量

元件代号

1

单片机

AT89S51

U1

2

电阻

1k

17

R1-R16

3

电容

10PF

4

C1、C2、C3、Y1

数码管

MPX8

DS1

5

集成电路

74LS47、74LS138

七、参考文献

【1】张迎新.单片机初级教程【M】.北京:

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

2006.

【2】冯志强.AltiumDesigner8.0中文版电路设计【M】.北京:

清华大学出版社,

2009.

【3】杨素行.模拟电子技术基础简明教程(第三版)

【M】.北京:

高等教育出版社,

【4】余孟尝.数字电子技术基础简明教程(第三版)

【5】程鹏.自动控制原理(第二版)

【6】王化祥,张淑英.传感器原理及应用(第三版)

【M】.天津:

天津大学出版社,

2007.

【7】邱关源,罗先觉.电路(第五版)

【8】王明泉.信号与系统【M】.北京:

科学出版社,

八.结束语

设计,我懂得了学习的重要性,了解到理论知识与实践相结合的重要意义,学会了坚持、耐心和努力,这将为自己今后的学习和工作做出了最好的榜样。

另外,要非常感谢我的指导老师,是她指引我克服一个由一个的困难,让我学会对困难无所畏惧,以及对问题的一些很重要的思考方法。

附录2部分源程序

ORG00H;

主程序起始地址

JMPSTART;

主程序START

ORG0BH;

定时器T0中断起始地址

JMPTIM0;

定时器T0中断子程序TIM0

START:

MOVSP;

#70H;

设置堆栈指针

MOV28H,#00;

设置显示位数扫描指针初值为0

MOV2AH,#12H;

设置时钟显示寄存器初值为12H

MOV2BH,#00;

设置分钟显示寄存器初值为00H

MOV2CH,#00;

设置秒钟显示寄存器初值为00H

MOVTMOD,#01H;

设置定时器T0工作在方式1

MOVTH0,#0F0H;

定时4ms的初值,即0F060H

MOVTL0,#60H;

初值的低位

MOVIE,#82H;

定时器T0中断允许

MOVR4,#250;

保证后面实现中断250次,即1s的延时

SETBTR0;

启动定时器T0

LOOP:

JBP0.0,N2;

若秒没有按键,就转去下一步检查分

CALLDELAY;

延时5ms消除抖动

MOVA,2CH;

将秒寄存器的值载入累加器A

ADDA,#01H;

A的内容加1

DAA;

十进制调整

MOV2CH,A;

A的值存入秒寄存器

CJNEA,#60H,N1;

看是否已经是60秒,若不是就继续检查

已经是60秒,就清空秒寄存器的值

N1:

JNBP0.0,$;

秒按键还没有放开就循环等待

延时5ms,消除抖动

N2:

JBP0.1,N4;

若分没有按键,就转去下一步检查时钟

MOVA,2BH;

将分寄存器的值载入累加器A

MOV2BH,A;

A的值存入分寄存器

CJNEA,#60H,N3;

看是否已经是60分

已经是60分,就清空秒寄存器的值

N3:

JNBP0.1,$;

分按键还没有放开就循环等待

N4:

JBP0.2,LOOP;

若时没有按键,就转回去继续检查看是否秒有按键

MOVA,2AH;

将时寄存器的值载入累加器A

MOV2AH,A;

A的值存入时寄存器

CJNEA,#24H,N5;

看是否已经是24时,若不是就继续检查

MOV2AH,#00;

已经是24时,就清空寄存器的值

N5:

JNBP0.2,$;

时钟按键还没有放开就循环等待

JMPLOOP;

返回重新检查看是否有按键

;

*******定时器T0中断子程序*******

TIM0:

MOVTH0,#0F0H;

定时初值重设

MOVTL0,#60H

PUSHACC;

将累加器A的值暂存于堆栈

PUSHPSW;

将PSW的值暂存于堆栈

DJNZR4,X2;

计时中断不满1s就退出继续中断

计时1s

CALLCLOCK;

调用计时子程序CLOCK

CALLDISP;

调用显示子程序DISP

X2:

CALLSCAN;

调用扫描子程序SCAD

POPPSW;

到堆栈取回PSW的值

POPACC;

到堆栈取回累加器ACC的值

RETI;

返回主程序;

****扫描子程序****

SCAN:

MOVR0,#28H

INC@R0;

显示位数扫描值加1

CJNE@R0,#6,X3;

扫描位数不为6就准备控制输出

MOV@R0,#0;

扫描位数为6,就另其值为0

X3:

MOVA,@R0;

扫描位数载入A

ADDA,#20H;

A加上20H(显示寄存器地址)=各时间显示区地址

MOVR1,A;

各时间显示区地址存入A

扫描位数存入A

SWAPA;

将A的高低4位交换(其高4位为扫描

的位数,低4位为显示数据值)

ORLA,@R1;

将扫描值与显示数据组合

MOVP1,A;

显示输出

RET

******计时子程序******

CLOCK:

MOVA,2CH;

秒寄存器值载入A

ADDA,#1;

加1秒

A的值存入秒寄存器

CJNEA,#60H,X4;

A不等于60秒,就跳出程序去显示

已经是60秒,就清0

分寄存器值载入A

加1分

A的值存入分寄存器

A不等于60分,就跳出程序去显示

已经是60分就清0

时寄存器值载入A

加1小时

A的值存入是寄存器

CJNEA,#24H,X4;

A不等于24时,就跳出程序去显示

MOV24H,#00;

已经是24时,就清0

X4:

RET

******显示子程序******

DISP:

MOVR1,20H;

20H为显示寄存器单元

将秒寄存器的内容存入A

MOVB,#10H;

设B累加器的值为10H

DIVAB;

A/B,商存入A(十位数),余数存入(个位数)

MOV@R1,B;

将显示的个位数存入20H显示寄存器单元

INCR1

MOV@R1,;

A将显示的十位数存入21H显示寄存器单元

将分寄存器的内容存入A

将显示的个位数存入22H显示寄存器单元

MOV@R1,A;

将显示的十位数存入23H显示寄存器单元

将时寄存器的内容存入A

将显示的个位数存入24H显示寄存器单元

将显示的十位数存入25H显示寄存器单元

******延时5ms消除抖动******

DELAY:

MOVR6,#60

D1:

MOVR7,#248

DJNZR7,$

DJNZR6,D1

EN

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

当前位置:首页 > 表格模板 > 合同协议

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

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