0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

單片機(jī)模擬I2C總線及24C02讀寫(xiě)實(shí)例(c源代碼),24C02 read / write process

454398 ? 2018-09-20 19:41 ? 次閱讀

單片機(jī)模擬I2C總線及24C02讀寫(xiě)實(shí)例(c源代碼),24C02 read / write process

關(guān)鍵字:單片機(jī)模擬I2C總線及24C02讀寫(xiě)實(shí)例(c源代碼)

單片機(jī)模擬I2C總線及24C02(I2C EEPROM)讀寫(xiě)實(shí)例(c源代碼)
/* 51系列單片機(jī)在使用時(shí),有時(shí)需要模擬I2C總線, */
/* 這里舉出一個(gè)實(shí)例(讀寫(xiě)串行EEPROM芯片at2402) */

/************************************************************************/
/* Name:AT24C02存儲(chǔ)器的讀寫(xiě)程序,用到I2C總線,含相對(duì)獨(dú)立的I2C總線讀寫(xiě)函數(shù) */
/* Language: C51單片機(jī)編程語(yǔ)言 */
/* Platform: Win98,Intel Celeron 433 Processor,偉福仿真器仿真8751 */
/* Author: StephenZhu javasdk@163.com */
/* Date: 2003年5月21日,5月22日,5月29日 */
/* Version: 1.1.1 */
/* Others: None */
/************************************************************************/
#include
#include
#include
#define DELAY_TIME 60 /*經(jīng)實(shí)驗(yàn),不要小于50!否則可能造成時(shí)序混亂*/
#define TRUE 1
#define FALSE 0
sbit SCL=P1^7;/*假設(shè)由P1.7和P1.6控制*/
sbit SDA=P1^6;
/********** Function Definition函數(shù)定義 ************/
void DELAY(unsigned int t) /*延時(shí)函數(shù)*/
{
while(t!=0)
t--;
}
void I2C_Start(void)
{
/*啟動(dòng)I2C總線的函數(shù),當(dāng)SCL為高電平時(shí)使SDA產(chǎn)生一個(gè)負(fù)跳變*/
SDA=1;
SCL=1;
DELAY(DELAY_TIME);
SDA=0;
DELAY(DELAY_TIME);
SCL=0;
DELAY(DELAY_TIME);
}
void I2C_Stop(void)
{
/*終止I2C總線,當(dāng)SCL為高電平時(shí)使SDA產(chǎn)生一個(gè)正跳變*/
SDA=0;
SCL=1;
DELAY(DELAY_TIME);
SDA=1;
DELAY(DELAY_TIME);
SCL=0;
DELAY(DELAY_TIME);
}
void SEND_0(void) /* SEND ACK */
{
/*發(fā)送0,在SCL為高電平時(shí)使SDA信號(hào)為低*/
SDA=0;
SCL=1;
DELAY(DELAY_TIME);
SCL=0;
DELAY(DELAY_TIME);
}
void SEND_1(void)
{
/*發(fā)送1,在SCL為高電平時(shí)使SDA信號(hào)為高*/
SDA=1;
SCL=1;
DELAY(DELAY_TIME);
SCL=0;
DELAY(DELAY_TIME);
}
bit Check_AcknowLEDge(void)
{
/*發(fā)送完一個(gè)字節(jié)后檢驗(yàn)設(shè)備的應(yīng)答信號(hào)*/
SDA=1;
SCL=1;
DELAY(DELAY_TIME/2);
F0=SDA;
DELAY(DELAY_TIME/2);
SCL=0;
DELAY(DELAY_TIME);
if(F0==1)
return FALSE;
return TRUE;
}
void WriteI2CByte(char b)reentrant
{
/*向I2C總線寫(xiě)一個(gè)字節(jié)*/
char i;
for(i=0;i<8;i++)
if((b< SEND_1();
else
SEND_0();
}

char ReadI2CByte(void)reentrant
{
/*從I2C總線讀一個(gè)字節(jié)*/
char b=0,i;
for(i=0;i<8;i++)
{
SDA=1; /*釋放總線*/
SCL=1; /*接受數(shù)據(jù)*/
DELAY(10);
F0=SDA;
DELAY(10);
SCL=0;
if(F0==1)
{
b=b<<1;
b=b|0x01;
}
else
b=b<<1;
}
return b;
}
/**********以下為讀寫(xiě)24c02的函數(shù)**********/見(jiàn)下一頁(yè)面

下一頁(yè)
聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
收藏 人收藏

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    單片機(jī)實(shí)例項(xiàng)目:AT24C02EEPROM存儲(chǔ)器

    單片機(jī)實(shí)例項(xiàng)目:AT24C02EEPROM存儲(chǔ)器,推薦下載!
    發(fā)表于 06-03 20:50

    【RA-Eco-RA4M2開(kāi)發(fā)板評(píng)測(cè)】I2C讀取EEPROM(二)

    就行。 值得注意的是,這里的從機(jī)地址是7位,代碼中自動(dòng)左移了。 然后讓軟件自動(dòng)生成配置代碼即可。 6.2 基于I2C的EEPROM讀寫(xiě)實(shí)現(xiàn)
    發(fā)表于 04-28 23:14

    基于APM32F407如何制作I2C EEPROM(AT24C02型號(hào))的MDK-Keil下載算法

    基于APM32F407如何制作I2C EEPROM(AT24C02型號(hào))的Keil下載算法,這樣在我們下載代碼時(shí)可以一鍵把數(shù)據(jù)燒錄到EEPROM中。
    的頭像 發(fā)表于 04-11 11:06 ?1100次閱讀
    基于APM32F407如何制作<b class='flag-5'>I2C</b> EEPROM(AT<b class='flag-5'>24C02</b>型號(hào))的MDK-Keil下載算法

    I2C總線復(fù)用

    帝晶智慧屏I2C總線復(fù)用
    的頭像 發(fā)表于 03-11 17:20 ?1341次閱讀

    I2C總線通信原理 如何設(shè)計(jì)I2C總線電路

    I2C總線通信原理 I2C(Inter-Integrated Circuit)總線是一種用于集成電路之間進(jìn)行通信的串行通信協(xié)議。它最早由飛利浦公司(現(xiàn)被恩智浦電子收購(gòu))于1982年推出
    的頭像 發(fā)表于 01-31 15:01 ?984次閱讀

    I2C總線的優(yōu)缺點(diǎn)分析

    設(shè)備之間的通信,這大大減少了所需的引腳數(shù)量,降低了硬件成本。此外,由于其簡(jiǎn)單性,I2C總線也易于實(shí)現(xiàn)和維護(hù)。 2. 多主機(jī)和多從機(jī)支持 I2C
    的頭像 發(fā)表于 01-17 15:50 ?1038次閱讀

    I2C總線與Arduino的接口示例

    在現(xiàn)代電子設(shè)計(jì)中,I2C總線因其簡(jiǎn)單性和靈活性而廣受歡迎。它允許多個(gè)設(shè)備共享同一通信線路,從而節(jié)省空間和成本。Arduino,作為一個(gè)多功能的微控制器平臺(tái),自然也支持I2C通信。 I2C
    的頭像 發(fā)表于 01-17 15:34 ?1456次閱讀

    I2C總線的工作模式介紹

    在現(xiàn)代電子系統(tǒng)中,I2C總線作為一種多主機(jī)、多從機(jī)的串行通信協(xié)議,扮演著至關(guān)重要的角色。它允許多個(gè)設(shè)備共享同一總線,進(jìn)行數(shù)據(jù)傳輸,從而簡(jiǎn)化了系統(tǒng)設(shè)計(jì)并降低了成本。
    的頭像 發(fā)表于 01-17 15:32 ?881次閱讀

    I2C總線單片機(jī)的連接

    在現(xiàn)代電子系統(tǒng)中,單片機(jī)(MCU)是核心控制單元,而I2C總線作為一種多主機(jī)、多從機(jī)的串行通信協(xié)議,因其簡(jiǎn)單、高效和節(jié)省引腳的特性而被廣泛應(yīng)用于各種電子設(shè)備中。
    的頭像 發(fā)表于 01-17 15:18 ?1092次閱讀

    I2C總線應(yīng)用實(shí)例分析

    。I2C總線使用兩條線進(jìn)行通信:數(shù)據(jù)線(SDA)和時(shí)鐘線(SCL)。這種雙線制設(shè)計(jì)使得I2C總線能夠在多個(gè)設(shè)備之間共享,而不需要為每個(gè)設(shè)備單獨(dú)布線。 應(yīng)用
    的頭像 發(fā)表于 01-17 15:09 ?674次閱讀

    I2C總線與SPI總線的比較

    在現(xiàn)代電子系統(tǒng)中,微控制器與各種外設(shè)之間的通信是必不可少的。I2C和SPI是兩種流行的串行通信協(xié)議,它們各自具有獨(dú)特的特點(diǎn)和應(yīng)用場(chǎng)景。 I2C總線 I2C是一種多主機(jī)、多從
    的頭像 發(fā)表于 01-17 15:08 ?848次閱讀

    《DNESP32S3使用指南-IDF版_V1.6》第二十章 IIC_EEPROM實(shí)驗(yàn)

    24C02設(shè)備的讀操作地址為:0xA1;寫(xiě)操作地址為:0xA0。在前面已經(jīng)說(shuō)過(guò)IIC總線的基本讀寫(xiě)操作,那么我們就可以基于IIC總線的時(shí)序的上,理解
    發(fā)表于 12-21 09:31

    【AG32開(kāi)發(fā)板體驗(yàn)連載】智能蒸烤箱--AG32VF407I2C總線測(cè)試

    TestI2cPROM() // Testing AT24C02等五個(gè)主要函數(shù)組成,通過(guò)I2C總線實(shí)現(xiàn)對(duì)24LC02B的
    發(fā)表于 11-20 23:15

    RISC V的I2C操作

    (system_i2c_0_io_scl_write),.system_i2c_0_io_scl_read(system_i2c_0_io_scl_read),WriteEnable信號(hào)的處理
    的頭像 發(fā)表于 11-01 11:06 ?661次閱讀

    了解I2C總線

    電子發(fā)燒友網(wǎng)站提供《了解I2C總線.pdf》資料免費(fèi)下載
    發(fā)表于 10-08 11:13 ?2次下載
    了解<b class='flag-5'>I2C</b><b class='flag-5'>總線</b>

    電子發(fā)燒友

    中國(guó)電子工程師最喜歡的網(wǎng)站

    • 2931785位工程師會(huì)員交流學(xué)習(xí)
    • 獲取您個(gè)性化的科技前沿技術(shù)信息
    • 參加活動(dòng)獲取豐厚的禮品