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

📄 xf4.c

📁 I2C读写,LED根据读写的数字显示出来.
💻 C
字号:
#include <reg51.h>
/*unsigned char DATA_7SEG[10] = {0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};*/
	 unsigned char DAT[11]={0xfd,0x60,0xda,0xf2,0x66,0xb6,0xbe,0xe0,0xfe,0xf6,0x00};
/*     unsigned char DIG[12]={0x30,0x31,0x32,0x33,0x34,0x35,0x36,0x37,0x38,0x39,0x3d"=",0x5b"[",0x25"%"0x24"$"};*/
void delay(int ) ;
sbit scl=P2^5;  
sbit sda=P2^4; 

sbit P27=P2^7;	//key
sbit P26=P2^6 ;	//红外

sbit P20=P2^0;	//升
sbit P21=P2^1;	//降
sbit P22=P2^2;	//绿
sbit P23=P2^3;	//红

sbit SE=P1^0;
sbit SCK=P1^1;
sbit RCK=P1^2;


sbit DOG=P1^3;
void x24c02_read(unsigned );  //从24c02的地址address中读取一批字节数据,显示到led
void x24c02_write(unsigned   );  //向24c02的address地址中写入一字节数据info
void x24c02_init();   //24c02初始化子程序
void start();
void stop();
unsigned char readx();
void clock();
void out_disp(unsigned char);


void main()
{
   unsigned char dat1,dat2,pcdata;
  int i,m,zt;
  unsigned add;
   delay(1000);
   x24c02_init();
  while (1){
       if(P27==0){
	P22=0;/*绿灯*/P23=1;/*红灯*/P20=0;/*栏杆机升*/P21=1;/*栏杆机降*/    
//       tx_char("ok");
 //      add=rx_addr();
//       i=rx_char();
	   m=9;
       /*调用中断*/
       start(); x24c02_write(0xa0);
       clock(); x24c02_write(0x00);
      
       for(m=0;m<i;m++)
          {
           //pcdata=rx_char();
            clock(); x24c02_write(DAT[9]);
            clock(); }
        stop();
      
        delay(5);
   
         x24c02_read(0x00);
         }      
      delay(100);
   
      }
    }
    




void delay(int time) {
int i,j;
for (i=0;i<time;i++) 
{
	for (j= 0;j<10;j++) ;} 
}

void out_disp(unsigned char dd) {
	unsigned char i,k;
	for (i=0;i<8;i++) {  k=dd & 0x01;SE=k;SCK=1;dd=dd>>1;SCK=0;	}
	RCK=0;RCK=1;
               }

  


void flash()
{
   unsigned char u;
   DOG=~DOG;
}
void x24c02_init()
{
   scl=1; flash(); sda=1; flash();
}
void start()
{
   sda=1; flash(); scl=1; flash(); sda=0; flash(); scl=0; sda=1;flash();
}
void stop()
{
   sda=0; flash(); scl=1; flash(); sda=1; flash();scl=0;
}
void x24c02_write(unsigned char j)
{
   unsigned char i,temp;
   temp=j;
   for (i=0;i<8;i++){
      temp=temp<<1; scl=0; flash(); sda=CY; flash(); scl=1; flash();
   }
   scl=0; flash(); sda=1; flash();
}
unsigned char readx()
{
   unsigned char i,j,k=0;
   flash(); sda=1;
   for (i=0;i<8;i++){
      flash(); scl=1; flash();
      k=(k<<1)|sda; scl=0;
   }
   flash(); return(k);
}
void clock()
{
   char i=0;
   scl=1; flash();
   while ((sda==1)&&(i<255))i++;
   scl=0; flash();
}
void x24c02_read(unsigned address)
{
   unsigned char i,p;
   start(); writex(0xa0);
   clock(); writex(address);
   clock(); start();
   writex(0xa1); clock();
   for(p=0;p<9;p=p+2){
      i=readx();
      out_disp(i);
      i=readx();
      out_disp(i);

      RCK=0; RCK=1;
      P0=p/32;
   }
   stop();
   delay1(1);
}
void x24c02_write(unsigned address,unsigned char info)
{
   EA=0;
   start(); writex(0xa0);
   clock(); writex(address);
   clock(); writex(info);
   clock(); stop();
   EA=1;
   delay1(5);
}

⌨️ 快捷键说明

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