51微控制器讀寫EEPROM(AT24C02)
阿新 • • 發佈:2018-12-26
AT24C02的儲存容量為2K bit,內容分成32頁,每頁8Byte,共256Byte,操作時有兩種定址方式:晶片定址和片內子地址定址。
(1)晶片定址:AT24C02的晶片地址為1010,其地址控制字格式為1010A2A1A0R/W。其中A2,A1,A0可程式設計地址選擇位。A2,A1,A0引腳接高、低電平後得到確定的三位編碼,與1010形成7位編碼,即為該器件的地址碼。R/W為晶片讀寫控制位,該位為0,表示晶片進行寫操作。
(2)片內子地址定址:晶片定址可對內部256B中的任一個進行讀/寫操作,其定址範圍為00~FF,共256個定址單位。
函式宣告:
IIC開始函式:void IIC_Start(void );
向IIC傳送資料:void IIC_SendByte(unsigned char address, unsigned char date);
從IIC接受資料:unsigned char IIC_RecByte(void);
IIC應答函式:void IIC_Ack(void);
IIC停止函式:void IIC_Stop(void);
向AT24C02寫資料步驟:
第1步:傳送開始訊號,IIC啟動;
第2步:傳送器件地址,其中讀寫標誌位為寫;
第3步:IIC應答訊號;
第4步:傳送器件內部儲存地址;
第5步:IIC應答訊號;
第6步:向器件中寫入資料;
第7步:IIC應答訊號;
第8步:傳送停止訊號,IIC停止
程式碼如下:
void writeAT24C02(unsigned char address, unsigned char date)
{
IIC_Start();
IIC_SendByte(0xa0);
IIC_Ack();
IIC_SendByte(address);
IIC_Ack();
IIC_SendByte(date);
IIC_Ack();
IIC_Stop();
}
從AT24C02中讀取資料步驟:
第1步:定義一個unsigned char型別的變數,以接受讀出的資料;
第2步:傳送開始訊號,IIC啟動;
第3步:傳送器件地址,其中讀寫標誌位為寫;
第4步:IIC應答訊號;
第5步:傳送器件內部儲存地址;
第6步:IIC應答訊號;
第7步:傳送開始訊號,IIC再次啟動;
第8步:傳送器件地址,其中讀寫標誌位為讀;
第9步:IIC應答訊號;
第10步:從器件讀出資料;
第11步:傳送停止訊號,IIC停止;
第12步:返回所讀取的資料;
程式碼如下:
unsigned char readAT24C02(unsigned char address)
{
unsigned char date;
IIC_Start();
IIC_SendByte(0xa0);
IIC_Ack();
IIC_SendByte(address);
IIC_Ack();
IIC_Start();
IIC_SendByte(0xa1);
IIC_Ack();
date = IIC_RecByte();
IIC_Stop();
return date;
}