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

📄 jcsb78-01.bak

📁 PCF8576 DRIVER
💻 BAK
字号:
#include  <reg52.h>
#include  <INTRINS.H>
sbit SDA=P1^0;
sbit SCL=P1^2;
sbit EN=P3^0;
sbit GO1=P1^4;
sbit GO2=P1^5;
sbit LED1=P3^4;
sbit LED2=P3^5;
sbit LED3=P3^6;


void DelayXms(unsigned int i);
void I2CStart();
void I2CStop();
void I2CSent(unsigned char Data);
void Display(unsigned char d);
bit Wait();
bit key; 
char l;

unsigned char co;

void DelayXms(unsigned int i)
{
    unsigned char a;
    unsigned int b;
    for(b=0;b<i;b++)
    for(a=0;a<255;a++);
}

void I2CStart( void )
{
    SDA=1;
    _nop_();
    _nop_();	
    _nop_();				
    SCL=1;	
    _nop_();
    _nop_();	
    _nop_();		   
    SDA=0;	
    _nop_();
    _nop_();	
    _nop_();			
    SCL=0;			
}

void I2CStop( void )
{
    SDA=0;
    _nop_();
    _nop_();	
    _nop_();	
    SCL=1;
    _nop_();
    _nop_();	
    _nop_();	
    SDA=1;
    _nop_();
    _nop_();	
    _nop_();
    SCL=0;			    
} 

void I2CSent(unsigned char Data)	
{
    unsigned char i,d;
    bit ack;
    SDA=1;
Resent:
    d=Data;
    for(i=0;i<8;i++)
    {
        if(d&0x80)
        SDA=1;
        else
        SDA=0;
        d<<=1;
        _nop_();
        _nop_();	
        _nop_();	
        SCL=1;
        _nop_();
        _nop_();	
        _nop_();	
        SCL=0;
        _nop_();
        _nop_();	
        _nop_();	
    }
    _nop_();
    _nop_();	
    _nop_();	
    SDA=1;
    _nop_();
    _nop_();	
    _nop_();	
    SCL=1;
    _nop_();
    _nop_();	
    _nop_();	
    ack=SDA;
    SCL=0;
    _nop_();
    _nop_();	
    _nop_();	
   if(ack==1)goto Resent;
}



bit Wait()
{  
    bit L;
    while(1)
    {
        if(GO1==0||GO2==0)
        {
            if(GO1==0)L=1;
            if(GO2==0)L=0;
            DelayXms(100);
            while(GO1==0||GO2==0);
            return L;
        }
    }
    return L;
}
       
void Display(unsigned char d)
{
    unsigned char i;
    EA=0;
    I2CStart();
    I2CSent(0x70);     
    I2CSent(0xe0);    //Device select A0=A1=A2=0
    I2CSent(0xce);    //Mode set    
    I2CSent(0xf0);             
    I2CSent(0x00); 
    for(i=0;i<10;i++)
    {
        I2CSent(d);
    }   
    I2CStop();
    I2CStart();
    I2CSent(0x70);     
    I2CSent(0xe1);    //Device select A0=A1=A2=0 
    I2CSent(0xce);    //Mode set 
    I2CSent(0xf0);               
    I2CSent(0x00); 
    for(i=0;i<10;i++)
    {
        I2CSent(d);
    }   
    I2CStop(); 
    EA=1;
} 
void Display1()
{
    EA=0;
    for(;co<80;)
    {
     re:
        Display(0x00);
        I2CStart();
        I2CSent(0x70);     
        I2CSent(0xe0+co/40);    //Device select A0=A1=A2=0
        I2CSent(0xce);    //Mode set 客人
        I2CSent(0xf0);             
        I2CSent(co%40);
        I2CSent(0xc0);
        I2CStop(); 
        key=Wait();
        if(key==1)
        {
            if(co==0)return;
            else
            co--;
        }
        if(key==1)goto re;
        else
        co++;  
   }
  EA=1;
}
void E1() interrupt 2
{
    EA=0;
    DelayXms(300); 
	l++; 
	if(l==4)l=1;
    LED1=(bit)(l&0x01);
    LED2=(bit)(l&0x02);
    EA=1;
}

void E0() interrupt 0
{
    EA=0;
    DelayXms(300);
    LED3=~LED3;
    EA=1;
}

void main(void) 
{  
    EN=1;
    IE=0X85;
    IE0=1;
    IE1=0;
    LED1=0;
    LED2=1;
    LED3=0;
    while(1)
    {
    d1: Display(0xff);
        if(Wait()==1)goto d5;
    d2: Display(0x00);
        if(Wait()==1)goto d1;
        co=0;
    d3: Display1();
        if(key==1)goto d2;
    d4: Display(0xaa);
        key=Wait();
        if(key==1)co=79;
        if(key==1)goto d3;
    d5: Display(0x55);
        if(Wait()==1)goto d4;
    }
}
   




















































































⌨️ 快捷键说明

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