《51单片机模块化创新视频教程-DS1302课件.pdf》由会员分享,可在线阅读,更多相关《51单片机模块化创新视频教程-DS1302课件.pdf(18页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、5151单片机模块化创新视频教程单片机模块化创新视频教程讲解:慧净讲解:慧净QQ:QQ:398115088398115088QQQQ群:群:2504492325044923DS1302DS1302DS1302DS1302DS1302DS1302DS1302DS1302时钟芯片时钟芯片时钟芯片时钟芯片基于基于HL-1 HJ-C52 HL-1 HJ-C52 开发板开发板DS1302DS1302DS1302DS1302DS1302DS1302DS1302DS1302时钟芯片时钟芯片时钟芯片时钟芯片 DS1302 DS1302 DS1302 DS1302 DS1302 DS1302 DS1302 DS
2、1302是美国是美国是美国是美国DALLASDALLASDALLASDALLASDALLASDALLASDALLASDALLAS公司推出的一种高性公司推出的一种高性公司推出的一种高性公司推出的一种高性能、低功耗的实时时钟芯片,附加能、低功耗的实时时钟芯片,附加能、低功耗的实时时钟芯片,附加能、低功耗的实时时钟芯片,附加3131313131313131字节静态字节静态字节静态字节静态RAMRAMRAMRAMRAMRAMRAMRAM,采用,采用,采用,采用SPISPISPISPISPISPISPISPI三线接口与三线接口与三线接口与三线接口与CPUCPUCPUCPUCPUCPUCPUCPU进行通信
3、,并可进行通信,并可进行通信,并可进行通信,并可采用突发方式一次传送多个字节的时钟信号和采用突发方式一次传送多个字节的时钟信号和采用突发方式一次传送多个字节的时钟信号和采用突发方式一次传送多个字节的时钟信号和RAMRAMRAMRAMRAMRAMRAMRAM数据。实时时钟可提供秒、分、时、日、星数据。实时时钟可提供秒、分、时、日、星数据。实时时钟可提供秒、分、时、日、星数据。实时时钟可提供秒、分、时、日、星期、月和年,一个月小与期、月和年,一个月小与期、月和年,一个月小与期、月和年,一个月小与3131313131313131天时可以自动调整,天时可以自动调整,天时可以自动调整,天时可以自动调整,
4、且具有闰年补偿功能。工作电压宽达且具有闰年补偿功能。工作电压宽达且具有闰年补偿功能。工作电压宽达且具有闰年补偿功能。工作电压宽达2.52.52.52.52.52.52.52.55.5V5.5V5.5V5.5V5.5V5.5V5.5V5.5V。采用双电源供电(主电源和备用电源),可设置采用双电源供电(主电源和备用电源),可设置采用双电源供电(主电源和备用电源),可设置采用双电源供电(主电源和备用电源),可设置备用电源充电方式,提供了对后备电源进行涓细备用电源充电方式,提供了对后备电源进行涓细备用电源充电方式,提供了对后备电源进行涓细备用电源充电方式,提供了对后备电源进行涓细电流充电的能力。电流充
5、电的能力。电流充电的能力。电流充电的能力。DS1302DS1302DS1302DS1302DS1302DS1302DS1302DS1302引脚分配图引脚分配图引脚分配图引脚分配图各引脚的功能为:各引脚的功能为:8 8 8 8、Vcc1Vcc1Vcc1Vcc1:备用电池端;:备用电池端;1 1 1 1、Vcc2Vcc2Vcc2Vcc2:5V5V5V5V电源。当电源。当Vcc2Vcc1+0.2VVcc2Vcc1+0.2VVcc2Vcc1+0.2VVcc2Vcc1+0.2V时,时,由由Vcc2Vcc2Vcc2Vcc2向向DS1302DS1302DS1302DS1302供电,当供电,当Vcc2 Vcc
6、1Vcc2 Vcc1Vcc2 Vcc1Vcc2 Vcc1时,由时,由Vcc1Vcc1Vcc1Vcc1向向DS1302DS1302DS1302DS1302供电。供电。7 7 7 7、SCLK SCLK SCLK SCLK:串行时钟,输入;:串行时钟,输入;6 6 6 6、I/OI/OI/OI/O:数据输入输出口;:数据输入输出口;5 5 5 5、CE/RSTCE/RSTCE/RSTCE/RST:复位脚:复位脚 2 3 2 3 2 3 2 3、X1X1X1X1、X2 X2 X2 X2 是外接晶振脚是外接晶振脚 (32.768KHZ32.768KHZ32.768KHZ32.768KHZ的晶振)的晶振
7、)4 4 4 4 地(地(GNDGNDGNDGND)HL-1HL-1HL-1HL-1HL-1HL-1HL-1HL-1开发板上开发板上开发板上开发板上DS1302DS1302DS1302DS1302DS1302DS1302DS1302DS1302连接图连接图连接图连接图这张表是这张表是DS1302DS1302内部的内部的7 7个与时间、日期有关的寄存器图和一个写保护寄存器,个与时间、日期有关的寄存器图和一个写保护寄存器,我们要做的就是将初始设置的时间、日期数据写入这几个寄存器,然后再不断地读取我们要做的就是将初始设置的时间、日期数据写入这几个寄存器,然后再不断地读取这几个寄存器来获取实时时间和日
8、期。这几个寄存器的说明如下:这几个寄存器来获取实时时间和日期。这几个寄存器的说明如下:1 1、秒寄存器(、秒寄存器(81h81h、80h80h)的位)的位7 7定义为时钟暂停标志(定义为时钟暂停标志(CHCH)。当初始上电时该位置为)。当初始上电时该位置为1 1,时钟振荡器停止,时钟振荡器停止,DS1302DS1302处于低功耗状态;只有将秒寄存器的该位置改写为处于低功耗状态;只有将秒寄存器的该位置改写为0 0时,时钟才能开时,时钟才能开始运行。始运行。2 2、小时寄存器(、小时寄存器(85h85h、84h84h)的位)的位7 7用于定义用于定义DS1302DS1302是运行于是运行于1212
9、小时模式还是小时模式还是2424小时模式。当为小时模式。当为高时,选择高时,选择1212小时模式。在小时模式。在1212小时模式时,位小时模式时,位5 5是是 ,当为,当为1 1时,表示时,表示PMPM。在。在2424小时模式时,小时模式时,位位5 5是第二个是第二个1010小时位小时位3 3、控制寄存器(、控制寄存器(8Fh8Fh、8Eh8Eh)的位)的位7 7是写保护位(是写保护位(WPWP),其它),其它7 7位均置为位均置为0 0。在。在对对任何的时钟和任何的时钟和RAMRAM的写操作之前,的写操作之前,WPWP位必须为位必须为0 0。当。当WPWP位为位为1 1时,写保护位防止对任一
10、寄存器的写操作。时,写保护位防止对任一寄存器的写操作。也就是说在电路上电的初始态也就是说在电路上电的初始态WPWP是是1 1,这时是不能改写上面任何一个时间寄存器的,这时是不能改写上面任何一个时间寄存器的,只有首先将只有首先将WPWP改写为改写为0 0,才能进行其它寄存器的写操作。,才能进行其它寄存器的写操作。DS1302DS1302DS1302DS1302有关日历、时间的寄存器有关日历、时间的寄存器 DS1302DS1302DS1302DS1302有关有关RAMRAMRAMRAM的地址的地址DS1302DS1302DS1302DS1302中附加中附加31313131字节静态字节静态RAMRA
11、MRAMRAM的地址的地址DS1302DS1302DS1302DS1302的工作模式寄存器的工作模式寄存器所谓突发模式是指一次传送多个字节的时钟信号和所谓突发模式是指一次传送多个字节的时钟信号和RAMRAMRAMRAM数据。数据。突发模式寄存器突发模式寄存器DS1302DS1302DS1302DS1302充电寄存器充电寄存器 2-32-32-32-3位位:DS=01 DS=01 DS=01 DS=01 为一个二极管为一个二极管 DS=10 DS=10 DS=10 DS=10 为二个二极管为二个二极管DS=00 DS=00 DS=00 DS=00 无二极管无二极管,不能充电不能充电DS=11 D
12、S=11 DS=11 DS=11 无二极管无二极管,不能充电不能充电0-10-10-10-1位位:RS=00 RS=00 RS=00 RS=00 无电阻无电阻,不能充电不能充电 RS=01 2KRS=01 2KRS=01 2KRS=01 2KRS=10 4KRS=10 4KRS=10 4KRS=10 4K RS=11 8K RS=11 8K RS=11 8K RS=11 8K 4-74-74-74-7位位:TCS=1010TCS=1010TCS=1010TCS=1010 能充电能充电 其它组合都不能充电其它组合都不能充电 10100101101001011010010110100101 一个二
13、极管电阻一个二极管电阻2K2K2K2K10100110101001101010011010100110 一个二极管电阻一个二极管电阻4K4K4K4K 10100111 10100111 10100111 10100111 一个二极管电阻一个二极管电阻8K8K8K8K 10101001 10101001 10101001 10101001 两个二极管电阻两个二极管电阻2K2K2K2K 10101010 10101010 10101010 10101010 两个二极管电阻两个二极管电阻4K4K4K4K 10101011 10101011 10101011 10101011 两个二极管电阻两个二极管
14、电阻8K8K8K8K 01011100 01011100 01011100 01011100 初始化电源初始化电源寄存器地址是08H 读操作是91H 写操作是90H DS1302 DS1302 DS1302 DS1302读写时序读写时序DS1302DS1302DS1302DS1302是是SPISPISPISPI总线驱动方式。它不仅要向寄存器写入控制字,总线驱动方式。它不仅要向寄存器写入控制字,还需要读取相应寄存器的数据。还需要读取相应寄存器的数据。要想与要想与DS1302DS1302DS1302DS1302通信,首先要先了解通信,首先要先了解DS1302DS1302DS1302DS1302的控
15、制字。的控制字。DS1302DS1302DS1302DS1302的控制字如图的控制字如图控制字的最高有效位(位控制字的最高有效位(位7 7 7 7)必须是逻辑)必须是逻辑1 1 1 1,如果它为,如果它为0 0 0 0,则不能把数据写入到,则不能把数据写入到DS1302DS1302DS1302DS1302中。中。位位6 6 6 6:如果为:如果为0 0 0 0,则表示存取日历时钟数据,为,则表示存取日历时钟数据,为1 1 1 1表示存取表示存取RAMRAMRAMRAM数据;数据;位位5 5 5 5至位至位1 1 1 1(A4A4A4A4A0A0A0A0):指示操作单元的地址;):指示操作单元的
16、地址;位位0 0 0 0(最低有效位):如为(最低有效位):如为0 0 0 0,表示要进行写操作,为,表示要进行写操作,为1 1 1 1表示进行读操作。表示进行读操作。读数据:读数据:读数据时在紧跟读数据时在紧跟8 8 8 8位的控制字指令后的下一个位的控制字指令后的下一个SCLKSCLKSCLKSCLK脉冲的下降沿,读出脉冲的下降沿,读出DS1302DS1302DS1302DS1302的数据,的数据,读出的数据是从最低位到最高位。读出的数据是从最低位到最高位。写数据:写数据:控制字总是从最低位开始输出。在控制字指令输入后的下一个控制字总是从最低位开始输出。在控制字指令输入后的下一个SCLKS
17、CLKSCLKSCLK时钟的上升沿时,时钟的上升沿时,数据被写入数据被写入DS1302DS1302DS1302DS1302,数据输入也是从最低位(,数据输入也是从最低位(0 0 0 0位)开始。位)开始。位位0 0 0 0(最低有效位):为(最低有效位):为1 1 1 1表示进行读操作。表示进行读操作。如为如为0 0 0 0,表示要进行写操作,表示要进行写操作,控制字后控制字后 SCLK SCLK SCLK SCLK 下降沿下降沿 读数据读数据 SCLK SCLK SCLK SCLK上升沿写数据上升沿写数据 数据是低位在前数据是低位在前 高位在后高位在后DS1302DS1302DS1302DS
18、1302的数据读写是通过的数据读写是通过I/OI/OI/OI/O串行进行的。当进行一次读写操作时最少得读写两个字节,第一个字节是串行进行的。当进行一次读写操作时最少得读写两个字节,第一个字节是控制字节,就是一个命令,告诉控制字节,就是一个命令,告诉DS1302DS1302DS1302DS1302是读还是写操作,是对是读还是写操作,是对RAMRAMRAMRAM还是对还是对CLOKCLOKCLOKCLOK寄存器操作,以及操作寄存器操作,以及操作的址。第二个字节就是要读或写的数据了。我们先看的址。第二个字节就是要读或写的数据了。我们先看单字节写:在进行操作之前先得将单字节写:在进行操作之前先得将CE
19、CECECE(也可说是(也可说是RSTRSTRSTRST)置高电平,然后单片机将控制字的位)置高电平,然后单片机将控制字的位0 0 0 0放到放到I/OI/OI/OI/O上,上,当当I/OI/OI/OI/O的数据稳定后,将的数据稳定后,将SCLKSCLKSCLKSCLK置高电平,置高电平,DS1302DS1302DS1302DS1302检测到检测到SCLKSCLKSCLKSCLK的上升沿后就将的上升沿后就将I/OI/OI/OI/O上的数据读取,然后上的数据读取,然后单片机将单片机将SCLKSCLKSCLKSCLK置为低电平,再将控制字的位置为低电平,再将控制字的位1 1 1 1放到放到I/OI
20、/OI/OI/O上,如此反复,将一个字节控制字的上,如此反复,将一个字节控制字的8 8 8 8个位传给个位传给DS1302DS1302DS1302DS1302。接下来就是传一个字节的数据给。接下来就是传一个字节的数据给DS1302DS1302DS1302DS1302,当传完数据后,单片机将,当传完数据后,单片机将CECECECE置为低电平,操作结置为低电平,操作结束。束。单字节读操作的一开始写控制字的过程和上面的单字节写操作是一样,但是单字节读操作在写控制字的最单字节读操作的一开始写控制字的过程和上面的单字节写操作是一样,但是单字节读操作在写控制字的最后一个位,后一个位,SCLKSCLKSCL
21、KSCLK还在高电平时,还在高电平时,DS1302DS1302DS1302DS1302就将数据放到就将数据放到I/OI/OI/OI/O上,单片机将上,单片机将SCLKSCLKSCLKSCLK置为低电平后数据锁存,置为低电平后数据锁存,单机机就可以读取单机机就可以读取I/OI/OI/OI/O上的数据。如此反复,将一个字节的数据读入单片机。上的数据。如此反复,将一个字节的数据读入单片机。读与写操作的不同就在于,写操作是在读与写操作的不同就在于,写操作是在SCLKSCLKSCLKSCLK低电平时单片机将数据放到低电平时单片机将数据放到IOIOIOIO上,当上,当SCLKSCLKSCLKSCLK上升沿
22、时,上升沿时,DS1302DS1302DS1302DS1302读取。而读操作是在读取。而读操作是在SCLKSCLKSCLKSCLK高电平时高电平时DS1302DS1302DS1302DS1302放数据到放数据到IOIOIOIO上,将上,将SCLKSCLKSCLKSCLK置为低电平后,单片机就置为低电平后,单片机就可从可从IOIOIOIO上读取数据。上读取数据。操作操作操作操作DS1302DS1302DS1302DS1302DS1302DS1302DS1302DS1302 我们现在我们现在我们现在我们现在就来编程看一下就来编程看一下就来编程看一下就来编程看一下,如何对,如何对,如何对,如何对DS
23、1302DS1302DS1302DS1302进行操作进行操作进行操作进行操作把时钟信息显示在把时钟信息显示在把时钟信息显示在把时钟信息显示在1602LCD1602LCD1602LCD1602LCD上上上上。1 1 1 1 首先要通过首先要通过首先要通过首先要通过8 8 8 8E E E EH H H H将写保护去掉,将日期,时间的初值写时各个寄存器。将写保护去掉,将日期,时间的初值写时各个寄存器。将写保护去掉,将日期,时间的初值写时各个寄存器。将写保护去掉,将日期,时间的初值写时各个寄存器。2 2 2 2 然后就可以对然后就可以对然后就可以对然后就可以对80H80H80H80H、82H82H8
24、2H82H、84H84H84H84H、86H86H86H86H、88H88H88H88H、8AH8AH8AH8AH、8CH8CH8CH8CH进行初值的写入。进行初值的写入。进行初值的写入。进行初值的写入。同时也通过秒寄存器将位同时也通过秒寄存器将位同时也通过秒寄存器将位同时也通过秒寄存器将位7 7 7 7的的的的CHCHCHCH值改成值改成值改成值改成0 0 0 0,这样,这样,这样,这样DS1302DS1302DS1302DS1302就开始走时运了。就开始走时运了。就开始走时运了。就开始走时运了。3 3 3 3 将写保护寄存器再写为将写保护寄存器再写为将写保护寄存器再写为将写保护寄存器再写为
25、80H80H80H80H,防止误改写寄存器的值。,防止误改写寄存器的值。,防止误改写寄存器的值。,防止误改写寄存器的值。4 4 4 4 不断读取不断读取不断读取不断读取80H80H80H80H8CH8CH8CH8CH的值,将它们格式化后显示到的值,将它们格式化后显示到的值,将它们格式化后显示到的值,将它们格式化后显示到1602LCD1602LCD1602LCD1602LCD液晶上液晶上液晶上液晶上void Write1302(unsigned char dat)void Write1302(unsigned char dat)void Write1302(unsigned char dat)v
26、oid Write1302(unsigned char dat)unsigned char i;unsigned char i;unsigned char i;unsigned char i;SCLK=0;/SCLK=0;/SCLK=0;/SCLK=0;/拉低拉低SCLKSCLKSCLKSCLK,为脉冲上升沿写入数据做好准备,为脉冲上升沿写入数据做好准备 delaynus(2);/delaynus(2);/delaynus(2);/delaynus(2);/稍微等待,使硬件做好准备稍微等待,使硬件做好准备 for(i=0;i8;i+)/for(i=0;i8;i+)/for(i=0;i8;i+)
27、/for(i=0;i=1;/dat=1;/dat=1;/dat=1;/将将datdatdatdat的各数据位右移的各数据位右移1 1 1 1位,准备写入下一个数据位位,准备写入下一个数据位 unsigned char Read1302(void)unsigned char Read1302(void)unsigned char Read1302(void)unsigned char Read1302(void)unsigned char i,dat;unsigned char i,dat;unsigned char i,dat;unsigned char i,dat;delaynus(2);/
28、delaynus(2);/delaynus(2);/delaynus(2);/稍微等待,使硬件做好准备稍微等待,使硬件做好准备for(i=0;i8;i+)/for(i=0;i8;i+)/for(i=0;i8;i+)/for(i=0;i=1;/dat=1;/dat=1;/dat=1;/将将datdatdatdat的各数据位右移的各数据位右移1 1 1 1位,因为先读出的是字节的最低位,因为先读出的是字节的最低位位 if(DATA=1)/if(DATA=1)/if(DATA=1)/if(DATA=1)/如果读出的数据是如果读出的数据是1 1 1 1 dat|=0 x80;/dat|=0 x80;/
29、dat|=0 x80;/dat|=0 x80;/将将1 1 1 1取出,写在取出,写在datdatdatdat的最高位的最高位 SCLK=1;/SCLK=1;/SCLK=1;/SCLK=1;/将将SCLKSCLKSCLKSCLK置于高电平,为下降沿读出置于高电平,为下降沿读出 delaynus(2);/delaynus(2);/delaynus(2);/delaynus(2);/稍微等待稍微等待 SCLK=0;/SCLK=0;/SCLK=0;/SCLK=0;/拉低拉低SCLKSCLKSCLKSCLK,形成脉冲下降沿,形成脉冲下降沿 delaynus(2);/delaynus(2);/delay
30、nus(2);/delaynus(2);/稍微等待稍微等待 return dat;/return dat;/return dat;/return dat;/将读出的数据返回将读出的数据返回 flag=ReadSet1302(0 x81);/flag=ReadSet1302(0 x81);/flag=ReadSet1302(0 x81);/flag=ReadSet1302(0 x81);/读秒寄存器最高位,读出时钟状态读秒寄存器最高位,读出时钟状态if(flag&0 x80)/if(flag&0 x80)/if(flag&0 x80)/if(flag&0 x80)/判断时钟是否关闭,如内部关闭就
31、初始化,如内部还在走时判断时钟是否关闭,如内部关闭就初始化,如内部还在走时 那就不初始化那就不初始化 WriteSet1302(0 x8E,0 x00);/WriteSet1302(0 x8E,0 x00);/WriteSet1302(0 x8E,0 x00);/WriteSet1302(0 x8E,0 x00);/根据写状态寄存器命令字,写入不保护指令根据写状态寄存器命令字,写入不保护指令 WriteSet1302(0 x80,(55/10)4|(55%10);/WriteSet1302(0 x80,(55/10)4|(55%10);/WriteSet1302(0 x80,(55/10)4|
32、(55%10);/WriteSet1302(0 x80,(55/10)4|(55%10);/根据写秒寄存器命令字,写入秒的初始值根据写秒寄存器命令字,写入秒的初始值WriteSet1302(0 x82,(59/10)4|(59%10);/WriteSet1302(0 x82,(59/10)4|(59%10);/WriteSet1302(0 x82,(59/10)4|(59%10);/WriteSet1302(0 x82,(59/10)4|(59%10);/根据写分寄存器命令字,写入分的初始值根据写分寄存器命令字,写入分的初始值WriteSet1302(0 x84,(23/10)4|(23%10
33、);/WriteSet1302(0 x84,(23/10)4|(23%10);/WriteSet1302(0 x84,(23/10)4|(23%10);/WriteSet1302(0 x84,(23/10)4|(23%10);/根据写小时寄存器命令字,写入小时的初始值根据写小时寄存器命令字,写入小时的初始值WriteSet1302(0 x86,(18/10)4|(18%10);/WriteSet1302(0 x86,(18/10)4|(18%10);/WriteSet1302(0 x86,(18/10)4|(18%10);/WriteSet1302(0 x86,(18/10)4|(18%10)
34、;/根据写日寄存器命令字,写入日的初始值根据写日寄存器命令字,写入日的初始值WriteSet1302(0 x88,(6/10)4|(6%10);/WriteSet1302(0 x88,(6/10)4|(6%10);/WriteSet1302(0 x88,(6/10)4|(6%10);/WriteSet1302(0 x88,(6/10)4|(6%10);/根据写月寄存器命令字,写入月的初始值根据写月寄存器命令字,写入月的初始值WriteSet1302(0 x8c,(9/10)4|(9%10);/WriteSet1302(0 x8c,(9/10)4|(9%10);/WriteSet1302(0 x
35、8c,(9/10)4|(9%10);/WriteSet1302(0 x8c,(9/10)4)second=(ReadValue&0 x70)4)second=(ReadValue&0 x70)4)second=(ReadValue&0 x70)4)*10+(ReadValue&0 x0F);/10+(ReadValue&0 x0F);/10+(ReadValue&0 x0F);/10+(ReadValue&0 x0F);/将读出数据转化将读出数据转化 DisplaySecond(second);/DisplaySecond(second);/DisplaySecond(second);/Dis
36、playSecond(second);/显示秒显示秒 ReadValue=ReadSet1302(0 x83);/ReadValue=ReadSet1302(0 x83);/ReadValue=ReadSet1302(0 x83);/ReadValue=ReadSet1302(0 x83);/从分寄存器读从分寄存器读 minute=(ReadValue&0 x70)4)minute=(ReadValue&0 x70)4)minute=(ReadValue&0 x70)4)minute=(ReadValue&0 x70)4)*10+(ReadValue&0 x0F);/10+(ReadValue
37、&0 x0F);/10+(ReadValue&0 x0F);/10+(ReadValue&0 x0F);/将读出数据转化将读出数据转化 DisplayMinute(minute);DisplayMinute(minute);DisplayMinute(minute);DisplayMinute(minute);/显示分显示分 ReadValue=ReadSet1302(0 x85);/ReadValue=ReadSet1302(0 x85);/ReadValue=ReadSet1302(0 x85);/ReadValue=ReadSet1302(0 x85);/从分寄存器读从分寄存器读 hou
38、r=(ReadValue&0 x70)4)hour=(ReadValue&0 x70)4)hour=(ReadValue&0 x70)4)hour=(ReadValue&0 x70)4)*10+(ReadValue&0 x0F);/10+(ReadValue&0 x0F);/10+(ReadValue&0 x0F);/10+(ReadValue&0 x0F);/将读出数据转化将读出数据转化 DisplayHour(hour);DisplayHour(hour);DisplayHour(hour);DisplayHour(hour);/显示小时显示小时 ReadValue=ReadSet1302
39、(0 x87);/ReadValue=ReadSet1302(0 x87);/ReadValue=ReadSet1302(0 x87);/ReadValue=ReadSet1302(0 x87);/从分寄存器读从分寄存器读 day=(ReadValue&0 x70)4)day=(ReadValue&0 x70)4)day=(ReadValue&0 x70)4)day=(ReadValue&0 x70)4)*10+(ReadValue&0 x0F);/10+(ReadValue&0 x0F);/10+(ReadValue&0 x0F);/10+(ReadValue&0 x0F);/将读出数据转化
40、将读出数据转化 DisplayDay(day);/DisplayDay(day);/DisplayDay(day);/DisplayDay(day);/显示日显示日 ReadValue=ReadSet1302(0 x89);/ReadValue=ReadSet1302(0 x89);/ReadValue=ReadSet1302(0 x89);/ReadValue=ReadSet1302(0 x89);/从分寄存器读从分寄存器读 month=(ReadValue&0 x70)4)month=(ReadValue&0 x70)4)month=(ReadValue&0 x70)4)month=(Re
41、adValue&0 x70)4)*10+(ReadValue&0 x0F);/10+(ReadValue&0 x0F);/10+(ReadValue&0 x0F);/10+(ReadValue&0 x0F);/将读出数据转化将读出数据转化 DisplayMonth(month);/DisplayMonth(month);/DisplayMonth(month);/DisplayMonth(month);/显示月显示月 ReadValue=ReadSet1302(0 x8d);/ReadValue=ReadSet1302(0 x8d);/ReadValue=ReadSet1302(0 x8d);
42、/ReadValue=ReadSet1302(0 x8d);/从分寄存器读从分寄存器读 year=(ReadValue&0 xF0)4)year=(ReadValue&0 xF0)4)year=(ReadValue&0 xF0)4)year=(ReadValue&0 xF0)4)*10+(ReadValue&0 x0F);/10+(ReadValue&0 x0F);/10+(ReadValue&0 x0F);/10+(ReadValue&0 x0F);/将读出数据转化将读出数据转化 DisplayYear(year);/DisplayYear(year);/DisplayYear(year);
43、/DisplayYear(year);/显示年显示年BCDBCDBCDBCDBCDBCDBCDBCD码码码码 BCDBCDBCDBCDBCDBCDBCDBCD码码码码 用用用用4 4 4 4 4 4 4 4位二进制数来表示位二进制数来表示位二进制数来表示位二进制数来表示1 1 1 1 1 1 1 1位十进制数中的位十进制数中的位十进制数中的位十进制数中的0909090909090909这这这这1010101010101010个数个数个数个数码,码,码,码,简称简称简称简称BCDBCDBCDBCDBCDBCDBCDBCD码(码(码(码(Binary-Coded DecimalBinary-Cod
44、ed DecimalBinary-Coded DecimalBinary-Coded DecimalBinary-Coded DecimalBinary-Coded DecimalBinary-Coded DecimalBinary-Coded Decimal),简称),简称),简称),简称BCD BCD BCD BCD BCD BCD BCD BCD 非压缩的非压缩的非压缩的非压缩的BCDBCDBCDBCDBCDBCDBCDBCD码:码:码:码:非压缩的非压缩的非压缩的非压缩的BCDBCDBCDBCDBCDBCDBCDBCD码用码用码用码用8 8 8 8 8 8 8 8位二进制数表示一个十进
45、制数位,其中低位二进制数表示一个十进制数位,其中低位二进制数表示一个十进制数位,其中低位二进制数表示一个十进制数位,其中低4 4 4 4 4 4 4 4位是位是位是位是BCDBCDBCDBCDBCDBCDBCDBCD码,高码,高码,高码,高4 4 4 4 4 4 4 4位是位是位是位是0 0 0 0 0 0 0 0。例如,十进制数。例如,十进制数。例如,十进制数。例如,十进制数7878787878787878表示成压缩的表示成压缩的表示成压缩的表示成压缩的BCDBCDBCDBCDBCDBCDBCDBCD码码码码为为为为 0000 0111 0000 1000 0000 0111 0000 10
46、00 0000 0111 0000 1000 0000 0111 0000 1000 0000 0111 0000 1000 0000 0111 0000 1000 0000 0111 0000 1000 0000 0111 0000 1000 压缩的压缩的压缩的压缩的BCDBCDBCDBCDBCDBCDBCDBCD码:码:码:码:压缩的压缩的压缩的压缩的BCDBCDBCDBCDBCDBCDBCDBCD码用码用码用码用4 4 4 4 4 4 4 4位二进制数表示一个十进制数位,整个十进制位二进制数表示一个十进制数位,整个十进制位二进制数表示一个十进制数位,整个十进制位二进制数表示一个十进制数位
47、,整个十进制数用一串数用一串数用一串数用一串BCDBCDBCDBCDBCDBCDBCDBCD码来表示。码来表示。码来表示。码来表示。例如,十进制数例如,十进制数例如,十进制数例如,十进制数5959595959595959表示成压缩的表示成压缩的表示成压缩的表示成压缩的BCDBCDBCDBCDBCDBCDBCDBCD码为码为码为码为0101 1001 0101 1001 0101 1001 0101 1001 0101 1001 0101 1001 0101 1001 0101 1001 作业作业熟悉熟悉1302130213021302的资料,尝试阅读英文手册。的资料,尝试阅读英文手册。尝试使用数码管或者尝试使用数码管或者1602160216021602液晶,将始终显示液晶,将始终显示出来。出来。