單片機模擬I2C總線及24C02讀寫實例(c源代碼),24C02 read / write process
關鍵字:單片機模擬I2C總線及24C02讀寫實例(c源代碼)
單片機模擬I2C總線及24C02(I2C EEPROM)讀寫實例(c源代碼)
/* 51系列單片機在使用時,有時需要模擬I2C總線, */
/* 這里舉出一個實例(讀寫串行EEPROM芯片at2402) */
/* 這里舉出一個實例(讀寫串行EEPROM芯片at2402) */
/************************************************************************/
/* Name:AT24C02存儲器的讀寫程序,用到I2C總線,含相對獨立的I2C總線讀寫函數 */
/* Language: C51單片機編程語言 */
/* 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 /*經實驗,不要小于50!否則可能造成時序混亂*/
#define TRUE 1
#define FALSE 0
sbit SCL=P1^7;/*假設由P1.7和P1.6控制*/
sbit SDA=P1^6;
/********** Function Definition函數定義 ************/
void DELAY(unsigned int t) /*延時函數*/
{
while(t!=0)
t--;
}
void I2C_Start(void)
{
/*啟動I2C總線的函數,當SCL為高電平時使SDA產生一個負跳變*/
SDA=1;
SCL=1;
DELAY(DELAY_TIME);
SDA=0;
DELAY(DELAY_TIME);
SCL=0;
DELAY(DELAY_TIME);
}
void I2C_Stop(void)
{
/*終止I2C總線,當SCL為高電平時使SDA產生一個正跳變*/
SDA=0;
SCL=1;
DELAY(DELAY_TIME);
SDA=1;
DELAY(DELAY_TIME);
SCL=0;
DELAY(DELAY_TIME);
}
void SEND_0(void) /* SEND ACK */
{
/*發送0,在SCL為高電平時使SDA信號為低*/
SDA=0;
SCL=1;
DELAY(DELAY_TIME);
SCL=0;
DELAY(DELAY_TIME);
}
void SEND_1(void)
{
/*發送1,在SCL為高電平時使SDA信號為高*/
SDA=1;
SCL=1;
DELAY(DELAY_TIME);
SCL=0;
DELAY(DELAY_TIME);
}
bit Check_AcknowLEDge(void)
{
/*發送完一個字節后檢驗設備的應答信號*/
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總線寫一個字節*/
char i;
for(i=0;i<8;i++)
if((b< SEND_1();
else
SEND_0();
}
char ReadI2CByte(void)reentrant
{
/*從I2C總線讀一個字節*/
char b=0,i;
for(i=0;i<8;i++)
{
SDA=1; /*釋放總線*/
SCL=1; /*接受數據*/
DELAY(10);
F0=SDA;
DELAY(10);
SCL=0;
if(F0==1)
{
b=b<<1;
b=b|0x01;
}
else
b=b<<1;
}
return b;
}
/**********以下為讀寫24c02的函數**********/見下一頁面
下一頁
聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。
舉報投訴
發布評論請先 登錄
相關推薦
熱點推薦
【RA-Eco-RA4M2開發板評測】I2C讀取EEPROM(二)
就行。
值得注意的是,這里的從機地址是7位,代碼中自動左移了。
然后讓軟件自動生成配置代碼即可。
6.2 基于I2C的EEPROM讀寫實現
發表于 04-28 23:14
基于APM32F407如何制作I2C EEPROM(AT24C02型號)的MDK-Keil下載算法
基于APM32F407如何制作I2C EEPROM(AT24C02型號)的Keil下載算法,這樣在我們下載代碼時可以一鍵把數據燒錄到EEPROM中。

I2C總線通信原理 如何設計I2C總線電路
I2C總線通信原理 I2C(Inter-Integrated Circuit)總線是一種用于集成電路之間進行通信的串行通信協議。它最早由飛利浦公司(現被恩智浦電子收購)于1982年推出
I2C總線的優缺點分析
設備之間的通信,這大大減少了所需的引腳數量,降低了硬件成本。此外,由于其簡單性,I2C總線也易于實現和維護。 2. 多主機和多從機支持 I2C
I2C總線與Arduino的接口示例
在現代電子設計中,I2C總線因其簡單性和靈活性而廣受歡迎。它允許多個設備共享同一通信線路,從而節省空間和成本。Arduino,作為一個多功能的微控制器平臺,自然也支持I2C通信。 I2C
I2C總線的工作模式介紹
在現代電子系統中,I2C總線作為一種多主機、多從機的串行通信協議,扮演著至關重要的角色。它允許多個設備共享同一總線,進行數據傳輸,從而簡化了系統設計并降低了成本。
I2C總線與單片機的連接
在現代電子系統中,單片機(MCU)是核心控制單元,而I2C總線作為一種多主機、多從機的串行通信協議,因其簡單、高效和節省引腳的特性而被廣泛應用于各種電子設備中。
I2C總線應用實例分析
。I2C總線使用兩條線進行通信:數據線(SDA)和時鐘線(SCL)。這種雙線制設計使得I2C總線能夠在多個設備之間共享,而不需要為每個設備單獨布線。 應用
I2C總線與SPI總線的比較
在現代電子系統中,微控制器與各種外設之間的通信是必不可少的。I2C和SPI是兩種流行的串行通信協議,它們各自具有獨特的特點和應用場景。 I2C總線 I2C是一種多主機、多從
《DNESP32S3使用指南-IDF版_V1.6》第二十章 IIC_EEPROM實驗
24C02設備的讀操作地址為:0xA1;寫操作地址為:0xA0。在前面已經說過IIC總線的基本讀寫操作,那么我們就可以基于IIC總線的時序的上,理解
發表于 12-21 09:31
【AG32開發板體驗連載】智能蒸烤箱--AG32VF407I2C總線測試
TestI2cPROM() // Testing AT24C02等五個主要函數組成,通過I2C總線實現對24LC02B的
發表于 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信號的處理
評論