八位数显示时钟的设计方案与制作.docx

上传人:b****6 文档编号:7984590 上传时间:2023-01-27 格式:DOCX 页数:31 大小:245.69KB
下载 相关 举报
八位数显示时钟的设计方案与制作.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

八位数显示时钟的设计方案与制作

毕业设计<论文)

 

题目:

八位数显示时钟的设计与制作

 

2018年8月28日

 

毕业设计任务书

1.毕业设计题目:

八位数显时钟

题目类型实验研究题目来源教师科研题

毕业设计内容要求:

<一)设计任务:

1、用单片机设计8位数显电子时钟;

2、走时,误差精度控制在1s/天;

3、调时,小时、分钟加减调整及闪烁显示;

4、闹铃,可以设置三组闹铃,默认闹铃时间为1分钟,可按任意键推出闹铃。

<二)涉及要求:

1、总体方案设计及框图;

2、设计原理电路图及分析;

3、独立编写程序;

4、完成protues仿真设计;

5、使用protel设计pcb并制作、调试电路。

2.主要参考资料

[1]电子工业出版社[51单片机典型系统开发实例精讲]白延敏;

[2]复旦大学出版社[单片微型机原理、应用和实验]张友德;

[3]海纳电子资讯网www.fpga-[IC中文资料];

 

摘要

时间是现代社会中不可缺少的一项参数,无论是平时生活还是社会生产都需要对时间进行控制,有的场合对其精确性还有很高的要求.采用单片机进行计时,对于社会生产有着十分重要的作用。

本文首先介绍了电子时钟的特点和功能,然后对单片机和LCD显示做了详细的介绍,提出了系统总体设计方案,并设计了各部分硬件模块和软件流程,再用Protues软件进行了仿真和调试,结果证明了该设计系统的可行性。

由于AT89S52系列单片机的控制器运算能力强,处理速度快,可以精确计时,很好地解决了实际生产生活中对计时高精确度的要求,因此该设计在现代社会中具有广泛的适用性。

关键字:

单片机;LCD1602液晶显示器;C程序设计

 

 

第一章系统设计要求及功能

1.1设计本电子定时闹钟的目的和意义

1、复习和巩固所学过的知识,利用此毕业设计正好可以对所学过的知识进行系统的回顾和总结。

2、拓展知识面,课堂的知识是远远满足不了设计的要求的,这就需要我们主动去找寻更多的资料,了解更多的知识。

3、培养了设计能力和解决实际问题的能力,同时增强了自学能力,通过设计完整的单片机系统也初步掌握了组成系统、编程、调试等能力。

4、通过本LCD电子钟的设计初步了解了单片机应用系统开发研制过程,软件和硬件设计的方法。

1.2本LCD电子闹钟的特点和功能介绍

1.2.1本电子钟设计特点

本LCD电子定时闹钟是一种基于单片机技术的多功能、多用途的电子产品,有电子时钟、定时闹铃功能。

性能卓越,采用LCD显示更加直观,是一个比较实用的电子产品。

1.2.2本电子钟的主要功能

1.可以显示24小时制“时时-分分-秒秒”,LCD显示。

2.可以方便的设定定时时间、修改定时时间,闹铃功能,预设定时时间到将发出闹铃声。

第二章方案设计与比较

2.1数字时钟方案

数字时钟是本设计的最主要的部分。

根据需要,可利用两种方案实现。

方案一:

本方案采用Dallas公司的专用时钟芯片DS12887A。

该芯片内部采用石英晶体振荡器,其芯片精度不大于10ms/年,且具有完备的时钟闹钟功能,因此,可直接对其以用于显示或设置,使得软件编程相对简单。

为保证时钟在电网

电压不足或突然掉电等突发情况下仍能正常工作,芯片内部包含锂电池。

当电网电压不足或突然掉电时,系统自动转换到内部锂电池供电系统。

而且即使系统不上电,程序不执行时,锂电池也能保证芯片的正常运行,以备随时提供正确的时间。

方案二:

本方案完全用软件实现数字时钟。

原理为:

在单片机内部存储器设三个字节分别存放时钟的时、分、秒信息。

利用定时器与软件结合实现1秒定时中断,每产生一次中断,存储器内相应的秒值加1;若秒值达到60,则将其清零,并将相应的分字节值加1;若分值达到60,则清零分字节,并将时字节值加1;若时值达到24,则将十字节清零。

该方案具有硬件电路简单的特点。

基于硬件电路的考虑,本设计采用方案二完成数字时钟的功能。

2.2显示方案

方案一:

采用LED数码管动态扫描,LED数码管价格适中,对于显示数字合适,采用动态扫描法与单片机连接时,虽然占用的单片机口线少,但连线还需要花费一点时间,所以也不用此种作为显示。

方案二:

采用点阵式数码管显示,点阵式数码管是由八行八列的发光二极管组成,对于显示文字比较适合,如采用在显示数字显得太浪费,且价格也相对较高,所以也不用此种作为显示。

方案三:

采用LCD液晶显示屏,液晶显示屏的显示功能强大,可显示大量文字,图形,显示多样,清晰可见,和AT89S52已经接好,省了很多麻烦。

所以在此设计中采用LCD液晶显示屏。

 

第三章系统硬件的设计

3.1单片机的选择及管脚介绍

3.1.1单片机的选择及主要性能

AT89S52是一种低功耗、高性能CMOS8位微控制器,具有8K在系统可编程Flash存储器。

使用Atmel公司高密度非易失性存储器技术制造,与工业80C51产品指令和引脚完全兼容。

片上Flash允许程序存储器在系统可编程,亦适于常规编程器。

在单芯片上,拥有灵巧的8位CPU和在系统可编程Flash,使得AT89S52为众多嵌入式控制应用系统提供高灵活、超有效的解决方案。

AT89S52具有以下标准功能:

8k字节Flash,256字节RAM,32位I/O口线,看门狗定时器,2个数据指针,三个16位定时器/计数器,一个6向量2级中断结构,全双工串行口,片内晶振及时钟电路。

另外,AT89S52可降至0Hz静态逻辑操作,支持2种软件可选择节电模式。

空闲模式下,CPU停止工作,允许RAM、定时器/计数器、串口、中断继续工作。

掉电保护方式下,RAM内容被保存,振荡器被冻结,单片机一切工作停止,直到下一个中断或硬件复位为止。

3.1.2单片机管脚介绍

VCC:

电源

GND:

  P0口:

P0口是一个8位漏极开路的双向I/O口。

作为输出口,每位能驱动8个TTL逻辑电平。

对P0端口写“1”时,引脚用作高阻抗输入。

  当访问外部程序和数据存储器时,P0口也被作为低8位地址/数据复用。

在这种模式下,P0具有内部上拉电阻。

在flash编程时,P0口也用来接收指令字节;在程序校验时,输出指令字节。

程序校验时,需要外部上拉电阻。

P1口:

P1口是一个具有内部上拉电阻的8位双向I/O口,p1输出缓冲器能驱动4个TTL逻辑电平。

对P1端口写“1”时,内部上拉电阻把端口拉高,此时可以作为输入口使用。

作为输入使用时,被外部拉低的引脚由于内部电阻的原因,将输出电流

此外,P1.0和P1.2分别作定时器/计数器2的外部计数输入

在flash编程和校验时,P1口接收低8位地址字节。

引脚号第二功能:

  P1.0T2<定时器/计数器T2的外部计数输入),时钟输出

  P1.1T2EX<定时器/计数器T2的捕捉/重载触发信号和方向控制)

  P1.5MOSI<在系统编程用)

  P1.6MISO<在系统编程用)

  P1.7SCK<在系统编程用)

P2口:

P2口是一个具有内部上拉电阻的8位双向I/O口,P2输出缓冲器能驱动4个TTL逻辑电平。

对P2端口写“1”时,内部上拉电阻把端口拉高,此时可以作为输入口使用。

作为输入使用时,被外部拉低的引脚由于内部电阻的原因,将输出电流

在访问外部程序存储器或用16位地址读取外部数据存储器<例如执行MOVX@DPTR)时,P2口送出高八位地址。

在这种应用中,P2口使用很强的内部上拉发送1。

在使用8位地址<如MOVX@RI)访问外部数据存储器时,P2口输出P2锁存器的内容。

在flash编程和校验时,P2口也接收高8位地址字节和一些控制信号。

P3口:

P3口是一个具有内部上拉电阻的8位双向I/O口,P2输出缓冲器能驱动4个TTL逻辑电平。

对P3端口写“1”时,内部上拉电阻把端口拉高,此时可以作为输入口使用。

作为输入使用时,被外部拉低的引脚由于内部电阻的原因,将输出电流

在flash编程和校验时,P3口也接收一些控制信号。

P3口亦作为AT89S52特殊功能<第二功能)使用,端口引脚第二功能如下所示。

P3.0RXD(串行输入口>

 P3.1TXD(串行输出口>

  P3.2INTO(外中断0>

  P3.3INT1(外中断1>

  P3.4TO(定时/计数器0>

  P3.5T1(定时/计数器1>

  P3.6WR(外部数据存储器写选通>

  P3.7RD(外部数据存储器读选通>

  RST——复位输入。

当振荡器工作时,RST引脚出现两个机器周期以上高电平将是单片机复位。

 ALE/PROG——当访问外部程序存储器或数据存储器时,ALE<地址锁存允许)输出脉冲用于锁存地址的低8位字节。

一般情况下,ALE仍以时钟振荡频率的1/6输出固定的脉冲信号,因此它可对外输出时钟或用于定时目的。

要注意的是:

每当访问外部数据存储器时将跳过一个ALE脉冲。

如有必要,可通过对特殊功能寄存器

该位置位后,只有一条MOVX和MOVC指令才能将ALE激活。

此外,该引脚会被微弱拉高,单片机执行外部程序时,应设置ALE禁止位无效。

  PSEN——程序储存允许

EA/VPP——外部访问允许,欲使CPU仅访问外部程序存储器<地址为0000H-FFFFH),EA端必须保持低电平<接地)。

需注意的是:

如果加密位LB1被编程,复位时内部会锁存EA端状态。

如EA端为高电平<接Vcc端),CPU则执行内部程序存储器的指令。

XTAL1:

振荡器反向相大器和内部时钟发生电路的输入端。

XTAL2:

振荡器反向相大器的输出端。

3.2LCD1602的管脚及功能介绍

3.2.1引脚说明

LCD1602引脚图3-1

 

引脚

符号

功能说明

1

VSS

一般接地

2

VDD

接电源<+5V)

3

V0

液晶显示器对比度调整端,接正电源时对比度最弱,接地电源时对比度最高<对比度过高时会产生“鬼影”,使用时可以通过一个10K的电位器调整对比度)。

4

RS

RS为寄存器选择,高电平1时选择数据寄存器、低电平0时选择指令寄存器。

5

R/W

R/W为读写信号线,高电平(1>时进行读操作,低电平(0>时进行写操作。

6

E

E(或EN>端为使能(enable>端,下降沿使能。

7

DB0

底4位三态、双向数据总线0位<最低位)

8

DB1

底4位三态、双向数据总线1位

9

DB2

底4位三态、双向数据总线2位

10

DB3

底4位三态、双向数据总线3位

11

DB4

高4位三态、双向数据总线4位

12

DB5

高4位三态、双向数据总线5位

13

DB6

高4位三态、双向数据总线6位

14

DB7

高4位三态、双向数据总线7位<最高位)<也是busyflag)

15

BLA

背光电源正极

16

BLK

背光电源负极

表3-2

3.2.2控制器接口说明

1.基本操作时序:

1.1读状态:

输入:

RS=L,RW=H,E=H;输出:

D0~D7=状态字

1.2写指令:

输入:

RS=L,RW=L,D0~D7=指令码,E=高脉冲输出:

1.3读数据:

输入:

RS=H,RW=H,E=H;输出:

D0~D7=数据

1.4写数据:

输入:

RS=H,RW=L,D0~D7=指令码,E=高脉冲输出:

2.寄存器选择控制表3-3

RS

R/W

操作说明

0

0

写入指令寄存器<清除屏等)

0

1

读busyflag

1

0

写入数据寄存器<显示各字型等)

1

1

从数据寄存器读取数据

表3-3

3.3总体设计

3.3.1系统说明

利用单片机

K1用于一般调时与闹铃设置模式之间的切换,K2与K3都可用于对小时分钟的调整。

3.3.2整体系统框图

复位电路

开关按键

LM1602液晶显示

89S52

单片机

时钟电路

闹铃电路

表3-4

3.4各部分功能实现

3.单片机发送的信号通过程序控制最终在显示器上显示出来。

4.单片机通过输出各种电脉冲信号来驱动控制各部分正常工作。

5.为使时钟走时与标准时间一致,校时电路是必不可少的,按键用来校正显示器上显示的时间。

6.单片机通过控制闹铃电路来完成定时闹钟的功能。

3.5元件清单

电子钟元件清单如表3-4所示:

表3-5 电子钟元器件清单

元件名称

规格型号

数量<个)

单片机

AT89S52

1

液晶显示屏

LM1602

1

滑动变阻器

10K

1

晶振

12MHz

1

电容

30pF

2

电解电容

10μF

1

按键

BUTTON

4

电阻

10K

1

电阻

100

1

分频器

1

三极管

NPN

1

排阻

RESPACK-5/10K

1

表3-5 电子钟元器件清单

3.6电子钟电路原理图

PCB板电路图3-6

图3-7系统电路图

本设计采用C语言程序设计,使单片机控制显示器显示时、分、秒,当秒计数计满60时就向分进位,分计数器计满60后向时计数器进位,小时计数器按“23翻0”规律计数。

时、分、秒的计数结果经过数据处理可直接送显示器显示。

当计时发生误差的时候可以用校时电路进行校正。

设计采用的是时、分、秒显示,单片机对数据进行处理同时在显示管上显示。

3.7时钟仿真各功能分析及图解

<1)时钟运行图

仿真开始运行时,时钟从12:

00:

00开始运行,按一下K1进入小时调整状态,K2、K3键可对小时进行加减调整,再按下K1进入分钟调整状态,K2、K3键可对分钟进行加减调整,再按下K1则进入闹钟设置状态,再连续按两下K1则退出闹钟进入正常运行模式。

时钟运行图如图3-8

时钟设置图3-9

 

<2)闹铃设置图及运行图

连续按三下K1进入闹钟调整状态,此时按下K2对时进行加调整,按下K3则对时进行减调整;再按下K1进行分调整,此时按下K2对分进行加调整,按下K3则对分进行减调整;再按下K1则推出闹钟设置进入运行状态。

闹钟设置成功。

当走时到所设闹钟状态时则液晶显示屏第一行显示闹钟时间且闹铃。

此时按任意键即可推出闹铃。

<下图3-9为闹铃状态)

闹铃运行图3-10

闹铃设置图3-11

 

该数字钟是用一片AT89S52单片机通过编程去驱动液晶显示器实现的。

通过4个开关控制,从上到下3个开关K1-K3的功能分别为:

K1用于一般调时与闹铃设置模式之间的切换,K2与K3都可用于对小时分钟的调整;分别与P0.0、P0.2、P0.4口连接.其中K4为复位开关。

1.通过P2口和P3口去控制液晶显示器的显示。

2.在设置的闹钟时间到了从P2.0输出一个信号使三极管导通,若有乐曲可以去驱动扬声器实现。

 

第四章软件总体设计方案

4.1主程序流程图:

软件程序从开始执行,先通过初始化各个寄存器,经过扫描按键来决定是否设定参数来执行相应功能的程序,进而在显示器上显示。

主程序流程图如图4-0

主程序流程图4-1

按键流程图4-2

控制键K1有效进入闹钟调整程序分调整

控制键K1有效进入闹钟调整程序时调整

减键有效K3

加键有效K2

减键有效K3

加键有效K2

按键K1有效,跳出时间调整程序,进入主程序流程图

分减一

分加一

减键有效K3

加键有效K2

等待按键程序

时减一

时加一

等待按键程序

秒减一

秒加一

减键有效K3

加键有效K2

等待按键程序

控制键K1有效进入秒调整程序

减键有效K3

加键有效K2

分加一

开始初始化

控制键K1有效进入时调整程序

控制键K1有效进入分调整程序

分减一

等待按键程序

时减一

时加一

等待按键程序

按键流程图4-2

4.2、闹钟的实现

闹钟功能的实现涉及到两个方面:

闹铃时间设定和是否闹铃判别与相应处理。

闹铃时间设定模块的设计可参照时间设定模块,这里着重阐述闹铃判别与处理模块的设计问题。

闹铃判别与闹铃处理的关键在于判别何时要进行闹铃。

当时十位、时个位、分十位、分个位中任一位发生改变<进位)时,就必须进行闹铃判别。

程序设计思想如图。

闹铃判别处理

 

图4-3闹铃实现思想流程图

 

第五章课程设计结果分析

此时钟设计是利用protues仿真软件进行仿真,基本上实现了课程设计要求实现的功能。

硬件部分设置了的四个按键。

其中一个按键K4为复位按键,当按下复位键时时钟从初始状态开始运行。

另设三个按键K1、K2、K3为调整键

1.接通电源或上电复位电路进入运行状态

2.调时状态:

a、按下K1进入时间调整状态:

此时按下K2对小时进行加调整,按下K3对小时进行减调整;b、再按下K1则对分进行调整:

按下K2对分进行加调整,按下K3对分进行减调整;c、再次按下K1则对秒进行调<同上)整连续按两下K1则推出调整状态进入运行状态。

3.闹铃状态:

连续按K1三次则进入闹钟设置状态,此时按下K2对小时进行加调整,按下K3对小时进行减调整。

再按下K1则推出闹钟设置状态进入时钟运行状态。

闹钟设置完毕。

当走时到所设置闹钟时间时,则液晶显示屏第一行显示所设闹钟时间且闹铃。

此时按任意键可中断闹铃继续运行。

4.复位按键:

按下K4键即可恢复闹钟初始值,按K1键可重新设置时间。

 

 

致谢

经过一个多月的忙碌和学习,本次毕业设计已接近尾声。

部分功能已达到基本要求,由于经验的匮乏,难免有考虑不周全的地方。

本次设计的成功要感谢所有帮助过我的老师和同学,他们给了我莫大的帮助和支持,尤其是我的毕业设计指导老师蒋求生老师。

蒋老师为我校外聘的指导老师,平日里工作繁多,不但有自己本校学生的指导,还要兼顾外校学生的辅导,但在我做毕业设计的每个阶段,从选题到查阅资料,设计提纲的确定,中期设计的修改,后期设计格式调整等各个环节中都给予了我悉心的指导。

除了敬佩蒋老师的专业水平外,他的治学严谨和科学研究的精神也是我永远学习的榜样,并将积极影响我今后的学习和工作。

最后还要感谢大学三年来所有信息系的老师,是在他们的教诲下,我喜欢上了电子这个专业。

这次设计使我对电子钟有了新的认识,对电子钟的设计由一无所知到现在的一定程度的掌握,起到了非常重要的作用。

对蒋老师的关心,指导我有感于心,事实上这次设计对我们的锻炼是多方面的,除了对设计过程熟悉外,我们还进一步提高了作图,说明书编辑,各种信息的分析、使用等多方面的能力,掌握了较为坚实的专业知识基础,为我以后的扬帆远航注入了动力。

谢谢你们!

正是有你们的帮助才有今天的我们。

现在马上要离开校园了,预祝老师们能够桃李满天下。

 

参考文献

[1]李叶紫.王喜斌.胡辉.孙东辉.编著MCS_51单片机应用教程[M].清华大学出版社.2008.6.

[2]陆剑.单片机应用技术指导书[M]河南工业职业技术学院2005.12>

[3]黄庆华、张永格.单片机开发与实例[M].电子工业出版社<127~162页数字式电子时钟的设计).

[4]闫玉德、俞红.MCS-51单片机原理与应用

[5]求是科技.单片机典型模块设计实例导航[M].人民邮电出版社<85~90页单片机数字时钟).

[6]刘守义,王静霞。

《单片机应用技术》[M].西安电子科技大学出版社,2002.2~87.

[7]金龙国.单片机原理与应用[M].北京:

中国水利水电出版社,2005.2~56.

[8]朱一纶.智能仪器基础[M].北京:

电子工业出版社,2007.141~158.

[9]胡宴如.模拟电子技术[M].北京:

高等教育出版社,2006.237~258

 

附录

<1)控制电路的C语言源程序

根据流程图,经过认真分析得出控制电路的源程序如下:

1主控制程序

#include

charss1[16]="HH-MM-SS"。

//定义正常运行状态

charcodess3[16]="Ah-Am-As"。

//定义设置闹钟状态

charcodess4[16]="Alarming!

"。

//定义闹铃状态

charcodess5[16]="AdHH-MM-SS"。

//定义调时间状态

charss2[16]="12-00-01"。

//定义显示数组以及显示值;

charh=12,m=0,s=59,f_hh=0,f_mm=0,f_ss=0,f_h_cl1=0,f_m_cl1=0,s1=1,i=0,a=0,b=0。

//时钟初值设定;

charh_cl1=12,m_cl1=1,flag=1,flag1=0。

//设置全局变量;

sbitt=P2^1。

sbitalarm=P2^0。

//位定义。

bitsp。

//闪烁位定义;

externvoidLCM_Initial(void>。

//外部调用lcd初始化函数;

externvoidLCM_Display(char*disp_1,char*disp_2>。

//外部调用lcd字符串显示函数;

externcharscank1(>。

//外部调用按键1函数;

externcharscank2(>。

//外部调用按键2函数;

externcharscank4(>。

//外部调用按键3函数;

voidadd(void>

{

s++。

if(s>59>{s=0。

m++。

}

if(m>59>{m=0。

h++。

}

if(h>23>h=0。

}//时钟数据溢出保护。

voidtime(>interrupt1

{

TH0=0x3c。

TL0=0xb0。

if(flag==0>{sp=~sp。

alarm=sp。

}

a++。

b++。

if(a>4>{a=0。

s1=~s1。

}

if(b>19>{b=0。

if(i==0||i==4||i==5>add(>。

}

}//定时器设定函数;

voiddis(void>

{

if(i<4>

{

if(f_hh==0>

{

ss2[4]=h/10+0x30。

ss2[5]=h%10+0x30。

}

else

{

if(s1==1>

ss2[4]=h/10+0x30。

elsess2[4]=0x20。

if(s1==1>

ss2[5]=h%10+0x30。

elsess2[5]=0x20。

}

if(f_mm==0>

{

ss2[7]=m/10+0x30。

ss2[8]=m%10+0x30。

}

else

{

if(s1==1>

ss2[7]=m/10+0x30。

elsess2[7]=0x20。

if(s

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

当前位置:首页 > 工程科技 > 交通运输

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

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