TDA2030功放電路圖 電動(dòng)車(chē)充電器電路圖 電子電路 功放電路 電子制作 集成塊資料 電子報 pcb 變壓器 元器件知識 逆變器電路圖 電路圖 開(kāi)關(guān)電源電路圖 傳感器技術(shù) led 電磁兼容
電子電路圖
當前位置: 首頁(yè) > 電子電路 > 設計編程

單片機的I2C通信設計

時(shí)間:2019-12-05 09:15:30來(lái)源:電子發(fā)燒友 作者:admin 點(diǎn)擊:
I2C每一位信號的時(shí)序流程,而I2C通信在字節級的傳輸中,也有固定的時(shí)序要求。I2C通信的起始信號(Start)后,首先要發(fā)送一個(gè)從機的地址,這個(gè)地址一共有 7位,緊跟著(zhù)的第 8

I2C每一位信號的時(shí)序流程,而I2C通信在字節級的傳輸中,也有固定的時(shí)序要求。I2C通信的起始信號(Start)后,首先要發(fā)送一個(gè)從機的地址,這個(gè)地址一共有 7位,緊跟著(zhù)的第 8 位是數據方向位(R/W),“0”表示接下來(lái)要發(fā)送數據(寫(xiě)),‘“1”表示接下來(lái)是請求數據(讀)。

我們知道,打電話(huà)的時(shí)候,當撥通電話(huà),接聽(tīng)方撿起電話(huà)肯定要回一個(gè)“喂”,這就是告訴撥電話(huà)的人,這邊有人了。同理,這個(gè)第九位 ACK 實(shí)際上起到的就是這樣一個(gè)作用。當我們發(fā)送完了這 7 位地址和 1 位方向后,如果發(fā)送的這個(gè)地址確實(shí)存在,那么這個(gè)地址的器件應該回應一個(gè) ACK(拉低 SDA 即輸出“0”),如果不存在,就沒(méi)“人”回應 ACK(SDA將保持高電平即“1”)。

那我們寫(xiě)一個(gè)簡(jiǎn)單的程序,訪(fǎng)問(wèn)一下我們板子上的 EEPROM 的地址,另外再寫(xiě)一個(gè)不存在的地址,看看它們是否能回一個(gè) ACK,來(lái)了解和確認一下這個(gè)問(wèn)題。

我們板子上的 EEPROM 器件型號是 24C02,在 24C02 的數據手冊 3.6 節中可查到,24C02的 7 位地址中,其中高 4 位是固定的 0b1010,而低 3 位的地址取決于具體電路的設計,由芯片上的 A2、A1、A0 這 3 個(gè)引腳的實(shí)際電平?jīng)Q定,來(lái)看一下我們的 24C02 的電路圖,它和24C01 的原理圖完全一樣,如圖 14-4 所示。

<a href=http://0u2438cq.cn/tags-etagid15-0.html target=_blank class=infotextkey>單片機</a>的I2C通信設計

圖 14-4 24C02 原理圖

從圖 14-4 可以看出來(lái),我們的 A2、A1、A0 都是接的 GND,也就是說(shuō)都是 0,因此 24C02的 7 位地址實(shí)際上是二進(jìn)制的 0b1010000,也就是 0x50。我們用 I2C 的協(xié)議來(lái)尋址 0x50,另外再尋址一個(gè)不存在的地址 0x62,尋址完畢后,把返回的 ACK 顯示到我們的 1602 液晶上,大家對比一下。

/***************************Lcd1602.c 文件程序源代碼*****************************/

#include

#define LCD1602_DB P0

sbit LCD1602_RS = P1^0;

sbit LCD1602_RW = P1^1;

sbit LCD1602_E = P1^5;

/* 等待液晶準備好 */

void LcdWaitReady(){

unsigned char sta;

LCD1602_DB = 0xFF;

LCD1602_RS = 0;

LCD1602_RW = 1;

do {

LCD1602_E = 1;

sta = LCD1602_DB; //讀取狀態(tài)字

LCD1602_E = 0;

} while (sta & 0x80); //bit7 等于 1 表示液晶正忙,重復檢測直到其等于 0 為止

}

/* 向 LCD1602 液晶寫(xiě)入一字節命令,cmd-待寫(xiě)入命令值 */

void LcdWriteCmd(unsigned char cmd){

LcdWaitReady();

LCD1602_RS = 0;

LCD1602_RW = 0;

LCD1602_DB = cmd;

LCD1602_E = 1;

LCD1602_E = 0;

}

/* 向 LCD1602 液晶寫(xiě)入一字節數據,dat-待寫(xiě)入數據值 */

void LcdWriteDat(unsigned char dat){

LcdWaitReady();

LCD1602_RS = 1;

LCD1602_RW = 0;

LCD1602_DB = dat;

LCD1602_E = 1;

LCD1602_E = 0;

}

/* 設置顯示 RAM 起始地址,亦即光標位置,(x,y)-對應屏幕上的字符坐標 */

void LcdSetCursor(unsigned char x, unsigned char y){

unsigned char addr;

if (y == 0){ //由輸入的屏幕坐標計算顯示 RAM 的地址

addr = 0x00 + x; //第一行字符地址從 0x00 起始

}else{

addr = 0x40 + x; //第二行字符地址從 0x40 起始

}

LcdWriteCmd(addr | 0x80); //設置 RAM 地址

}

/* 在液晶上顯示字符串,(x,y)-對應屏幕上的起始坐標,str-字符串指針 */

void LcdShowStr(unsigned char x, unsigned char y, unsigned char *str){

LcdSetCursor(x, y);//設置起始地址

while (*str != ‘’){ //連續寫(xiě)入字符串數據,直到檢測到結束符

LcdWriteDat(*str++);

}

}

/* 初始化 1602 液晶 */

void InitLcd1602(){

LcdWriteCmd(0x38); //16*2 顯示,5*7 點(diǎn)陣,8 位數據接口

LcdWriteCmd(0x0C); //顯示器開(kāi),光標關(guān)閉

LcdWriteCmd(0x06); //文字不動(dòng),地址自動(dòng)+1

LcdWriteCmd(0x01); //清屏

}

/*****************************main.c 文件程序源代碼******************************/

#include

#include

#define I2CDelay() {_nop_();_nop_();_nop_();_nop_();}

sbit I2C_SCL = P3^7;

sbit I2C_SDA = P3^6;容-源-電-子-網(wǎng)-為你提供技術(shù)支持

本文地址:http://0u2438cq.cn/dz/22/15755085833520.shtml


本文標簽:


.
123下一頁(yè)尾頁(yè)
頂一下
0%
返回首頁(yè)
0
0%

------分隔線(xiàn)----------------------------

    猜你感興趣:

  • 新手教程:?jiǎn)纹瑱C的學(xué)習實(shí)踐步驟

    運用單片機便是了解單片機硬件結構,以及內部資源的運用,在匯編或C語(yǔ)言中學(xué)會(huì )各種功用的初始化設置,以及完成各種功用的程序編制。 運用按鈕輸入信號,發(fā)光二極管顯現輸出
    關(guān)鍵詞:51單片機PIC單片機單片機   所屬欄目:設計編程

  • 應用單片機實(shí)現CAN總線(xiàn)與LIN總線(xiàn)間的傳輸設計方案

    現場(chǎng)總線(xiàn)技術(shù)已經(jīng)廣泛應用于工業(yè)控制中,尤其是CAN(Controler Area Nerwork)總線(xiàn)由于具有可靠性高、成本低、容易實(shí)現等優(yōu)點(diǎn),在現場(chǎng)總線(xiàn)實(shí)際工程應用中占有了較大份額。
    關(guān)鍵詞:單片機   所屬欄目:設計編程

  • 學(xué)習單片機可不可以只用軟件仿真而不做實(shí)驗

    我的答案是:不可以原因如下:一、軟件仿真多用于教學(xué),把更多精力用在軟件的實(shí)現上由于學(xué)生學(xué)習時(shí)間寶貴,焊接一套單片機實(shí)驗板又比較花時(shí)間,并且實(shí)驗項目太多,所以為了
    關(guān)鍵詞:PIC單片機51單片機單片機   所屬欄目:設計編程

  • 怎樣選擇最適合的單片機

    對于新手來(lái)說(shuō),首先根據自己學(xué)的什么樣單片機就選什么類(lèi)型的單片機,熟悉什么類(lèi)型的單片機就選什么類(lèi)型的單片機。因為單片機不僅要設計電路,還要設計控制軟件。選自己熟悉的單片機上手最快,也最容易獲得成功。下面介紹如何選擇最適合的單片機。
    關(guān)鍵詞:   所屬欄目:設計編程

  • 單片機晶振的作用是什么

    單片機晶振的作用是什么
    在初學(xué)單片機的時(shí)候,總是伴隨很多有關(guān)于晶振的問(wèn)題,其實(shí)晶振就是如同人的心臟,是血液的脈搏,把單片機的晶振問(wèn)題搞明白了,51單片機的其他問(wèn)題
    關(guān)鍵詞:51單片機PIC單片機單片機   所屬欄目:設計編程

  • 用keil軟件編寫(xiě)單片機程序的步驟

    Keil單片機編程軟件Keil C51是單片機C語(yǔ)言軟件開(kāi)發(fā)系統,與匯編相比,C語(yǔ)言在功能上、結構性、可讀性、可維護性上有明顯的優(yōu)勢,因而易學(xué)易用。Keil提供了包括C編譯器、宏匯
    關(guān)鍵詞:51單片機PIC單片機   所屬欄目:設計編程

  • 詳解51單片機運行過(guò)程

    詳解51單片機運行過(guò)程 注:1.ROM:只讀存儲器,單片機的只讀存儲區大多用于存儲程序固又稱(chēng)程序存儲器。51單片機是EPROM,所謂的EPROM是可擦除的只
    關(guān)鍵詞:   所屬欄目:設計編程

  • pic單片機和c51有什么區別

    pic單片機和c51有什么區別(區別1)總線(xiàn)結構:MCS-51單片機的總線(xiàn)結構是馮-諾依曼型,計算機在同一個(gè)存儲空間取指令和數據,兩者不能同時(shí)進(jìn)行;而PIC單片機的總線(xiàn)結構是哈佛結構
    關(guān)鍵詞:單片機PIC單片機51單片機   所屬欄目:設計編程

  • 51單片機出現故障及解決辦法

    實(shí)例分析51單片機出現故障及解決辦法。詳細如下:
    故障現象:做了一個(gè)單片機溫度監測系統,仿真機上一切正常,燒寫(xiě)芯片無(wú)法工作。相關(guān)電路框圖: 用51做處理器,外圍電路如
    關(guān)鍵詞:單片機51單片機   所屬欄目:設計編程

  • PIC單片機匯編語(yǔ)言指令詳解

    PIC單片機匯編語(yǔ)言指令詳解
    pic單片機為最常用單片機之一,許多程序均基于pic單片機進(jìn)行開(kāi)發(fā)。因此,熟練pic單片機編程尤為重要。為保證大家能準確、熟練掌握pic單片機的使
    關(guān)鍵詞:PIC單片機單片機   所屬欄目:設計編程

  • 三種51單片機程序下載方法介紹

    三種51單片機程序下載方法介紹
    一般只能通過(guò)三種方式下載程序到單片機中:1.JTAG 2.ISP 3.IAP1.JTAG要使用JTAG方式下載程序,不管是使用J-LINK、ULINK、ST-LINK,只需要把
    關(guān)鍵詞:PIC單片機51單片機單片機   所屬欄目:設計編程

  • AT89C51單片機的RS232-GPIB控制器設計

    越來(lái)越多的測量?jì)x器提供GPIB(General Purpose Intefface Bus)總線(xiàn)接口,通過(guò)該總線(xiàn)可以方便快捷地連接帶有GPIB接口的儀器及計算機,組成一個(gè)GPlB網(wǎng)絡(luò )。GPIB設備與計算機連
    關(guān)鍵詞:PIC單片機51單片機單片機   所屬欄目:設計編程

  • 單片機晶振的作用以及原理解析

    每個(gè)單片機系統里都有晶振,全程是叫晶體震蕩器,在單片機系統里晶振的作用非常大,他結合單片機內部的電路,產(chǎn)生單片機所必須的時(shí)鐘頻率,單片機的一切指令的執行都是建立
    關(guān)鍵詞:51單片機PIC單片機單片機   所屬欄目:設計編程

  • 數字電位器在單片機控制變頻器中的應用

    引言變頻調速作為交流電機調速的主要手段已經(jīng)在工業(yè)領(lǐng)域中應用的十分廣泛,其具有的調速范圍寬、穩速精度高、動(dòng)態(tài)響應快、適用范圍廣、運行可靠等技術(shù)性能,已逐步取代直流
    關(guān)鍵詞:單片機變頻器   所屬欄目:設計編程

  • 如何用單片機制作電子密碼鎖電路

    電子密碼鎖按照輸入密碼方式的不同可分為好多種,其中最常用的一種是用數字鍵盤(pán)輸入密碼的電子密碼鎖。這一講主要介紹用ATmega8和LCD1602液晶顯示器等組成的電子密碼鎖,這
    關(guān)鍵詞:單片機   所屬欄目:設計編程

  • 單片機控制LED亮滅電路

    1.實(shí)驗任務(wù)如圖所示,監視開(kāi)關(guān)K1(接在P3.0端口上),用發(fā)光二極管L1(接在單片機P1.0端口上)顯示開(kāi)關(guān)狀態(tài),如果開(kāi)關(guān)合上,L1亮,開(kāi)關(guān)打開(kāi),L1熄滅。2.電路原理圖3.系統
    關(guān)鍵詞:單片機LEDLED電路圖   所屬欄目:設計編程

  • 超詳細的FPGA芯片解讀(圖文)

    近日,有媒體報道稱(chēng),北京微電子技術(shù)研究所日前成功研制出國內首個(gè)自主可控的宇航用千萬(wàn)門(mén)級高性能高可靠FPGA(現場(chǎng)可編程門(mén)陣列)芯片。FPGA一直是國內的短板,市場(chǎng)基本被
    關(guān)鍵詞:單片機   所屬欄目:設計編程

  • 單片機要這么學(xué)?八條謹記!

    怎么學(xué)單片機?也?吹接腥苏f(shuō)學(xué)了好幾個(gè)月可就是沒(méi)有什么進(jìn)展。當然,受限于每個(gè)人受到的教育水平不同和個(gè)人理解能力的差異,學(xué)習起來(lái)會(huì )有快慢之分,但我感覺(jué)最重的就是學(xué)
    關(guān)鍵詞:單片機   所屬欄目:設計編程

  • 單片機的特殊功能寄存器(圖文)

    在單片機中有一些獨立的存儲單元是用來(lái)控制這些器件的,被稱(chēng)之為特殊功能寄存器(SFR)! <特殊功能寄存器地址映象表(一)>  <特殊功能寄存器地址映象表(二)>  <
    關(guān)鍵詞:單片機寄存器   所屬欄目:設計編程

  • 單片機在倒立擺控制系統的應用

    倒立擺作為一種典型的控制系統實(shí)驗裝置,具有非線(xiàn)性、自然不穩定等特性,常用來(lái)作為檢驗某種控制理論或方法是否合理的典型方案。一階倒立擺系統能用多種理論和方法來(lái)實(shí)現其
    關(guān)鍵詞:單片機   所屬欄目:設計編程

發(fā)表評論
請自覺(jué)遵守互聯(lián)網(wǎng)相關(guān)的政策法規,嚴禁發(fā)布色情、暴力、反動(dòng)的言論。
表情:
名稱(chēng): E-mail: 驗證碼: 匿名發(fā)表
發(fā)布文章,推廣自己產(chǎn)品。
国产成人精品免高潮在线观看_免费人成视频观看18_亚洲AV乱码一区二区三区林ゆな_91精品国产91久久久