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单片机