发帖
8 0 0

IIC 扫描

WangChong
论坛元老

77

主题

859

回帖

1万

积分

论坛元老

积分
11380
技术杂谈 922 8 2023-9-27 23:14:01
分享一个前一段时间自己写的一个IIC扫描的代码(逐个访问IIC地址从0x00到0xFF,如果你程序已经实现了IIC功能,则可以自己写一个扫描方法基于下面代码),可以用于扫描挂载在当前IIC串口上的设备地址,并且统计出当前有多少个IIC设备同时显示在LCD1602上。
核心代码如下,如果要移植的话请根据自己的单片机定义IIC GPIO并且初始化LCD,下面代码是基于STC89C51

  1. #include <reg52.h>
  2. #include "I2C.h"
  3. #include "LCD1602.h"
  4. #include "Delay.h"



  5. unsigned char count;

  6. //Scan IIC address
  7. void I2C_AddressScan() {
  8.     unsigned char address;
  9.     LCD_Init();

  10.     // from 0x00 to 0xFF
  11.     for (address = 0x00; address < 0xFF; address++) {
  12.         I2C_Start();
  13.         I2C_SendByte(address);
  14.         if (!I2C_ReceiveAck()) {
  15.             //delay for clearly see the address change on lcd1602
  16.             Delay(2000);
  17.             count+=1;
  18.             LCD_ShowString(1,1,"0X");
  19.             LCD_ShowHexNum(1,3,address,2);
  20.         }

  21.         // after done , the sum will be shown on the screen
  22.         if(address == 0xFE) {
  23.             LCD_ShowString(2,1, "Count:");
  24.             LCD_ShowNum(2,7,count,3);
  25.         }
  26.         I2C_Stop();
  27.     }
  28. }
复制代码
完整代码如下

上传的附件: I2C_Scanner-main.zip (420 Bytes, 下载次数: 0)


──── 0人觉得很赞 ────

使用道具 举报

2023-9-28 11:04:46
51的也可以发呀
2023-9-28 11:33:47
学习
2023-9-28 11:54:13
lsrly 发表于 2023-9-28 11:04
51的也可以发呀

移植下不就是小安派了吗
2023-9-28 12:00:27
打卡学习
2023-9-28 12:50:33
学习了
2023-9-28 20:28:07
2023-12-3 22:55:38
不错,可以找从机地址
2023-12-30 18:34:03
您需要登录后才可以回帖 立即登录
高级模式
返回
统计信息
  • 会员数: 28247 个
  • 话题数: 40195 篇