51单片机的at24c02驱动程序

发布者:huanguu最新更新时间:2015-05-27 来源: 51hei关键字:51单片机  at24c02  驱动程序 手机看文章 扫描二维码
随时随地手机看文章
//////////////////////////////////////////////////////// 头文件 /////////////////////////////////////////////////////////////////////////////////////////
/******************************************************************************
* 标题: at24c02 e2prom驱动程序                                                                                                   *
* 文件: at24c02.h at24c02.c                                                                                                             *
* 日期: 2010-3-11                                                                                                                            *
* 版本: 1.10(试验通过版)可用xl600单片机综合试验仪试验                                                 *
* 邮箱: acsdf139@163.com       qq:526083029                                                                            *
* 网站: 无                                                                                                                                     *
*******************************************************************************
* 描述:                                                                                                                                               *
*         用法:首先在主程序内添加头文件#include"at2402.c"                                                        *
*             填充 fillbyte(72,0x00);                                                                                                        *
*             写入wratbyte(7, 55);                                                                                                           *
*             读取a=readrandom(25);                                                                                                     *
*                                                                                                                                                          *
*******************************************************************************
*【版权】自己参照网上,朋友,以及书本资料上写的,所以没有版权                                 *
*【声明】此程序,可用于学习,参考及实际设计中,欢迎转载复制以及建议批评             *
*【技术支持】qq:526083029 小张                                                                                             *
******************************************************************************/
 
 
#ifndef _AT2402_H_
#define _AT2402_H_
#include
#include
#define delayNOP(); {_nop_();_nop_();_nop_();_nop_();};
#define uchar unsigned char
 
 
#define atwrite 0xa0          // 器件地址以及写入操作
#define atread 0xa1         // 器件地址以及读取操作
 
 
extern void delayms(uchar ms);
extern void atstart();
extern void atstop();
extern bit atack(void);
extern uchar atmcu();
extern bit mcuat(uchar wratdata);
extern void wratbyte(uchar addr, uchar wratdata);
extern void fillbyte(uchar fillsize,uchar filldata);
extern uchar reatbyte();
extern uchar readrandom(uchar random_addr);
 
#endif
 
///////////////////////////////////////////////////////////////////////c程序/////////////////////////////////////////////////
 
 
#include
#include"at2402.h"
#include
 
 
sbit SDAat=P3^7;
sbit SCLat=P3^6;
 
/*************************************
函数名:delayms
函数功能:延时
参数:ms(时间)
返回:无
备注:无
*************************************/
void delayms(uchar ms)
{
 uchar k;
 while(ms--)
 {
    for(k = 0; k < 120; k++);
    }
} [page]
/*************************************
函数名:atstart
函数功能:开始位
参数:无
返回:无
备注:无
*************************************/
void atstart()
{
 SDAat= 1;
 SCLat= 1;
 delayNOP();
 SDAat = 0;
 delayNOP();
 SCLat = 0;
}
/*************************************
函数名:atstop
函数功能:停止位
参数:无
返回:无
备注:无
*************************************/
void atstop()
{
  SDAat = 0;
  delayNOP();
  SCLat = 1;
  delayNOP();
  SDAat = 1;
}
/*************************************
函数名:atack
函数功能:应答
参数:无
返回:ackbit
备注:无
*************************************
bit atack(void)
{
  bit ackbit;
  SDAat = 1;  // 读取应答
  delayNOP();
  SCLat = 1;
  delayNOP();
  ackbit = SDAat;
  SCLat = 0;
  return ackbit;
 
}
/*************************************
函数名:atmcu
函数功能:从AT24C02移出数据到MCU
参数:无
返回:reatdata
备注:无
*************************************/
uchar atmcu()
{
  uchar i,reatdata;
  for(i = 0; i < 8; i++)
  {
     SCLat = 1;
     reatdata <<= 1;
     reatdata |= SDAat;
     SCLat = 0;
  }
  return(reatdata);
}
/*************************************
函数名:mcuat
函数功能: 从mcu移出数据到24c02
参数:wratdata(数据)
返回:ackbit(应答)
备注:配合wratbyte使用
*************************************/
bit mcuat(uchar wratdata)
{
 uchar i;
 bit ackbit;
 for(i = 0; i < 8; i++) // 循环移入8个位
 {
   SDAat = (bit)(wratdata & 0x80);
    _nop_();
    SCLat = 1;
   delayNOP();
   SCLat = 0;
    wratdata <<= 1;
  }
  ackbit=atack();
  return ackbit; // 返回AT24C02应答位
}
/*************************************
函数名:wratbyte
函数功能: 在指定地址addr处写入数据write_data
参数:addr    wratdata
返回:无
备注:无
*************************************/
void wratbyte(uchar addr, uchar wratdata)
{
  atstart();
  mcuat(atwrite);
  mcuat(addr);
  mcuat(wratdata);
  atstop();
  delayms(10); // 写入周期
}
/*************************************
函数名:fillbyte
函数功能:填充数据fill_data到EEPROM内fill_size字节
参数: fillsize(地址),filldata(数据)
返回:无
备注:无
*************************************/
void fillbyte(uchar fillsize,uchar filldata) 
{
  uchar i;
  for(i = 0; i < fillsize; i++)
  {
     wratbyte(i, filldata);
  }
}
/*************************************
函数名:reatbyte
函数功能:在当前地址读取
参数:无
返回:reatdata(读取的数据)
备注:配合readrandom使用
*************************************/
uchar reatbyte()
{
  uchar reatdata;
  atstart();
  mcuat(atread);
  reatdata = atmcu();
 atstop();
  return reatdata;
}
/*************************************
函数名:readrandom
函数功能:在指定地址读取
参数:random_addr(地址)
返回:reatdata(读取的数据)
备注:无
*************************************/
uchar readrandom(uchar random_addr)
{
  atstart();
  mcuat(atwrite);
  mcuat(random_addr);
  return(reatbyte());
}
关键字:51单片机  at24c02  驱动程序 引用地址:51单片机的at24c02驱动程序

上一篇:51单片机的ds1302驱动程序
下一篇:51单片机的1602驱动程序

推荐阅读最新更新时间:2024-03-16 14:03

51单片机汇编语言实验(六)-----8255键盘与显示设计
一、实验目的:    掌握8255外接键盘与数码管显示的设计 二、实验设备:    PC计算机一台,Dais-52PRO+实验系统一套。 三、实验内容:    8255键盘与显示设计 四、 8255键盘与显示设计    1、实验原理:    本实验使用8255的PA7到PA0控制数码管字形口、PB5到PB0控制数码管字位口,同时PB4到PB0作为键盘扫描口、PC3~PC0作为键盘读入口。利用CPU控制8255,对4×5键盘进行扫描和键值读取,将键值显示到6位数码管上。本文介绍的是简化版的实验,不控制最后一列键盘,数码管位选端不接线,直接点亮。    2、实验步骤:   ① 按下图拆除14芯扁平电缆;   ②将8
[单片机]
<font color='red'>51单片机</font>汇编语言实验(六)-----8255键盘与显示设计
基于STM32自码DS18B20驱动程序
DS18B20是一款单总线可编程分辨率的数字温度计,详细内容可见中英文datasheet,笔者不在赘述。 很早就接触到的温度传感器,也相信每一个曾学习过嵌入式开发的人都用过,笔者在STM32F4上自码DS18B20驱动,有些小小心得: DS18B20的控制流程 根据DS18B20的通信协议,DS18B20只能作为从机,而单片机系统作为主机,单片机控制DS18B20完成一次温度转换必须经过3个步骤:复位、发送ROM指令、发送RAM指令。每次对DS18B20的操作都要进行以上三个步骤。 复位过程为:单片机将数据线拉低至少480uS,然后释放数据线,等待15-60uS让DS18B20接收信号,DS18B20接收到信号后,会把数据线拉
[嵌入式]
80C51单片机的引脚排列说明
  80C51单片机共有40个引脚,其中有2个是电源引脚,2个外接晶体振荡器引脚,4个控制引脚,还有四个端口(P0~P3),共32个输入输出引脚,如图所示。   1.电源引脚(2个)·Vcc (40脚):电源端,接+5V 电源。   ·Vss (20脚):接地端。   2.外接晶振引脚(2个)   ·XTAL1(19脚)和XTAL2(18脚):接石英晶体振荡器   3.控制引脚(4个)   ·RST (9脚):复位信号引脚。当石英晶体振荡器运行时,在此引脚上出现两个机器周期的高电平,使单片机复位。   ·ALE/PROG (30脚):地址锁存允许信号端。当访问外部存储器时,ALE (允许地址锁存)的输出用于锁存地址的低8 位。
[单片机]
80C<font color='red'>51单片机</font>的引脚排列说明
51单片机汇编语言--延时程序的延时时间
请高手帮我分析以下延时程序所占的时钟周期。 求解释: DELAY: MOV R6, #13 DELAY1: MOV R5, #250 DELAY2: NOP DJNZ R5, DELAY2 DJNZ R6, DELAY1 RET 问题补充:晶振为12MHz,机器周期即是1us。 ;----------------------------------------------------- 最佳答案: DELAY: MOV R6,#13 ;1 DELAY1: MOV R5,#250 ;1 DELAY2: NOP ;1 DJNZ R5,DELAY2 ;2 250 * (1 + 2)
[单片机]
HT1621液晶驱动芯片的51单片机程序
/******************************************************** 功能描述: HT1621芯片测试程序 说 明:本测试程序能够测试HT1621的每一个字段, 依次点亮每一个字段 参数: ********************************************************/ #include reg51.H #include intrins.h #define uchar unsigned char #define uint unsigned int #define _Nop() _nop_();_nop_();
[单片机]
STC51单片机EEPROM的使用方法
STC51单片机有类似flash的功能EEPROM,可以掉电保存数据,不同型号的可以保存不同大小的数据,以12C5A60S2为例,EEPROM的大小为2K,分为两个扇区,掉电保存在很多地方需要。 首先寄存器的问题,不同系列的STC单片机的与EEPROM有关的寄存器不同,比如10/11/12系列的sfr ISP_DATA = 0xC2;sfr ISP_ADDRH = 0xC3;sfr ISP_ADDRL = 0xC4;sfr ISP_CMD = 0xC5;sfr ISP_TRIG = 0xC6;sfr ISP_CONTR = 0xC7;89/90系列的sfr ISP_DATA = 0xe2;sfr ISP_ADDRH = 0xe
[单片机]
STC<font color='red'>51单片机</font>EEPROM的使用方法
15-基于51单片机的篮球计时器
具体实现功能: (1)能记录整个赛程的实际比赛时间,计时范围:0~99分钟; (2)可以进行24秒倒计时,倒计时到报警; (3)总时间分为四节,每节时间到报警; (4)能修改每节的比赛时间,初设每节倒计时时间为15分钟。 单片机介绍 51单片是一种低功耗、高性能CMOS8位微控制器,具有 8K 在系统可编程Flash 存储器。在单芯片上,拥有灵巧的8 位CPU 和在系统可编程Flash,使得STC89C51为众多嵌入式控制应用系统提供高灵活、超有效的解决方案。具有以下标准功能:8k字节Flash,512字节RAM,32 位I/O 口线,看门狗定时器,内置4KB EEPROM,MAX810复位电路,三个16 位
[单片机]
15-基于<font color='red'>51单片机</font>的篮球计时器
WindowsNT4.0下设备驱动程序的开发与应用
    摘要: 介绍了Windows NT4.0内核模式设备驱动程序开发中的一般性过程。通过提供一个最小化驱动程序的核心代码,解释各组成部分的结构功能和使用方法。在实践中,结合自身的开发需要,可编写出具有实用价值的驱动程序。     关键词:Win32子系统 设备驱动 系统注册表 I/O请求包     Windows NT 以其安全、稳定及界面友好等特性逐渐成为工业控制领域的前台操作系统。面对工业控制中大量采用的串/并行通信及总线控制等技术,要求用户不断开发出满足自身需要的硬件设备,同时又要求用户应用程序与这些硬件设备进行通信,发送控制命令,读取状态信息等等。Windows NT出于安全性、
[应用]
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved