时钟芯片DS1302实验指导书_第1页
时钟芯片DS1302实验指导书_第2页
时钟芯片DS1302实验指导书_第3页
时钟芯片DS1302实验指导书_第4页
时钟芯片DS1302实验指导书_第5页
已阅读5页,还剩6页未读 继续免费阅读

付费下载

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

SKIPIF1<0《单片机原理技术》实验十一《单片机原理技术》实验十一SKIPIF1<0页实验十一时钟芯片DS1302实验一、知识准备DS1302

是美国DALLAS公司推出的一种高性能、低功耗、带RAM的实时时钟电路芯片,通过DS1302时钟芯片获取准确详细的时间(年、月、日、周、日、时、分、秒准确时间)。1.DS1302的寄存器这张表呢是DS1302内部的7个与时间、日期有关的寄存器图和一个写保护。寄存器,我们要做的就是将初始设置的时间、日期数据写入这几个寄存器,然后再不断地读取这几个寄存器来获取实时时间和日期。这几个寄存器的说明如下:(1)秒寄存器(81h、80h)的位7定义为时钟暂停标志(CH)。当初始上电时该位置为1,时钟振荡器停止,DS1302处于低功耗状态;只有将秒寄存器的该位置改写为0时,时钟才能开始运行。(2)小时寄存器(85h、84h)的位7用于定义DS1302是运行于12小时模式还是24小时模式。当为高时,选择12小时模式。在12小时模式时,位5是,当为1时,表示PM。在24小时模式时,位5是第二个10小时位(3)控制寄存器(8Fh、8Eh)的位7是写保护位(WP),其它7位均置为0。在任何的对时钟和RAM的写操作之前,WP位必须为0。当WP位为1时,写保护位防止对任一寄存器的写操作。也就是说在电路上电的初始态WP是1,这时是不能改写上面任何一个时间寄存器的,只有首先将WP改写为0,才能进行其它寄存器的写操作。1.1DS1302的读写DS1302的数据读写是通过I/O串行进行的。当进行一次读写操作时最少得读写两个字节,第一个字节是控制字节,就是一个命令,告诉DS1302是读还是写操作,是对RAM还是对CLOK寄存器操作,以及操作的地址。第二个字节就是要读或写的数据了。我们先看单字节写:在进行操作之前先得将CE(也可说是RST)置高电平,然后单片机将控制字的位0放到I/O上,当I/O的数据稳定后,将SCLK置高电平,DS1302检测到SCLK的上升沿后就将I/O上的数据读取,然后单片机将SCLK置为低电平,再将控制字的位1放到I/O上,如此反复,将一个字节控制字的8个位传给DS1302。接下来就是传一个字节的数据给DS1302,当传完数据后,单片机将CE置为低电平,操作结束。单字节读操作的一开始写控制字的过程和上面的单字节写操作是一样,但是单字节读操作在写控制字的最后一个位,SCLK还在高电平时,DS1302就将数据放到I/O上,单片机将SCLK置为低电平后数据锁存,单机机就可以读取I/O上的数据。如此反复,将一个字节的数据读入单片机。读与写操作的不同就在于,写操作是在SCLK低电平时单片机将数据放到IO上,当SCLK上升沿时,DS1302读取。而读操作是在SCLK高电平时DS1302放数据到IO上,将SCLK置为低电平后,单片机就可从IO上读取数据。控制字内容如下表:位0就是读写位,当位0为1时,就是告诉DS1302,下面是进行读出操作,而当位0为0时就是写入操作。位0-位5是要进行操作的DS1302寄存器地址。位6就是告诉DS1302,是要对RAM进行操作还是对CLK寄存器进行操作,0就是对时间寄存器操作,一般我们都是对时间寄存器进行操作。位7就是固定的1。为什么是1呢。还记得上面说的单字节读操作吗?在写控制字的最后一个位也就是位7时,DS1302已将它的寄存器数据位0放到IO上了,要是控制字的位7是0的话,DS1302就无法将它的随后的数据放到IO上了。这样你现在就知道为什么控制字80H是写秒寄存器,而80H是读秒寄存器了吧!80H换成二进制就是10000000。而81H的二进制就是10000001,一个是写操作,另一个是读操作嘛!2.接口芯片DS1302是美国DALLAS公司推出的一种高性能、低功耗的实时时钟芯片,附加31字节静态RAM,采用SPI三线接口与CPU进行同步通信,并可采用突发方式一次传送多个字节的时钟信号和RAM数据。实时时钟可提供秒、分、时、日、星期、月和年,一个月小与31天时可以自动调整,且具有闰年补偿功能。工作电压宽达2.5~5.5V。采用双电源供电(主电源和备用电源),可设置备用电源充电方式,提供了对后背电源进行涓细电流充电的能力。下表说明了DS1302芯片的引脚功能。Vcc主电源X1,X2接32768Hz晶振GND地线CE复位I/0数据输入输出SCLK串行时钟Vccl后备电源图1-1接口电路图如下,可以看到DS1302的数据引脚接在P1.1上,串行时钟接在P1.2上,CE接在P3.4上图1-2二、实验目的掌握DS1302时钟芯片的运用。三、实验内容编写程序把时钟芯片DS1302的时间显示在LCD上。四、实验设备硬件设备:51单片机开发版、USB线一根,12v电源适配器一个。图1-3软件工具:STC-ISP-15XX-V6.82,keil。五、核心代码分析voidRun_DS1302(void){ ucharsec,min,hour,day,month,year; v_W1302(0x8f,0); sec=bcdtodec(uc_R1302(0x81)); /*读出DS1302中的秒,BCD码转成十进制*/ v_W1302(0x8f,0); min=bcdtodec(uc_R1302(0x83)); /*读出DS1302中的分,BCD码转成十进制*/ v_W1302(0x8f,0); hour=bcdtodec(uc_R1302(0x85));/*读出DS1302中的小时,BCD码转成十进制*/ /**/ v_W1302(0x8f,0); day=bcdtodec(uc_R1302(0x87)); /*读出DS1302中的日,BCD码转成十进制*/ v_W1302(0x8f,0); month=bcdtodec(uc_R1302(0x89));/*读出DS1302中的月,BCD码转成十进制*/ v_W1302(0x8f,0); year=bcdtodec(uc_R1302(0x8d));/*读出DS1302中的年,BCD码转成十进制*/ L1602_char(2,8,hour/10%10+48);//小时的十位显示 L1602_char(2,9,hour%10+48);//小时的个位显示 L1602_char(2,10,'-'); L1602_char(2,11,min/10%10+48);//分钟的十位显示 L1602_char(2,12,min%10+48);//分钟的个位显示 L1602_char(2,13,'-'); L1602_char(2,14,sec/10%10+48);//秒钟的十位显示 L1602_char(2,15,sec%10+48);//秒钟的个位显示 L1602_char(1,9,year/10%10+48);//年的十位显示 L1602_char(1,10,year%10+48);//年的个位显示 L1602_char(1,11,'-'); L1602_char(1,12,month/10%10+48);//月份的十位显示 L1602_char(1,13,month%10+48);//月份的个位显示 L1602_char(1,14,'-'); L1602_char(1,15,day/10%10+48);//日的十位显示 L1602_char(1,16,day%10+48); //日的个位显示}六、实验步骤连接设备,将USB线一端接PC,一端接单片机开发板,开发板接12V电源,打开电源开关图1-4打开STC-ISP下载工具图1-5选择好单片机型号STC89C52RC,扫描串口号,其他设置为默认;然后点击打开程序文件,出现下图图1-6进入

温馨提示

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

评论

0/150

提交评论