📄 s6b0108.i
字号:
void Delay(int t)
{
while(--t);
}
void Long_Delay(int t)
{
int n = 0xff;
while(--t)
{
while(--n);
n = 0xff;
}
}
unsigned char Data_Convert(unsigned char lcd_data)
{
Lcd_Byte_0.lcd_byte = lcd_data;
Lcd_Byte_1.lcd_byte = lcd_data;
Lcd_Byte_0.lcd_byte &= 0x0f;
Lcd_Byte_1.lcd_byte &= 0xf0;
Lcd_Byte_0.lcd_bit.lb7 = Lcd_Byte_0.lcd_bit.lb0 ;
Lcd_Byte_0.lcd_bit.lb6 = Lcd_Byte_0.lcd_bit.lb1 ;
Lcd_Byte_0.lcd_bit.lb5 = Lcd_Byte_0.lcd_bit.lb2 ;
Lcd_Byte_0.lcd_bit.lb4 = Lcd_Byte_0.lcd_bit.lb3 ;
Lcd_Byte_0.lcd_byte &= 0xf0;
Lcd_Byte_0.lcd_byte = Lcd_Byte_0.lcd_byte >> 4;
Lcd_Byte_2.lcd_byte = Lcd_Byte_0.lcd_byte | Lcd_Byte_1.lcd_byte ;
return Lcd_Byte_2.lcd_byte ;
}
void Write_0108_Reg(unsigned char Reg_Code)
{
unsigned char bus_low;
unsigned char bus_high;
bus_low = bus_high = Data_Convert(Reg_Code);
bus_low &= 0x0f;
bus_high &= 0xf0;
bus_high = bus_high >> 4;
p6_addr.bit.b2 = 0;
p0_addr.byte &= 0xf0;
p1_addr.byte &= 0xf0;
p0_addr.byte |= bus_low;
p1_addr.byte |= bus_high;
p0_addr.bit.b4 = 1;
p0_addr.bit.b4 = 0;
}
void Write_0108_Data(unsigned char Bus_Data)
{
unsigned char bus_low;
unsigned char bus_high;
bus_low = bus_high = Data_Convert(Bus_Data);
bus_low &= 0x0f;
bus_high &= 0xf0;
bus_high = bus_high >> 4;
p6_addr.bit.b2 = 1;
p0_addr.byte &= 0xf0;
p1_addr.byte &= 0xf0;
p0_addr.byte |= bus_low;
p1_addr.byte |= bus_high;
p0_addr.bit.b4 = 1;
p0_addr.bit.b4 = 0;
}
unsigned char Read_0108_Data()
{
unsigned char Bus_Data_0;
unsigned char Bus_Data_1;
p6_addr.bit.b2 = 1;
p0_addr.byte &= 0xf0;
p1_addr.byte &= 0xf0;
p0_addr.bit.b4 = 1;
Bus_Data_1 = p1_addr.byte ;
Bus_Data_0 = p0_addr.byte ;
p0_addr.bit.b4 = 0;
Bus_Data_1 = Bus_Data_1 << 4;
Bus_Data_0 &= 0xf0;
Bus_Data_0 |= Bus_Data_1;
return Bus_Data_0;
}
void Set_XY(unsigned char X_Column, unsigned char Y_Page)
{
Write_0108_Reg(0xB8 +Y_Page);
Write_0108_Reg(0x40 +X_Column);
}
void Init_0108()
{
Delay(100);
p0_addr.bit.b5 =0;
p6_addr.bit.b1 =0;
Delay(100);
Write_0108_Reg(0x3E );
Write_0108_Reg(0xC0 );
Write_0108_Reg(0xB8 );
Write_0108_Reg(0x40 );
Write_0108_Reg(0x3F );
Delay(100);
p0_addr.bit.b5 =0;
p6_addr.bit.b1 =1;
Delay(100);
Write_0108_Reg(0x3E );
Write_0108_Reg(0xC0 );
Write_0108_Reg(0xB8 );
Write_0108_Reg(0x40 );
Write_0108_Reg(0x3F );
Delay(100);
p0_addr.bit.b5 =1;
p6_addr.bit.b1 =0;
Delay(100);
Write_0108_Reg(0x3E );
Write_0108_Reg(0xC0 );
Write_0108_Reg(0xB8 );
Write_0108_Reg(0x40 );
Write_0108_Reg(0x3F );
}
void Clr_Screen_0()
{
unsigned char j, k;
unsigned int n=0;
p0_addr.bit.b5 =0;
p6_addr.bit.b1 =0;
Delay(100);
for(k=0;k<8;k++)
{
Write_0108_Reg(0xB8 +k);
Write_0108_Reg(0x40 );
Write_0108_Reg(0xC0 );
for(j=0;j<64;j++)
{
Write_0108_Data(0x00);
n++;
}
}
}
void Clr_Screen_1()
{
unsigned char j, k;
unsigned int n=0;
p0_addr.bit.b5 =0;
p6_addr.bit.b1 =1;
Delay(100);
for(k=0;k<8;k++)
{
Write_0108_Reg(0xB8 +k);
Write_0108_Reg(0x40 );
Write_0108_Reg(0xC0 );
for(j=0;j<64;j++)
{
Write_0108_Data(0x00);
n++;
}
}
}
void Clr_Screen_2()
{
unsigned char j, k;
unsigned int n=0;
p0_addr.bit.b5 =1;
p6_addr.bit.b1 =0;
Delay(100);
for(k=0;k<8;k++)
{
Write_0108_Reg(0xB8 +k);
Write_0108_Reg(0x40 );
Write_0108_Reg(0xC0 );
for(j=0;j<64;j++)
{
Write_0108_Data(0x00);
n++;
}
}
}
void Set_Char(unsigned char cs, unsigned char page, unsigned char num, unsigned char far * bitmap)
{
unsigned char j, k;
unsigned int n=0;
unsigned int i;
unsigned char a,b;
if (cs == 0x00 )
{
p0_addr.bit.b5 =0;
p6_addr.bit.b1 =0;
}
else if (cs == 0x01 )
{
p0_addr.bit.b5 =0;
p6_addr.bit.b1 =1;
}
else if (cs == 0x02 )
{
p0_addr.bit.b5 =1;
p6_addr.bit.b1 =0;
}
Delay(100);
Write_0108_Reg(0xB8 + page);
Write_0108_Reg(0x40 + num);
Write_0108_Reg(0xC0 );
if (page == 2)
{
for(j=0;j<8;j++)
{
b = bitmap[n];
a = b | 0x01;
Write_0108_Data(a);
n++;
}
}
else
{
for(j=0;j<8;j++)
{
Write_0108_Data(bitmap[n]);
n++;
}
}
page += 1;
Write_0108_Reg(0xB8 + page);
Write_0108_Reg(0x40 + num);
if (page == 7)
{
for(j=0;j<8;j++)
{
b = bitmap[n];
a = b | 0x80;
Write_0108_Data(a);
n++;
}
}
else
{
for(j=0;j<8;j++)
{
Write_0108_Data(bitmap[n]);
n++;
}
}
}
void Set_Caracter(unsigned char cs, unsigned char page, unsigned char num, unsigned char far * bitmap)
{
unsigned char j, k;
unsigned int n=0;
unsigned int i;
if (cs == 0x00 )
{
p0_addr.bit.b5 =0;
p6_addr.bit.b1 =0;
}
else if (cs == 0x01 )
{
p0_addr.bit.b5 =0;
p6_addr.bit.b1 =1;
}
else if (cs == 0x02 )
{
p0_addr.bit.b5 =1;
p6_addr.bit.b1 =0;
}
Delay(100);
Write_0108_Reg(0xB8 + page);
Write_0108_Reg(0x40 + num * 8);
Write_0108_Reg(0xC0 );
for(j=0;j<16;j++)
{
Write_0108_Data(bitmap[n]);
n++;
}
page += 1;
Write_0108_Reg(0xB8 + page);
Write_0108_Reg(0x40 + num * 8);
for(j=0;j<16;j++)
{
Write_0108_Data(bitmap[n]);
n++;
}
}
void Set_Two_Page(unsigned char cs, unsigned char page, unsigned char far * bitmap)
{
unsigned char j, k;
unsigned int n=0;
unsigned int i;
if (cs == 0x00 )
{
p0_addr.bit.b5 =0;
p6_addr.bit.b1 =0;
}
else if (cs == 0x01 )
{
p0_addr.bit.b5 =0;
p6_addr.bit.b1 =1;
}
else if (cs == 0x02 )
{
p0_addr.bit.b5 =1;
p6_addr.bit.b1 =0;
}
Delay(100);
Write_0108_Reg(0xB8 + page);
Write_0108_Reg(0x40 );
Write_0108_Reg(0xC0 );
for(j=0;j<64;j++)
{
if (j<63)
Write_0108_Data(bitmap[n]);
else
Write_0108_Data(~bitmap[n]);
n++;
}
page += 1;
Write_0108_Reg(0xB8 + page);
Write_0108_Reg(0x40 );
for(j=0;j<64;j++)
{
if (j<63)
Write_0108_Data(bitmap[n]);
else
Write_0108_Data(~bitmap[n]);
n++;
}
}
void FSH_Set_Two_Page(unsigned char cs, unsigned char page, unsigned char far * bitmap)
{
unsigned char j, k;
unsigned int n=0;
unsigned int i;
if (cs == 0x00 )
{
p0_addr.bit.b5 =0;
p6_addr.bit.b1 =0;
}
else if (cs == 0x01 )
{
p0_addr.bit.b5 =0;
p6_addr.bit.b1 =1;
}
else if (cs == 0x02 )
{
p0_addr.bit.b5 =1;
p6_addr.bit.b1 =0;
}
Delay(100);
Write_0108_Reg(0xB8 + page);
Write_0108_Reg(0x40 );
Write_0108_Reg(0xC0 );
for(j=0;j<64;j++)
{
if (j<63)
Write_0108_Data(bitmap[n]);
else
Write_0108_Data(bitmap[n]);
n++;
}
page += 1;
Write_0108_Reg(0xB8 + page);
Write_0108_Reg(0x40 );
for(j=0;j<64;j++)
{
if (j<63)
Write_0108_Data(bitmap[n]);
else
Write_0108_Data(bitmap[n]);
n++;
}
}
void Comp_Set_Two_Page(unsigned char cs, unsigned char page, unsigned char far * bitmap)
{
unsigned char j;
unsigned char a,b;
unsigned int n=0;
unsigned int i;
if (cs == 0x00 )
{
p0_addr.bit.b5 =0;
p6_addr.bit.b1 =0;
}
else if (cs == 0x01 )
{
p0_addr.bit.b5 =0;
p6_addr.bit.b1 =1;
}
else if (cs == 0x02 )
{
p0_addr.bit.b5 =1;
p6_addr.bit.b1 =0;
}
Delay(100);
Write_0108_Reg(0xB8 + page);
Write_0108_Reg(0x40 );
Write_0108_Reg(0xC0 );
if (page == 2)
{
for(j=0;j<64;j++)
{
if((j == 0)||((j == 63)&&(cs == 0x02 )))
Write_0108_Data(bitmap[n]);
else
{
b = bitmap[n];
a = b & 0xfe;
Write_0108_Data(~a);
}
n++;
}
}
else if (page != 2)
{
for(j=0;j<64;j++)
{
if((j == 0)||((j == 63)&&(cs == 0x02 )))
Write_0108_Data(bitmap[n]);
else
Write_0108_Data(~bitmap[n]);
n++;
}
}
page += 1;
Write_0108_Reg(0xB8 + page);
Write_0108_Reg(0x40 );
if (page == 7)
{
for(j=0;j<64;j++)
{
if((j == 0)||((j == 63)&&(cs == 0x02 )))
Write_0108_Data(bitmap[n]);
else
{
b = bitmap[n];
a = b & 0x7f;
Write_0108_Data(~a);
}
n++;
}
}
else if (page != 7)
{
for(j=0;j<64;j++)
{
if((j == 0)||((j == 63)&&(cs == 0x02 )))
Write_0108_Data(bitmap[n]);
else
Write_0108_Data(~bitmap[n]);
n++;
}
}
}
void Set_Screen(unsigned char cs, unsigned char far *bitmap)
{
unsigned char j, k;
unsigned int n=0;
unsigned int i;
if (cs == 0x00 )
{
p0_addr.bit.b5 =0;
p6_addr.bit.b1 =0;
}
else if (cs == 0x01 )
{
p0_addr.bit.b5 =0;
p6_addr.bit.b1 =1;
}
else if (cs == 0x02 )
{
p0_addr.bit.b5 =1;
p6_addr.bit.b1 =0;
}
Delay(100);
for(k=0;k<8;k++)
{
Write_0108_Reg(0xB8 +k);
Write_0108_Reg(0x40 );
Write_0108_Reg(0xC0 );
for(j=0;j<64;j++)
{
Write_0108_Data(bitmap[n]);
n++;
}
}
}
void Comp_Set_Screen(unsigned char cs, unsigned char x1, unsigned char y1, unsigned char far * bitmap)
{
unsigned char j, k;
unsigned int n=0;
unsigned int i;
unsigned char a;
unsigned char b;
unsigned char c;
unsigned char d;
if (cs == 0x00 )
{
p0_addr.bit.b5 =0;
p6_addr.bit.b1 =0;
}
else if (cs == 0x01 )
{
p0_addr.bit.b5 =0;
p6_addr.bit.b1 =1;
}
else if (cs == 0x02 )
{
p0_addr.bit.b5 =1;
p6_addr.bit.b1 =0;
}
Delay(100);
for(k=0;k<8;k++)
{
Write_0108_Reg(0xB8 +k);
Write_0108_Reg(0x40 );
Write_0108_Reg(0xC0 );
if ((k < x1)||(k > y1))
{
for(j=0;j<64;j++)
{
Write_0108_Data(bitmap[n]);
n++;
}
}
if ((k >= x1)&&(k <= y1))
{
if (k==2)
{
for(j=0;j<64;j++)
{
if((j == 0)||((j == 63)&&(cs == 0x02 )))
Write_0108_Data(bitmap[n]);
else
{
b = bitmap[n];
a = b & 0xfe;
Write_0108_Data(~a);
}
n++;
}
}
if (k==7)
{
for(j=0;j<64;j++)
{
if((j == 0)||((j == 63)&&(cs == 0x02 )))
Write_0108_Data(bitmap[n]);
else
{
b = bitmap[n];
a = b & 0x7f;
Write_0108_Data(~a);
}
n++;
}
}
else if ((k!=2)&&(k!=7))
{
for(j=0;j<64;j++)
{
if((j == 0)||((j == 63)&&(cs == 0x02 )))
Write_0108_Data(bitmap[n]);
else
Write_0108_Data(~bitmap[n]);
n++;
}
}
}
}
}
void Flash_Set_Screen(unsigned char cs, unsigned char x2, unsigned char y2, unsigned char far * bitmap)
{
unsigned char j, k;
unsigned int n=0;
unsigned int i;
if (cs == 0x00 )
{
p0_addr.bit.b5 =0;
p6_addr.bit.b1 =0;
}
else if (cs == 0x01 )
{
p0_addr.bit.b5 =0;
p6_addr.bit.b1 =1;
}
else if (cs == 0x02 )
{
p0_addr.bit.b5 =1;
p6_addr.bit.b1 =0;
}
Delay(100);
for(k=0;k<8;k++)
{
Write_0108_Reg(0xB8 +k);
Write_0108_Reg(0x40 );
Write_0108_Reg(0xC0 );
if ((k < x2)||(k > y2))
{
for(j=0;j<64;j++)
{
Write_0108_Data(bitmap[n]);
n++;
}
}
if ((k >= x2)&&(k <= y2))
{
if (k==2)
{
for(j=0;j<64;j++)
{
if((j == 0)||((j == 63)&&(cs == 0x02 )))
Write_0108_Data(bitmap[n]);
else
{
Write_0108_Data(0x01);
}
n++;
}
}
if (k==7)
{
for(j=0;j<64;j++)
{
if((j == 0)||((j == 63)&&(cs == 0x02 )))
Write_0108_Data(bitmap[n]);
else
{
Write_0108_Data(0x80);
}
n++;
}
}
else if ((k!=2)&&(k!=7))
{
for(j=0;j<64;j++)
{
if((j == 0)||((j == 63)&&(cs == 0x02 )))
Write_0108_Data(bitmap[n]);
else
Write_0108_Data(0x00);
n++;
}
}
}
}
}
void Change_Set_Screen(unsigned char cs, unsigned char x3, unsigned char y3, unsigned char far * new_bitmap, unsigned char far * bitmap)
{
unsigned char j, k;
unsigned int n=0;
unsigned int i;
if (cs == 0x00 )
{
p0_addr.bit.b5 =0;
p6_addr.bit.b1 =0;
}
else if (cs == 0x01 )
{
p0_addr.bit.b5 =0;
p6_addr.bit.b1 =1;
}
else if (cs == 0x02 )
{
p0_addr.bit.b5 =1;
p6_addr.bit.b1 =0;
}
Delay(100);
for(k=0;k<8;k++)
{
Write_0108_Reg(0xB8 +k);
Write_0108_Reg(0x40 );
Write_0108_Reg(0xC0 );
if ((k < x3)||(k > y3))
{
for(j=0;j<64;j++)
{
Write_0108_Data(bitmap[n]);
n++;
}
}
if ((k >= x3)&&(k <= y3))
{
for(j=0;j<64;j++)
{
Write_0108_Data(new_bitmap[n-x3*64]);
n++;
}
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -