導航:首頁 > 操作系統 > 單片機iic

單片機iic

發布時間:2022-02-16 06:15:40

1. 51單片機 iic 匯流排程序,用IO口模擬和用自帶IIC口有什麼不同

其實程序是一模一樣的,唯一的區別是模擬IIC需要CPU運算,這樣就增加了單片機的運算時間,而帶IIC介面的單片機,程序還是需要的,但是IIC的運算通過集成在單片機裡面的寄存器硬體電路來運算,就像定時器電路一樣自己會運算,這樣就不要cpu來運算過程了,從而節省了時間,使cpu運算的更快。當然這樣就的多付出經濟成本哦

2. 單片機中IIC協議是

I2C(Inter-Integrated Circuit)匯流排是由PHILIPS公司開發的兩線式串列匯流排,用於連接微控制器及其外圍設備。是微電子通信控制領域廣泛採用的一種匯流排標准。它是同步通信的一種特殊形式,具有介面線少,控制方式簡單,器件封裝形式小,通信速率較高等優點。

3. 2個單片機間以IIC進行通信,它們各自的電壓為3.3v和5v,請問這是否有問題

需要轉換一下,最簡單可以使用電阻配合三極體連接,注意,有的3.3V單片機可以承受5V的輸入

4. 單片機iic是做什麼的

與使用IIC協議的晶元連接通信。單片機的IIC一般是指的單片機能夠通過編程實現硬體IIC。你說的是STM32單片機吧?
硬體IIC比模擬IIC速度更快,但是介面固定,並不是一個好選擇。用來學習還是不錯。

5. 單片機iic程序不懂給分析下啊

貼個程序給你看看,,,單片機沒有I2C匯流排介面,只能靠軟體模擬
/*程序的I2C從器件地址為1010,片選地址為000*/
#include <reg52.h>
#include <intrins.h>
#define uchar unsigned char
#define uint unsigned int
sbit SDA=P1^7;
sbit SCL=P1^6;

void Delay(uint us)
{
for(us;us>0;us--);
}

void start_iic() // 啟動I2C匯流排
{
SDA=1; // 發送起始條件數據信號,啟動時,
SCL=1; // 必需使數據線、時鍾信號線處於高電平(空閑態)
Delay(10); // 使用I2C匯流排必需考慮保持時間和建立時間,故延時
SDA=0; //產生下降沿,發送起始信號
Delay(10);
SCL=0;
}

void stop_iic()
{
SDA=0; //為產生上跳沿做准備
SCL=1; //打開時鍾線
Delay(10);
SDA=1; //產生停止信號(上跳沿有效)
Delay(10);
SCL=0; //時鍾線恢復無效態//
}

void ack_iic()
{
SDA=0; // 接受器件發送應答信號
SCL=1;
Delay(10);
SCL=0;
SDA=1; //應答信號低電平有效,故需將其重新置高電平
}

void nack_iic()
{
SDA=1; //主器件發非應答信號,通知AT24C08不再發送數據
SCL=1;
Delay(10);
SCL=0;
SDA=0; //非應答信號高電平有效,故需將其重新置低電平
}

Write_byte(uchar c)
{
uchar i;
for(i=0;i<8;i++)
{
if(c&0x80)SDA=1;
else SDA=0;
SCL=1;
Delay(10);
SCL=0; //因為當時鍾線有效是,數據線必須保持穩定的電平,
c=c<<1; //要改變SDA電平,應先將SCL拉低
}
SDA=1; //釋放I2C匯流排,准備接受應答信號
SCL=1;
Delay(10);
if(SDA==1)F0=0; //沒有接到應答位
else F0=1;
SCL=0;
}

uchar Read_byte()
{
uchar i;
uchar r=0;
SDA=1; //置數據線為輸入方式
for(i=0;i<8;i++)
{
r=r<<1;
SCL=1;
Delay(10); //保證一定的電平保持時間
if(SDA==1)r++; //從高位開始,一位一位的讀
SCL=0;
}
return r;
}

main()
{
uchar slave=0xa0; //I2C匯流排從器件地址(注意:硬體電路的接法要是片選地址為0,否則不能工作)
uchar Rslave=slave+1; //主器件發送讀控制字位元組
uchar addre=0x20; // 指定的寫數據地址
uchar wbuf=0x23; //將要寫進addre的數據
uchar rbuf; //存放讀出的數據的臨時變數
start_iic(); //產生起始信號
Write_byte(slave); //發送從器件地址
if(F0==0)return 0; //檢查應答位
Write_byte(addre); //發送目的地址
if(F0==0)return 0;
Write_byte(wbuf); //發送8為數據
if(F0==0)return 0;
stop_iic(); //停止信號

/*8位的數據發送完畢*/

Delay(1000);
start_iic();
Write_byte(slave);
if(F0==0)return 0;
Write_byte(addre);
if(F0==0)return 0;

start_iic(); //再次產生起始信號,不能少
Write_byte(Rslave); //送讀控制字
if(F0==0)return 0;
rbuf=Read_byte(); //讀出指定單元的內容
nack_iic(); //非應答信號
stop_iic();

/*8位的數據讀取完畢*/

TMOD=0x20; //串口調試
TL1=0xfd;
TH1=0xfd;
SCON=0x40;
PCON=0x00;
TR1=1;
while(1)
{
SBUF=rbuf; //放入緩沖
while(TI==0);
TI=0;
Delay(10000);
}

}

6. 什麼51單片機型號支持iic

大部分51單片機都不支持iic,好象只有C8051F410系列支持,估計這個晶元不便宜
一般都用普通IO引腳來模擬iic匯流排時序

7. 使用51單片機自帶IIC功能

他們官網上有常式的.
標准51不帶IIC,C8051是自己改的,只是用了51內核.

8. 單片機的IIC寫入位元組

呵呵,一看就知道是新手,SDA是IIC的數據傳輸介面,不把DATA穿給他,那傳給誰啊。不就SDA SDL 2個口么? 對吧,還有給你SDA上高電平是為了信號的產生,再說,這個給1 是再For循環外面啊,這么會沒了呢, 1位元組8位。都已經傳完了。你看看IIC的時序圖吧,就明白了

9. STC89c52單片機支持IIC嗎他們結合起來是怎麼工作的呢謝謝

iic不直接支持的。 但是 時序不復雜,可以用 I o口模擬。 感測器的速度不快,IIc完全可以模擬的來做。我做過一個濕度的是這樣模擬的,沒有問題。常式網上也多

10. 51單片機iic匯流排有哪些io口

IO口模擬其實就是數據口配合時鍾口一位一位地接受或發送數據,然後存到內存里。

單片機又稱單片微控制器,它不是完成某一個邏輯功能的晶元,而是把一個計算機系統集成到一個晶元上。

相當於一個微型的計算機,和計算機相比,單片機只缺少了I/O設備。概括的講:一塊晶元就成了一台計算機。它的體積小、質量輕、價格便宜、為學習、應用和開發提供了便利條件。同時,學習使用單片機是了解計算機原理與結構的最佳選擇。

單片機的使用領域已十分廣泛,如智能儀表、實時工控、通訊設備、導航系統、家用電器等。

運算器有兩個功能:

(1)執行各種算術運算。

(2)執行各種邏輯運算,並進行邏輯測試,如零值測試或兩個值的比較。

運算器所執行全部操作都是由控制器發出的控制信號來指揮的,並且,一個算術操作產生一個運算結果,一個邏輯操作產生一個判決。

閱讀全文

與單片機iic相關的資料

熱點內容
墨鏡慧眼怎麼下載廠商的app 瀏覽:59
iphone加密專線 瀏覽:491
aes產生加密文件 瀏覽:411
編程實現藍牙通信 瀏覽:766
怎麼恢復掉簽的app 瀏覽:847
伺服器部署ip地址 瀏覽:321
涉密場所周邊安全防護距離演算法 瀏覽:672
安卓fpse模擬器怎麼設置加速 瀏覽:946
建行app怎麼生成電子簽章 瀏覽:508
獲取當前時間javadate 瀏覽:73
帶密碼的wifi如何加密 瀏覽:237
伺服器怎麼變成陣列 瀏覽:718
web前端黑客技術pdf 瀏覽:71
育兒百科全書pdf 瀏覽:600
任務欄啟動命令 瀏覽:912
編譯優化等級區別 瀏覽:757
unix網關命令 瀏覽:877
想自己做網站要學編程嗎 瀏覽:597
租個伺服器開個私服需要什麼 瀏覽:273
圖片換成pdf格式 瀏覽:664