LCD12864反白的相关问题
LCD12864自带的指令集里面有反白指令,但很不实用,只能对某一行反白。在制作菜单的时候,往往需要对一些特定的位置进行反白。代码如下,原理是通过异或实现。
/****************LCD12864开始画图****************/
void LCD_startGraphic(void)
{lcd12864_write_cmd(0x34); lcd12864_write_cmd(0x36);
}/****************LCD12864结束画图****************/
void LCD_endGraphic(void)
{lcd12864_write_cmd(0x36); lcd12864_write_cmd(0x30);
}/*******************LCD12864反白函数*******************/
//row : 行号,0-3
//col : 列号,0-7
//charNum: 要反白的字符数量
void LCD_Inverse_16X16(uchar row ,uchar col, unsigned char charNum,unsigned char reverse)
{unsigned char i, ch;uchar x = row;uchar y = col*16;if(col>1){y=(col-2)*16;}LCD_startGraphic();for (i = 0; i < 16; i++) {lcd12864_write_cmd(0x80 + y + i); //垂直地址yif(col>1){lcd12864_write_cmd(0x88 + x);}elselcd12864_write_cmd(0x80 + x); //水平地址xfor (ch = 0; ch < charNum; ch++){lcd12864_write_data(reverse ? 0xff : 0x00);lcd12864_write_data(reverse ? 0xff : 0x00);}}LCD_endGraphic();
}
LCD12864反白的相关问题
LCD12864自带的指令集里面有反白指令,但很不实用,只能对某一行反白。在制作菜单的时候,往往需要对一些特定的位置进行反白。代码如下,原理是通过异或实现。
/****************LCD12864开始画图****************/
void LCD_startGraphic(void)
{lcd12864_write_cmd(0x34); lcd12864_write_cmd(0x36);
}/****************LCD12864结束画图****************/
void LCD_endGraphic(void)
{lcd12864_write_cmd(0x36); lcd12864_write_cmd(0x30);
}/*******************LCD12864反白函数*******************/
//row : 行号,0-3
//col : 列号,0-7
//charNum: 要反白的字符数量
void LCD_Inverse_16X16(uchar row ,uchar col, unsigned char charNum,unsigned char reverse)
{unsigned char i, ch;uchar x = row;uchar y = col*16;if(col>1){y=(col-2)*16;}LCD_startGraphic();for (i = 0; i < 16; i++) {lcd12864_write_cmd(0x80 + y + i); //垂直地址yif(col>1){lcd12864_write_cmd(0x88 + x);}elselcd12864_write_cmd(0x80 + x); //水平地址xfor (ch = 0; ch < charNum; ch++){lcd12864_write_data(reverse ? 0xff : 0x00);lcd12864_write_data(reverse ? 0xff : 0x00);}}LCD_endGraphic();
}