分享一个前一段时间自己写的一个IIC扫描的代码(逐个访问IIC地址从0x00到0xFF,如果你程序已经实现了IIC功能,则可以自己写一个扫描方法基于下面代码),可以用于扫描挂载在当前IIC串口上的设备地址,并且统计出当前有多少个IIC设备同时显示在LCD1602上。
核心代码如下,如果要移植的话请根据自己的单片机定义IIC GPIO并且初始化LCD,下面代码是基于STC89C51
- #include <reg52.h>
- #include "I2C.h"
- #include "LCD1602.h"
- #include "Delay.h"
- unsigned char count;
- //Scan IIC address
- void I2C_AddressScan() {
- unsigned char address;
- LCD_Init();
- // from 0x00 to 0xFF
- for (address = 0x00; address < 0xFF; address++) {
- I2C_Start();
- I2C_SendByte(address);
- if (!I2C_ReceiveAck()) {
- //delay for clearly see the address change on lcd1602
- Delay(2000);
- count+=1;
- LCD_ShowString(1,1,"0X");
- LCD_ShowHexNum(1,3,address,2);
- }
- // after done , the sum will be shown on the screen
- if(address == 0xFE) {
- LCD_ShowString(2,1, "Count:");
- LCD_ShowNum(2,7,count,3);
- }
- I2C_Stop();
- }
- }
复制代码 完整代码如下
I2C_Scanner-main.zip
(420 Bytes, 下载次数: 0)
|