pcf8563驱动C51源程序及应用

上传人:仙*** 文档编号:63778307 上传时间:2022-03-20 格式:DOC 页数:13 大小:174KB
收藏 版权申诉 举报 下载
pcf8563驱动C51源程序及应用_第1页
第1页 / 共13页
pcf8563驱动C51源程序及应用_第2页
第2页 / 共13页
pcf8563驱动C51源程序及应用_第3页
第3页 / 共13页
资源描述:

《pcf8563驱动C51源程序及应用》由会员分享,可在线阅读,更多相关《pcf8563驱动C51源程序及应用(13页珍藏版)》请在装配图网上搜索。

1、pcf8563 驱动 C51 源程序及应用网站首页网址导行芯片手册技术文章下载中心收藏本站 34器件型号查寻 :检索超过百万 Datasheet!您现在的位置: 搜电子网 文章中心 IC 技术 IC 资料 正 文pcf8563 驱动 C51 源程序及应用作者:佚名 文章来源: net 点击数: 310 更新时间: 2008-7-1摘要:介绍基于PCF8563设计户外侄计时系统的硬件接口电路及PCF8563软件编程。该系统在强日光下显示屏的字符清晰可见,能够长时间连续稳定地工作。关键词: PCF8563 I2C 倒计时系统 引言 倒计时系统的任务,就是对某一设定日期进行倒数,在显示屏显示当前 距

2、离设定日期的时间;广泛应用于重大的节日或活动,以增强人们的关切程度和紧迫感。户 外型倒计时系统,首先要求在强日光下显示屏的字符依然清晰可见,而且要求系统能够长时 间连续稳定地工作。本文介绍的系统正是针对这样的要求而开发出来的。 1 总体设计方 案整个系统由时钟芯片、中央处理单元、译码、驱动、显示、键盘几部分 构成,系统框图如图 1 所示。 2 硬件电路设计 2.1时钟芯片PCF8563是 Philips 公司推出的一款带 I2C 总线具有极低功耗的多功能时钟 /日历芯片, 具有四种报警功能和定时功能; 内部时钟电路、 内部振荡电路、 内部低电压 检测以两线制 I2C 总线通信方式,不但使用外围

3、电路简洁,而且增加了芯片的可靠性。PCF8563的SCL为时钟输入端,数据随时钟信号同步输入器件或从器件输出;SDA为双向引脚,用于串行数据的输入输出;INT是中断信号输出端, 可通过设置报警 寄存器按指定时间在该脚产生报警信号,低电平有效;SDA、SCL、INT 均为漏极开路,必须上拉电阻;XI、X2分别为反相放大器的输入、输出端;可在 X1端接入32.768kHz的石英晶 振,配置成片内振荡器。本系统PCF8563与89C51接口采用图2所示接口方案。图2中,在XI、X2端接入32.768kHz的石英晶振,将时钟源配置为片内振荡器。VDD与地之间国入1个1卩F的大电容供电维持时钟芯片,锂电

4、池(3.6V)同时开始工作,给时钟芯片供电,使时钟芯片工作不受影响。PCF8563与89C51接口采用3根口线,PCF8563的INT脚产生周期为1s的脉冲中断信号给 89C51的INTO引脚,89C51产生中断后, 通过I2C总线读取PCF8563的基准时间。2.2显示和键盘电路译码、显示、驱动、键盘电路如图3所示、单片机将读入的 PCF8563时间信息,经过程序处理,输出显示信号到P1 口(数据4位,选择信号4位)。显示信息包括倒计时信息(当前距离设定时间的天数)和当前时间的星期、时、分、秒信息。4位数据信号送入 MC14513( BCD锁存/7段译/码驱动器),共有10个MC14513倒

5、计时占用3个,时间时、分、秒各占用2个,星期占用1个。4位选择信号送到74LS145译码器(4位锁存/4-10线译码),选择接收数据的 MC14513芯片。被选择的MC14513译码驱动对应共阴数码管字段(a、b、c、d、e、f、g)。户外显示要求在强日光下依然清楚可见,所以我们采用超高度05LED管组成LED点阵字符。其中每个字段由4块LED点阵埠并联组成,而每个LED点阵块先由5个LED串联1组,再将4个串联组并联而成。先用的超高亮度LED工作电流约为20mA工作电压约为2V,每字段的总电流约为 320mA工作电压为10V;字段的 驱动,采用大电流反相驱动器 ULN2003由7组NPt达林

6、顿驱动器组成);倒计时信号经 MC14153 输入到ULN2003 ULN2003输出接字段的阴极, 字段阳极接电源正极;电源采用10A、5V的两个开关电源串联供电。键盘接口有 4个链: 1 个设定/确认键、 1 个修改+1 键、 1 个修改-1 键、 1个移位键。对应秒、分、时、倒计时、星期,有5个LEDb LED亮,表示对应的秒或分或星期或倒计时数据可按修改键修改。设定/确认键, 有两种状态: 设定和确认。 首先按下为设定时间状态,再按下为确认状态。将设定时间数据处理后写入PCF8563两种状态互为循环。在设定时间状态,首先次移位为秒位,对应秒移位LED亮,按下移位键,移位 LED灯接秒t

7、分t时t倒计时t星期逐次循环;按下修改+1键或修改-1键可对相应位的数据进行 +1或-1操作。3软件设计PCF8563中共有16个寄存器,其中 0001H为控制寄存器,090CH为报警寄存器,0DH为时钟输出寄存器,0E0FH为定时器功能寄存器,0208H为秒年时间 寄存器。表 1 、表 2 列出了各寄存器概况及对应的内存地址和功能。表 1 寄存器概况 地 址寄存器名称位 7 位 6 位 5 位 4 位 3 位 2 位 1 位 0 00H 控制 /状态寄存器 1 TFST 0STOP0 TESTC0 0 0 01H 控制/状态寄存器 2 0 0 0 TT/TP AF TF AIE TIE0DH

8、CLKOU输出寄存器 FE FD1 FD0 0EH 定时器控制寄存器 TE - - - - TD1TD0 0FH定时器倒计数数值寄存器定时器倒计数数值(二制)表2 BCD格式寄存器概况 地址寄存器名称位 7 位 6 位 5位4位3位2位1位0 02h秒VL 0059BCD码格式数 03h 分-00 59BCC码格式数04h时-0023BCD码格式数05h日-0059BCC码格式数06h星期0 607h09h 分钟报警 AE00警 AE -01bPCF8563月/世纪C - - 0112BCD码格式数08h年0099BCD码格式数59BCD码格式数OAh小时报警AE - 0023BCD码格式数O

9、BH日报31BCD码格式数0CH星期报警AE 06按I2C总线规约,的从地址:读地址SLAR为A3H写地址 SLAW为A2H PCF8563I2C通信实现有字节写 / 读两种状态。 适用 80C51 的虚拟 I2C 总线软件包。 本系统直接调用该 I2C总线软件包的数据读写子程序(其中WRNBY为N字节的子程序,RDNBY为读取N字节的字节),来实现PCF8563的I2C总线操作。根据硬件电路及资源分配, 将 I2C 软件包中符号单元赋值如下: SDA EQAP0.0 ;数据传送 SCL EQU P0.1;时钟控制状态 MIN DATA30H ;秒寄存器 SEC DATA31H ;分寄存器 H

10、OURDATA 32H;时寄存器 DAY DATA33H ;日寄存器 WEEKDATA34H ;周寄存器 MONTHDATA 35H;月寄存器 YEAR DATA 36H ;年寄存器 SLA DATA 37H ; 37H为被控器 的地址 NUMBYT DATA38H; 38H 为数据字节计数器 MRT DATA 40H ;接收数据缓冲区首地址MTD DATA 50H;发送数据缓冲区首地址PCF8563定时器工作模式 MOV 51H,#81H;设置PCF8563的0EH为81H,启动定时器,定时器频率64Hz MOV52H,#64;设置PCF8563的OFH为64,定时器倒计数值为 64 MOV

11、 MTD, #0EH ;定时器控制寄存器字节首地址 MOVNUMBYT,#3 ;写字节 MOVSLA,#0A2H;取写器件地址 LCALL WRNBYT写 8563以上配置完成后,PCF8563的INT脚产生周期为1s,脉冲宽度(低电平) 约为15ms的脉冲中断信号。PCF8563当前时间设定子程序如下:MOV51H, #00H ;启动时钟 MOV52H, #11H;定时器为中断模式,脉冲形式 MOV 53H, MIN ;将秒至年的时间写入发送缓冲区 MOV 54H, SEC MOV55H, HOUR MOV 56,HDAY MOV 57H, WEEK MOV 58,HMON MOV 59,H

12、YEARMOVSLA,#0A2H ;取写器件地址 MOVNUMBYT#10;写字节数 MOVMTD #00H;写入8563寄存器首地址为 OOH LCALL WRNBYT;写入8563 RET读出时钟芯片当前值子程序设计 MOVMTD, #02H ;读时钟寄存器首字节地址 02H MOV SLA, #0A2H ;取写器件地址 MOV NUMBY,T#1;写字节数 LCALL WRNBYT; 写 8563 MOV SLA #0A3H ;取读器件地址MOV NUMBYT#7;读七个时钟信息 LCALL RDNBYT;读取时间并放入缓冲区 MOVA, 40H ; 取滗字节 ANL A ,#7FH;屏

13、蔽无效位 MOVMIN,A ;送秒寄存器 MOVA,41H ;取分字节 ANL A, #7EH ;屏蔽无效位MOVMIN, A ;送分寄存器 MOVA,42H ;取小时字节 ANL A,#3FH ;屏蔽无效位 MOVHOUR,A ;送时寄存器 MOVA,43H ;取天字节 ANL A,#3FH ;屏蔽无效位 MOV DAY,A;送天寄存器 MOVA,44H ;取星期字节 ANL A,#07H ;屏蔽无效位 MOV WEE,K A ;送星期寄存器MOVA,45H ;取月字节 ANL A, #1FH ;屏蔽无效位 MOV MOT,H A ;送月寄存器 RET系统程序流程如图 4 所示,中断服务程序

14、如 5 所示。 结语 此倒计时系统于广东省六届大运会中标, 在整个运行过程正常稳定工作, 达到了大会提出的要求。i nclude i nclude #define uchar unsigned charsbit SDA=P3A4;sbit SCL=P3A5;sbit P10=P1A0;uchar g8563_Store4; /*时间交换区 , 全局变量声明 */uchar code c8563_Store4=0x00,0x59,0x07,0x01; /*写入时间初值:星期一07:59:00*/*内部函数,延时 1*/void Delay()/ P10=1;_nop_();P10=0;_nop_

15、();_nop_(); /* 根据晶振频率制定延时时间 */*内部函数, I2C 开始*/void Start() EA=0;SDA=1;SCL=1;Delay();SDA=0;Delay();SCL=0;/*内部函数, I2C 结束*/ void Stop()SDA=0;SCL=0;Delay();SCL=1;Delay();SDA=1;Delay();EA=1;/*内部函数,输出 ACK, 每个字节传输完成, 输出 ack=0, 结束读书据, ack=1;*/ void WriteACK(uchar ack)SDA=ack;Delay();SCL=1;Delay();SCL=0;/*内部函

16、数,等待 ACK*/ void WaitACK() uchar errtime=20;读 ACK*/SDA=1;Delay(); /*SCL=1;Delay(); while(SDA) errtime-;if(!errtime) Stop();SCL=0;Delay();/* 内部函数 . 输出数据字节 入口 :B= 数据*/void writebyte(uchar wdata)uchar i; for(i=0;i8;i+) if(wdata&0x80) SDA=1; else SDA=0; wdata=1;SCL=1;Delay();SCL=0;I2C 通讯WaitACK(); /I2C 器

17、件或通讯出错,将会退出 /* 内部函数 . 输入数据 出口 :B*/ uchar Readbyte()uchar i,bytedata;SDA=1;for(i=0;i8;i+)SCL=1;bytedatapcf8563*/ void writeData(uchar address,uchar mdata) Start();writebyte(0xa2); /* 写命令 */writebyte(address); /* writebyte(mdata); /* Stop();*输入数据 -pcf8563*uchar ReadData(uchar address) /* uchar rdata;S

18、tart(); writebyte(0xa2); /* writebyte(address); /*Start(); writebyte(0xa3); /* rdata=Readbyte();WriteACK(1);Stop();写地址 */写数据 */单字节 */写命令 */写地址 */读命令 */return(rdata);多字节void ReadData1(uchar address,uchar count,uchar * buff) /*/ uchar i;Start();writebyte(0xa2); /*写命令 */writebyte(address); /* 写地址 */ St

19、art();writebyte(0xa3); /*读命令 */for(i=0;icount;i+)buffi=Readbyte(); if(icount-1) WriteACK(0);WriteACK(1);Stop(); /* 内部函数 , 读入时间到内部缓冲区*/void P8563_Read() uchar time7;ReadData1(0x02,0x07,time);g8563_Store0=time0&0x7f; /*秒 */g8563_Store1=time1&0x7f; /*分 */g8563_Store2=time2&0x3f; /*小时 */星期 */g8563_Store

20、3=time4&0x07; /*读入时间到内部缓冲区 外部调用*void P8563_gettime() P8563_Read(); if(g8563_Store0=0)P8563_Read(); /* 如果为秒 =0 ,为防止时间变化,再读一次 */ /*写时间修改值*/ void P8563_settime()uchar i;for(i=2;i=4;i+) writeData(i,g8563_Storei-2); writeData(6,g8563_Store3);/*P8563的初始化 外部调用*/ void P8563_init()uchar i;if(ReadData(0xa)&0x

21、3f)!=0x8) /* 检查是否第一次启动,是则初 始化时间 */ for(i=0;i=3;i+) g8563_Storei=c8563_Storei;/* 初始化时间 */P8563_settime(); writeData(0x0,0x00);writeData(0xa,0x8); /*8:00 报警 */ writeData(0x1,0x12); /*报警有效 */writeData(0xd,0xf0);上一篇文章: 常用的电阻标称值 下一篇文章: 常用三极管型号参数大全互联网 搜电子网DATASHEET最新文章小型太阳能供电板的制作 (08-20)仪用放大器的设计和应用(08-20)

22、 1N4148 二极管的作用 (08-20) 基于 PCI 接口芯片外扩 FIFO 的 (08-19)基于ARM7的LCD显示电压示波(08-19) 隔离技术在嵌入式系统接口中 (08-19) 74LS245 功能简介 (08-19)关于LED电子显示屏通用规范 (08-18) 滤波电感在电源抗干扰中的应 (08-18) ARM嵌入式系统的ISP设计(08-18)推荐文章 lm358 pdf 应用电路资料及引脚 (675) 三极管 9013管脚 参数 封装 (988) 三极管管脚判别 (423) adc0809 应用电路资料 (1005) DAC0832设计020Hz超低频信号(183) 74ls00 管脚图引脚图及逻辑功 (5483) LM78XX 系列固定输出三端稳压 (213) 51单片机C语言学习(611)利用LM431作大功率可调稳压电 (524) 如何用 Protel DXP 生成 Gerber (1269)电子技术教学光盘©Copyright 2004-2008, 搜电子网 SODZ.COM, All Rights Reserved 电话:(0)13951783178 传真 :025-68876757 jselec 苏 ICP 备 05012157Yahoo!Stat. 当前在线 10 人

展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!