资源简介
分享一下,有硬件可用,纸张计数显示_有硬件就可用,主控不同可以参考下思路
代码片段和文件信息
/*************************************************************************
程序功能: --电容传感器采集函数
**************************************************************************/
#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个文件信息
相关资源
- 1602 基于89C51单片机的DS18B20恒温控制系
- keil程序stc89c52/51rc读取rfid rc522射频卡
- BEACONSTC8G1K08.zip
- STC89c52驱动
- 单片机STC89C58程序
- STC89C52RC使用电位器控制WS2812B调光
- stc89c52蜂鸣器音乐栀子花开
- stc8a8k64s4a12串口发送任意字符串
- Stc89C52 超声波测距 并且 1602显示
- 基于STC89C52的门禁模拟控制系统
- 基于STC89C51并使用HX711的称重程序
- stc89c51AD库
- STC89C52RC 智能家居设计(GSM+人体红外
- STC89C51采集DS18B20温度控制继电器
- 基于STC89C52的超声波测距防撞系统设计
- stc89c52 蓝牙控制源码
- 基于STC89C52单片机的舵机测试程序
- 基于STC89C52单片机的秒表程序
- STC89C5xRC单片机头文件
- 基于STC89C52的程控恒流源的设计
- 51单片机DHT11程序
- 基于STC89C51的智能家居系统仿真及程序
- stc89c52封装元件库
- stc89c52原理图及pcb封装库
- 基于STC89C52RC和STC12C5A60S2单片机的DHT
- stc-isp官方烧录软件
- STC89C51单片机温湿度DHT11检测仪环境检
- 基于STC89C52单片机的智能家居系统
- DHT11 STC89C52 温湿度传感器
- STC89C52RC单片机中文用户手册
评论
共有 条评论