基于单片机的数字时钟加闹钟的设计与制作毕业设计说明.docx

上传人:b****3 文档编号:5531715 上传时间:2022-12-18 格式:DOCX 页数:31 大小:426.79KB
下载 相关 举报
基于单片机的数字时钟加闹钟的设计与制作毕业设计说明.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

基于单片机的数字时钟加闹钟的设计与制作毕业设计说明

题目基于单片机的数字时钟加闹钟的设计与制作

1绪论2

1.1引言2

1.2研究目的2

1.3系统基本方案选择和论证2

1.3.1单片机芯片的选择方案和论证:

2

1.3.2显示模块选择方案和论证:

2

1.3.3时钟芯片的选择方案和论证:

2

1.3.4电路设计最终方案确定3

1.4硬件系统框图3

2主要元件介绍4

2.1STC89C52以及最小系统介绍4

2.1.1ST89C52单片机:

4

2.1.2计时芯片DS1302:

5

2.1.3字符液晶显示屏LCD1602资料:

6

2.1.4电源模块:

8

3.硬件电路连接图:

8

3.1单片机的连接图8

3.2DS1302计时模块9

3.3LCD1602液晶显示模块9

3.4按键模块9

4.系统的软件设计:

10

4.1软件设计流程图:

10

5.系统的调试:

11

6.总结:

12

参考文献13

附录一:

14

附录二:

15

附录三:

29

 

嵌入式综合课程设计III

(基于单片机的数字时钟加闹钟的设计与制作)

任务提出:

随着单片机技术的飞速发展,在其推动下,现代的电子产品几乎渗透到了社会的各个领域,有力地推动了社会生产力的发展和社会信息化程度的提高,同时也使现代电子产品性能

进一步提高。

时间就是金钱、时间就是生命、时间就是胜利……,准确的掌握时间和分配时间对人们来说至关重要,时钟是我们生活中必不可少的工具。

电子钟的设计方法有很多种,但是基于单片机并通过LCD显示的电子时钟具有编程灵活、精确度高、便于携带、显示直观等特点。

利用STC89C52单片机对DS1302时钟芯片进行读写操作并通过LCD1602字符液晶显示实时时钟信息,这样便构成了一个单片机电子时钟。

设计要求:

利用单片机作为核心控制器件,制作一个数字时钟。

要求其具有如下功能:

1具有年、月、日、星期、时、分、秒显示功能;

2具备年、月、日、星期、时、分、秒校准功能;

3具有闹钟显示、调节设定、鸣叫功能;

4计时器模块能够准确计时;

5显示模块能够清晰、稳定显示,不出现乱码;

6输入模块能够正确输入指令;

7控制模块能够正确控制输入、输出显示;

8整个系统能够正常、稳定工作。

摘要

随着单片机技术的飞速发展,在其推动下,现代的电子产品几乎渗透到了社会的各个领域,有力地推动了社会生产力的发展和社会信息化程度的提高,同时也使现代电子产品性能进一步提高。

时间就是金钱、时间就是生命、时间就是胜利……,准确的掌握时间和分配时间对人们来说至关重要,时钟是我们生活中必不可少的工具。

电子钟的设计方法有很多种,但是基于单片机并通过LCD显示的电子时钟具有编程灵活、精确度高、便于携带、显示直观等特点。

利用STC89C52单片机对DS1302时钟芯片进行读写操作并通过LCD1602字符液晶显示实时时钟信息,这样便构成了一个单片机电子时钟。

【关键词】:

单片机,电子时钟,STC89C52,蜂鸣器

 

1绪论

1.1引言

时间,对人们来说是非常宝贵的,准确的掌握时间和分配时间对人们来说至关重要。

因此自从时钟发明的那刻起,就成为人类的好朋友。

随着时间的流逝,科学技术的不断发展和提高,人们对时间计量的精度要求越来越高,应用越来越广。

怎样让时钟更好、更方便、更精确的显示时间,这就要求人们不断设计研发出新型的时钟。

高精度的计时工具大多数都使用了石英晶体振荡器,由于电子钟,石英表,石英钟都采用了石英技术,因此走时精度高,稳定性好,使用方便,不需要经常调校。

数字式电子钟用集成电路计时时,译码代替机械式传动,用LED显示器代替指针进而显示时间,减小了计时误差,这种表具有时,分,秒显示时间的功能,还可以进行时和分的校对,片选的灵活性好。

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

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

一是指为保障系统正常工作的基准振荡定时信号,主要由晶振和外围电路组成,晶振频率的大小决定了单片机系统工作的快慢;二是指系统的标准定时时钟,即定时时间,它通常有两种实现方法:

一是用软件实现,即用单片机部的

可编程定时器计数器来实现;二是用专门的时钟芯片实现。

1.2研究目的

通过利用STC89C52单片机和DS1302芯片以及外围的按键和LCD显示器等部件,设计一个基于单片机的电子时钟。

设计的电子时钟通过液晶显示器显示,并能通过按键对时间以及闹钟进行置。

1.3系统基本方案选择和论证

1.3.1单片机芯片的选择方案和论证:

方案一:

采用STC89C52芯片作为硬件核心。

STC89C52部具有8KBROM存储空间,512字节数据存储空间,带有2K字节的EEPROM存储空间,与MCS-51系列单片机完全兼容,STC89C52可以通过串口下载。

方案二:

采用AT89S52。

AT89S52片具有8K字节程序存储空间,256字节的数据存储空间没有EEPROM存储空间,也与MCS-51系列单片机完全兼容,具有在线编程可擦除技术。

两种单片机都完全能够满足设计需要,STC89C52相对ATS89C52价格便宜,且抗干扰能力强。

考虑到成本因素,因此选STC89C52。

1.3.2显示模块选择方案和论证:

方案一:

采用点阵式数码管显示。

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

方案二:

采用LED数码管动态扫描。

LED数码管价格便宜,对于显示数字最合适,但功耗较大,且显示容量不够,所以也不用此种方案。

方案三:

采用LCD液晶显示屏。

液晶显示屏的显示功能强大,可显示大量文字,显示多样,清晰可见,且价格适中,所以采用LCD数码管作为显示。

1.3.3时钟芯片的选择方案和论证:

方案一:

直接采用单片机定时计数器提供秒信号,使用程序实现年、月、日、星期、时、分、秒计数。

采用此种方案虽然减少芯片的使用,节约成本,但是,实现的时间误差较大。

所以不采用此方案。

方案二:

采用DS1302时钟芯片实现时钟,DS1302芯片是一种高性能的时钟芯片,可自动对秒、分、时、日、周、月、年以及闰年补偿的年进行计数,而且精度高,工作电压2.5V~5.5V围,2.5V时耗电小于300nA.

1.3.4电路设计最终方案确定

综上各方案所述,对此次作品的方案选定:

采用STC89C52单片机作为主控制系统;采用DS1302作为时钟芯片;采用LCD1602液晶作为显示器件。

 

1.4硬件系统框图

DS1302计时模块

键盘输入模块

LCD1602显示模块

蜂鸣器

 

该系统采用单片机89C52作为控制芯片,把DS1302计时模块传来的信息和键盘输入的指令进行处理,控制着液晶屏LCD1602的显示和蜂鸣器的驱动。

 

2主要元件介绍

2.1STC89C52以及最小系统介绍

2.1.1ST89C52单片机:

1.主要性能参数:

①与MCS-51产品指令和引脚完全兼容。

②8字节可重擦写FLASH闪速存储器

③1000次擦写周期

④全静态操作:

0HZ-24MHZ

⑤三级加密程序存储器

⑥256X8字节部RAM

⑦32个可编程I/0口线

⑧3个16位定时/计数器

⑨8个中断源

⑩可编程串行UART通道、低功耗空闲和掉电模式。

2.功能特性:

STC89C52提供以下标准功能:

8字节FLASH闪速存储器,256字节部RAM,32个I/O口线,3个16位定时/计数器,一个6向量两级中断结构,一个全双工串行通信口,片振荡器及时钟电路。

同时,AT89C52可降至0Hz的静态逻辑操作,并支持两种软件可选的节电上作模式。

空闲方式停止CPU的工作,但允许RAM,定时/计数器.串行通信口及中断系统继续工作。

掉电方式保存RAM中的容,但振荡器停止工作并禁止其它所有部件工作直到下一个硬件复位.

3.管脚图:

STC89C52引脚介绍:

①主电源引脚(2根)

VCC(Pin40):

电源输入,接+5V电源

GND(Pin20):

接地线

②外接晶振引脚(2根)

XTAL1(Pin19):

片振荡电路的输入端

XTAL2(Pin20):

片振荡电路的输出端

③控制引脚(4根)

RST/VPP(Pin9):

复位引脚,引脚上出现2个机器周期的高电平将使单片机复位。

ALE/PROG(Pin30):

地址锁存允许信号

PSEN(Pin29):

外部存储器读选通信号

EA/VPP(Pin31):

程序存储器的外部选通,接低电平从外部程序存储器读指令,如果接高电平则从部程序存储器读指令。

④可编程输入/输出引脚(32根)

STC89C52单片机有4组8位的可编程I/O口,分别位P0、P1、P2、P3口,每个口有8位(8根引脚),共32根。

P0口(Pin39~Pin32):

8位双向I/O口线,名称为P0.0~P0.7

P1口(Pin1~Pin8):

8位准双向I/O口线,名称为P1.0~P1.7

P2口(Pin21~Pin28):

8位准双向I/O口线,名称为P2.0~P2.7

P3口(Pin10~Pin17):

8位准双向I/O口线,名称为P3.0~P3.7

2.1.2计时芯片DS1302:

1.概述:

DS1302是DALLAS公司推出的涓流充电时钟芯片含有一个实时时钟/日历和31字节静态RAM通过简单的串行接口与单片机进行通信实时时钟/日历电路提供秒、分、时、日、日期、月、年的信息,每月的天数和闰年的天数可自动调整。

时钟操作可通过AM/PM指示决定采用24或12小时格式。

DS1302与单片机之间能简单地采用同步串行的方式进行通信,仅需用到三个口线①RES复位②I/O数据线③SCLK串行时钟。

RAM的读/写数据以一个字节或多达31个字节的字符组方式通信。

DS1302工作时功耗很低保持数据和时钟信息时功率小于1mW。

2.DS1302功能特性:

双电源管脚用于主电源和备份电源供应VCC1为可编程涓流充电电源;附加七个字节的存储器;实时时钟具有能计算2100年之前的秒、分、时、日、日期、星期、月、年的能力,还有闰年调整的能力31*8位暂存数据存储RAM;串行I/O口方式使得管脚数量最少;宽围工作电压2.0~5.5V;工作电流2.0V时,小于300nA;读/写时钟或RAM数据时有两种传送方式:

单字节传送和多字节传送字符组方式;8脚DIP封装或可选的8脚SOIC封装;简单3线接口;与TTL兼容(VCC=5V);可选工业级温度围:

-40℃~+85℃。

3.管脚描述:

X1、X2——32.768KHz晶振管脚

GND——地

RST——复位脚

I/O——数据输入/输出引脚

SCLK——串行时钟

VCC1、VCC2——电源供电管脚

4.DS1302的控制字如表所示。

控制字节最高有效位(位7)必须是逻辑1,如果它为0,则不能把数据写入DS1302中,位6如果0,则表示存取日历时钟数据,为1表示存取RAM数据;位5至位1指示操作单元的地址;最低有效位(位0)如为0表示要进行写操作,为1表示进

行读操作,控制字节总是从最低位开始传输。

DS1302控制字

 

数据输入输出(I/O)在控制指令字输入后的下一个SCLK时钟的上升沿时,数据被写入DS1302,数据输入从低位即位0开始。

同样,在紧跟8位的控制指令字后的下一个SCLK冲的下降沿读出DS1302的数据,读出数据时从低位0位到高位7。

其读写时序如图示:

 

DS1302读写时序

 

2.1.3字符液晶显示屏LCD1602资料:

1.概述:

工业字符型液晶,1602是指显示的容为16*2,即能够同时显示两行,每行16个符。

常见的1602字符液晶有两种,一种显示的是绿色背光黑色字体,另一种显示蓝色背光白色字体,目前市面上字符液晶绝大多数是基于HD44780液晶芯片的,控制原理是完全相同的。

本课题所用1602液晶模块,显示屏是蓝色背光白色字体。

如图

 

2.引脚功能说明:

第1脚:

GND为地电源。

第2脚:

VCC接5V正电源。

第3脚:

VO为液晶显示器对比度调整端,接正电源时对比度最弱,接地电源时对比度最高,

对比度过高时会产生重影,使用一个10K的电位器调整对比度。

第4脚:

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

第5脚:

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

第6脚:

E端为使能端,当E端由高电平跳变成低电平时,液晶模块执行命令。

第7~14脚:

DB0~DB7为8位双向数据线。

第15~16脚:

背光灯电源。

 

3.LCD1602液晶屏的使用时序:

 

DS1302读写时序

LCD1602写时序

LCD1602读时序

 

4.LCD1602存储器RAM:

1602液晶控制器芯片部带有80个8位的RAM缓冲区,其地址和屏幕的对应关系如图示:

2.1.4电源模块:

系统的供电采用5V供电,具体的连接如图示:

变压器采用的是:

AC220~AC9V,稳压芯片是LM7805。

3.硬件电路连接图:

以STC89C52单片机最小系统为核心控制,时钟电路由DS1302芯片提供,采用三线与单片机进行通信,用四个独立的按键进行年、月、日、时间、星期等调整,最终的结果通过LCD1602液晶显示屏显示出来。

3.1单片机的连接图

其中XTAL1和XTAL2接11.0592MHZ的晶振,RST经开关接+5V,控制系统的复位。

P1口与DS1302计时模块连接,进行通信与对其控制。

P2口与LCD1602液晶显示模块连接,控制着LCD1602的显示。

P3口与按键连接,通过P3口输入控制信号。

3.2DS1302计时模块

其中X1、X2接晶振32.768KHZ,VCC1、VCC2接电源I/O接单片机的P1.1,,进行数据的交换,SCLK接单片机的P1.0,RST接单片机的P1.2引脚,进行指令的接收。

3.3LCD1602液晶显示模块

其中DB0~DB7分别接单片机的P2.0~P2.7,进行数据的传输,VO接电阻进行背光亮度的调节,RS、RW和EN分别接单片机的P1.3~P1.5,用于单片机的指令接收。

3.4按键模块

开关一端接地,另一端接P3.0~P3.3,单片机用检测P3.0~P3.3引脚的电位判断是否有键按下。

 

4.系统的软件设计:

4.1软件设计流程图:

 

首先,编写主程序,对计时模块DS1302和显示模块LCD1602进行初始化,同时定义计时模块、显示模块和按键模块的控制程序,之后读取DS1302计时模块预先设定数据,显示模块LCD1602进行显示。

按键检测程序一直在检测是否有键按下,如果S1键按下一次,主函数调用计时控制和显示控制的函数对秒进行操作,此时秒闪烁,如果此时按下S2、S3可对其进行加减调整;按下如果S1按下两次,主函数调用计时控制和显示控制的函数对分进行操作,此时分闪烁,如果此时按下S2、S3可对其进行加减调整;按下如果S1按下三次,主函数调用计时控制和显示控制的函数对时进行操作,此时时闪烁,如果此时按下S2、S3可对其进行加减调整;按下如果S1按下四次,主函数调用计时控制和显示控制的函数对年进行操作,此时年闪烁,如果此时按下S2、S3可对其进行加减调整;按下如果S1按下五次,主函数调用计时控制和显示控制的函数对月进行操作,此时月闪烁,如果此时按下S2、S3可对其进行加减调整;按下如果S1按下六次,主函数调用计时控制和显示控制的函数对日进行操作,此时日闪烁,如果此时按下S2、S3可对其进行加减调整;按下如果S1按下七次,主函数调用计时控制和显示控制的函数对周进行操作,此时周闪烁,如果此时按下S2、S3可对其进行加减调整;按下如果S1按下八次,程序进入主函数。

5.系统的调试:

将系统的电源、计时模块、按键模块、显示模块、控制模块,按照附录一的电路做成PCB电路板,把元器件焊接在板子上。

进行硬件的搭建。

搭建好硬件之后,将编译好的软件程序下载到STC89C52中。

检查无误后,接通电源,看是否能够实现预期的功能。

在单个的模块调试中,各个模块均能够正常稳定的工作,但是在将它们装配在一块,进行整体的调试时,就出现了其他一些问题,不能实现预期的功能。

经过仔细的检查和查阅资料、询问老师同学等方式,进行解决。

现在系统能够稳定、正常的工作。

 

调试过程:

①检查各个器件完好,连接正常之后,接通电源,此时电源指示灯亮,液晶显示屏LCD1602同时亮,依次出现开机画面;②数秒之后,显示初始的年、月、日、星期、时、分、秒。

③通过模式选择键可以在时间显示模式和闹钟模式之间切换,④通过移位键可以使液晶屏上的光标依次移位,⑤将光标移位在想要的调节的位置,按加、减键可以进行该位置的数字的调整。

⑥加、减键可以在按下移位键之后,调节光标闪烁位置的数字。

⑦将模式切换到闹钟模式,依次调整时、分,当时间到预设的时间,蜂鸣器发出”滴滴…”声。

 

6.总结:

通过本次课程设计,使我加深了对单片机的认识,并且掌握了单片机系统的设计、制作流程,收获丰硕。

功能上基本达标:

时钟与闹钟的显示,调时间和闹钟功能以及闹钟鸣叫功能。

时钟与闹钟显示功能,精确度完全可以满足日常生活显示时间的需要;调时间与闹钟功能,方便快捷。

硬件设施基本合乎要求,软件设计可以配合硬件实现其功能。

技术在不断进步,机械式时钟已经被淘汰,取而代之的是具有高度准确性和直观性且无机械装置,具有更长的使用寿命等优点的电子时钟。

电子时钟更具人性化,更能提高人们的生活质量,更受人们欢迎。

机械时代已经远去,电子时代已经到来。

做为新时代的我们,更应该提高自身能力,适应新时代的发展。

知识来自实践,多从生活中探寻所需要的。

从这次的课程设计中,我真正的体会到,知识的重要性,特别是要理论联系实际,把我们所学的理论知识运用到实际生活当中,学以致用。

 

参考文献

[1]广第,朱月秀,冷租祁.单片机基础第三版.:

航空航天大学(1——259)。

[2]庆亮.C语言程序设计实用教程.:

机械工业,2005.3(1——100)。

[3]康华光.电子技术基础数字部分.:

高等教育,2008(1——560)。

[3]康华光.电子技术基础模拟部分.:

高等教育,2008(1——560)。

[4]志忠.数字电子技术.:

高等教育,2003.12(30——100)。

[5]及力.Protel99SE原理图与PCB设计教程.:

电子工业,2007.8(48——100)。

[6]欣.电子设计从零开始.:

清华大学,2005(10——200)。

[12]邢小杰.单片机电子时钟设计.中国科技博览,2009。

 

附录一:

整体电路连接图:

附录二:

源程序代码:

#include

#include

#defineucharunsignedchar

#defineuintunsignedint

bitflag;

uchars1num;

 

charnian,yue,ri,shi,fen,miao,week;

chara_fen=10,a_shi=10;//初始值年周月时分秒

ucharkaiji[]="^-^-Welcome!

-^-^";//开机画面显示

ucharkaiji1[]="***GoodLuck!

***";

//123456789abcdefg

ucharalarm_table[]="Alarm:

";

ucharwrite_add[7]={0x8c,0x8a,0x88,0x86,0x84,0x82,0x80};

ucharread_add[7]={0x8d,0x8b,0x89,0x87,0x85,0x83,0x81};

sbitrs=P1^5;//1602定义

sbitrw=P1^4;

sbite=P1^3;

sbitsck=P1^0;//1302定义

sbitio=P1^1;

sbitrst=P1^2;

sbits1=P3^2;//调整按键

sbits2=P3^1;//加1

sbits3=P3^0;//减1

sbits4=P3^3;//模式选择

 

sbitdd=P3^4;//蜂鸣器

 

voiddelay_1ms(ucharm)//延时函数

{

uchari,j;

for(j=0;j

for(i=0;i<110;i++);

}

voidbeep()//蜂鸣器发声

{

dd=0;

delay_1ms(50);

dd=1;

}

 

voidwrite_(uchar)//lcd1602写指令

{

e=0;

rs=0;

rw=0;

P2=;

delay_1ms

(1);

e=1;

delay_1ms

(1);

e=0;

}

 

voidwrite_data(uchardat)//lcd1602写数据

{

e=0;

rs=1;

rw=0;

P2=dat;

delay_1ms

(1);

e=1;

delay_1ms

(1);

e=0;

}

 

voidwrite_sfm(ucharadd,uchardat)//时分秒刷新显示函数

{

ucharshi,ge;

shi=dat/10;

ge=dat%10;

write_(0xc0+add);

write_data(0x30+shi);

write_data(0x30+ge);

 

}

voidwrite_nyr(ucharadd,uchardat)//年月日刷新显示函数

{

ucharshi,ge;

shi=dat/10;

ge=dat%10;

write_(0x80+add);

write_data(0x30+shi);

write_data(0x30+ge);

 

}

voidwrite_ds1302_byte(ucharadd)//ds1302

{

uchari;

for(i=0;i<8;i++)

{

sck=0;

io=add&0x01;

add=add>>1;

sck=1;

}

}

voidwrite_ds1302(ucharadd,uchardat)

{

rst=0;

_nop_();

sck=0;

_nop_();

rst=1;

_nop_();

write_ds1302_byte(add);

write_ds1302_byte(dat);

rst=0;

_nop_();

io=1;

sck=1;

}

 

voidwrite_tran_data(ucharadd,uchardat)//十进制转换成BCD码

{

uchart;

t=dat/10;

dat=dat%10;

dat=t<<4|dat;

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

当前位置:首页 > 经管营销

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

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