找回密码
 立即注册

QQ登录

只需一步,快速开始

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

51单片机程序驱动PCF8574点亮一个发光二极管,二极管不亮

[复制链接]
跳转到指定楼层
楼主
哪位大神帮我看一下程序
#include <reg52.h>
#include <intrins.h>
#define uchar unsigned char
#define uint unsigned int
sbit scl=P0^0;
sbit sda=P0^1;

void delay(uint z)
{
  uint a,b;
  for(a=z;a>0;a--)
  for(b=200;b>0;b--);
}
void start()
{
  sda=1;
  delay(6);
  scl=1;
  delay(6);
  sda=0;
  delay(6);
}

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

void ack()
{
  uchar i;
  scl=1;
  delay(6);
  while((sda==1)&(i<250))i++;
  delay(6);
  scl=0;
  delay(6);
}

void write_i2c_byte(uchar date)
{
  uchar temp,u;
  temp=date;
  for(u=0;u<8;u++)
  {
        temp=temp<<1;
        scl=0;
    delay(6);
        sda=CY;
        delay(6);
    scl=1;
        delay(6);
  }
    scl=0;
    delay(6);
    sda=1;
    delay(6);
}

void writer_PCF8574()
{
  start();
  write_i2c_byte(0x4e);
  ack();
  write_i2c_byte(0x00);
  ack();
  stop();
}

void main()
{
  sda=1;
  delay(6);
  scl=1;
  delay(6);
  writer_PCF8574();
  while(1);
}


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

使用道具 举报

沙发
ID:262 发表于 2023-7-31 03:31 | 只看该作者
会不会是电路接错了?
回复

使用道具 举报

板凳
ID:320306 发表于 2023-7-31 09:21 | 只看该作者
建议把电路图也放上来看看!!!
回复

使用道具 举报

地板
ID:161164 发表于 2023-7-31 10:27 | 只看该作者
这延时函数太长了,delay(6)差不多3.5ms
应改为以下
  1. void delay(uchar z)
  2. {
  3.     while(z--);
  4. }
复制代码






评分

参与人数 1黑币 +20 收起 理由
admin + 20 回帖助人的奖励!

查看全部评分

回复

使用道具 举报

5#
ID:1090070 发表于 2023-8-5 10:54 | 只看该作者
是延时的问题,谢谢各位
回复

使用道具 举报

6#
ID:597405 发表于 2023-8-5 15:33 | 只看该作者
使用I2C一定要注意时间。我以前使用同一个程序,在C52和15W上。C52能正常使用,在15上就不能了,检查发现,由于15W系列单片机响应速度太快,端口的状态还没有变化,就收集完毕了。修改延时时间,等端口变化后在采集,一采一个准。
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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