手把手教你学单片机6.ppt

上传人:本田雅阁 文档编号:3180767 上传时间:2019-07-21 格式:PPT 页数:17 大小:997.01KB
返回 下载 相关 举报
手把手教你学单片机6.ppt_第1页
第1页 / 共17页
手把手教你学单片机6.ppt_第2页
第2页 / 共17页
手把手教你学单片机6.ppt_第3页
第3页 / 共17页
手把手教你学单片机6.ppt_第4页
第4页 / 共17页
手把手教你学单片机6.ppt_第5页
第5页 / 共17页
点击查看更多>>
资源描述

《手把手教你学单片机6.ppt》由会员分享,可在线阅读,更多相关《手把手教你学单片机6.ppt(17页珍藏版)》请在三一文库上搜索。

1、手把手教你学单片机,-51基础(C语言) 金沙滩工作室 http:/www.kingst.org 作者:小宋老师,第十六课: DS1302实时 时钟学习,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 0100 0101,英文手册阅读,对DS1302的操作包括读、写两个部分,我们根据程序来介绍芯片操作。从上图看出,无论我们

2、是读、还是写,数据都是以1个字节(8bit)为单位的,所以在程序的最底层我问要先写出字节的读写程序: void write_ds1302_byte(uint8 dat) uint8 i; SCK = 0; for (i=0;i= 1; SCK = 0; ,uint8 read_ds1302_byte(void) uint8 i, dat=0; for (i=0;i= 1; if (SDA) dat |= 0x80; SCK = 1; SCK = 0; return dat; ,在每次发起数据传输之前,要先复位DS1302: void reset_ds1302(void) RST = 0; SC

3、K = 0; RST = 1; ,由于上电之后WP的状态并不确定,所以我们每次写操作时都要打开写保护。写保护程序: /* * 清除写保护 */ void clear_ds1302_WP(void) reset_ds1302(); RST = 1; write_ds1302_byte(0x8E); write_ds1302_byte(0); SDA = 0; RST = 0; ,/* * 设置写保护 */ void set_ds1302_WP(void) reset_ds1302(); RST = 1; write_ds1302_byte(0x8E); write_ds1302_byte(0x8

4、0); SDA = 0; RST = 0; ,我们每次的读写时间,时间上是对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; ,/* * 读出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); ,作业,熟悉1302的资料,尝试阅读英文手册。 尝试使用数码管或者1602液晶,将始终显示出来。,如有疑问,请登录http:/www.kingst.org交流,谢谢!,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 其他


经营许可证编号:宁ICP备18001539号-1