你想要什么样的效果,有图例吗?
这里在LCD12864显示字符串的函数,使用的是12864内部自带的字库(包含了中文字库),而不是自己定义的点阵数据字库。内部自带的字库实际上就是DDRAM的地址,每个地址值所占据的像素点是16x16个像素点。自带字库的英文字符是8x16个像素点,中文字符是16x16个像素点,所以12864每行能显示的英文字符是16个,中文字符是8个,一共能显示4行。
/* LCD12864内部字库显示的DDRAM地址,每个地址占16*16个像素点 */
static unsigned char lcd_str_addr[4][8] = {
{0x80, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87},
{0x90, 0x91, 0x92, 0x93, 0x94, 0x95, 0x96, 0x97},
{0x88, 0x89, 0x8A, 0x8B, 0x8C, 0x8D, 0x8E, 0x8F},
{0x98, 0x99, 0x9A, 0x9B, 0x9C, 0x9D, 0x9E, 0x9F}
};
/**
* @brief LCD12864显示字符串
* @param column: 行地址0~3,row: 列地址0~7
* @retval 无
*/
void lcd_draw_str(unsigned char column, unsigned char row, const char *str)
{
/* 设置显示的行/列地址 */
lcd_write_cmd(lcd_str_addr[column][row]);
/* 逐个字符写入 */
while(*str)
{
lcd_write_data(*str++);
}
}