首先是用户自定义代码部分
void main()
{
Site_t site;
LCD_init(); //初始化
site.x = 3;
site.y = 5;
LCD_str(site, "VCAN", BLUE, RED); //英文显示
site.x = 3;
site.y = 15;
LCD_FStr_CH(site, vcan_str, 4, BLUE, RED); //中文显示
}
接下来是字符的生成和存储,例程默认存放在VCAN_ASCII里,
unsigned char vcan_str[4*16*2] =
{
/* 山 */
0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x21,0x08,0x21,0x08,0x21,0x08,0x21,0x08,
0x21,0x08,0x21,0x08,0x21,0x08,0x21,0x08,0x21,0x08,0x3F,0xF8,0x00,0x08,0x00,0x00,
/* 外 */
0x10,0x40,0x10,0x40,0x10,0x40,0x10,0x40,0x3E,0x40,0x22,0x60,0x42,0x50,0x42,0x48,
0xA4,0x44,0x14,0x44,0x08,0x40,0x08,0x40,0x10,0x40,0x20,0x40,0x40,0x40,0x80,0x40,
/* 论 */
0x00,0x40,0x20,0x40,0x10,0xA0,0x10,0xA0,0x01,0x10,0x02,0x08,0xF4,0x06,0x11,0x10,
0x11,0x20,0x11,0x40,0x11,0x80,0x11,0x00,0x15,0x04,0x19,0x04,0x10,0xFC,0x00,0x00,
/* 坛 */
0x10,0x00,0x10,0x00,0x11,0xFC,0x10,0x00,0x10,0x00,0xFC,0x00,0x13,0xFE,0x10,0x20,
0x10,0x20,0x10,0x40,0x10,0x40,0x1C,0x88,0xE1,0x04,0x43,0xFE,0x01,0x02,0x00,0x00,
};
最后是所需要调用的库函数,
LCD初始化函数,位于Board的VCAN_LCD函数库里
void LCD_init(void)
{
Site_t site = {0, 0};
Size_t size ;
LCD_INIT(); //初始化LCD
//LCD_SET_DIR(LCD_DIR+1);
//由于初始化的时候进行 屏幕方向 选择,因而初始化完成后,才获取宽高
size.W = LCD_W;
size.H = LCD_H;
LCD_rectangle(site, size, BCOLOUR); //初始化背景
}
LCD英文字符串显示,位于Board的VCAN_LCD函数库里
void LCD_str(Site_t site, uint8 *Str, uint16 Color, uint16 bkColor)
{
#define MAX_CHAR_POSX (LCD_W-8)
#define MAX_CHAR_POSY (LCD_H-16)
while(*Str != '\0')
{
if(site.x > MAX_CHAR_POSX )
{
//换行
site.x = 0;
site.y += 16;
}
if(site.y > MAX_CHAR_POSY )
{
//一屏
site.y = 0;
site.x = 0;
}
LCD_char(site, *Str, Color, bkColor);
site.x += 8;
Str ++ ;
}
#undef MAX_CHAR_POSX
#undef MAX_CHAR_POSY
}
LCD中文字符串显示,位于Board的VCAN_LCD_CH函数库里
void LCD_FStr_CH (Site_t site,const uint8 *str,uint16 num,uint16 Color,uint16 bkColor)
{
while(num--)
{
if(site.x>(LCD_W-16))
{
/*换行*/
site.x =0;
site.y +=LCD_CH_H;
}
if(site.y >(LCD_H-LCD_CH_W))
{
/*重新归零*/
site.y =0;
site.x =0;
}
LCD_FChar_CH(site,str,Color,bkColor);
str += LCD_CH_SIZE ;
site.x += LCD_CH_W ;
}
}