找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 12722|回复: 10
打印 上一主题 下一主题
收起左侧

单片机驱动24c02存储器读写实验 Proteus仿真和源代码

  [复制链接]
跳转到指定楼层
楼主
单片机驱动24c02存储器读写实验的仿真原理图(proteus仿真工程文件可到本帖附件下载):



单片机24c02读写源代码:
  1. #include<reg51.h>
  2. #define uchar unsigned char
  3. sbit  sda=P2^1;
  4. sbit  scl=P2^0;

  5. void delay()        //延时应大于4.7us
  6. { ;;;}

  7. void start()        //开始发送数据
  8. {  sda=1;
  9.    delay();         //scl在高电平期间,sda由高到低
  10.    scl=1;
  11.    delay();
  12.    sda=0;
  13.    delay();
  14. }

  15. void stop()         //停止发送数据
  16. {  sda=0;             //scl在高电平期间,sda由高到低
  17.    delay();
  18.    scl=1;
  19.    delay();
  20.    sda=1;
  21.    delay();
  22. }

  23. void response()
  24. {  uchar i;
  25.    scl=1;
  26.    delay();
  27.    if((sda==1)&&i<250) i++;        //应答sda为0,非应答为1
  28.    scl=0;                          //释放总线
  29.    delay();
  30. }

  31. void  noack()
  32. {  scl=1;
  33.    delay();
  34.    scl=1;
  35.    delay();
  36.    scl=0;
  37.    delay();
  38.    sda=0;
  39.    delay();
  40. }
  41. void init()                      //初始化
  42. {  sda=1;
  43.    delay();
  44.    scl=1;
  45.    delay();
  46. }
  47. void write_byte(uchar date)     //写一个字节
  48. {  uchar i,temp;
  49.    temp=date;
  50.    for(i=0;i<8;i++)
  51.    {  temp=temp<<1;
  52.       scl=0;                    //scl上跳沿写入
  53.       delay();
  54.       sda=CY;                   //溢出位
  55.       delay();
  56.       scl=1;
  57.       delay();
  58. scl=0;
  59. delay();
  60.    }
  61.    scl=0;
  62.    delay();
  63. sda=1;
  64. delay();
  65. }
  66. uchar read_byte()
  67. {  uchar i,k;
  68.    scl=0;
  69.    delay();
  70.    sda=1;
  71.    delay();
  72.    for(i=0;i<8;i++)
  73.    {  scl=1;
  74.       delay();
  75.       k=(k<<1)|sda;
  76.       scl=0;
  77.       delay();
  78.    }
  79.    return k;
  80. }
  81. void delay1(uchar x)
  82. {  uchar a,b;
  83.    for(a=x;a>0;a--)
  84.    for(b=200;b>0;b--);
  85. }

  86. void write_add(uchar address,uchar date)
  87. {  start();
  88.    write_byte(0xa0);                    //设备地址
  89.    response();
  90.    write_byte(address);
  91.    response();
  92.    write_byte(date);
  93.    response();
  94.    stop();
  95. }

  96. uchar read_add(uchar address)
  97. {  uchar date;
  98.    start();
  99.    write_byte(0xa0);
  100.    response();
  101.    write_byte(address);
  102.    response();
  103.    start();
  104.    write_byte(0xa1);                //1表示接收地址
  105.    response();
  106.    date=read_byte();
  107.    noack();
  108.    stop();
  109.    return date;
  110. }
  111. void main()
  112. {  uchar kk;
  113.    init();

  114.    kk=0;
  115.    
  116.    write_add(kk,0x55);               //向0单元写入数据0fH,
  117.   
  118.    delay1(100);
  119.    
  120.   
  121.     P1=read_add(kk);                  //低电平灯亮
  122.    
  123. …………限于本文篇幅 余下代码请从51黑下载附件…………
复制代码




该系列源码包含有很多非常经典,代码风格十分规范,而且注释详细的单片机例程,还带仿真,对于MCU学习特别是初学者是很有帮助的,全部源码下载(共几十个项目):http://www.51hei.com/bbs/dpj-80575-1.html

本例程下载(含proteus仿真工程文件与源码):
单片机驱动24c02存储器读写实验.rar (47.11 KB, 下载次数: 411)

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏6 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:197885 发表于 2017-5-7 20:44 | 只看该作者
感谢楼主,帮了我大忙
回复

使用道具 举报

板凳
ID:458444 发表于 2018-12-30 10:35 | 只看该作者
谢谢分享
回复

使用道具 举报

地板
ID:72065 发表于 2019-1-8 13:46 | 只看该作者

谢谢楼主分享,正好需要这个
回复

使用道具 举报

5#
ID:464808 发表于 2019-1-8 18:53 | 只看该作者
支持谢谢分享

回复

使用道具 举报

6#
ID:740744 发表于 2020-4-29 11:38 | 只看该作者
仿真中能看出24C02的存储效果吗?
回复

使用道具 举报

7#
ID:717673 发表于 2020-5-29 18:12 | 只看该作者
感谢分享
回复

使用道具 举报

8#
ID:546037 发表于 2020-6-10 20:27 | 只看该作者
支持谢谢分享
回复

使用道具 举报

9#
ID:976070 发表于 2021-12-19 16:26 | 只看该作者
24C02存储器可以掉电保存数据吗?
回复

使用道具 举报

10#
ID:9932 发表于 2024-10-12 15:41 | 只看该作者
感谢楼主,帮了我大忙
回复

使用道具 举报

11#
ID:492633 发表于 2024-10-16 22:43 | 只看该作者
tommy5201314 发表于 2020-4-29 11:38
仿真中能看出24C02的存储效果吗?

完全没问题,每页可以存储0-255,有255页
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表