51微控制器學習之IIC匯流排

2021-09-26 14:58:41 字數 2195 閱讀 4826

核心思想:主機與從機之間的資訊交換。

主機傳送訊息,從機要回應一下。

從機傳送訊息,主機也要回應。

注意點:sda線和scl線都是預設高電平。即高電平為釋放狀態。

#include

#include

typedef

unsigned

char u8;

typedef

unsigned

int u16;

void

delay10ms

(void

)//誤差 0us

void

delay1ms

(void

)//誤差 0us

sbit lsa=p2^2;

sbit lsb=p2^3;

sbit lsc=p2^4;

sbit k1=p1^0;

sbit k2=p1^1;

sbit k3=p1^2;

sbit k4=p1^3;

//定義按鍵埠

u8 sj=0;

u8 disp[8]

;u8 code smgduan[17]

=;//顯示0~f的值

void

keyjud()

while

(!k1);}

if(k2==0)

while

(!k2);}

if(k3==0)

while

(!k3);}

if(k4==0)

while

(!k4);}

}void

sjpros()

}void

digdisplay()

p0=smgduan[disp[

7-i]];

//傳送段碼

delay1ms()

;//間隔一段時間掃瞄

p0=0x00

;//消隱}}

void

main()

}```

#include

void

delay10us

(void

)//誤差 0us

void

iicstart()

void

iicstop()

unsigned

char

iicsend_byte

(unsigned

char date)

sda=1;

delay10us()

; scl=1;

delay10us()

;while

(sda)

} scl=0;

delay10us()

;return1;

}unsigned

char

iicread_byte()

return date;

}void

write

(unsigned

char date,

unsigned

char addr)

unsigned

char

read

(unsigned

char addr)

#ifndef __i2c_h__

#define __i2c_h__

#include

sbit scl=p2^1;

sbit sda=p2^0;

void

iicstart()

;void

iicstop()

;unsigned

char

iicsend_byte

(unsigned

char date)

;unsigned

char

iicread_byte()

;void

write

(unsigned

char date,

unsigned

char addr)

;unsigned

char

read

(unsigned

char addr)

;#endif

51微控制器 IIC

iic inter intergrated circuit 匯流排是一種由philips公司開發的兩線式序列匯流排。用於連線微控制器及其外圍裝置。iic只需兩根線sda 資料線 scl 時鐘 iic支援多主控,當然,在任何時間點上只能有乙個主控,而spi是一主多從。iic各種被控制電路均併聯在這條匯...

微控制器(六) IIC匯流排

iic是積體電路匯流排,它是一種序列匯流排,iic只有兩根雙向訊號線,一根資料線sda,一根訊號線scl。要掌握iic匯流排通訊協議,需要掌握以下六點 1.起始訊號。2.終止訊號。3.寫資料。4.讀資料。5.應答訊號。6.非應答訊號。下面我們來看看他們各自的時序。由此我們可以寫出他的程式 起始 vo...

郭天祥51微控制器教程 IIC匯流排

include define uchar unsigned char sbit sda p2 0 資料匯流排 sbit scl p2 1 時鐘匯流排 void delay 大概延時5us void delay1 uchar x 這是乙個寫資料的整體過程 void wirte add uchar ad...