精品课件-51单片机实战指南-第12章-使用DS1302设计数字时钟ppt.ppt
《精品课件-51单片机实战指南-第12章-使用DS1302设计数字时钟ppt.ppt》由会员分享,可在线阅读,更多相关《精品课件-51单片机实战指南-第12章-使用DS1302设计数字时钟ppt.ppt(36页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、在日常生活中,随处都可以看到浪费粮食的现象。也许你并未意识到自己在浪费,也许你认为浪费这一点点算不了什么第第1212章章 使用使用DS1302DS1302设计数字时钟设计数字时钟5151单片机实战指南单片机实战指南在日常生活中,随处都可以看到浪费粮食的现象。也许你并未意识到自己在浪费,也许你认为浪费这一点点算不了什么本章内容:本章内容:2 2DS1302DS1302芯片介绍芯片介绍1 1封装的编程思想和结构体封装的编程思想和结构体类型类型2 22 2DS1302DS1302读写操作的编程实读写操作的编程实现现3 3DS1302DS1302读写实战读写实战4 4在日常生活中,随处都可以看到浪费粮
2、食的现象。也许你并未意识到自己在浪费,也许你认为浪费这一点点算不了什么12.1.1 DS130212.1.1 DS1302芯片特点芯片特点DS1302DS1302实时时钟芯片具有功耗低、精确度高、软件编程较简实时时钟芯片具有功耗低、精确度高、软件编程较简单,且芯片体积小、成本低等特点单,且芯片体积小、成本低等特点提供秒、分、小时、日期、月、年等信息,可以通过配置提供秒、分、小时、日期、月、年等信息,可以通过配置AM/PMAM/PM来决定采用来决定采用2424小时格式还是小时格式还是1212小时格式小时格式 拥有拥有31*8 31*8 位的额外数据暂存寄存器位的额外数据暂存寄存器(即即RAMRA
3、M,掉电丢失,掉电丢失)串行串行I/OI/O通信方式通信方式工作电压比较宽,在工作电压比较宽,在2.02.05.5V5.5V的范围内都可以正常工作的范围内都可以正常工作功耗很低,它在工作电压功耗很低,它在工作电压2.0V2.0V的时候,工作电流小于的时候,工作电流小于300nA300nA提供提供主电源主电源和和备用电源备用电源共共两个电源两个电源,保证,保证系统掉电的情况系统掉电的情况下下仍继续工作仍继续工作在日常生活中,随处都可以看到浪费粮食的现象。也许你并未意识到自己在浪费,也许你认为浪费这一点点算不了什么12.1.2 DS130212.1.2 DS1302芯片引脚功能芯片引脚功能引脚编号
4、引脚名称引脚功能1VCC2主电源引脚,当VCC2比VCC1高0.2V以上时,DS1302由VCC2供电,当VCC2低于VCC1时,由VCC1供电。2X1这两个引脚需要接一个32.768K的晶振,给DS1302提供一个基准。3X24GND接地引脚。5CE使能引脚。当读写DS1302时,这个引脚必须是高电平。6I/O串行数据输入/输出端(双向)。7SCLKSerial Clock输入引脚,用来作为通信的时钟信号。8VCC1备用电源引脚。在日常生活中,随处都可以看到浪费粮食的现象。也许你并未意识到自己在浪费,也许你认为浪费这一点点算不了什么12.1.2 DS130212.1.2 DS1302芯片寄存
5、器功能芯片寄存器功能寄存器名命令字取值范围各位内容写操作读操作76543210秒寄存器80H81H00-59CH10SECSEC分钟寄存器82H83H00-59010MINMIN小时寄存器84H85H00-12/00-2312/010/PHRHR日期寄存器86H87H01-310010DATEDATE月份寄存器88H89H01-1200010MMONTH星期寄存器8AH8BH01-0700000DAY年份寄存器8CH8DH00-9910YEARYEAR控制寄存器8EH8FHWP0000000bit 7bit 6bit 5bit 4bit 3bit 2bit 1bit 01RAM/CKA4A3A
6、2A1A0R/W在日常生活中,随处都可以看到浪费粮食的现象。也许你并未意识到自己在浪费,也许你认为浪费这一点点算不了什么本章内容:本章内容:2 2DS1302DS1302芯片介绍芯片介绍1 1封装的编程思想和结构体封装的编程思想和结构体类型类型2 22 2DS1302DS1302读写操作的编程实读写操作的编程实现现3 3DS1302DS1302读写实战读写实战4 4在日常生活中,随处都可以看到浪费粮食的现象。也许你并未意识到自己在浪费,也许你认为浪费这一点点算不了什么12.2.1 12.2.1 封装的编程思想封装的编程思想封装是面向对象编程三大特性(封装、继承、多态)之一封装是面向对象编程三大
7、特性(封装、继承、多态)之一核心思想就是尽可能地隐藏内部的细节,只保留一些对外接核心思想就是尽可能地隐藏内部的细节,只保留一些对外接口使之与外部发生联系口使之与外部发生联系就就C C语言而言,封装的体现就是函数的编写(小封装)和模块语言而言,封装的体现就是函数的编写(小封装)和模块文件的编写(大封装)文件的编写(大封装)如如LCDLCD,IICIIC总线,总线,EEPROMEEPROM,键盘等都进行了模块文件的编写,键盘等都进行了模块文件的编写lcd1602.clcd1602.c、i2c.ci2c.c、EEPROM.cEEPROM.c、keyboard.ckeyboard.c,包括它们各自,包
8、括它们各自的头文件的头文件(.h)(.h)在日常生活中,随处都可以看到浪费粮食的现象。也许你并未意识到自己在浪费,也许你认为浪费这一点点算不了什么12.2.2 12.2.2 结构体的应用结构体的应用1.1.结构体类型的定义结构体类型的定义DS1302DS1302的日历时钟寄存器可以如下定义:的日历时钟寄存器可以如下定义:structstruct sCalenda sCalenda /日历结构体定义日历结构体定义 unsignedunsigned intint year year;/年,加上了年,加上了2 20 0,所以所以intint类型类型 unsignedunsigned charchar
9、 mon mon;/月月 unsignedunsigned charchar day day;/日日 unsignedunsigned charchar hour hour;/时时 unsignedunsigned charchar min min;/分分 unsignedunsigned charchar sec sec;/秒秒 unsignedunsigned charchar week week;/星期星期;在日常生活中,随处都可以看到浪费粮食的现象。也许你并未意识到自己在浪费,也许你认为浪费这一点点算不了什么12.2.2 12.2.2 结构体的应用结构体的应用2.2.结构体变量的定义结
10、构体变量的定义结构体变量的定义有三种方法结构体变量的定义有三种方法先结构体先定义结构体类型,再定义变量名;先结构体先定义结构体类型,再定义变量名;定义结构体类型同时定义结构体类型变量;定义结构体类型同时定义结构体类型变量;直接定义结构体类型变量。直接定义结构体类型变量。structstruct sCalenda calenda sCalenda calenda;calenda.mon calenda.mon=0 x07 0 x07;/7/7月月CalendaCalenda.day day=0 x19 0 x19;/19/19日日structstruct sCalenda*calenda sCa
11、lenda*calenda;calenda-mon=0 x07;calenda-mon=0 x07;calenda-day=0 x19;calenda-day=0 x19;在日常生活中,随处都可以看到浪费粮食的现象。也许你并未意识到自己在浪费,也许你认为浪费这一点点算不了什么12.2.2 12.2.2 结构体的应用结构体的应用3.3.结构体变量作为函数的参数结构体变量作为函数的参数指针变量作为函数参数,实际上传递的是结构体变量的地指针变量作为函数参数,实际上传递的是结构体变量的地址,并不是结构体变量本身址,并不是结构体变量本身voidvoid GetCurrentTime GetCurrent
12、Time(structstruct sCalenda sCalenda*calendacalenda););在日常生活中,随处都可以看到浪费粮食的现象。也许你并未意识到自己在浪费,也许你认为浪费这一点点算不了什么本章内容:本章内容:2 2DS1302DS1302芯片介绍芯片介绍1 1封装的编程思想和结构体封装的编程思想和结构体类型类型2 22 2DS1302DS1302读写操作的编程实读写操作的编程实现现3 3DS1302DS1302读写实战读写实战4 4在日常生活中,随处都可以看到浪费粮食的现象。也许你并未意识到自己在浪费,也许你认为浪费这一点点算不了什么12.3.1 12.3.1 操作操作
13、DS1302DS1302寄存器函数的实现寄存器函数的实现1.1.写写DS1302DS1302寄存器函数寄存器函数在日常生活中,随处都可以看到浪费粮食的现象。也许你并未意识到自己在浪费,也许你认为浪费这一点点算不了什么12.3.1 12.3.1 操作操作DS1302DS1302寄存器函数的实现寄存器函数的实现1.1.写写DS1302DS1302寄存器函数寄存器函数voidvoid DS1302WriteReg DS1302WriteReg(unsignedunsigned charchar reg reg,unsignedunsigned charchar datdat)unsignedunsi
14、gned charchar n n;DS1302_CE DS1302_CE=1 1;/将将CECE置高电平,使能通信置高电平,使能通信forfor (n n=0 0;n n=1 1;DS1302_CK DS1302_CK=1 1;/数据在上升沿时,数据在上升沿时,DS1302DS1302读取数据读取数据DS1302_CK DS1302_CK=0 0;forfor (n n=0 0;n n=1 1;DS1302_CK DS1302_CK=1 1;/数据在上升沿时,数据在上升沿时,DS1302DS1302读取数据读取数据DS1302_CK DS1302_CK=0 0;DS1302_CE DS130
15、2_CE=0 0;/传送数据结束传送数据结束 在日常生活中,随处都可以看到浪费粮食的现象。也许你并未意识到自己在浪费,也许你认为浪费这一点点算不了什么12.3.1 12.3.1 操作操作DS1302DS1302寄存器函数的实现寄存器函数的实现1.1.读读DS1302DS1302寄存器函数寄存器函数在日常生活中,随处都可以看到浪费粮食的现象。也许你并未意识到自己在浪费,也许你认为浪费这一点点算不了什么12.3.1 12.3.1 操作操作DS1302DS1302寄存器函数的实现寄存器函数的实现1.1.读读DS1302DS1302寄存器函数寄存器函数unsignedunsigned charchar
16、 DS1302ReadReg DS1302ReadReg(unsignedunsigned charchar reg reg)unsignedunsigned charchar n n,temptemp;unsigned unsigned charchar dat=0 dat=0;DS1302_CE DS1302_CE=1 1;/然后将然后将CE)CE)高电平。高电平。forfor (n n=0 0;n n=1 1;DS1302_CK DS1302_CK=1 1;/数据在上升沿时,数据在上升沿时,DS1302DS1302读取数据读取数据DS1302_CK DS1302_CK=0 0;forfo
17、r(n n=0 0;n n 1 1)|(temptemp7 7););DS1302_CK DS1302_CK=1 1;/产生上升沿产生上升沿DS1302_CK DS1302_CK=0 0;/DS1302/DS1302下降沿输出数据,下降沿输出数据,完成一个位的操作完成一个位的操作 DS1302_CE DS1302_CE=0 0;/传送数据结传送数据结束束returnreturn dat dat;在日常生活中,随处都可以看到浪费粮食的现象。也许你并未意识到自己在浪费,也许你认为浪费这一点点算不了什么12.3.2 12.3.2 读写读写函数的封装函数的封装-DS1302WriteByte-DS13
18、02WriteByte/*/*发送一个字节到发送一个字节到DS1302DS1302通信总线上通信总线上*/*/voidvoid DS1302WriteByte DS1302WriteByte(unsignedunsigned charchar dat dat)unsignedunsigned charchar i i;forfor (i i=0 0;i i=1 1;DS1302_CK DS1302_CK=1 1;/然后拉高时钟然后拉高时钟 DS1302_CK DS1302_CK=0 0;/再拉低时钟,完成一个再拉低时钟,完成一个位的操作位的操作 DS1302_IO DS1302_IO=1 1;
19、/最后确保释放最后确保释放IOIO引脚引脚 在日常生活中,随处都可以看到浪费粮食的现象。也许你并未意识到自己在浪费,也许你认为浪费这一点点算不了什么12.3.2 12.3.2 读写读写函数的封装函数的封装-DS1302WriteReg-DS1302WriteReg/*/*用单次写操作向某一寄存器写入一个字节,用单次写操作向某一寄存器写入一个字节,regreg:寄存:寄存器地址,器地址,datdat:待写入字节:待写入字节*/*/voidvoid DS1302WriteReg DS1302WriteReg(unsignedunsigned charchar reg reg,unsigneduns
20、igned charchar dat dat)DS1302_CE DS1302_CE=1 1;/使能片使能片选信号选信号 DS1302WriteByte DS1302WriteByte(regreg1 1)|)|0 x800 x80););/发送写寄存器发送写寄存器指令指令 DS1302WriteByte DS1302WriteByte(datdat););/写入字写入字节数据节数据 DS1302_CE DS1302_CE=0 0;/除能片除能片选信号选信号 在日常生活中,随处都可以看到浪费粮食的现象。也许你并未意识到自己在浪费,也许你认为浪费这一点点算不了什么12.3.2 12.3.2 读写
21、读写函数的封装函数的封装-DS1302ReadByte-DS1302ReadByte/*/*由由DS1302DS1302通信总线上读取一个字节通信总线上读取一个字节*/*/unsignedunsigned charchar DS1302ReadByte DS1302ReadByte()()unsignedunsigned charchar i i,temptemp;unsignedunsigned charchar dat dat=0 0;forfor (i i=0 0;i i 1 1)|(temptemp7 7););DS1302_CK DS1302_CK=1 1;/然后拉高时钟然后拉高时钟
22、 DS1302_CK DS1302_CK=0 0;/再拉低时钟,完成一个位再拉低时钟,完成一个位的操作的操作 returnreturn dat dat;/最后返回读到的字节数据最后返回读到的字节数据 在日常生活中,随处都可以看到浪费粮食的现象。也许你并未意识到自己在浪费,也许你认为浪费这一点点算不了什么12.3.2 12.3.2 读写读写函数的封装函数的封装-DS1302ReadReg-DS1302ReadReg/*/*用单次读操作从某一寄存器读取一个字节,用单次读操作从某一寄存器读取一个字节,regreg:寄存器:寄存器地址,返回值为读到的字节地址,返回值为读到的字节*/*/unsigned
23、unsigned charchar DS1302ReadReg DS1302ReadReg(unsignedunsigned charchar reg reg)unsignedunsigned charchar dat dat;DS1302_CE DS1302_CE=1 1;/使能片选信号使能片选信号 DS1302WriteByte DS1302WriteByte(regreg1 1)|)|0 x810 x81););/发送读寄存器发送读寄存器指令指令 dat dat=DS1302ReadByte DS1302ReadByte();();/读取字节数据读取字节数据 DS1302_CE DS13
24、02_CE=0 0;/除能片选信号除能片选信号 returnreturn dat dat;在日常生活中,随处都可以看到浪费粮食的现象。也许你并未意识到自己在浪费,也许你认为浪费这一点点算不了什么本章内容:本章内容:2 2DS1302DS1302芯片介绍芯片介绍1 1封装的编程思想和结构体封装的编程思想和结构体类型类型2 22 2DS1302DS1302读写操作的编程实读写操作的编程实现现3 3DS1302DS1302读写实战读写实战4 4在日常生活中,随处都可以看到浪费粮食的现象。也许你并未意识到自己在浪费,也许你认为浪费这一点点算不了什么12.4 DS130212.4 DS1302读写实战读
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 精品 课件 51 单片机 实战 指南 12 使用 DS1302 设计 数字 时钟 ppt
限制150内