资源预览内容
第1页 / 共17页
第2页 / 共17页
第3页 / 共17页
第4页 / 共17页
第5页 / 共17页
第6页 / 共17页
第7页 / 共17页
第8页 / 共17页
第9页 / 共17页
第10页 / 共17页
亲,该文档总共17页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
手把手教你学单片机-51基础(C语言)金沙滩工作室 http:/www.kingst.org 作者:小宋老师n第十六课:n DS1302实时 时钟学习BCD码介绍n用4位二进制数来表示1位十进制数中的 09这10个数码,简称BCD码,即BCD 代码。n12 0001 0010 45ntmp = timedatai / 10; tmp = 4ntimedatai = timedatai % 10; = 5ntimedatai = timedatai + tmp*16;n 69 0100 0101英文手册阅读n对DS1302的操作包括读、写两个部分,我们根据程序来介绍芯 片操作。从上图看出,无论我们是读、还是写,数据都是以1个 字节(8bit)为单位的,所以在程序的最底层我问要先写出字节 的读写程序:nvoid write_ds1302_byte(uint8 dat) nnuint8 i;nSCK = 0;nfor (i=0;i= 1;nSCK = 0;nnnuint8 read_ds1302_byte(void) nnuint8 i, dat=0;n nfor (i=0;i= 1;nif (SDA)ndat |= 0x80;nSCK = 1;nSCK = 0;nnreturn dat;nn在每次发起数据传输之前,要先复位DS1302:nvoid reset_ds1302(void)nnRST = 0;nSCK = 0;nRST = 1;nn由于上电之后WP的状态并不确定,所以我们每次写 操作时都要打开写保护。写保护程序:n/*n * 清除写保护n*/nvoid clear_ds1302_WP(void) nnreset_ds1302();nRST = 1;nwrite_ds1302_byte(0x8E);nwrite_ds1302_byte(0);nSDA = 0;nRST = 0;nn/*n * 设置写保护n*/nvoid set_ds1302_WP(void) nnreset_ds1302();nRST = 1;nwrite_ds1302_byte(0x8E);nwrite_ds1302_byte(0x80);nSDA = 0;nRST = 0;nn我们每次的读写时间,时间上是对DS1302的相应地 址进行操作,图中列出了各个信息的读写地址,为了 方便对地址操作,我们封装了以下两个函数:n/*n * 写入DS1302n*/nvoid write_ds1302(uint8 addr, uint8 dat) nnreset_ds1302();nRST = 1;nwrite_ds1302_byte(addr);nwrite_ds1302_byte(dat);nSDA = 0;nRST = 0;nn/*n * 读出DS1302数据n*/nuint8 read_ds1302(uint8 addr)nnuint8 temp=0;nreset_ds1302();nRST = 1;nwrite_ds1302_byte(addr);ntemp = read_ds1302_byte();nSDA = 0;nRST = 0;nreturn (temp);n作业n熟悉1302的资料,尝试阅读英文手册。n尝试使用数码管或者1602液晶,将始终显示 出来。
收藏 下载该资源
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号