单片机数字时钟

  • 格式:doc
  • 大小:381.50 KB
  • 文档页数:26

引言数字电子时钟,自从它问世起,就是人们的好朋友,是人们日常生活中必不可少的电子产品,广泛用于生活的方方面面,给人们的学习、生活、工作带来了极大的方便。

但随着时间的推移,科学技术的不断发展,生活节奏越来越快,竞争日益激烈,人们对时间计量的精度要求越来越高,应用越来越广。

通常使用的晶振芯片设计的电子时钟,在生活中使用是一个很不错的选择,然而在工业现场,环境恶劣,势必会影响走时的进度,我们试想一下,大型的工业现场的走时如果因为环境的恶劣而不精确,导致的生产损失将有多大。

而利用开关量控制的PLC来设计的时钟是不会因为环境的因素而发生走时误差,从而,在工业现场最好使用PLC设计的时钟。

本文主要介绍在工业现场应用的时钟用PLC的设计。

通过PLC我们设计的这种走时精确的的时钟,终究会变成产品走进工业现场。

1 设计的目的及意义本设计通过用对一个能实现定时,时钟显示功能的时间系统的设计学习,让我们了解到了51单片机应用中的数据转换显示,数码管显示原理,静态扫描显示原理,单片机的定时中断原理等,从而达到学习、了解单片机相关指令在各方面的应用,让我们学到更多关于单片机方面的知识。

2 芯片简介2.1 STC80C52单片机芯片引脚功能介绍单片机的40个引脚大致可分为4类:电源、时钟、控制和I/O引脚。

⒈ 电源: ⑴ VCC - 芯片电源,接+5V;⑵ VSS - 接地端;⒉ 时钟:XTAL1、XTAL2 - 晶体振荡电路反相输入端和输出端。

⒊ 控制线:控制线共有4根,⑴ ALE/PROG:地址锁存允许/片内EPROM编程脉冲① ALE功能:用来锁存P0口送出的低8位地址② PROG功能:片内有EPROM 的芯片,在EPROM编程期间,此引脚输入编程脉冲。

⑵ PSEN:外ROM读选通信号。

⑶ RST/VPD:复位/备用电源。

① RST(Reset)功能:复位信号输入端。

② VPD 功能:在Vcc掉电情况下,接备用电源。

⑷ EA/Vpp:内外ROM选择/片内EPROM 编程电源。

① EA功能:内外ROM选择端。

② Vpp功能:片内有EPROM的芯片,在EPROM编程期间,施加编程电源Vpp。

⒋ I/O线80C51共有4个8位并行I/O端口:P0、P1、P2、P3口,共32个引脚。

P3口还具有第二功能,用于特殊信号输入输出和控制信号(属控制总线)。

2.2 STC89C52单片机芯片封装图STC89C52芯片的封装有PLCC、PQFP以及DIP—40,本设计采用的是引脚双列直插式封装。

其封装形式如图2.2.1。

图2.2.1 STC89C52 DIP-40封装2.3 DS1302芯片功能的介绍DS1302 是美国Dallas 公司生产的一种高性能、低功耗、带RAM的实时时钟芯片。

该芯片采用3 线串行接口方式,可提供年、月、日、星期、时、分、秒等时间信息,并可根据月份和闰年的情况自动调整月份的结束日期,同时可以根据用户需要决定是采用24 小时或12 小时格式。

DS 1302 内部带有31 个字节RAM ,用于存放临时性数据,同时具有可编程涓细电流充电能力,从而使外围硬件电路设计得到了大大简化。

其中X1 、X2 为32. 768kHz 晶振端, GND 为地;RST 为复位端,高电平时允许I/ O 端进行数据传输,低电平则禁止数据传送且使I/ O 端呈高阻状态; I/ O 为串行数据输入、输出端,所有输入、输出数据的传送顺序均以最低位LSB 打头, 最高位MSB 结束;SCL K为同步时钟脉冲端,其上升沿将I/ O 端数据按位写入DS1302 ,下降沿使DS1302 按位输出数据至I/ O 端;VCC2 、VCC1 为主电源和备份电源端,当主电源VCC2 大于备份电源VCC1 +0. 2V 时,由VCC2 对芯片供电,否则,由VCC1 对芯片电。

工作电压范围为2. 5~5. 5 V ,工作电源和备份电源双引脚输入,功耗很低,当工作电压为2. 5 V时正常工作,所需电流不超过300 nA 。

另外,如果选择了涓流充电功能,在正常情况下,主电源还可对备份电源进行慢速充电,有效延长了备份电源的使用寿命,保证了系统时间的连续可靠运行。

该芯片引脚分配如图2.3.1图2.3.1 DS1302芯片引脚图DS1302芯片引脚功能说明如下表2.3.1。

表2.3.1 DS1302芯片引脚功能说明3 电路原理图与功能说明3.1 晶振电路晶体振荡器在固定频率振荡器中能够提供较高的精度,绝大多数RTC采用32.768kHz的晶体,晶体振荡器输出经过分频后会产生1Hz的基准来刷新时间和日期。

RTC的精度主要取决于晶振的精度,晶体振荡器在固定频率振荡器中能够提供较高的精度,绝大多数RTC采用32.768kHz的晶体,晶体振荡器输出经过分频后会产生1Hz的基准来刷新时间和日期。

RTC的精度主要取决于晶振的精度,晶振一般在特定的电容负载下,其调谐振荡在正确的频点,而当晶振调谐于12.5pF负载的RTC电路中时,使用6pF负载的晶振将会使时钟变快。

Dallas Semiconductor 提供的所有RTC均采用内部偏置网络,因而晶振可直接连接到RTC的X1、X2引脚,而不需要额外的元件。

由于RTC的晶振输入电路具有很高的输入阻抗,因此,它与晶振的连线犹如一个天线,很容易耦合系统其余电路的高频干扰。

而干扰信号被耦合到晶振引脚将导致时钟数的增加或减少。

考虑到线路板上大多数信号的频率高于32.768kHz,所以,通常会产生额外的时钟脉冲计数。

因此,晶振应尽可能靠近X1、X2引脚安装,同时晶振、X1/X2引脚的下方最好布成地平面。

晶振电路如图3.1.1。

图3.1.1 晶振电路3.2 复位电路当STC89C52单片机的复位引脚RST(全称RESET)出现2个机器周期以上的高电平时,单片机就执行复位操作。

如果RST持续为高电平,单片机就处于循环复位状态。

根据应用的要求,复位操作通常有两种基本形式:上电复位和上电或开关复位。

上电复位要求接通电源后,自动实现复位操作。

上电或开关复位要求电源接通后,单片机自动复位,并且在单片机运行期间,用开关操作也能使单片机复位。

上电后,由于电容的充电和反相门的作用,使RST持续一段时间的高电平。

当单片机已在运行当中时,按下复位键K后松开,也能使RST为一段时间的高电平,从而实现上电或开关复位的操作。

复位电路如图3.2.1图 3.2.1 复位电路3.3 数码管显示电路所谓数码管就是为数码管显示提供的各段状态组合,即字形代码。

八段数码管的段码为八位,用一个字节即可表示。

在段码字节中代码位与各段发光二极管的对应关系表3.3.1。

段码的值与数码管公共引脚的接法有关。

以八段数码管为例,显示十六进制的段码值如表3.3.2。

并排使用的多位数码管称为LED显示器。

LED显示器多采用动态显示方式,全部数码管共用一套段码驱动电路,各位数码管的同段引脚短接后在借到应段码的驱动线上。

显示时通过位控信号采用扫描的方法逐位地循环点亮各位数码管。

动态显示虽然在任何一时刻只有一位数码管被点亮,但是由于人眼具有的视觉残留效应,看起来与全部数码管持续点亮的效果完全一样。

LED显示器动态显示需要为各位提供段码以及相应的位控制,此即通常所说的段控和位控。

把LED显示器段码表预先存放在存储器中,使用时通过查表就可以得到段码。

段码输出后送到公共段码线上,也可称为段控信号。

而通过并行口输出的相互独立的为嘛则是起选通作用的,也称位控或扫描信号,用于选择显示位。

数码管电路如图3.3.1。

图3.3.1 数码管电路图3.4 DS1302电路DS1302 所进行的一切工作必须先由CPU 向DS1302 发送命令字节, 命令字节格式如图3.4.1 。

各位定义如下:命令字节的最高位7 必须为“1”,否则禁止对DS1302 进行操作。

第6 位是时钟/ 日历或RAM 选择位, 如它为“1”可对内部RAM 读写,如它为“0”可对时钟日历操作。

此处所谓日历型数据即数据格式为压缩型BCD 码,且数值必须在它的定义域内;例如,“月份”的定义域为1~12“, 秒”的定义域为0~59 等等。

所谓RAM型数据即指一般16 进制数据。

位5 至位1 为DS1302 内部寄存器地址。

DS1302 有单字节和多字节两种读、写方式。

所谓单字节读、写方式即每次只能从DS1302 中读、写1 字节数据。

所谓多字节读、写方式则每次可从DS1302 中连续读、写若干字节数据。

当位5 至位1 各位均为“1”时,DS1302为多字节读、写方式。

最低位0 为“0”表示写操作,否则为读操作。

命令字节的传输都是从最低位开始。

图3.4.1 DS1302时钟芯片的控制字DS1302 采用串行方式与微控制器通讯。

在片选信号RST 变为高电平后,可向芯片发送指令及读取数据。

DS1302 的命令字的传输从最低位开始。

当对DS1302 进行写数据时,首先发写控制指令,在控制指令字输入后的下一个SCL K时钟的上升沿,数据被写入DS1302 ,数据输入从低位即位0开始。

当对DS1302 进行读数据时,首先发读控制指令,在紧跟8 位的控制指令字后的下一个SCL K脉冲的下降沿读出DS1302 的数据,读出数据时从低位0 位至高位7 。

注意在SCLK为高电平期间,不能读I/ O 线,此期间I/ O 端为高阻状态。

因此,在程序设计时应保证在SCLK 上升沿之前读I/ O线,即可正确读出时钟数据[3 ] [8 ] 。

在本记录仪表系统中,实时时钟软件首先应将日历信息初值———秒、分、时、日、月、星期、年等按序写入到DS1302 相关寄存器中,此后,时钟便以此初值为基准进行计时,只要主电源VCC2 和备份电源VCC1 尚有一个工作正常,则计时就不会终止。

初始化日历信息程序分为三部分:(1) 发送“解除写保护”命令字8EH 和内容00H ,以开放DS1302 写操作。

(2) 发送“涓流充电”命令字90H 和内容A7H ,以开放DS1302 内部充电电路。

本系统选择DS1302 内部充电电路为一只串联二极管和8kΩ限流电阻,因此常规情况下,主电源VCC2 对备份电源VCC1 之最大充电电流为Imax = (VDD - 二极管压降) / 限流电阻= (5 - 0. 7) ÷8 = 0. 538mA 。

(3) 发送“多字节写日历型数据”或“单字节写日历型数据”命令字写入日历信息初值。

上述部分属于对DS1302 内部功能寄存器操作,因此必须以“单字节”方式进行发送;而第3 部分属于对DS1302 一般寄存器操作,故可以采用“多字节”方式发送,以便提高效率。

同时,在仪表工作过程中需要读取时间日历信息时,可根据具体需要采用“多字节”方式或“单字节”方式。