iic应用篇

一.iic的优点 

        1. IIC总线物理链路简单,硬件实现方便,扩展性非常好(1个主机控制器可以根据需求增加从机数量,同时删减从机数量也不会影响总线通信);IIC总线只需要SDA和SCL两条信号线,相比于PCI/LocalBus动则几十根信号线要简单太多,就算是SPI总线也至少需要4根信号线,而且片选(CS)数量受限(器件扩展受限);相对UART总线虽然只需要2条信号线,但一般只用于1对1通信(UART的一对多的通信也是可以的,但实现起来比较复杂)。

        2. 采用IIC总线的器件封装更容易实现小型化,对PCB空间的要求较小;采用IIC总线的器件管脚数量得到明显的简化,举个栗子:采用SPI总线的EEPROM至少需要8个管脚,那么IIC总线的EEPROM只需要4个管脚,可以减少一半的器件面积。

        3. IIC总线规范已经成熟稳定,IIC接口在不同行业的应用也非常广泛,大多数处理器/单片机集成了IIC控制器,而且很多种不同应用的器件支持IIC接口;

                1,总线接口的生命力很旺盛,容易找到该总线接口的器件升级;

                2,总线的软硬件接口设计标准化,开发难度低;

                3,用一个总线解决不同器件的管理,简化系统软硬件设计;

                4,IIC总线的各种问题已在大量应用中暴露出来,只需要关注已发现的问题,提前做好设计,就能保证总线的可靠。

        4. IIC总线的故障诊断和调试简单,由于IIC总线信号线少,协议简单,所以如果出现故障,可以很容易通过示波器抓到时钟或信号线上的故障;

        5. IIC总线通信:有抗电磁干扰高,电流损耗小,电源电压范围宽以及工作温度范围广等特点,适合应用于如下需求的板内部器件之间数据通信:

                1,由至少一个主机(Master)和其它外围从机(Slave)组成;

                2,IIC总线在系统中不同器件连接的成本最小;IIC器件接口复杂度小,器件封装小(器件成本小),IIC器件以及器件总线PCB走线所占PCB面积小(PCB成本小)等等;

                3,用于控制功能的系统不要求高速的数据传输(适合低速数据通信);尽管IIC总线没有并行总线的数据吞吐能力,但只需要很少的信号线和连接管脚;总的效益由选择的器件和互连总线结构的种类决定。

二.IIC总线概念

        IIC总线器件通过SDA(串行数据)和SCL(串行时钟线)在器件间传递信息,每个器件都有一个唯一的地址(无论是控制器、LCD、EEPROM或键盘接口),而且都可以作为是发送器或接收器。除了发送器和接收器外,器件在执行数据传输时也可以被看作是主机或从机:主机(Master)是初始化总线的数据传输并产生允许传输的时钟信号的器件,而任何被寻址的器件都被认为是从机(Slave)。

三.使用AT24C02进行数据存储

1.开始位和停止位代码

 2.发送字节信息和接收字节信息

 

 

3.发送应答和接收应答

4.字节写

5.随机读代码

6.用AT24C02存储数据在LCD_1602显示屏显示

    使用LCD_1602进行显示,第二行显示num数字,当我们单击按钮时:

  • 点击k1,Num--

  • 点击k2,Num++

  • 点击k3,将Num的数据存储到AT24C02的地址为1的空间中

实现代码

void main(void)
{LCD_Init();LCD_ShowNum(1,1,Num,5);while(1){KeyNum = Keynum_Get();if(KeyNum == 1){Num++;LCD_ShowNum(1,1,Num,5);}if(KeyNum == 2){Num--;LCD_ShowNum(1,1,Num,5);}if(KeyNum == 3){AT24C02_WriteByte(0,Num%256);//取低八位放到0字节地址AT24C02_WriteByte(1,Num/256);//取高八位放到1字节地址LCD_ShowString(2,1,"Write OK!");delay_ms(1000);LCD_ShowString(2,1,"         ");}if(KeyNum == 4){Num = AT24C02_ReadByte(0);//读低八位(地址0的数据)Num |= AT24C02_ReadByte(1) << 8;//读高八位(地址1的数据),程序自动数据类型转化,将一个字节的返回值转换成两个字节的数据,然后左移八位变成高八位
//      Num |= (unsigned int)AT24C02_ReadByte(1) << 8;LCD_ShowNum(1,1,Num,5);LCD_ShowString(2,1,"Read OK!");delay_ms(1000);LCD_ShowString(2,1,"        ");}}
}

        这样我们每次重启时就可以看到上次存储的数字了。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/218885.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

融了超24亿一分钱不花,放银行吃利息,这家存储创企厉害了

​引言&#xff1a;AI与大模型风起云涌&#xff0c;催生了这匹存储“黑马” 【全球存储观察 &#xff5c; 科技热点关注】 这家总部设在美国的存储初创公司&#xff0c;真的赶上AI与大模型时代的风口了。Vast Data公司最新再次获得E轮融资1.18亿美元&#xff0c;但是这个存储…

【MySQL】:表的约束(上)

表的约束 一.非空约束二.default约束三.列描述四.zerofill五.主键1.单个主键2.复合主键 真正约束字段的是数据类型&#xff0c;但是数据类型约束很单一&#xff0c;需要有一些额外的约束&#xff0c;更好的保证数据的合法性&#xff0c;从业务逻辑角度保证数据的正确性。比如有…

TrustGeo代码理解(一)main.py

代码链接&#xff1a;https://github.com/ICDM-UESTC/TrustGeo 一、导入各种模块和数据库 # -*- coding: utf-8 -*- import torch.nnfrom lib.utils import * import argparse, os import numpy as np import random from lib.model import * import copy from thop import p…

sillyGirl(傻妞机器人)安装以及对接go-cqhttp(2023年12月)

目录 编写的原因 下载傻妞 注意&#xff01;&#xff01;注意&#xff01;&#xff01;&#xff01;注意&#xff01;&#xff01;&#xff01;&#xff01; 同样的下载go-cqhttp 安装以及配置 go-cqhttp 下载screen 创建go-cqhttp窗口 创建sillyGirl窗口 常见错误 编写…

Python玩转PDF:几招搞定的高效操作方法

更多资料获取 &#x1f4da; 个人网站&#xff1a;ipengtao.com 当在Python中操作PDF时&#xff0c;有几种常见的方法&#xff0c;每种方法都有其独特的优点和用例。在本文中&#xff0c;我们将深入探讨这些方法&#xff0c;并提供丰富的示例代码&#xff0c;以帮助大家更好地…

​multiprocessing.shared_memory --- 可跨进程直接访问的共享内存​

源代码: Lib/multiprocessing/shared_memory.py 3.8 新版功能. 该模块提供了一个 SharedMemory 类&#xff0c;用于分配和管理多核或对称多处理器&#xff08;SMP&#xff09;机器上进程间的共享内存。为了协助管理不同进程间的共享内存生命周期&#xff0c;multiprocessing.m…

Linux具体命令(二)

1.ls Linux的ls命令是用来列出指定目录下的文件和子目录的命令。该命令在Linux和Unix系统中广泛使用&#xff0c;是一个非常基础且重要的命令行工具。执行ls命令时&#xff0c;它会显示指定目录下的所有文件和子目录的名字&#xff0c;如果是根目录&#xff0c;则默认显示当前…

Java 多线程按顺序执行输出

比如三个线程分别打印 A&#xff0c;B&#xff0c;C&#xff0c;顺序执行5次&#xff0c;最后输出ABCABCABCABCABC 主要依赖线程的join方法 实现代码如下&#xff1a; package com.cn.springboot.bootdemo.controller;import org.springframework.web.bind.annotation.RestC…

查询指定节点和对应的父节点

查询指定节点和对应的父节点 WITH RECURSIVE cte AS (SELECT id, parent_id FROM xxx_dir WHERE id 2 -- 当前节点的 IDUNION ALLSELECT t.id, t.parent_id FROM xxx_dir t JOIN cte c ON t.id c.parent_id ) SELECT DISTINCT id, parent_id FROM cte;

「Verilog学习笔记」可置位计数器

专栏前言 本专栏的内容主要是记录本人学习Verilog过程中的一些知识点&#xff0c;刷题网站用的是牛客网 timescale 1ns/1nsmodule count_module(input clk,input rst_n,input set,input [3:0] set_num,output reg [3:0]number,output reg zero);reg [3:0] cnt ; always (posed…

3-分布式存储之Ceph

任务背景 虽然使用了分布式的glusterfs存储, 但是对于爆炸式的数据增长仍然感觉力不从心。对于大数据与云计算等技术的成熟, 存储也需要跟上步伐. 所以这次我们选用对象存储. 任务要求 1, 搭建ceph集群 2, 实现对象存储的应用 任务拆解 1, 了解ceph 2, 搭建ceph集群 3, 了…

深度学习 | Pytorch深度学习实践 (Chapter 12 Basic RNN)

十二、Basic RNN —— 实际上就是对线性层的复用 使用RNN最重要的两点&#xff1a; 了解序列数据的维度&#xff1b;循环过程所用的权重共享机制&#xff1b; 一般就是自己写个循环&#xff0c;权重层重复用就行了&#xff1b; 回顾&#xff1a;-----------------------------…

【源码复现】《Simple and Deep Graph Convolutional Networks》——GCNII模型

目录 1、论文简介2、论文核心介绍2.1、研究动机2.2、创新点2.3、具体实现2.3.1、初始残差链接2.3.2、恒等映射2.3.3、模型 3、源码复现3.1、Torch复现3.2、DGL复现 1、论文简介 论文题目——《Simple and Deep Graph Convolutional Networks》论文作者——Ming Chen&#xff0…

【模型训练】SD-大模型

【模型训练】SD-大模型

破局创新,天翼云HBlock如何以小见大、以柔克刚?

引言&#xff1a;另辟蹊径开拓创新 不走传统存储厂商的“寻常路” 【全球存储观察 &#xff5c; 科技热点关注】 在分布式块存储领域&#xff0c;大部分厂商的安装软件套件大小都在GB级。然而&#xff0c;天翼云破天荒地将存储资源盘活系统HBlock的软件安装包浓缩到了170MB&a…

linux中proc与sys的区别

在Linux系统中&#xff0c;/sys目录和/proc目录都是特殊的虚拟文件系统&#xff0c;用于提供对系统内核和设备信息的访问。 虽然它们的作用有一些重叠&#xff0c;但它们在功能和用途上有一些区别。 功能&#xff1a; /sys目录主要用于提供对设备和驱动程序的信息和配置的访…

Python-乒乓球小游戏【附完整源码】

乒乓球小游戏 乒乓球小游戏是一个简单而有趣的2D页面交互式游戏&#xff0c;玩家可以通过键盘输入来控制球拍上下移动来接球&#xff0c;从而体验乒乓球的乐趣。该游戏有单人和双人两种模式 运行效果&#xff1a; 一&#xff1a;主程序&#xff1a; import sys import cfg …

Jupyter Notebook: 交互式数据科学和编程工具

Jupyter Notebook: 功能强大的交互式编程和数据科学工具 简介 Jupyter Notebook是一个开源的Web应用程序&#xff0c;广泛用于数据分析、科学计算、可视化以及机器学习等领域。它允许创建和共享包含实时代码、方程式、可视化和解释性文本的文档。总而言之&#xff0c;我认为它…

3D Font

在游戏中使用3D文本 只需添加预制件并立即生成您的文本。 特点: *真实3D字母&#xff0c;可用作游戏对象*移动友好低聚 *VR兼容 *WebGL兼容 *30种以上不同字体 *材料和颜色可定制 WebGL演示 https://indiechest.itch.io/3d-font-engine 下载&#xff1a; ​​Unity资源商店链…

【tips】base64编码怎么反显出图片

格式 <img width"400" height"300" src"data:image/jpeg;base64,这里存放base64的图片内容/>实际的数据展示是这样的 然后把以上的文件内容放置到html文件中 最终展示样例 点击这个 展示出来是这样的