資源簡介
分享一下,有硬件可用,紙張計數顯示_有硬件就可用,主控不同可以參考下思路

代碼片段和文件信息
/*************************************************************************
程序功能:?--電容傳感器采集函數
**************************************************************************/
#include??“at24c02.h“
/*****************************************************************************
**?24C默認的硬件地址都是0xA0即1010;然后A2A1A0最后一位為讀寫位,1讀0寫;?
**?24C02?256x8?bit???
**?24C04?512x8?bit
**?而子地址只是8位的,即最大也就256個字節,那么24C04就要占用2個256個字節?
**?這里24C04硬件上采用的是分頁方法即有24C02里有A0A1A2當是24C04時A0做為分頁位
**?當A0為0表示第一頁寫入第一頁256字節
**?當A0為1表示第二頁寫入第二頁256字節?
******************************************************************************/
#define AT24C02 0xA0 //AT24C02硬件地址1010;最后一位讀寫位,1為讀,0為寫;
/*****************************************************************************
**?功能描述:內部函數,頁寫,不能跨頁,也可只寫單個字節?
**??? ?向指定的首地址DataAddress寫入一個或多個(24C01\02最多8個)字節
**?參數說明:SlaveAddress??要寫入的從器件硬件地址
**?? ?1010?A2?A1?A0?R/W?[A2:A0]是AT24C01的芯片硬件地址
**? ?R/W是讀/寫選擇位,0為寫操作,1為讀操作
**? ?這里函數內部已對R/W作了處理,外部固定為0或1即可
**? ?DataAddress???要寫入的存儲單元開始地址
**? ?pbuf??????????指向數據緩沖區的指針
**?? ?Len???????????寫入數據長度
**?返回說明:0->成功????1->失敗
******************************************************************************/
bit?AT24C02_WritePage(unsigned?char?DataAddress?unsigned?char?*pbuf?unsigned?char?Len)
{
unsigned?char?i?=?0;
I2C_Start(); //?啟動總線
if(I2C_SendByte(AT24C02?&?0xFE)?==?1)
{
return?1;???????//?寫命令,已包含有應答函數
}
if(I2C_SendByte(DataAddress)?==?1)?
{
return?1; ?????//?已包含有應答函數
}
for(i=0;?i {
if(I2C_SendByte(*pbuf++)?==?1)?
{
return?1;????//單片機向從機發送1個字節數據?
}
}
I2C_Stop(); ?//?結束總線
return?0; ?//?寫入多字節成功
}??
/*****************************************************************************
**?多字節寫入,完全不考慮芯片分頁問題,速度慢(寫入時間大約是字節數n×10mS)?
******************************************************************************/
bit?AT24C02_WriteSlow(unsigned?char?DataAddress?unsigned?char?*pbuf?unsigned?char?Len)
{
unsigned?char?i;
while?(Len--)
{
if?(AT24C02_WritePage(DataAddress++?pbuf++?0x01))?//寫入一個字節?
{
return?1; //?單字節寫失敗,程序返回。
}
// SDA?=?1; //?判忙處理
//?以下循環可用一句Delay_ms()代替,為了不讓總線不停的發數據產生干擾
//?所以每延時1ms再檢測芯片是否寫入完畢
for?(i=0;?i<10;?i++)//?寫入最長時間不超過10mS ?
{
Delay_ms(15);
I2C_Start(); //?啟動總線
if(I2C_SendByte(AT24C02?&?0xFE)?==?0)?
{
break;
}???
}
}
return?0; //?成功返回0
}
/*****************************************************************************
**?內部函數,頁寫,為跨頁編寫?
******************************************************************************/
unsigned?char?AT24C02_WritePageTo(unsigned?char?DataAddress?unsigned?char?*pbuf?unsigned?char?Len)
{
unsigned?char?i?=?0;
I2C_Start(); //?啟動總線
if(I2C_SendByte(AT24C02?&?0xFE)?==?1)
{
return?0xFF;????//?失敗返回0xFF
}
if(I2C_SendByte(DataAddress)==1)?
{
return?0xFF; //?失敗返回0xFF
}
for(i=0;?i {
if(I2C_SendByte(*pbuf++)?==?1)?
{
return?0xFF;????//?失敗返回0xFF
}
i++;
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件???????5974??2019-08-11?10:13??程序\FWLIB\at24c02.c
?????文件????????902??2019-08-08?18:48??程序\FWLIB\at24c02.h
?????文件???????4500??2019-04-08?23:43??程序\FWLIB\charcode.h
?????文件????????718??2019-08-11?10:13??程序\FWLIB\delay.c
?????文件????????313??2019-04-08?14:10??程序\FWLIB\delay.h
?????文件???????3112??2019-04-23?17:44??程序\FWLIB\DHT11.c
?????文件????????768??2019-04-09?15:41??程序\FWLIB\DHT11.h
?????文件???????3487??2019-04-09?15:26??程序\FWLIB\DS18B20.c
?????文件????????824??2019-04-09?15:16??程序\FWLIB\DS18B20.h
?????文件???????5040??2019-08-11?10:13??程序\FWLIB\FDC2214.c
?????文件???????1485??2019-08-09?23:27??程序\FWLIB\FDC2214.h
?????文件???????5941??2019-08-11?10:13??程序\FWLIB\I2C.c
?????文件???????1078??2019-08-09?20:22??程序\FWLIB\I2C.h
?????文件???????4129??2019-08-11?10:13??程序\FWLIB\key.c
?????文件????????964??2019-08-10?01:10??程序\FWLIB\key.h
?????文件???????1487??2019-08-11?10:13??程序\FWLIB\led.c
?????文件????????788??2019-03-31?15:40??程序\FWLIB\led.h
?????文件???????7139??2019-04-09?00:04??程序\FWLIB\st7565.c
?????文件????????510??2019-04-09?11:47??程序\FWLIB\st7565.h
?????文件???????3621??2019-08-11?10:13??程序\FWLIB\SYN6288.C
?????文件????????509??2019-04-23?15:00??程序\FWLIB\SYN6288.H
?????文件???????1209??2019-08-10?02:54??程序\FWLIB\timer.c
?????文件????????311??2019-04-09?15:40??程序\FWLIB\timer.h
?????文件???????2971??2019-08-11?10:13??程序\FWLIB\Uart1_Timer2.c
?????文件????????609??2019-04-09?12:42??程序\FWLIB\Uart1_Timer2.h
?????文件???????2383??2019-08-11?10:13??程序\FWLIB\Uart3_Timer3.c
?????文件????????571??2019-04-08?14:10??程序\FWLIB\Uart3_Timer3.h
?????文件???????2251??2019-08-11?10:13??程序\FWLIB\Uart4_Timer4.c
?????文件????????470??2019-04-23?15:30??程序\FWLIB\Uart4_Timer4.h
?????文件??????33496??2019-08-11?10:12??程序\OBJ\at24c02.obj
............此處省略66個文件信息
評論
共有 條評論