获取更多资源,请关注微信公众号:嵌入式基地

获取项目资源:公众号后台回复:单片机仿真

基于Proteus学习单片机系列(一)——点亮LED

基于Proteus学习单片机系列(二)——驱动数码管

基于Proteus学习单片机系列(三)——按键

基于Proteus学习单片机系列(四)——中断

基于Proteus学习单片机系列(五)——定时器实现电子表

基于Proteus学习单片机系列(六)——I2C总线AT24C04

基于Proteus学习单片机系列(七)——实时时钟DS1302

基于Proteus学习单片机系列(八)——AD转换及其应用--TLC549

基于Proteus学习单片机系列(九)——DA转换及其应用--TLC5615

基于Proteus学习单片机系列(十)——LCD1602

基于Proteus学习单片机系列(十一)——LCD12864

项目下载

点击下载

1.电路图

2.程序

主函数

#include<reg51.h>
#include<AT24C04.c>
void delay(unsigned int x )
{while(x--);
}
void main()
{init_24c04();                       //I2总线初始化函数while(1){write_add_dat_24c04(1,0x0f);    //写入地址1,保存数据0x0fdelay(300);                      //延时write_add_dat_24c04(2,0xf0);    //写入地址二,保存数据0xf0delay(300);                      //延时P0 = read_add_dat_24c04(1);        //读地址1,保存数据0x0f,并显示delay(50000);                  //延时P0 = read_add_dat_24c04(2);        //读地址二,保存数据0xf0,并显示delay(50000);                  //延时}
}

I2C驱动

#include<intrins.h>
#define uchar unsigned char
#define nop _nop_()
sbit sda = P3^6;      //sda接在P3^6
sbit scl = P3^7;     //scl接在P3^7
/*I2总线启动*/
void start_24c04()    //scl为高电平时,SDA由高向低跳变,开始传送数据
{scl = 1;nop;    sda = 1;nop;sda = 0;nop;scl = 0;
}
/*I2总线停止*/
void stop_24c04()     //scl为高电平时,SDA由低向高跳变,结束传送数据
{sda = 0;nop;   scl = 1;nop;sda = 1;nop;
}
/*应答程序*/
void ack_24c04()
{uchar i = 255;scl = 1;nop;while(sda&&i--);      //等待返回的低电平,若没有响应,适当延时自动向下执行scl = 0;nop;
}
/*I2总线初始化*/
void init_24c04()
{sda = 1;nop;     //常态scl = 0;nop;     //常态
}
/*读取一个字节*/
uchar read_onebyte_24c04()
{uchar i,dat;sda = 1;                         //释放总线for(i = 0;i<8;i++)                 //循环八次,得到八位的数据{scl = 1;                      //scl为高电平时,检测sda状态dat = dat<<1;                  //由高位向低位读取if(sda)                       //判断sda是否为高电平dat = dat|0x01;               //若是,dat最低位置一,不是则为0scl = 0;                      //scl置低电平}sda = 1;                        //应答scl = 0;                       //    信号return(dat);
}
/*写入一个字节*/
void write_onebyte_24c04(uchar dat)
{uchar i;for(i=0;i<8;i++)               //循环八次,得到八位的数据{sda = (bit)(dat&0x80);       //取最高位dat = dat<<1;                  //由高位向低位写入scl = 1;scl = 0;}sda = 1;                         //应答scl = 0;                       //    信号
}
/*对某个地址写一字节的数据*/
void write_add_dat_24c04(uchar add,dat)
{start_24c04();                  //启动write_onebyte_24c04(0xa0);      //对AT24C04写操作ack_24c04();                   //应答write_onebyte_24c04(add);       //写入数据存放地址ack_24c04();                  //应答write_onebyte_24c04(dat);       //写入数据ack_24c04();                  //应答stop_24c04();                   //停止
}
/*读取某个地址一字节数据*/
uchar read_add_dat_24c04(uchar add)
{uchar dat;start_24c04();                    //启动write_onebyte_24c04(0xa0);      //对AT24C04写操作ack_24c04();                   //应答write_onebyte_24c04(add);       //写入将要读的数据地址ack_24c04();                    //应答start_24c04();                  //启动write_onebyte_24c04(0xa1);      //对AT24C04读操作ack_24c04();                   //应答dat = read_onebyte_24c04();        //赋值stop_24c04();                   //停止return (dat);
}

基于Proteus学习单片机系列(六)——I2C总线AT24C04相关推荐

  1. 基于Proteus学习单片机系列(七)——实时时钟DS1302

    获取更多资源,请关注微信公众号:嵌入式基地 获取项目资源:公众号后台回复:单片机仿真 基于Proteus学习单片机系列(一)--点亮LED 基于Proteus学习单片机系列(二)--驱动数码管 基于P ...

  2. 基于Proteus学习单片机系列(二)——驱动数码管

    获取更多资源,请关注微信公众号:嵌入式基地 获取项目资源:公众号后台回复:单片机仿真 基于Proteus学习单片机系列(一)--点亮LED 基于Proteus学习单片机系列(二)--驱动数码管 基于P ...

  3. 基于Proteus学习单片机系列(七)——AD转换及其应用--ADC0832

    获取更多资源,请关注微信公众号:嵌入式基地 获取项目资源:公众号后台回复:单片机仿真 项目下载 点击下载 1.电路图 2.程序 只在这里贴出主函数,其余的请点击上面(点击下载)进行下载,实在太麻烦. ...

  4. 51单片机系列--AT24C02(总线)

    存储器介绍 易失性存储器/RAM 非易失性存储器/ROM SRAM(静态RAM) Mask ROM(掩膜ROM) DRAM(动态RAM) PROM(可编程ROM) EPROM(可擦除可编程ROM ) ...

  5. SylixOS 基于STM32平台的GPIO模仿I2C总线的驱动开发流程

    2019独角兽企业重金招聘Python工程师标准>>> 概述 本文档以STM32F767平台为例,详细介绍SylixOS上GPIO模仿I2C总线的驱动开发流程. 初始化 GPIO模仿 ...

  6. Nordic nRF5 SDK 学习笔记之四, TWI (I2C) 总线

    硬件: nRF52832 SDK: Ver 15.2.0 目标: TWI (I2C) 总线应用 (TWI MASTER 模式) 样例: <InstallFolder>\examples\p ...

  7. 基于 Proteus 的单片机仿真

    最近又要用proteus进行仿真51单片机-- 1.元器件的放置: 里面都是些英文,找起来头大,下面的一些表都是常见的单片机仿真使用的原件,很方便的就能找到了. 2.电源和地的放置 反正我在元件库中找 ...

  8. 单片机怎么通过按键控制计时器的开始和停止_学习电路仿真:基于proteus电路仿真软件的交通灯控制电路设计...

    电路仿真软件是当代重要软件之一,缺乏电路仿真软件,模拟运行环境将无法搭建.对于电路仿真软件,虽然市面上类别众多,但知名电路仿真软件为proteus.本文对于电路仿真软件的介绍,为基于proteus的交 ...

  9. TM1637芯片使用(I2C总线协议学习),含完整程序

    目录 1.TM1637芯片(大自然的搬运工) 芯片介绍 引脚图 时序图 其他关键 管脚功能 命令格式 封装 2. 51单片机程序编写 I2C_START(): I2C_WR(): I2C_ACK(): ...

最新文章

  1. sql server面试题
  2. 剑指offer_第12题_数值的整数次方
  3. 华为汪涛:定义5.5G,构建美好智能世界
  4. 手表可测血压,耳机支持颈椎保护……这届电子设备越来越“养生”了
  5. [原创]TimeQuest约束外设之诡异的Create Generated Clocks用法
  6. leetcode 263, 264, 1201, 313. Ugly Number I, II, III, Super Ugly Number(leetcode 丑数问题合集)
  7. 获取成员函数地址及获取函数地址
  8. LeetCode 466. 统计重复个数(循环节)
  9. pycharm和python一样吗_PyCharm中Directory与Python package的区别
  10. weiapi2.2 HelpPage自动生成接口说明文档和接口测试功能
  11. java和php基础部分相同或异同
  12. javascript创建表格
  13. 反射——Reflection
  14. QuickCHM 2.6中“不支持此接口”错误的“彻底”解决(补丁)
  15. iOS UI切图@1x、@2x、@3x的实际尺寸
  16. Android Alarm闹钟
  17. Qt2D游戏开发引擎QtGameEngine使用入门9——在游戏界面中添加gui按钮文本等控件
  18. Photoshop教程_ps中怎么载入图案?PS图案如何导入?
  19. 英语学了十年,还是学不会!建议你:那就别学了!
  20. 2018 中国大陆网速排名世界 141 位;Linux 4.18 内核发布

热门文章

  1. Python计算机视觉编程第三章——图像到图像的映射
  2. ts报错:Object is possibly ‘undefined‘.Vetur(2532)
  3. 谈谈个人10几年来的一些经历感悟
  4. Gartner预计2019年全球半导体收入将下滑9.6%;苹果中国用户正流向华为;Facebook将支付50亿美元与FTC和解...
  5. 常见中间件介绍和分析
  6. 亿万级数据处理的高效解决方案
  7. 长期主义:做你余生中最重要的事
  8. 《zw版·Halcon-delphi系列原创教程》 只有2行代码的超市收款单ocr脚本
  9. 郑军学长-解决SVN访问慢[密]
  10. 存量 IoT 设备零改造,一键迁移企业物联网实例