51单片机---一起来学习DS1302可调时钟(stc89c52芯片)
DS1302是一个实时时钟芯片,带有一个备用电池,在单片机不工作的时候继续走时;单片机
自带的定时器时钟并不能够调电继续运行,不能断电,然而这个时钟芯片带有备用电池,会给1302继续提供电流。(在主电源工作时,还可以为备用电源充电)
DS1302的时序图:
![](/assets/blank.gif)
原理:
三条线,配置寄存器,CE使能端一直置1;时序sclk每来一个上升沿,I/O口就写入或者读取一个字节,从低位开始,例如第一位是r或者w,用0和1表示读写两种不同的状态;
DS1302的时序模拟 写入操作:
DS1302_CE = 1;
for(i=0;i<8;i++){ DS1302_IO = Command&(0x01<<i); //每一个上升沿就写入一个字节DS1302_SCLK = 1; //模拟时序sclk的上升下降沿DS1302_SCLK = 0;}for(i=0;i<8;i++){ DS1302_IO = Data&(0x01<<i); //每一个上升沿就写入一个字节DS1302_SCLK = 1; //sclk的上升下降沿DS1302_SCLK = 0;}
这里的0x01和Command按位相与,可根据时序脉冲从低位到高位写入每一个字节。
DS1302的时序模拟 读取操作:
DS1302_CE = 1;for(i=0;i<8;i++){ DS1302_IO = Command&(0x01<<i); //每一个上升沿就写入一个字节DS1302_SCLK = 0; //模拟时序sclk的上升下降沿DS1302_SCLK = 1;}for(i=0;i<8;i++){ DS1302_SCLK = 1; //模拟时序sclk的上升下降沿DS1302_SCLK = 0;if(DS1302_IO){Data = Data|(0x01<<i); //这样就将最低位 置1}//这里 || 和 | 是不以一样的}DS1302_CE = 0;DS1302_IO=0; //读取后将IO设置为0,否则读出的数据会出错
其中涉及到一些需要注意的地方:
- BCD码和十进制之间的转换:
![](/assets/blank.gif)
2.exern关键字的用法:
extern的理解用法请参考此处
3.“&” “|” “!” "~"的区分
& 和 | 是按位相与/相或,!是按逻辑取反,~是按位取反。
51单片机---一起来学习DS1302可调时钟(stc89c52芯片)相关推荐
- 51单片机独立按键数码管可调时钟显示程序
/************************************************************************** 独立按键数码管时钟显示程序 ********** ...
- 51单片机——DS1302可调时钟
目录 一.功能介绍 二.主要模块介绍 2.1 DS1302模块 2.1.1 DS1302芯片介绍 2.1.2 DS1302的使用 三.程序汇总 3.1测试文件test.c 3.2 LCD1602模块 ...
- 51单片机c语言电子钟(已加入调时 '整点报时功能1),51单片机c语言电子钟(已加入调时、闹铃、整点报时功能1)万年历2...
51单片机c语言电子钟(已加入调时.闹铃.整点报时功能1)万年历2 51单片机c语言电子钟(已加入调时.闹铃.整点报时功能1)万年历1 ·一个固定数组 ·时钟,秒表,日历,闹钟 */ #include ...
- 基于51单片机的PWM控制马达电机调速正反转(仿真+源码+全套资料)
资料编号:117 仿真图proteus 7.8 程序编译器:keil 5 编程语言:C语言 采用51单片机,用PWM控制电机脉冲频率应控制在25HZ-35HZ之间 定时1ms,1个周期30ms,脉冲频 ...
- 基于51单片机的PWM控制马达电机调速正反转
资料编号:117 下面是相关功能视频演示: 117-基于51单片机的PWM控制马达电机调速正反转(仿真+源码+全套资料) 仿真图proteus 7.8(理论上高于7.8均可以打开) 程序编译器:ke ...
- 电子时钟万年历+51单片机+1602液晶屏+DS1302+DS18B20+按键
电子时钟万年历+51单片机+1602液晶屏+DS1302+DS18B20+按键 这次课程设计要完成的是制作一个基于51单片机的电子时钟的万年历(protues仿真),需要用到1602液晶屏+DS130 ...
- 立创EDA入门3 通过51单片机最小板学习PCB设计
立创EDA入门3 通过51单片机最小板学习PCB设计 一.本文目的 二.原理图设计 1. 新建工程,命名为51系统 2. 各模块原理图 3. 一些常用操作 (1)放置普通元器件 (2)封装.标签设置 ...
- 时钟加闹钟c语言程序,51单片机c语言电子钟(已加入调时、闹铃、整点报时功能)...
<51单片机c语言电子钟(已加入调时.闹铃.整点报时功能)>由会员分享,可在线阅读,更多相关<51单片机c语言电子钟(已加入调时.闹铃.整点报时功能)(13页珍藏版)>请在技术 ...
- 【DS1302可调时钟】
DS1302可调时钟 0.原理图 1.DS1302介绍 2.引脚定义与应用电路 3.内部结构框图 4.寄存器定义 5.时序定义 6.BCD码 7.源码 ==main.c== ==DS1302.c== ...
最新文章
- hbase性能优化2
- Andrew Ng 深度学习笔记-01-week2-课程
- 矩阵快速幂求大斐波那契poj3070(java)
- 解析性语言与编译性语言优劣对比
- opengl加载显示3D模型X类型文件
- wxWidgets:wxAutomationObject类用法
- 创业思路(1) - 收藏夹分享平台
- Navigation execution entry point
- weex eros框架源码解析
- mysql 5.5 主从同步问题_MySQL 5.5 主从复制异步、半同步以及注意事项详解
- Android--Activity中使用Intent传值
- Python基本数据类型(数字、字符串、列表、元组、集合、字典)
- 简历关于计算机办公软件怎么写,简历中怎么写办公软件
- 计算机主机内的零件有什么用,ROM和RAM分别是什么?有什么区别?与电脑的什么配件的作用是一? 爱问知识人...
- html中怎样隐藏列,关于jquery:隐藏/显示HTML表中的列
- 美国队长的工资 python代码-Python入门必学,用Python练习画个美队盾牌
- C++先序和中序确定二叉树
- Linux实验精华总结
- Python爬虫-爬取手机应用市场中APP下载量
- 微软2018年重组背后,扒一扒受影响的人与事
热门文章
- CAPM+APT多因子模型
- CString实现机理_转自数字英才
- 数据分析师如何“述职”?
- 二维数组的初始化,下标,遍历,及数组间的赋值
- 原来这才是高铁霸座男的真实目的!
- 屏幕一直显示android,lenovo!屏幕一直显示poweredbyandroid是什么意思
- 人工神经网络 经验公式_文科生看了会沉默,理科生看了会流泪的物理公式!你知道几个?(看完长见识)...
- 基于STM32蓝牙智能手环脉搏心率计步器体温显示设计
- React Redux 进阶: Hooks 版本用法 Custom Context 局部 Store 实践
- 什么是openssl