0 卖盘信息
BOM询价
您现在的位置: 首页 > 电子资讯 >设计应用 > 基于89C51单片机与串行时钟DS1307的接口设计

基于89C51单片机与串行时钟DS1307的接口设计

2018-02-24
类别:设计应用
eye 276
文章创建人 拍明


在简单介绍串行时钟芯片ds1307的基础上,介绍了时钟电路的rs485接口设计8本文所设计的时钟电路具有体积小、抗干扰性能强、通用性好、调时方便等特点。

0 引言

由单片机构成的测控系统或智能显示屏中,经常需要实时日历时钟,为节省CPU资源,增强实时时钟电路的通用性,本文介绍DS1307的应用及其接口设计,该时钟系统用RS485接口,采用SN75176差分平衡驱动接收,具有抗干扰能力强,可与PC机进行远距离的通信也可以与其他控制电路相连;时钟调时可方便地用PC机或电路中设置的按键进行时间设定和修改。

1、串行时钟DS1307简介

DS1307是I2C总线接口的日历时钟芯片,片内有8个特殊寄存器和56B的SRAM,是一种低功耗、BCD码的8引脚实时时钟芯片。

DS1307的主要技术性能如下:

具有秒、分、时、日、星期、月、年的计数功能,并具有12小时制和24小时制计数模式,可自动调整每月天数及闰年;

具有自动掉电保护和上电复位功能;

可输出不同频率的方波信号

(1)DS1307的引脚排列图如图1所示。

VCC:+5V电源;

VBAT:+3V电池电源输入;

X1,X2:32.768kHz的晶振输入端;

SDA:数据线;

SCL:时钟线;

SQW/OUT:方波信号输出端。

DS1307管脚排列图.png

(2)DS1307的特殊寄存器地址分配

DS1307内部有8个特殊寄存器即00H~07H单元,其中00H~06H分别为秒~年时间计数寄存器,07H为控制寄存器。其详细的空间分配如表1所示。

DS1307空间分配.png

控制寄存器07H单元用于控制芯片7脚产生不同频率的方波信号。具体作用如表2所示。

07H单元作用表.png

其中:OUT为控制位,SQWE是使能位。

当SQWE=0时,如果OUT=0,则SQW/OUT引脚输出低电平,如果OUT=1,则SQW/OUT引脚输出为高电平。当SQWE=1时,由RS1,RS0决定引脚SQW/OUT输出不同频率的方波信号。RS1,RS0与输出频率的关系为表3所示。

RS1,RS0与输出频率的关系.png

(3)DS1307的工作时序

DS1307通过双向数据线SDA和时钟SCL与外界进行数据交换,其时序关系如图2所示。

DS1307读写时序.png

从时序图2中可看出,DS1307有2种操作方式:

(1)写操作:把SDA数据线上的数据按RAM指定的首地址(WordAddress)依次写入N个字节数据,其格式为:

DS1307操作方式.png

(2)读操作:按RAM指定的首地址依次读出N个字节数据,其格式为:

DS1307操作方式.png

其中:S为起始信号,1101000为DS1307的口地址,A应答信号,A非应答信号,P停止信号。

2、时钟系统的硬件设计

该系统由89C51单片机、时钟芯片DS1307,RS485接口电路及显示电路组成。主要原理框图如图3所示。

时钟系统框图.png

2.1 89C51部分

本文利用89C51的P1.6,P1.7来模拟I2C总线的时钟线(SCL)和数据线(SDA)对时钟芯片DS1307的时钟数据进行读写操作,并把读来的数据送数码管显示。利用P3.0,P3.1实现串行输入输出,用P1.5来控制PC机输出数据对显示时间的影响,当P1.5=1时才允许显示传送,利用89C51的外部中断INT0对按键调整时间进行中断控制。

2.2 DS1307部分

通过DS1307的SDA,SCL将时钟芯片的00H~06H单元的秒、分、时、星期、日、月和年送到数码管显示。DS1307的写地址为11010000B,读地址为11010001B。

2.3 RS485接口部分

为便于远距离、高速率下的多机通信,采用RS485接口。由MC1489将RS232电平转换成TTL电平,由MC1488实现TTL电平到RS232电平的转换,并用SN75176传输线驱动、接收器实现差分平衡型电路的转换,以增强电路的抗干扰能力。

3、软件设计

该时钟系统软件有89C51与DS1307之间的数据交换、与PC机的串行通讯、按键时间调整及显示程序4大部分构成。下面择其主要程序简单介绍如下:

(1) 89C51对DS1307数据读、写操作

该程序是整个时钟电路的核心部分。利用单片机的P1.6,P1.7 I/O口,根据DS1307的数据传输格式用软件实现数据的读写操作;下面给出对DS1307进行写操作的部分参考子程序。

发送起始位子程序SAT:

89C51对DS1307数据读、写操作.png

89C51对DS1307数据读、写操作.png

(2) 与PC机的串行通讯

软件功能 PC机将键盘输入的字符发送给单片机,单片机接受PC机发来的数据后回送同一数据给PC机,并在屏幕上显示出来。

通讯约定 波特率设置。

数据格式 8个数据位,一个停止位。

传送方式 PC机采用查询方式收发数据,单片机采用中断方式接收数据。

(3) 单键时间调整

软件功能 为节省单片机资源用单键方式实现时间的调整,即利用89C51的中断0实现中断。

当有键按下时,首先由秒显示闪烁,表示可以对秒进行调整,闪烁一定时间(如5 s),在此时间内如接收不到调整信号,则自动闪烁下一位,直至年调整为止。

4、结语

本文选择实时时钟芯片DS1307和单片机89C51设计了一个日历时钟系统,该系统体积小,具有RS485接口,通用性强、调时方便。已在许多智能显示屏中得到成功应用,也可用于实时测控系统。

DS1307

AM/PM 标志位决定时钟工作于24小时或12小时模式,芯片有一个内置的电源感应电路,具有掉电检测和电池切换功能。

DS1307典型接线图

描述:

是一款低功耗,具有56字节非失性RAM的全BCD码时钟日历实时时钟芯片,地址和数据通过两线双向的串行总线的传输,芯片可以提供秒,分,小时等信息,每一个月的天数能自动调整。并且有闰年补偿功能

特点:

可对秒,时,分,每月的天数,月份,每周的天数进行计数,并具有闰年补偿功能。计年上限2100。

56字节非失性的RAM

两线串行接口

可编程方波输出

自动掉电检测和切换电路

在电池备份模式下,功耗小于500nA

工业级的工作温度: -40 到80

8脚DIP和SOIC封装

主要参数:

针脚数:8

工作温度范围:0°C to +70°C

封装类型:DIP

工作温度最低:0°C

工作温度最高:70°C

中断类型:全天时间

器件标号:1307

器件标记:DS1307+

存储器容量:56 bytes

存储器类型:RAM

接口类型:Serial, I2C

时钟频率:32.768kHz

温度范围:商用

特点:方波输出

电压, Vcc 最大:5V

电源电压 最大:5.5V

电源电压 最小:4.5V

类型:RTC

芯片标号:1307

表面安装器件:通孔安装

输出数:1

逻辑功能号:1307

和单片机连接:

DS1307典型接线如图1所示。BT1为备用电池,3V,7脚为方波输出,通常把该脚接到单片机的能够产生电平变化中断的引脚,如设置成每秒输出1个方波,则会每秒中断一次,读取时间用以显示。图1中的R1、R2、R4是必须的上拉电阻。

I2C时序:

DS1307 在 IIC 总线上是从器件,地址固定为”11010000”

DS1307 写操作 TWI 被控接收模式 主控器件按如下顺序将数据写入到DS1307 寄存器或内部RAM 中:

第一步.START 信号

第二步.写SLA+W(0xd0)字节,DS1307 应答(ACK)

第三步.写1 字节内存地址(在以下第四步写入的第一字节将存入到DS1307 内该地址处),DS1307应答。

第四步.写数据(可写多个字节,每一字节写入后DS1307 内部地址计数器加一,DS1307 应答)

第五步.STOP 信号


89C51

89C51是一种带4K字节闪烁可编程可擦除只读存储器(FPEROM—Flash Programmable and Erasable Read Only Memory)的低电压、高性能CMOS8位微处理器,俗称单片机。单片机的可擦除只读存储器可以反复擦除1000次。该器件采用ATMEL高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。由于将多功能8位CPU和闪烁存储器组合在单个芯片中,ATMEL的89C51是一种高效微控制器,89C2051是它的一种精简版本。89C单片机为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。

89C51


主要特性

·与MCS-51 兼容

·4K字节可编程闪烁存储器

寿命:1000写/擦循环

89C51特征


·三级程序存储器锁定

·128*8位内部RAM

·32可编程I/O线·两个16位定时器/计数器

89C51特征


·可编程串行通道

·低功耗的闲置和掉电模式

·片内振荡器和时钟电路

管脚说明

VCC:供电电压。

GND:接地。

P0口:P0口为一个8位漏级开路双向I/O口,每脚可吸收8TTL门电流。当P1口的管脚第一次写1时,被定义为高阻输入。P0能够用于外部程序数据存储器,它可以被定义为数据/

89C51引脚图

89C51引脚图


地址的低八位。在FIASH编程时,P0 口作为原码输入口,当FIASH进行校验时,P0输出原码,此时P0外部必须被拉高。

P1口:P1口是一个内部提供上拉电阻的8位双向I/O口,P1口缓冲器能接收输出4TTL门电流。P1口管脚写入1后,被内部上拉为高,可用作输入,P1口被外部下拉为低电平时,将输出电流,这是由于内部上拉的缘故。在FLASH编程和校验时,P1口作为低八位地址接收。

P2口:P2口为一个内部上拉电阻的8位双向I/O口,P2口缓冲器可接收,输出4个TTL门电流,当P2口被写“1”时,其管脚被内部上拉电阻拉高,且作为输入。并因此作为输入时,P2口的管脚被外部拉低,将输出电流。这是由于内部上拉的缘故。P2口当用于外部程序存储器或16位地址外部数据存储器进行存取时,P2口输出地址的高八位。在给出地址“1”时,它利用内部上拉优势,当对外部八位地址数据存储器进行读写时,P2口输出其特殊功能寄存器的内容。P2口在FLASH编程和校验时接收高八位地址信号和控制信号。

P3口:P3口管脚是8个带内部上拉电阻的双向I/O口,可接收输出4个TTL门电流。当P3口写入“1”后,它们被内部上拉为高电平,并用作输入。作为输入,由于外部下拉为低电平,P3口将输出电流(ILL)这是由于上拉的缘故。

P3口也可作为AT89C51的一些特殊功能口,如下表所示:

口管脚 备选功能

P3.0 RXD(串行输入口)

P3.1 TXD(串行输出口)

P3.2 /INT0(外部中断0)

P3.3 /INT1(外部中断1)

P3.4 T0(记时器0外部输入)

P3.5 T1(记时器1外部输入)

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

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

P3口同时为闪烁编程和编程校验接收一些控制信号。

RST:复位输入。当振荡器复位器件时,要保持RST脚两个机器周期的高电平时间。

ALE/PROG:当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的地位字节。在FLASH编程期间,此引脚用于输入编程脉冲。在平时,ALE端以不变的频率周期输出正脉冲信号,此频率为振荡器频率的1/6。因此它可用作对外部输出的脉冲或用于定时目的。然而要注意的是:每当用作外部数据存储器时,将跳过一个ALE脉冲。如想禁止ALE的输出可在SFR8EH地址上置0。此时, ALE只有在执行MOVX,MOVC指令是ALE才起作用。另外,该引脚被略微拉高。如果微处理器在外部执行状态ALE禁止,置位无效。

/PSEN:外部程序存储器的选通信号。在由外部程序存储器取指期间,每个机器周期两次/PSEN有效。但在访问外部数据存储器时,这两次有效的/PSEN信号将不出现。

/EA/VPP:当/EA保持低电平时,则在此期间为外部程序存储器(0000H-FFFFH),不管是否有内部程序存储器读取外部ROM数据。注意加密方式1时,/EA将内部锁定为RESET;当/EA端保持高电平时,单片机读取内部程序存储器。(扩展有外部ROM时读取完内部ROM后自动读取外部ROM)。在FLASH编程期间,此引脚也用于施加12V编程电源(VPP)。

XTAL1:反向振荡放大器的输入及内部时钟工作电路的输入。

XTAL2:来自反向振荡器的输出。

振荡器

特性

XTAL1和XTAL2分别为反向放大器的输入和输出。该反向放大器可以配置为片内振荡器。石晶振荡和陶瓷振荡均可采用。如采用外部时钟源驱动器件,XTAL2应不接。由于输入至内部时钟信号要通过一个二分频触发器,因此对外部时钟信号的脉宽无任何要求,但必须保证脉冲的高低电平要求的宽度。

芯片擦除

整个PEROM阵列和三个锁定位的电擦除可通过正确的控制信号组合,并保持ALE管脚处于低电平10ms 来完成。在芯片擦操作中,代码阵列全被写“1”且在任何非空存储字节被重复编程以前,该操作必须被执行。

此外,AT89C51设有稳态逻辑,可以在低到零频率的条件下静态逻辑,支持两种软件可选的掉电模式。在闲置模式下,CPU停止工作。但RAM,定时器,计数器,串口和中断系统仍在工作。在掉电模式下,保存RAM的内容并且冻结振荡器,禁止所用其他芯片功能,直到下一个硬件复位为止。

结构特点

8位CPU;

片内振荡器和时钟电路;

32根I/O线;

外部存贮器寻址范围ROM、RAM64K;

2个16位的定时器/计数器;

5个中断源,两个中断优先级;

全双工串行口;

布尔处理器;

单片机

很多初学51单片机的网友会有这样的问题:AT89S51是什么?书上和网络程上可都是8051,89C51等!没听说过有89S51 ?

这里,初学者要澄清单片机实际使用方面的一个产品概念,MCS-51单片机是美国INTEL[1] 公司于1980年推出的产品,典型产品有 8031(内部没有程序存储器,实际使用方面已经被市场淘汰)、8051(芯片采用HMOS,功耗是630mW,是89C51的5倍,实际使用方面已经被市场淘汰)和8751等通用产品,一直到现在, MCS-51内核系列兼容的单片机仍是应用的主流产品(比如目前流行的89S51、已经停产的89C51等),各高校及专业学校的培训教材仍与MCS-51单片机作为代表进行理论基础学习。

有些文献甚至也将8051泛指MCS-51系列单片机,8051是早期的最典型的代表作,由于MCS-51单片机影响极深远,许多公司都推出了兼容系列单片机,就是说MCS-51内核实际上已经成为一个8位单片机的标准。

其他的公司的51单片机产品都是和MCS-51内核兼容的产品而以。同样的一段程序,在各个单片机厂家的硬件上运行的结果都是一样的,如ATMEL的89C51(已经停产)、89S51, PHILIPS(菲利浦),和WINBOND(华邦)等,我们常说的已经停产的89C51指的是ATMEL公司的 AT89C51单片机,同时是在原基础上增强了许多特性,如时钟,更优秀的是由Flash(程序存储器的内容至少可以改写1000次)存储器取代了原来的ROM(一次性写入),AT89C51的性能相对于8051已经算是非常优越的了。

不过在市场化方面,89C51受到了PIC单片机阵营的挑战,89C51最致命的缺陷在于不支持ISP(在线更新程序)功能,必须加上ISP功能等新功能才能更好延续MCS-51的传奇。89S51就是在这样的背景下取代89C51的,现在,89S51目前已经成为了实际应用市场上新的宠儿,作为市场占有率第一的Atmel目前公司已经停产AT89C51,将用AT89S51代替。89S51在工艺上进行了改进,89S51采用0.35新工艺,成本降低,而且将功能提升,增加了竞争力。89SXX可以像下兼容89CXX等51系列芯片。同时,Atmel不再接受89CXX的定单,大家在市场上见到的89C51实际都是Atmel前期生产的巨量库存而以。如果市场需要,Atmel当然也可以再恢复生产AT89C51。

新功能

89S51相对于89C51增加的新功能包括

-- 新增加很多功能,性能有了较大提升,价格基本不变,甚至比89C51更低!

-- ISP在线编程功能,这个功能的优势在于改写单片机存储器内的程序不需要把芯片从工作环境中剥离。是一个强大易用的功能。

-- 最高工作频率为33MHz,大家都知道89C51的极限工作频率是24M,就是说S51具有更高工作频率,从而具有了更快的计算速度。

-- 具有双工UART串行通道。

-- 内部集成看门狗计时器,不再需要像89C51那样外接看门狗计时器单元电路。

-- 双数据指示器。

-- 电源关闭标识。

-- 全新的加密算法,这使得对于89S51的解密变为不可能,程序的保密性大大加强,这样就可以有效的保护知识产权不被侵犯。

-- 兼容性方面:向下完全兼容51全部字系列产品。比如8051、89C51等等早期MCS-51兼容产品。也就是说所有教科书、网络教程上的程序(不论教科书上采用的单片机是8051还是89C51还是MCS-51等等),在89S51上一样可以照常运行,这就是所谓的向下兼容。

比较结果:就如同INTEL的P3向P4升级一样,虽然都可以跑Windows98,不过速度是不同的。

从AT89C51升级到AT89S51,也是同理。和S51比起来,C51就要逊色一些,实际应用市场方面技术的进步是永远向前的。

********上面这些就是AT89S51的由来********

常见问题

51系列的选型的常见问题

请问现在学习51系列单片机应该选择AT89C51还是89S51?

答:89C51和89S51内核相同,89S51针对89C51的明显的几个升级如下;

1.程序存储器写入方式:二者的写入程序的方式不同,89C51只支持并行写入,同时需要VPP烧写高压。89S51则支持ISP在线可编程写入技术!串行写入、速度更快、稳定性更好,烧写电压也仅仅需要4~5V即可。

2.电源范围:89S5*电源范围宽达4~5.5V,而89C5*系列在低于4.8V和高于5.3V的时候则无法正常工作。

3.工作频率:目前89S1*的性能远高于89C5*,89S5*系列支持最高高达33MHZ的工作频率,而89C51工作频率范围最高只支持到24M。

4.市场价格:由于89C51已经全面停产,所以在市场价格方面,库存的89C5*的批发价格要比89S5*贵将近一倍!

5.兼容型:89S5*向下兼容89C5*,就是说用89S5*可以替代89C5*使用,同样的程序,运行结果相同。就是说89S5*也同样兼容目前所有的教科书范例程序。

6.加密功能:89S5*系列全新的加密算法,这使得对于89S51的解密变为不大可能,程序的保密性大大加强,这样就可以有效的保护知识产权不被侵犯。

7.抗干扰性:内部集成看门狗计时器,不再需要像89C51那样外接看门狗计时器单元电路。

8.烧写寿命更长:89S5*标称的1000次,实际最少是1000次~10000次,这样更有利初学者反复烧写,减低学习成本。综合上面的一些区别,个人认为89C51的停止使用只是时间问题而已,就象当年的8031。

2问:采用89C2051开发制造产品是不是要比用89S51更好?因为2051看起来体积比较小。

2答:这个问题并不能一概而论,主要的区别如下:

1.功能差别:因为2051不是标准的51内核,所以205*的程序不能直接移植到51上。由于205*是精简型,所以P口变得很少(没有P3.7口),这样一来就只能用来做一些小的简单产品,可利用资源比较紧张。实际上,做产品的话用205*是不一定合算的,除非是非常简单的产品。

2.市场价格:由于89C2051的产量不是非常大,所以市场价格方面89C2051的批发价格和89S51比较接近!相对性能价格比就比较低。

3.产品体积:除非对产品的体积有苛刻的要求,否则二者的PCB面积相差不多,因为40脚的51芯片也有PLCC44小体积封装。




责任编辑:Davia

【免责声明】

1、本文内容、数据、图表等来源于网络引用或其他公开资料,版权归属原作者、原发表出处。若版权所有方对本文的引用持有异议,请联系拍明芯城(marketing@iczoom.com),本方将及时处理。

2、本文的引用仅供读者交流学习使用,不涉及商业目的。

3、本文内容仅代表作者观点,拍明芯城不对内容的准确性、可靠性或完整性提供明示或暗示的保证。读者阅读本文后做出的决定或行为,是基于自主意愿和独立判断做出的,请读者明确相关结果。

4、如需转载本方拥有版权的文章,请联系拍明芯城(marketing@iczoom.com)注明“转载原因”。未经允许私自转载拍明芯城将保留追究其法律责任的权利。

拍明芯城拥有对此声明的最终解释权。

标签: 89C51 DS1307 单片机

相关资讯