当前位置:文档之家› 基于单片机的电子时钟设计

基于单片机的电子时钟设计

bu武汉软件工程职业学院2006级毕业论文课题名称基于单片机的电子时钟设计学生姓名班级指导老师完成时间:2008 年10月 23日光电子与通信工程系基于单片机的电子时钟设计摘要本文介绍了一款基于AT89S51单片机控制的电子钟的设计,通过多功能数字钟带的设计思路,详细叙述了系统硬件、软件的具体实现过程。

论文重点阐述了数字钟硬件中MCU模块、时钟模块、显示模块和相关控制模块等的模块化设计与制作;软件同样采用模块化的设计,包括中断模块、时间调整模块设计,并采用简单流通性强的C语言编写实现。

本设计实现了时间的修改功能和年、月、日和星期的显示功能。

关键词:AT89S51 单片机数字钟AbstractThis paper introduced the design of digital clock based on SCM of AT89S51, the specific process of how the system hardware and software achieved were detailed description through the design of multifunction digital clock. The modular design and production, which consisted of MCU module,clock module and the associated control module, were mainly recounted;As well as hardware designing,software design use the same method, consists suspension module, time adjust module, and that use the C language to achieve because of its simple and strong negotiability. In this design the functions of time clock run and change, functions of the year, month, day and week display have been achieved. And by comparing the actual clock.Key words :AT89S51Microcontroller Digital Clock目录前言 (3)第一章系统实现功能、设计方案论证及芯片介绍 (4)第一节系统要求实现功能 (4)第二节设计方案论证 (4)第三节芯片介绍 (6)1、D S1302芯片介绍 (6)第二章电路硬件设计及分析 (10)第一节时钟电路 (10)第二节复位电路 (11)第三节DS1302时钟电路 (11)第四节键盘电路 (12)第五节.显示电路 (13)第六节按键提示电路 (14)第三章软件设计 (15)第一节主函数流程图 (15)第二节键盘电路流程图 (16)第三节定时器T0中断服务程序流程图 (17)第四章结束语 (18)第一节带时钟显示的温度计Proteus仿真效果图 (18)第二节所用到的相关元器件图示 (19)附录主程序清单 (20)参考文献 (32)致谢 (33)前言单片微型计算机是随着超大规模集成电路技术的发展而诞生的,由于它具有体积小、功能强、性价比高等特点,所以广泛应用于电子仪表、家用电器、节能装置、军事装置、机器人、工业控制等诸多领域,使产品小型化、智能化,既提高了产品的功能和质量,又降低了成本,简化了设计。

本文主要介绍由单片机控制的电子钟的设计。

第一章系统实现功能、设计方案论证及芯片介绍第一节系统要求实现功能(1) 万年历(2) 三键调时(设置键,上调键,下调键)(3)按键蜂鸣器提示(调试时蜂鸣器BUZZER系统自动设置为“本元件进行仿真”)第二节设计方案论证方案一用主芯片为AT89C51的单片机控制实现,为了满足单片机系统的实时控制的需求,采用实时钟芯片DS1302,使用按键进行时间的调整和定时,按键蜂鸣器提示,时间使用LCD1602显示。

方案2系统结构框图如图1-2所示。

温度传感器信号调理电路AD转换电路方案二用主芯片为AT89C51的单片机控制实现,为了满足单片机系统的实时控制的需求,采用实时钟芯片DS1302,使用按键进行时间的调整和定时,按键有蜂鸣器提示,显示时间使用LCD1602显示。

方案3系统结构框图如图1-3所示。

DS18B20图1-3方案3系统结构框图方案选择方案一直接使用单片机内集成的定时器,产生定时节拍,编制软件计数器,进行节拍技术,理论上讲,不但能够完成秒表设计,还能够实现分钟、刻钟、小时的实时计时功能,在此基础上,如果加上足够精确的误差时间补偿处理,甚至可以实现日、星期、月、年等日历功能。

但使用片内定时器有以下几个问题:1、时间补偿片内定时器采用中断方式提供计时节拍,中断的实质是随机程序切换,那么,中断响应时间是不可精确预测的。

这样,必然会导致计时节拍的时间误差,在计时时间较短的情况下,比如1~99s计时,可以采用一些软件措施进行误差补偿,但当系统所需要的计时时间较长时,比如进行年、月、日的日历计时,定时中断误差扥积累就会很大,无法满足时间精度的要求。

因此,在需要日历、时钟的场合,片内定时器的作用有限。

片内定时器只适合于单片机短时间计时的要求。

2、时钟维持使用片内定时器进行计时的时候,单片机始终要处于工作状态。

才能维持计时时间,一旦停机或进入待机状态,开机后,计时时间就需要重新设定。

在单片机系统中,有时,需要维持一个时钟,对控制工作进行时间标定。

不管单片机系统开机、关机还是待机,系统时钟要始终维持。

为了满足单片机系统的实时钟需求,最可靠的方法是采用实时钟芯片DS1302。

这个设计采用的是方案三。

第三节芯片介绍一、DS1302芯片介绍DS1302是DALLAS公司推出的涓流充电时钟芯片,内含一个实时时钟/日历和31字节静态RAM,可以通过串行接口与单片机进行通信。

实时时钟/日历电路提供秒、分、时、日、星期、月、年的信息,每个月的天数和闰年的天数可自动调整,时钟操作可通过AM/PM标志位决定采用24或12小时时间格式。

DS1302与单片机之间能简单地采用同步串行的方式进行通信,仅需三根I/O线:复位(RST)、I/O数据线、串行时钟(SCLK)。

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

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

1、DS1302的内部结构DS1302的外部引脚功能说明如图1-6所示。

DS1302封装图X1,X232.768kHz晶振引脚GND 地RST 复位I/O 数据输入/输出SCLK 串行时钟VCC1 电池引脚VCC2 主电源引脚图1-6DS1302的外部引脚功能说明图DS1302的内部结构如图1-7所示,主要组成部分为:移位寄存器、控制逻辑、振荡器、实时时钟以及RAM。

虽然数据分成两种,但是对单片机的程序而言,其实是一样的,就是对特定的地址进行读写操作。

图1-7 DS1302的内部结构图DS1302含充电电路,可以对作为后备电源的可充电电池充电,并可选择充电使能和串入的二极管数目,以调节电池充电电压。

不过对我们目前而言,最需要熟悉的是和时钟相关部分的功能,对于其它参数请参阅数据手册。

2、DS1302的工作原理DS1302工作时为了对任何数据传送进行初始化,需要将复位脚(RST)置为高电平且将8位地址和命令信息装入移位寄存器。

数据在时钟(SCLK)的上升沿串行输入,前8位指定访问地址,命令字装入移位寄存器后,在之后的时钟周期,读操作时输出数据,写操作时输出数据。

时钟脉冲的个数在单字节方式下为8+8(8位地址+8位数据),在多字节方式下为8加最多可达248的数据。

3、DS1302的寄存器和控制命令对DS1302的操作就是对其内部寄存器的操作,DS1302内部共有12个寄存器,其中有7个寄存器与日历、时钟相关,存放的数据位为BCD码形式。

此外,DS1302还有年份寄存器、控制寄存器、充电寄存器、时钟突发寄存器及与RAM 相关的寄存器等。

时钟突发寄存器可一次性顺序读写除充电寄存器以外的寄存器。

日历、时间寄存器及控制字如表1-2所示。

表1-2 日历、时钟寄存器与控制字对照表寄存器名称7 6 5 4 3 2 1 0 1 RAM/CK A4 A3 A2 A1 A0 RD/W秒寄存器 1 0 0 0 0 0 0分寄存器 1 0 0 0 0 0 1小时寄存器 1 0 0 0 0 1 0日寄存器 1 0 0 0 0 1 1月寄存器 1 0 0 0 1 0 0星期寄存器 1 0 0 0 1 0 1年寄存器 1 0 0 0 1 1 0写保护寄存器 1 0 0 0 1 1 1慢充电寄存器 1 0 0 1 0 0 0时钟突发寄存器 1 0 1 1 1 1 1最后一位RD/W为“0”时表示进行写操作,为“1”时表示读操作。

DS1302内部寄存器列表如表1-3所示。

表1-3 DS14302内部主要寄存器分布表寄存器名称命令字取值范围各位内容写读7 6 5 4 3 2 1 0秒寄存器80H 81H 00-59 CH 10SEC SEC分寄存器82H 83H 00-59 0 10MIN MIN小时寄存器84H 85H 01-12或00-23 12/24 0 A HR HR日期寄存器86H 87H 01-28,29,30,31 0 0 10DATE DATE月份寄存器88H 89H 01-12 0 0 0 10M MONTH周寄存器8AH 8BH 01-07 0 0 0 0 0 DAY年份寄存器8CH 8DH 00-99 10YEAR YEAR DS1302内部的RAM分为两类,一类是单个RAM单元,共31个,每个单元为一个8位的字节,其命令控制字为COH~FDH,其中奇数为读操作,偶数为写操作;再一类为突发方式下的RAM,此方式下可一次性读写所有的RAM的31个字节,命令控制字为FEH(写)、FFH(读)。

我们现在已经知道了控制寄存器和RAM的逻辑地址,接着就需要知道如何通过外部接口来访问这些资源。

单片机是通过简单的同步串行通讯与DS1302通讯的,每次通讯都必须由单片机发起,无论是读还是写操作,单片机都必须先向DS1302写入一个命令帧,这个帧的格式如表1所示,最高位BIT7固定为1,BIT6决定操作是针对RAM还是时钟寄存器,接着的5个BIT是RAM 或时钟寄存器在DS1302的内部地址,最后一个BIT表示这次操作是读操作抑或是写操作。

相关主题