⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 24c02.txt

📁 本程序实现了利用单片机操作24C02
💻 TXT
字号:
#include <reg51.h>
#include <INTRINS.H>
sbit scl=P3^6;            //针脚定义
sbit sda=P3^7;
sbit a0=ACC^0;
sbit a1=ACC^1;
sbit a2=ACC^2;
sbit a3=ACC^3;
sbit a4=ACC^4;
sbit a5=ACC^5;
sbit a6=ACC^6;
sbit a7=ACC^7;
//数码管显示的数据                 0     1    2    3    4    5    6    7
static unsigned char code led[8]={0x5b,0x06,0x4f,0x4F,0x66,0x6D,0x7D,0x07};
//这里是要完成4.7us的延时
void delay()  
{
 _nop_();
 _nop_();
 _nop_();
 _nop_();
}
//24c02的开始信号
void start()  
{
 sda=1;
 scl=1;
 delay();
 sda=0;
 delay();
 scl=0;
 delay();
}
//24c02的停止信号
void stop()  
{
 sda=0;
 scl=1;
 delay();
 sda=1;
 delay();
}
//24c02的ack信号
bit checkack() 
{
 bit err;
 sda=1;
 scl=1;
 delay();
 err=sda;
 delay();
 scl=0;
 if(err) 
  return 0;
 else
  return 1;
}
//对24c02写一个byte数据
void writebyte(unsigned char num) 
{
 ACC=num;
 sda=a7;scl=1;scl=0;
 sda=a6;scl=1;scl=0;
 sda=a5;scl=1;scl=0;
 sda=a4;scl=1;scl=0;
 sda=a3;scl=1;scl=0;
 sda=a2;scl=1;scl=0;
 sda=a1;scl=1;scl=0;
 sda=a0;scl=1;scl=0;
 sda=1;
 scl=1;
}
//对24c02读一个byte数据
unsigned char readbyte()         
{
 sda=1;
 scl=1;a7=sda;scl=0;
 scl=1;a6=sda;scl=0;
 scl=1;a5=sda;scl=0;
 scl=1;a4=sda;scl=0;
 scl=1;a3=sda;scl=0;
 scl=1;a2=sda;scl=0;
 scl=1;a1=sda;scl=0;
 scl=1;a0=sda;scl=0;
 return (ACC);
}
//对24c02指定地址写入指定数据
void write24c02(unsigned char address,unsigned char num)
{
 bit err;
 start();
 writebyte(0xa0);
 err=checkack();
 writebyte(address);
 err=checkack();
 writebyte(num);
 err=checkack();
 stop();
}
//对24c02指定地址中的数据读出来
unsigned char read24c02(unsigned char address)
{
 unsigned char result;
 bit err;
 start();
 writebyte(0xa0);
 err=checkack();
 writebyte(address);
 err=checkack();
 start();
 writebyte(0xa1);
 err=checkack();
 result=readbyte();
 stop();
 return result;
}
void delay1s()
{
    unsigned char i,j;
 for(i=0;i<10;i++)
 {
    for(j=0;j<10;j++)
    {
       _nop_();
    }
 }
}
//将24c02中读出的数据显示在数码管上面
void displed(unsigned char num,unsigned char dsp)
{

 
   switch (num)
   {
      case 0:
     P2=0xfe;
  P0=dsp;
  break;
   case 1:
     P2=0xfd;
  P0=dsp;
  break;
   case 2:
     P2=0xfb;
  P0=dsp;
  break;
   case 3:
     P2=0xf7;
  P0=dsp;
  break;
   case 4:
     P2=0xef;
  P0=dsp;
  break;
   case 5:
     P2=0xdf;
  P0=dsp;
  break;
   case 6:
     P2=0xbf;
  P0=dsp;
  break;
   case 7:
     P2=0x7f;
  P0=dsp;
  break;
      default:

   break;
   }
}
void main()
{
 unsigned char address1,address2,i,temp;
 unsigned char led1[8];
address1=0x94;
 i=0x00;
 while(i<8)
 {
   // address1=address2;
    write24c02(address1,led[i]);
    address1++;
    i++;
    delay1s();
	delay1s();
	delay1s();
	delay1s();
	delay1s();

 }
 address2=0x94;
 i=0x00;
 while(1)
 {
     
     lable1:
 // address1=address2;
     if(i<=7)
  {
     led1[i]=read24c02(address2);
     displed(i,led1[i]);
  }
  else
  {
     i=0x00;
    address2=0x94;
     goto lable1;
  }
  i++;
  address2++;
  delay1s();
  delay1s();
  delay1s();
  delay1s();
 }
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -