初中生
最后登录1970-1-1
在线时间 小时
注册时间2015-7-16
|
发表于 2015-8-22 22:34:08
|
显示全部楼层
#define STR_WIDTH1 32 /* 字符宽度 */
#define STR_HEIGHT1 32 /* 字符高度 */ bsp_ili9341_lcd.h
#define STR_SIZE ((STR_WIDTH1-1)/8+1)*STR_HEIGHT1
const unsigned char asc_zi[][STR_SIZE]={
/*存放字符数据*/
}; ascii.h
void LCD_Dispzi(uint16_t x, uint16_t y, uint8_t ks, uint16_t color)
{
uint16_t page, column, temp, i,width,j=0;
LCD_OpenWindow(x, y, STR_WIDTH1, STR_HEIGHT1);
LCD_ILI9341_CMD(0X2C);
for( page=0; page < STR_HEIGHT1; page++ )
{
width=STR_WIDTH1;
while(width)
{
temp = asc_zi[ks][j++];
if(width<=8)
{
i=width;
width=0;
}
else
{
width-=8;
i=8;
}
for( column=0; column < i; column++ )
{
if( temp & 0x80 )
{
LCD_WR_Data( color );
}
else
{
LCD_WR_Data( BACKGROUND );
}
temp <<= 1;
}
}/*一行写完 */
}/* 全部写完 */
}
void LCD_DispziStr(uint16_t x, uint16_t y, uint8_t ks, uint8_t gs , uint16_t color)
{
while( gs-- )
{
if( x > (COLUMN-STR_WIDTH1) )
{
x = 0;
y += STR_HEIGHT1;
}
if( y > (PAGE-STR_HEIGHT1) )
{
x = 0;
y = 0;
}
LCD_Dispzi(x, y, ks, color);
x += STR_WIDTH1;
ks++;
}
} bsp_ili9341_lcd.c
int main(void)
{
LCD_Init();
LCD_Clear(0, 0, 240, 320, BACKGROUND);
LCD_DispziStr(0,0,0,5,RED);
while( 1 ){}
} main.c
LCD_DispziStr(0,0,0,5,RED);函数前两个参数为选择液晶屏位置,第三个参数选择数组第几个字开始,第四个参数表示显示多少个字,第五个选择颜色,现在这个函数表示从液晶屏0,0位置开始显示,从数组第0个字开始显示,显示5个字。
此函数适合任何字体大小,前提是不超过液晶屏大小,想修改字体大小只需要重新取模,修改 STR_WIDTH1(字符宽度)和STR_HEIGHT1(字符高度)即可,函数不需要任何修改。
|
|