找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 5282|回复: 1
收起左侧

用I2C向EEPROM写数与读数反映到LED灯,为什么灯亮的很暗啊

[复制链接]
ID:35727 发表于 2012-5-15 22:06 | 显示全部楼层 |阅读模式

程序如下,点阵,数码管都关了。灯还是很暗;

#include<reg51.h>
#define uchar unsigned char
#define uint unsigned int
sbit sda=P2^0;
sbit scl=P2^1;
sbit clk=P2^4;
sbit lie=P2^5;
sbit wei=P2^7;
sbit duan=P2^6;
sbit led=P1^4;
void delay()
{ ; ;
}
void delay1(uchar z)
{
     uchar x,y;
  for(x=z;x>0;x--)
  for(y=110;y>0;y--);
}
void start()        //开始
{
   sda=1;
 delay();
 scl=1;
 delay();
 sda=0;
 delay();
}
void stop()       //停止
{
     sda=0;
 delay();
 scl=1;
 delay();
 sda=1;
 delay(); 
}
void respons()        //应答
{  uchar m;
   scl=1;
   delay();
   while((sda==1)&&(m<255))
   m++;
   scl=0;
   delay(); 
}
void write_byte(uchar x)      //写一个字节数据
{  uchar i,temp;
      temp=x;
      for(i=0;i<8;i++)
     {
   scl=0;
   delay();
   temp=temp<<1;
   sda=CY;
   delay();
   scl=1;
   delay();
  }
  scl=0;
  delay();
  sda=1;
      delay();
}
uchar read_byte()         //读一个字节数据
{   uchar i,k;
     scl=0;
  delay();
  sda=1;
  delay();
      for(i=0;i<8;i++)
   {
        scl=1;
     delay();
     k=k<<1|sda;
     delay();
     scl=0;
     delay();
   }
   return k;
     
}
void out164(uchar z)    //164数据输入
{ uchar i;
   for(i=0;i<8;i++)
      {    lie=z&0x80;
        clk=0;
     clk=1;
     z=z<<1;  
   }
}
void init()           //初始化
{
      scl=1;
   sda=1;
   delay();
   duan=1;          //关数码管
   P0=0;
   duan=0;
   wei=1;
   P0=0xff;
   wei=0;
   led=0;
   out164(0);          //关点阵
}
void write_aad_date(uchar add,uchar date)     //向某地址写入一个数
{
   start();
   write_byte(0xa0);
   respons();
   write_byte(add);
   respons();
   write_byte(date);
   respons();
   stop();
}
uchar read_add_date(uchar add)            //从某地址读出该数
{    uchar a;
      start();
   write_byte(0xa0);
   respons();
   write_byte(add);
   respons();
   start();
   write_byte(0xa1);
   respons();
   a=read_byte();
   respons();
   stop();
   return a;
}
void main()            //主函数

      init();
   write_aad_date(01,0x55);
   delay1(100);
   P0=read_add_date(01);
}

回复

使用道具 举报

ID:45963 发表于 2012-11-6 13:50 | 显示全部楼层
读写频率高,数码管需要的电流大,所以你显示暗
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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