本文主要是給I2C代碼及自己做出來(lái)的視頻給大家看;主要用AT24C02來(lái)檢測(cè)是否能用;
下面是我寫(xiě)i2c顯示的代碼,我建了個(gè)頭文件,方便具有i2c通信設(shè)備的使用,我現(xiàn)在做的mpu6050;也是直接調(diào)用這個(gè)程序就可以用了;
at24c連接圖片那里是接了P2^0,1,自己改一下就好
at24c連接圖片
單片機(jī)源碼:
#ifndef __I2C_H__//頭文件格式 #define __I2C_H__ #define uchar unsigned char #define uint unsigned int sbit sda=P2^2; sbit scl=P2^3; /*延時(shí)約5us函數(shù)*/ void delay() {;;} /*I2C1啟動(dòng)信號(hào)函數(shù)*/ void I2Cstart() { sda=1; delay(); scl=1; delay(); sda=0; delay(); } /*I2C停止信號(hào)函數(shù)*/ void I2Cstop() { sda=0; delay(); scl=1; delay(); sda=1; delay(); } /*I2C應(yīng)答信號(hào)函數(shù)*/ void I2Crespons() { uchar i; scl=1; delay(); while((sda==1)&&(i<250)) //加個(gè)延時(shí)退出,防止沒(méi)應(yīng)答進(jìn)入死循環(huán) i++; scl=0; delay(); } /*I2C初始化信號(hào)函數(shù)*/ void I2Cinit() { sda=1; delay(); scl=1; delay(); } /*I2C向從機(jī)寫(xiě)一個(gè)字節(jié)信號(hào)函數(shù)*/ 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是進(jìn)位標(biāo)志 delay(); scl=1; delay(); } scl=0; delay(); sda=1; delay(); } /*I2C向從機(jī)讀一個(gè)字節(jié)信號(hào)函數(shù)*/ 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向某個(gè)從機(jī)的某個(gè)地址寫(xiě)一個(gè)字節(jié)數(shù)據(jù)信號(hào)函數(shù)*/ void I2Cwrite_add(uchar salveaddress,uchar address,uchar date) { I2Cstart(); I2Cwrite_byte(salveaddress); //發(fā)送設(shè)備地址+寫(xiě)信號(hào) I2Crespons(); I2Cwrite_byte(address); //發(fā)送存儲(chǔ)單元地址 I2Crespons(); I2Cwrite_byte(date); //發(fā)送數(shù)據(jù) I2Crespons(); I2Cstop(); } /*I2C向某個(gè)從機(jī)的某個(gè)地址讀一個(gè)字節(jié)數(shù)據(jù)信號(hào)函數(shù)*/ uchar I2Cread_add(uchar salveaddress,uchar address) { uchar date; I2Cstart(); I2Cwrite_byte(salveaddress); //發(fā)送設(shè)備地址+寫(xiě)信號(hào) I2Crespons(); I2Cwrite_byte(address); //發(fā)送存儲(chǔ)單元地址 I2Crespons(); I2Cstart(); I2Cwrite_byte(salveaddress+1); //發(fā)送設(shè)備地址+讀信號(hào) I2Crespons(); date=I2Cread_byte(); //讀取數(shù)據(jù) I2Cstop(); return date; } #endif
全部資料51hei下載地址:
i2c頭文件及用at24c02測(cè)試I2C通信.zip
(945.78 KB, 下載次數(shù): 44)
2019-3-11 00:12 上傳
點(diǎn)擊文件名下載附件
|