矿石收音机论坛

 找回密码
 加入会员

QQ登录

只需一步,快速开始

搜索
查看: 4442|回复: 18

【分享】51单片机24C08测试程序!

[复制链接]
     
发表于 2020-10-31 21:34:24 | 显示全部楼层 |阅读模式
本帖最后由 分立元件 于 2020-10-31 21:40 编辑

#include<reg52.h>
#define uchar unsigned char
sbit sda=P1^3;
sbit scl=P1^2;

void delay1(uchar z)
{
uchar j,k;
    for(k=0;k<z;k++)
    {           
      for(j=0;j<100;j++) ;  //此处j不得小于27否则读不出数据
        
    }        
}
void delay()
{

;;
}
void init()
{
sda=1;
delay();
scl=1;
delay();
}
void start()
{
sda=1;
delay();
scl=1;
delay();
sda=0;
delay();
}
void stop()
{
sda=0;
delay();
scl=1;
delay();
sda=1;
delay();

}
void ack()
{
scl=1;
delay();
  if(sda==1)
  {  
  delay1(1000);
  }
scl=0;
  delay();
sda=1;
delay();
}
void write_24c08(uchar add)
{
uchar a,i;
      i=add;
    scl=0;
  delay();
for(a=0;a<8;a++)
  {  
  i=i<<1;
  sda=CY;
   delay();
   scl=1;
    delay();
      scl=0;
  delay();
}
scl=0;
delay();
sda=1;
delay();
}
uchar read_24c08()
{
   uchar a,readdate;
   scl=0;
   delay();
  sda=1;
  delay();
for(a=0;a<8;a++)
{

scl=1;
delay();  
readdate=(readdate<<1)|sda;  //这里注意啊,不要换成别的
scl=0;
delay();

}
return readdate;
}


void main()
{
init();
start();                    //开始写数据进存储器
write_24c08(0xa0); //24C08地址
ack();
write_24c08(0x21);//数据的地址
ack();
write_24c08(0xf0);//写入数据
ack();
stop();

delay1(100);
start();                  
write_24c08(0xa0);
ack();
write_24c08(0x21);
ack();
start();
write_24c08(0xa1);
ack();
P0=read_24c08();//读出数据
stop();
while(1);
}

评分

1

查看全部评分

     
发表于 2020-11-23 16:04:04 | 显示全部楼层
i2c很简单的,自己写很快的
回复 支持 反对

使用道具 举报

     
发表于 2020-11-23 18:59:54 来自手机 | 显示全部楼层
测试如何,我做到这里卡那了,发现一个单片机I/o有问题修改后还是没反应。
回复 支持 反对

使用道具 举报

     
发表于 2020-11-23 19:02:48 来自手机 | 显示全部楼层
SCL脚示波器测量无方波,sDA脚测量有方波。
回复 支持 反对

使用道具 举报

     
发表于 2020-11-23 19:33:53 | 显示全部楼层
pdshyh 发表于 2020-11-23 19:02
SCL脚示波器测量无方波,sDA脚测量有方波。

按时续要求写,很容易工作
回复 支持 反对

使用道具 举报

     
发表于 2020-11-23 22:07:15 来自手机 | 显示全部楼层
老师,能否介绍再详细一点,如程序是测试什么的,程序中的汉字用不用清除等,测试还要不要接外围元件,有没有电路图
回复 支持 反对

使用道具 举报

     
 楼主| 发表于 2020-11-24 09:06:47 来自手机 | 显示全部楼层
pdshyh 发表于 2020-11-23 19:02
SCL脚示波器测量无方波,sDA脚测量有方波。

要确定硬件电路没有问题才行
回复 支持 反对

使用道具 举报

     
 楼主| 发表于 2020-11-24 09:09:39 来自手机 | 显示全部楼层
fln0457 发表于 2020-11-23 22:07
老师,能否介绍再详细一点,如程序是测试什么的,程序中的汉字用不用清除等,测试还要不要接外围元件,有没 ...

这个程序是测试51单片机读写24C08的,直接复制到keil里面编译就可以使用了,中文是注解的不影响
回复 支持 反对

使用道具 举报

     
发表于 2020-11-24 11:16:11 | 显示全部楼层
iffi123 发表于 2020-11-23 19:33
按时续要求写,很容易工作

谢谢,找了几个示例都是按时续要求写,就是延时不一样,书本示例中应答延时250μs还有在主程序写读之间是10ms,其它延时都是两个空格4~5μs,另外两个例子和书本示例延时相似,有的更细腻,差距大的是应答延时是100ms,换了SCL脚示波器测量无方波,不知道是不是硬件问题,在用别的方法测量确认。
回复 支持 反对

使用道具 举报

     
发表于 2020-11-24 11:19:15 | 显示全部楼层
分立元件 发表于 2020-11-24 09:06
要确定硬件电路没有问题才行

谢谢我在把SCL和sDA脚互换看看测量sDA脚有没方波,如果没有说明单片机P2^2也有问题,在换一个。
回复 支持 反对

使用道具 举报

     
发表于 2020-11-24 12:16:42 | 显示全部楼层
pdshyh 发表于 2020-11-24 11:16
谢谢,找了几个示例都是按时续要求写,就是延时不一样,书本示例中应答延时250μs还有在主程序写读之间是 ...

延时太大了,速度很慢
回复 支持 反对

使用道具 举报

     
 楼主| 发表于 2020-12-2 19:17:18 来自手机 | 显示全部楼层
bobby_jack 发表于 2020-12-2 16:34
你好。我对硬件编程是个门外汉,请问是否有可能用这方法去控制SI5351?
谢谢。


都是使用I2C通信,但是使用指令肯定不一样,我没用过这个芯片不是很了解!
回复 支持 反对

使用道具 举报

     
发表于 2020-12-2 19:31:53 | 显示全部楼层
前阵子看了si5351资料, 就是他的小数分频要搞清楚怎么计算,其它没什么

也在我计划购买之中,发现得捷才卖7块多,简直不敢相信(上次淘宝买了一片不知道真假,4块5)
回复 支持 反对

使用道具 举报

     
发表于 2020-12-21 20:20:07 | 显示全部楼层
93c46的测试程序有没有?
回复 支持 反对

使用道具 举报

     
 楼主| 发表于 2020-12-22 09:39:28 来自手机 | 显示全部楼层
yrxinxin 发表于 2020-12-21 20:20
93c46的测试程序有没有?

没有这个芯片的测试程序,去51黑论坛找找吧,应该有!
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 加入会员

本版积分规则

小黑屋|手机版|矿石收音机 ( 蒙ICP备05000029号-1 )

蒙公网安备 15040402000005号

GMT+8, 2025-4-28 06:07

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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