TFTLCD上顯示漢字的相關準備工作:
1、硬件平臺:STM32開發板、TFTLCD顯示模塊
2、代碼編輯、編譯:Keil uVision4
3、程序下載方法:使用“mcuisp”,利用串口助手將程序下載到開發板
4、取模工具:TFTLCD顯示漢字需要用到的取模軟件如下圖
5、硬件電路設計:
LCD_LED
對應 PC10;
LCD_CS 對應 PC9;
LCD _RS 對應 PC8;
LCD _WR 對應 PC7;
LCD _RD 對應 PC6;
LCD _D[17:1]
對應 PB[15:0];
在這裏只列出了硬件原理圖,在顯示漢字的時候會用到前面章節學習到的內容TFTLCD顯示。這裏只講解漢字顯示方法。接下來介紹與漢字顯示相關的函數。
//x,y:座標
//POINT_COLOR:此點的顏色
void LCD_DrawPoint(u16 x,u16 y)
{
LCD_SetCursor(x,y); //設置光標位置
LCD_WriteRAM_Prepare(); //開始寫入GRAM
LCD->LCD_RAM=POINT_COLOR;
}
//color:點的顏色
void LCD_Draw_Point(u16 x,u16 y,u16 color)
{
u16 temp;
temp=POINT_COLOR;
POINT_COLOR=color;
LCD_DrawPoint(x,y);
POINT_COLOR=temp;
}
//在指定位置 顯示1個16*16的漢字
//(x,y):漢字顯示的位置
//index:tfont數組裏面的第幾個漢字
//color:這個漢字的顏色
//
void LCD_Show_CH_Font16(u16 x,u16 y,u8 index,u16 color)
{
u8 temp,t,t1;
u16 y0=y;
for(t=0;t<32;t++)//每個16*16的漢字點陣 有32個字節
{
if(t<16)temp=tfont16[index*2][t]; //前16個字節
else temp=tfont16[index*2+1][t-16]; //後16個字節
for(t1=0;t1<8;t1++)
{
if(temp&0x80)LCD_Draw_Point(x,y,color);//畫實心點
else LCD_Draw_Point(x,y,BACK_COLOR); //畫空白點(使用背景色)
temp<<=1;
y++;
if((y-y0)==16)
{
y=y0;
x++;
break;
}
}
}
}
//在指定位置 顯示1個24*24的漢字
//(x,y):漢字顯示的位置
//index:tfont數組裏面的第幾個漢字
//color:這個漢字的顏色
void LCD_Show_CH_Font24(u16 x,u16 y,u8 index,u16 color)
{
u8 temp,t,t1;
u16 y0=y;
for(t=0;t<72;t++)//每個24*24的漢字點陣 有72個字節
{
if(t<24)temp=tfont24[index*3][t]; //前24個字節
else if(t<48)temp=tfont24[index*3+1][t-24]; //中24個字節
else temp=tfont24[index*3+2][t-48]; //後24個字節
for(t1=0;t1<8;t1++)
{
if(temp&0x80)LCD_Draw_Point(x,y,color);//畫實心點
else LCD_Draw_Point(x,y,BACK_COLOR); //畫空白點(使用背景色)
temp<<=1;
y++;
if((y-y0)==24)
{
y=y0;
x++;
break;
}
}
}
}