標(biāo)題: 用I2C向EEPROM寫(xiě)數(shù)與讀數(shù)反映到LED燈,為什么燈亮的很暗啊 [打印本頁(yè)]

作者: wy704972600    時(shí)間: 2012-5-15 22:06
標(biāo)題: 用I2C向EEPROM寫(xiě)數(shù)與讀數(shù)反映到LED燈,為什么燈亮的很暗啊

程序如下,點(diǎn)陣,數(shù)碼管都關(guān)了。燈還是很暗;

#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()        //開(kāi)始
{
   sda=1;
 delay();
 scl=1;
 delay();
 sda=0;
 delay();
}
void stop()       //停止
{
     sda=0;
 delay();
 scl=1;
 delay();
 sda=1;
 delay(); 
}
void respons()        //應(yīng)答
{  uchar m;
   scl=1;
   delay();
   while((sda==1)&&(m<255))
   m++;
   scl=0;
   delay(); 
}
void write_byte(uchar x)      //寫(xiě)一個(gè)字節(jié)數(shù)據(jù)
{  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()         //讀一個(gè)字節(jié)數(shù)據(jù)
{   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數(shù)據(jù)輸入
{ 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;          //關(guān)數(shù)碼管
   P0=0;
   duan=0;
   wei=1;
   P0=0xff;
   wei=0;
   led=0;
   out164(0);          //關(guān)點(diǎn)陣
}
void write_aad_date(uchar add,uchar date)     //向某地址寫(xiě)入一個(gè)數(shù)
{
   start();
   write_byte(0xa0);
   respons();
   write_byte(add);
   respons();
   write_byte(date);
   respons();
   stop();
}
uchar read_add_date(uchar add)            //從某地址讀出該數(shù)
{    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()            //主函數(shù)

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


作者: amchina    時(shí)間: 2012-11-6 13:50
讀寫(xiě)頻率高,數(shù)碼管需要的電流大,所以你顯示暗




歡迎光臨 (http://www.torrancerestoration.com/bbs/) Powered by Discuz! X3.1