• 大小: 269KB
    文件类型: .rar
    金币: 1
    下载: 0 次
    发布日期: 2021-05-27
  • 语言: 其他
  • 标签: stc8  

资源简介

分享一下,有硬件可用,纸张计数显示_有硬件就可用,主控不同可以参考下思路

资源截图

代码片段和文件信息

/*************************************************************************
程序功能: --电容传感器采集函数

**************************************************************************/
#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个文件信息

评论

共有 条评论