当前位置: 首页 > news >正文

单片机学习笔记.根据芯片数据手册写驱动程序(这里使用的是普中开发版,以DS1302为例)

硬件原理图部分: 

 

 VCC2:是主电源

VCC1:是备用电源,此处没有使用VCC1


 查芯片数据手册的网站:

ALLDATASHEETCN.COM - 电子元件和半导体及其他半导体的数据表搜索网站。https://www.alldatasheetcn.com/


 

 1.由原理图可知对应引脚,所以先在软件里定义其对应引脚:

sbit DS1302_SCLK=P3^6; //串行时钟
sbit DS1302_IO=P3^4;//数据输入/输出
sbit DS1302_CE=P3^5;//芯片使能

 2.由时序图可知在开始阶段无论发送还是接收CE和SCLK都是低电平

void DS1302_Init()
{DS1302_CE=0;DS1302_SCLK=0;
}

 命令字地址:

3.由时序图写DS1302发送一个字节 :

  写入时的时序图的分析:

 

 这里时钟线这里拉高直接拉低,没有加延时,是因为DS1302是纳秒级,而单片机是微秒,不然需要加延时函数

void DS1302_WriteByte(unsigned char Command,Data)
{unsigned char i;DS1302_CE=1;
//	DS1302_IO=(Command&0x01);//0000 0001 取cmd的最低位
//	DS1302_SCLK=1;//单片机需要加延时看数据手册
//	DS1302_SCLK=0;
//	DS1302_IO=(Command&0x02);//0000 0010 取cmd的次低位,
//	DS1302_SCLK=1;
//	DS1302_SCLK=0;//找到规律,for循环左移8次就可以存入所有位for(i=0;i<8;i++)//根据数据手册的时序图来写{DS1302_IO=(Command&(0x01<<i));DS1302_SCLK=1;
//这里,没有加延时是因为DS1302是纳秒级,而单片机是微秒,不然需要加延时函数DS1302_SCLK=0;}for(i=0;i<8;i++){DS1302_IO=(Data&(0x01<<i));DS1302_SCLK=1;DS1302_SCLK=0;}DS1302_CE=0;
}

4.由时序图写DS1302读取一个字节 :

unsigned char DS1302_ReadByte(unsigned char Command)
{unsigned char i,Data=0x00;DS1302_CE=1;for(i=0;i<8;i++)//根据数据手册的时序图来写{DS1302_IO=(Command&(0x01<<i));DS1302_SCLK=0;DS1302_SCLK=1;}for(i=0;i<8;i++){DS1302_SCLK=1;DS1302_SCLK=0;if(DS1302_IO){Data|=(0x01<<i);}}DS1302_CE=0;DS1302_IO=0;return Data;
//	DS1302_SCLK=0;
//	DS1302_SCLK=1;
//	if(DS1302_IO){Data|=0x02;}
//	DS1302_SCLK=0;
//	DS1302_SCLK=1;
//	if(DS1302_IO){Data|=0x04;}}

http://www.dtcms.com/a/275449.html

相关文章:

  • 创建Spring Boot项目
  • 解决‘vue‘ 不是内部或外部命令,也不是可运行的程序
  • 前端开发的「设计鸿沟」:为什么我学了CSS却做不出好看的网页?
  • 用YOLOv5系列教程(1)-用YOLOv5轻松实现设备状态智能监控!工业级教程来了
  • 【工具】什么软件识别重复数字?
  • C++结构体的定义与使用
  • 机器学习(ML)、深度学习(DL)、强化学习(RL)关系和区别
  • Redis 基本操作笔记
  • 关于wpf的自适应
  • 基于 Redisson 实现分布式系统下的接口限流
  • [特殊字符] 深入掌握 dsquery:Active Directory 高效查询与安全运维指南
  • sqli-labs靶场通关笔记:第7-8关 布尔盲注
  • Gemini CLI 代理问题解决[API Error: exception TypeError: fetch failed sending request]
  • 【Linux-云原生-笔记】数据库操作基础
  • 【机器学习|学习笔记】详解决策树CART算法,并对比ID3 C4.5和CART算法
  • 系统分析师-计算机系统-计算机系统概述存储系统
  • 内网穿透系列九:开源的网络穿透与组网工具 EasyTier,支持多种数据传输通道,去中心化,兼具高效与安全
  • 【Java八股文总结 — 包学会】(二)计算机网络
  • PyTorch的计算图是什么?为什么绘图前要detach?
  • 【设计模式】单例模式 饿汉式单例与懒汉式单例
  • 人工智能自动化编程:传统软件开发vs AI驱动开发对比分析
  • 云原生技术与应用-生产环境构建高可用Harbor私有镜像仓库
  • ​BRPC核心架构解析:高并发RPC框架的设计哲学
  • Whistle抓包
  • 【设计模式】桥接模式(柄体模式,接口模式)
  • 为什么有些PDF无法复制文字?原理分析与解决方案
  • Oxygen XML Editor 26.0编辑器
  • 闲庭信步使用图像验证平台加速FPGA的开发:第十课——图像gamma矫正的FPGA实现
  • 定长子串中元音的最大数目
  • 大数据在UI前端的应用深化研究:用户行为数据的时序模式挖掘