#include "all.H"
u8 xdata OLED_Write_Buffer[8][8][16];
u8 xdata OLED_Modify_Allow=0;
void OLED_Write_Reg(u8 Reg)
{
IIC_Start();
IIC_Write_Byte(0x78);
IIC_Read_Ack();
IIC_Write_Byte(0x00);
IIC_Read_Ack();
IIC_Write_Byte(Reg);
IIC_Read_Ack();
IIC_Stop();
}
void OLED_Write_Data(u8 PAGE,u8 SEG16)
{
u8 i;
PAGE=0;
SEG16=0;
OLED_Write_Reg(0xb0+PAGE);
OLED_Write_Reg(SEG16|0x10);
OLED_Write_Reg(0);
IIC_Start();
IIC_Write_Byte(0x78);
IIC_Read_Ack();
IIC_Write_Byte(0x40);
IIC_Read_Ack();
for(i=0;i<16;i++)
{
IIC_Write_Byte(OLED_Write_Buffer[PAGE][SEG16][i]);
IIC_Read_Ack();
}
IIC_Stop();
}
void OLED_New_Display_Ser()
{
static xdata u8 count;
static xdata u8 PAGE=0;
switch(count)
{
case 10:/*OLED_Modify_Allow=0;*/OLED_Write_Data(PAGE,0);break;
case 20:OLED_Write_Data(PAGE,1);break;
case 30:OLED_Write_Data(PAGE,2);break;
case 40:OLED_Write_Data(PAGE,3);break;
case 50:OLED_Write_Data(PAGE,4);break;
case 60:OLED_Write_Data(PAGE,5);break;
case 70:OLED_Write_Data(PAGE,6);break;
case 80:OLED_Write_Data(PAGE,7);count=0;PAGE++;PAGE=PAGE%8;break;
default:OLED_Modify_Allow=1;break;
}
count++;
}
void OLED_Display_Symbor_ser(u8 PAGE,u8 SEG16,u8 Dat1,u8 Dat2)
{
u8 data i,Value1,Value2;
Value1=Dat1-' ';
Value2=Dat2-' ';
for(i=0;i<8;i++)
{
OLED_Write_Buffer[PAGE][SEG16][i]=F8X16[Value1*16+i];
}
for(i=0;i<8;i++)
{
OLED_Write_Buffer[PAGE][SEG16][i+8]=F8X16[Value2*16+i];
}
for(i=0;i<8;i++)
{
OLED_Write_Buffer[PAGE+1][SEG16][i]=F8X16[Value1*16+8+i];
}
for(i=0;i<8;i++)
{
OLED_Write_Buffer[PAGE+1][SEG16][i+8]=F8X16[Value2*16+8+i];
}
}
void OLED_Display_Chines_Ser(u8 PAGE,u8 SEG16,u8 Dat) //ÖDÎÄÏÔê¾
{
u8 xdata i=0;
for(i=0;i<16;i++)
{
OLED_Write_Buffer[PAGE][SEG16][i]=Hzk[Dat][i];
}
for(i=0;i<16;i++)
{
OLED_Write_Buffer[PAGE+1][SEG16][i]=Hzk[Dat+1][i];
}
}
void OLED_Write_fixed_Buffer()
{
OLED_Display_Symbor_Ser(0,0,'*','*');
OLED_Display_Symbor_Ser(0,1,'*',' ');
OLED_Display_Chines_Ser(0,2,0);
OLED_Display_Chines_Ser(0,3,2);
OLED_Display_Chines_Ser(0,4,4);
OLED_Display_Chines_Ser(0,5,6);
OLED_Display_Symbor_Ser(0,6,'*','*');
OLED_Display_Symbor_Ser(0,7,'*','*');
OLED_Display_Symbor_Ser(2,0,'2','0');
OLED_Display_Symbor_Ser(2,1,' ',' ');
OLED_Display_Chines_Ser(2,2,8);
OLED_Display_Symbor_Ser(2,3,' ',' ');
OLED_Display_Chines_Ser(2,4,10);
OLED_Display_Symbor_Ser(2,5,' ',' ');
OLED_Display_Chines_Ser(2,6,32);
OLED_Display_Symbor_Ser(2,7,' ',' ');
OLED_Display_Chines_Ser(4,0,16);
OLED_Display_Chines_Ser(4,1,18);
OLED_Display_Symbor_Ser(4,2,' ',' ');
OLED_Display_Symbor_Ser(4,3,' ',' ');
OLED_Display_Chines_Ser(4,4,12);
OLED_Display_Symbor_Ser(4,5,' ',' ');
OLED_Display_Chines_Ser(4,6,14);
OLED_Display_Symbor_Ser(4,7,' ',' ');
OLED_Display_Symbor_Ser(6,0,'w','q');
OLED_Display_Symbor_Ser(6,1,'x','d');
OLED_Display_Symbor_Ser(6,2,'z','.');
OLED_Display_Symbor_Ser(6,3,'t','a');
OLED_Display_Symbor_Ser(6,4,'o','b');
OLED_Display_Symbor_Ser(6,5,'a','o');
OLED_Display_Symbor_Ser(6,6,'.','c');
OLED_Display_Symbor_Ser(6,7,'o','m');
}
void OLED_Init()
{
OLED_Write_Reg(0x40);
OLED_Write_Reg(0x81);
OLED_Write_Reg(0xff);
OLED_Write_Reg(0xda);
OLED_Write_Reg(0x12);
OLED_Write_Reg(0xc8);
OLED_Write_Reg(0xa1);
OLED_Write_Reg(0xa6);
OLED_Write_Reg(0xa8);
OLED_Write_Reg(0x3f);
OLED_Write_Reg(0x20);
OLED_Write_Reg(0x00);
OLED_Write_Reg(0x8d);
OLED_Write_Reg(0x14);
OLED_Write_Reg(0xa4);
OLED_Write_Reg(0xaf);
OLED_Write_Reg(0xd3);
OLED_Write_Reg(0x00);
OLED_Write_Reg(0xd5);
OLED_Write_Reg(0x00);
OLED_Write_Reg(0xd9);
OLED_Write_Reg(0x22);
OLED_Write_Reg(0xdb);
OLED_Write_Reg(0x20);
OLED_Write_Data(0,0);
OLED_Write_fixed_Buffer();
}
|