您当前的位置:五五电子网电子知识单片机-工控设备51单片机PCF8563时钟+AT24C02+LCD12864显示时钟程序 正文
PCF8563时钟+AT24C02+LCD12864显示时钟程序

PCF8563时钟+AT24C02+LCD12864显示时钟程序

点击数:7467 次   录入时间:03-04 11:59:53   整理:http://www.55dianzi.com   51单片机
    lcdclrall();
    for(i=0;i<8;i++)
    {    Nowcol=0x00;
        k=128;
        while(k!=0)
        {
            if(Nowcol<0x40)
            {CS1=0;CS2=1;}
            else
            {        if(Nowcol<0x80)
                {CS1=1;CS2=0;}
                else
                {break;}
            }
            lcdwrite_cmd(i|0xb8);
            lcdwrite_cmd(Nowcol|0x40);
            lcdwrite_dat(bmp12864[j]);
            lcd_busy();
            Nowcol++;
            j++;
            k--;
        }
    }    
}    
void delay(void)
{
    Uchar i,j,k;
    for(i=0x02;i>0;i--)
    {
        for(j=0x96;j>0;j--)
        {
            for(k=0xfa;k>0;k--)
            {
                _nop_();
//                _nop_();
            }
        }
    }
}


/*----------------------I2C要用到的一些子程序---------------------------------*/
/***********************以下为一些用到的子程序*********************************/
/*延时子程序*/
void Delay_1ms(Uchar time)
{
    Uchar j;
    while(time--)
    {
        for(j=163;j!=0;j--)
        {;}
    }
}

/*I2C的起动程序*/
void I2CStart(void)    
{
    SDA = 1;
    SomeNOP();
    SCL = 1;
    SomeNOP();
    SDA = 0;
    SomeNOP();
    SCL = 0;
    SomeNOP();
}

/*I2C的停止程序*/
void I2CStop(void)
{
    SDA = 0;
    SomeNOP();
    SCL = 1;
    SomeNOP();
    SDA = 1;
    SomeNOP();
}

void ACK(void)            //Acknowledge信号
{
    SDA = 0;
    SomeNOP();
    SCL = 1;
    SomeNOP();
    SCL = 0;
    SomeNOP();
}

void NACK(void)            //没有Acknowledge信号
{
    SDA = 1;
    SomeNOP();
    SCL = 1;
    SomeNOP();
    SCL = 0;
    SomeNOP();
}

void AutoACK(void)        //在一定的时间内自动确定ACK的信号//
{
    Uchar i = 0;
    SCL = 1;
    SomeNOP();
    while((SDA == 1)&&(i<255))i++;
    SCL = 0;
    SomeNOP();
}

    
/*I2C写数据程序(向数据线上写一个BYTE)*/
void Writex(Uchar j)
{
    Uchar i,temp;
    temp = j;
    for (i=0;i<8;i++)    //串行移位,先送高位,再送低位//
    {
        temp =temp<<1;
        SCL = 0;
        SomeNOP();
        SDA = CY;
        SomeNOP();
        SCL = 1;
        SomeNOP();
    }
    SCL = 0;
    SomeNOP();
    SDA = 1;
    SomeNOP();
}
/*I2C读数据程序(从数据线上读出一个BYTE)返回值为读出的数据(BYTE型)*/
Uchar Readx(void)
{
    Uchar i,j,k=0;
    SCL = 0;
    SomeNOP();
    SDA = 1;
    for (i=0;i<8;i++)    // 串行移位,先读出高位,后读出低位//
    {
        SomeNOP();
        SCL = 1;
        SomeNOP();
        if(SDA ==1) j=1;
        else    j=0;
        k =(k<<1)|j;
        SCL = 0;
    }
    SomeNOP();        
    return(k);         //返回读出的值//
}

//******************以下为对24CXX系列的读写程序******************************//
//*************24CXX的devICe address 为写0A0H,读为0A1H*********************//
/*某个地址写数据*/
void X24_Write(Uchar Addresshigh,Uchar Addresslow,Uchar Write_date)
{
    I2CStart();

上一页  [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [11] [12]  下一页


本文关键字:程序  51单片机单片机-工控设备 - 51单片机