**决战2021年单片机蓝桥杯笔记(1)**IIC PCF8591 AT24C02
**决战2021年单片机蓝桥杯笔记(1)**IIC PCF8591 AT24C02
I2C作为一种多用于板内同步串行通信方式,有一根SCL时钟线负责收发双方的时钟节拍,和一根SDA数据线负责传输数据,I2C时序的程序编写网上的资料是很丰富的了,作为蓝桥杯比赛为重点我就不展开说,在蓝桥杯官方单片机数据资源包里面有I2C底层驱动代码的参考历程,可以直接调用分为以下六个函数
void IIC_Start(void);
void IIC_Stop(void);
bit IIC_WaitAck(void);
void IIC_SendAck(bit ackbit);
void IIC_SendByte(unsigned char byt);
unsigned char IIC_RecByte(void);
在国信长天单片机板载的资源中我们主要用到PCF8591数模转换器和AT24C02需要用到I2C的通信协议来实现相应功能。
PCF8591的ADC是逐次逼近型的(微妙级别)转换速率属于中速,比积分型的ADC转换时间要快(毫秒级别),但是慢于并行/串行的ADC(纳秒级),但是I2C的速度有限,所以PCF8591的转换速度瓶颈就在于I2C的速度,PCF8591涉及的原理知识:
以下是两个对PCF8591函数的编写
//pcf8591的初始化
void init_pcf8591()
{
IIC_Start();
IIC_SendByte(0x90); //mcu写入 器件地址
IIC_WaitAck();
IIC_SendByte(0x03); //写入控制字节 电位器Rb2接到AIN1,通道1;控制寄存器应写入:0x01。
//光敏传感器接到AIN3,通道3;控制寄存器应写入:0x03。
IIC_WaitAck;
IIC_Stop();
}
//从PCF8591上读取数据
unsigned char read_pcf8591()
{
unsigned char datas;
IIC_Start();
IIC_SendByte(0x91); //读取电压值 1是读取
IIC_WaitAck();
datas=IIC_RecByte();
IIC_WaitAck();
IIC_Stop();
return datas;
}
AT24C02一共256个字节的存储空间,储存地址从0x00到0xFF,因此在使用IIC通信协议的时候就会涉及到器件的地址与数据储存地址两次MCU发送写入的地址消息后才开始传输数据,AT24C02涉及的原理知识:
以下是两个对AT24C02函数的编写:
//24c02的初始化
void wirte_at24c02(unsigned char addr,unsigned char dat)
{
IIC_Start();
IIC_SendByte(0xa0);
IIC_WaitAck();
IIC_SendByte(addr);
IIC_WaitAck();
IIC_SendByte(dat);
IIC_WaitAck();
IIC_Stop();
}
unsigned char Read_24C02(unsigned char addr)
{
unsigned char tmp;
//进行一个伪写操作
IIC_Start(); //IIC总线起始信号
IIC_SendByte(0xa0); //24C02写设备地址
IIC_WaitAck(); //等待从机应答
IIC_SendByte(addr); //内存自己地址
IIC_WaitAck(); //等待从机应答
//进行字节读操作
IIC_Start(); //IIC总线起始信号
IIC_SendByte(0xa1); //24C02读设备地址
IIC_WaitAck(); //等待从机应答
tmp = IIC_RecByte(); //读取目标数据
IIC_WaitAck(); //等待从机应答
IIC_Stop(); //IIC总线停止信号
return tmp;
}
参考网址资料链接:https://www.pianshen.com/article/8509208326/
https://www.pianshen.com/article/8509208326/
好了今天的笔记就更新到这里啦,大家下期见88
**决战2021年单片机蓝桥杯笔记(1)**IIC PCF8591 AT24C02相关推荐
- 蓝桥杯单片机·蓝桥杯全国软件和信息技术专业人才大赛电子类单片机 常用代码笔记
蓝桥杯笔记 1. 基础模块调用模板 #include <stc15f2k60s2.h> //#include<intrins.h>#define uchar unsigned ...
- [蓝桥杯单片机] - 蓝桥杯单片机CT107D竞赛板各模块代码分析
蓝桥杯笔记 "免责声明" ( •̀ ω •́ )✧ 代码未全部验证,也许存在BUG,如发现错误欢迎指正,不愿意指正那就当作没看见也行 所有说明文字仅代表笔者个人想法 修正日志 从2 ...
- 蓝桥杯 模板Template Part10:AT24C02存储器
九层妖塔 起于垒土 蓝桥杯 模板Template Part10:AT24C02存储器 一.原理图 二.AT24C02存储器内部存储结构的形象解释 1.存储结构 2.存储结构的地址编码 3.第一页的形象 ...
- 单片机蓝桥杯——NE555频率测量
原理: 对蓝桥杯单片机板子上NE555电路进行频率测量时,不需要任何的配置,整个单片机测量频率的过程中,跟NE555芯片没什么关系,归根结底考察的还是定时/计数器.但需要注意: (1)当用到NE555 ...
- 蓝桥杯笔记:DFS(深度优先搜索)解决问题
DFS: 深度优先搜索: 访问当前的元素后,递归访问元素的邻接元素(找出所有下一步的可能元素,判断是否能访问),撤回当前元素访问 dfs(当前状态) {//递归终止条件if(当前状态==结束状态) { ...
- 【小蜜蜂蓝桥杯笔记】DS18B20温度传感器的使用
DS18B20 更新(需要注意的部分) 进行带小数点的高精度转换时,需要750ms的延时,建议将开始转换和读取数据的函数分开写,利用定时器保证750ms之后再去读取,不然会出现很奇怪的数字 数据处理的 ...
- 蓝桥杯 笔记整理【JavaB组省赛真题、约数、全排列模板、排列组合、等差等比求和公式、eclipse快捷键、集合、快速求a^n、进制转换(Integer、BigInteger)、动态数组Vector】
蓝桥杯 Java B组 省赛决赛 真题详解及小结汇总[2013年(第4届)~2020年(第11届)] 第11届 蓝桥杯-第1.2次模拟(软件类)真题-(2020年3月.4月)-官方讲解视频 说明:大部 ...
- 单片机蓝桥杯——PWM呼吸灯
原理:调节高低电平的占空比 #include "STC15F2K60S2.h" #include "intrins.h" #define uchar unsig ...
- 【蓝桥杯笔记01】小蜜蜂老师-LED指示灯的基本控制
单元训练01:LED指示灯的基本控制 在CT107D单片机综合训练平台上实现 ED的基本控制,首先让8路LED指示灯闪烁3遍然后熄灭,接着依次点亮亮LED指示灯,最后依次熄灭指示灯,程序循环实现上述功 ...
最新文章
- 数据院携手汽车工程系,女生节尽展清华大数据风采~
- Linux 下安装redis
- 20155226 2016-2017-2 《Java程序设计》第一周学习总结
- 面向对象课程 - T-shirt
- idea tomcat部署web项目_项目开发之部署帆软到Tomcat服务一
- 如何解决类模板的分离编译问题?
- windows文件保护_Windows系统下媲美时间机器的系统备份工具,统统免费
- i9可以装服务器系统吗,i9服务器
- App后台开发运维和架构实践学习总结(4)——APP的注册和登录功能设计
- 信息存储服务公司Everlaw获810万美金注资
- Linux下实现Rsync目录同步备份
- 中国联通沃支付echop支付插件
- 使用软件测试路由器性能报告,路由器软件测试报告
- 使用Qt学习C语言编程1
- hisi spi nand flash驱动理解
- python目前版本强势英雄_最强竟然不是灭霸|用Python给漫威和DC英雄综合实力排位...
- Skype for business之Skype会议直播
- MySQL项目练习2——员工信息表项目
- 瀚高数据库并行导入导出
- debezium系列之:理解database.server.name和database.history.kafka.topic