標題: 基于51單片機的I2C通信及AT24C02通信檢測(數碼管顯示)程序 [打印本頁]
作者: 末代皇妃 時間: 2019-3-11 00:17
標題: 基于51單片機的I2C通信及AT24C02通信檢測(數碼管顯示)程序
本文主要是給I2C代碼及自己做出來的視頻給大家看;主要用AT24C02來檢測是否能用;
下面是我寫i2c顯示的代碼,我建了個頭文件,方便具有i2c通信設備的使用,我現在做的mpu6050;也是直接調用這個程序就可以用了;
at24c連接圖片那里是接了P2^0,1,自己改一下就好
0.png (361.86 KB, 下載次數: 50)
下載附件
2019-3-11 00:43 上傳
b674cfd7efeb7af79232ae033456621.jpg (96.69 KB, 下載次數: 56)
下載附件
at24c連接圖片
2019-3-11 00:14 上傳
單片機源碼:
#ifndef __I2C_H__//頭文件格式
#define __I2C_H__
#define uchar unsigned char
#define uint unsigned int
sbit sda=P2^2;
sbit scl=P2^3;
/*延時約5us函數*/
void delay()
{;;}
/*I2C1啟動信號函數*/
void I2Cstart()
{
sda=1;
delay();
scl=1;
delay();
sda=0;
delay();
}
/*I2C停止信號函數*/
void I2Cstop()
{
sda=0;
delay();
scl=1;
delay();
sda=1;
delay();
}
/*I2C應答信號函數*/
void I2Crespons()
{
uchar i;
scl=1;
delay();
while((sda==1)&&(i<250)) //加個延時退出,防止沒應答進入死循環
i++;
scl=0;
delay();
}
/*I2C初始化信號函數*/
void I2Cinit()
{
sda=1;
delay();
scl=1;
delay();
}
/*I2C向從機寫一個字節信號函數*/
void I2Cwrite_byte(uchar date)
{
uchar i,temp;
temp=date;
for(i=0;i<8;i++)
{
temp=temp<<1;
scl=0;
delay();
sda=CY; //CY是進位標志
delay();
scl=1;
delay();
}
scl=0;
delay();
sda=1;
delay();
}
/*I2C向從機讀一個字節信號函數*/
uchar I2Cread_byte()
{
uchar i,k;
scl=0;
delay();
sda=1;
delay();
for(i=0;i<8;i++)
{
scl=1;
delay();
k=(k<<1)|sda;
scl=0;
delay();
}
return k;
}
/*I2C向某個從機的某個地址寫一個字節數據信號函數*/
void I2Cwrite_add(uchar salveaddress,uchar address,uchar date)
{
I2Cstart();
I2Cwrite_byte(salveaddress); //發送設備地址+寫信號
I2Crespons();
I2Cwrite_byte(address); //發送存儲單元地址
I2Crespons();
I2Cwrite_byte(date); //發送數據
I2Crespons();
I2Cstop();
}
/*I2C向某個從機的某個地址讀一個字節數據信號函數*/
uchar I2Cread_add(uchar salveaddress,uchar address)
{
uchar date;
I2Cstart();
I2Cwrite_byte(salveaddress); //發送設備地址+寫信號
I2Crespons();
I2Cwrite_byte(address); //發送存儲單元地址
I2Crespons();
I2Cstart();
I2Cwrite_byte(salveaddress+1); //發送設備地址+讀信號
I2Crespons();
date=I2Cread_byte(); //讀取數據
I2Cstop();
return date;
}
#endif
全部資料51hei下載地址:
i2c頭文件及用at24c02測試I2C通信.zip
(945.78 KB, 下載次數: 44)
2019-3-11 00:12 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
作者: AKA123 時間: 2020-4-23 20:18
可以使用,已學習
| 歡迎光臨 (http://m.raoushi.com/bbs/) |
Powered by Discuz! X3.1 |