资源描述
单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,手把手教你学单片机,-51,基础,(C,语言,),金沙滩工作室,1,第十六课:,DS1302,实时,时钟学习,2,BCD,码介绍,用,4,位二进制数来表示,1,位十进制数中的,09,这,10,个数码,简称,BCD,码,即,BCD,代码。,12 0001 0010 45,tmp = timedatai / 10; tmp = 4,timedatai = timedatai % 10; = 5,timedatai = timedatai + tmp*16;,69 0,100 0101,3,英文手册阅读,4,5,6,对,DS1302,的操作包括读、写两个部分,我们根据程序来介绍芯片操作。从上图看出,无论我们是读、还是写,数据都是以,1,个字节(,8bit,)为单位的,所以在程序的最底层我问要先写出字节的读写程序:,void write_ds1302_byte(uint8 dat),uint8 i;,SCK = 0;,for (i=0;i= 1;,SCK = 0;,7,uint8 read_ds1302_byte(void),uint8 i, dat=0;,for (i=0;i= 1;,if (SDA),dat |= 0x80;,SCK = 1;,SCK = 0;,return dat;,8,9,在每次发起数据传输之前,要先复位,DS1302,:,void reset_ds1302(void),RST = 0;,SCK = 0;,RST = 1;,10,11,由于上电之后,WP,的状态并不确定,所以我们每次写操作时都要打开写保护。写保护程序:,/*,*,清除写保护,*,/,void clear_ds1302_WP(void),reset_ds1302();,RST = 1;,write_ds1302_byte(0x8E);,write_ds1302_byte(0);,SDA = 0;,RST = 0;,12,/*,*,设置写保护,*,/,void set_ds1302_WP(void),reset_ds1302();,RST = 1;,write_ds1302_byte(0x8E);,write_ds1302_byte(0x80);,SDA = 0;,RST = 0;,13,我们每次的读写时间,时间上是对,DS1302,的相应地址进行操作,图中列出了各个信息的读写地址,为了方便对地址操作,我们封装了以下两个函数:,/*,*,写入,DS1302,*/,void write_ds1302(uint8 addr, uint8 dat),reset_ds1302();,RST = 1;,write_ds1302_byte(addr);,write_ds1302_byte(dat);,SDA = 0;,RST = 0;,14,/*,*,读出,DS1302,数据,*,/,uint8 read_ds1302(uint8 addr),uint8 temp=0;,reset_ds1302();,RST = 1;,write_ds1302_byte(addr);,temp = read_ds1302_byte();,SDA = 0;,RST = 0;,return (temp);,15,作业,熟悉,1302,的资料,尝试阅读英文手册。,尝试使用数码管或者,1602,液晶,将始终显示出来。,16,如有疑问,请登录交流,谢谢!,17,
展开阅读全文