1. 程式人生 > >cortex_m3_stm32嵌入式學習筆記(十二):TFTLCD顯示(深入庫函式)

cortex_m3_stm32嵌入式學習筆記(十二):TFTLCD顯示(深入庫函式)

寫點比較常用的顯示函式。

首先顯示一張靜止的畫面,上面顯示字串(目前還不會顯示漢字)

只需要自己編寫主函式,將別人例程裡的lcd.c,lcd.h等相關標頭檔案加到工程即可

#include "led.h"
#include "delay.h"
#include "sys.h"
#include "usart.h"
#include "lcd.h"
void init()
{
	delay_init();	    	 //延時函式初始化	  
	uart_init(9600);	 //串列埠初始化為9600
	LED_Init();		 //初始化與LED連線的硬體介面
 	LCD_Init();
	POINT_COLOR=BLACK;       //定義畫筆顏色
	LCD_Clear(RED);
}
 int main(void)
 { 
	u8 x=0,i;
	u16 ty;	
	init();
	LCD_ShowString(30,40,200,24,24,"My first TFT ^_^");	
	ty=70;
	for(i=1;i<=10;i++,ty+=20)
	{
		LCD_ShowString(20,ty,200,12,12,"the deep you love,the more you get");
	}
  while(1) 
	{;}	
}

注意到初始化那,因為LCD初始化的時候有用到printf,所以一定要初始化串列埠,不然會宕機TAT

對於POINT_COLOR,顧名思義,而且也可以在庫中找到定義,就是定義畫筆顏色(相當於字型的顏色)

u16 POINT_COLOR=0x0000;	//畫筆顏色
u16 BACK_COLOR=0xFFFF;  //背景色
我們定義為BLACK(黑色),也可以修改為別的顏色(對應相應的大寫英文)
LCD_Clear(color);  這個函式是清屏+填充顏色 (顏色同上)

LCD_ShowString()函式:

//顯示字串
//x,y:起點座標
//width,height:區域大小  
//size:字型大小
//*p:字串起始地址		  
void LCD_ShowString(u16 x,u16 y,u16 width,u16 height,u8 size,u8 *p)

字型大小有3種選擇,12 ,16,24 前兩個引數好填,x,y就是起始座標,而區域大小填 (200,字型大小(3種選擇))最後一個引數應該很好理解就不多說了

最後我們令 while(1);卡住程式以顯示靜止的畫面

顏色庫

//畫筆顏色
#define WHITE         	 0xFFFF
#define BLACK         	 0x0000	  
#define BLUE         	 0x001F  
#define BRED             0XF81F
#define GRED 			 0XFFE0
#define GBLUE			 0X07FF
#define RED           	 0xF800
#define MAGENTA       	 0xF81F
#define GREEN         	 0x07E0
#define CYAN          	 0x7FFF
#define YELLOW        	 0xFFE0
#define BROWN 			 0XBC40 //棕色
#define BRRED 			 0XFC07 //棕紅色
#define GRAY  			 0X8430 //灰色


下面是一些畫圖函式

快速畫點

//快速畫點
//x,y:座標
//color:顏色
void LCD_Fast_DrawPoint(u16 x,u16 y,u16 color)

畫線
//畫線
//x1,y1:起點座標
//x2,y2:終點座標  
void LCD_DrawLine(u16 x1, u16 y1, u16 x2, u16 y2)
畫矩形,給出矩形對角線上的兩個端點座標即可。
//畫矩形
void LCD_DrawRectangle(u16 x1, u16 y1, u16 x2, u16 y2)

畫圓
//在指定位置畫一個指定大小的圓
//(x,y):中心點
//r    :半徑
void LCD_Draw_Circle(u16 x0,u16 y0,u8 r)

在指定區域填充單一顏色(只能是指定矩形區域)而且給的的座標只能是 sx<=ex && sy<=ey
//在指定區域內填充指定顏色
//區域大小:(xend-xsta+1)*(yend-ysta+1)
//xsta
//color:要填充的顏色
void LCD_Fill(u16 sx,u16 sy,u16 ex,u16 ey,u16 color)

在指定區域填充顏色塊,同上,只不過顏色要放到數組裡面傳過去
//在指定區域內填充指定顏色塊			 
//(sx,sy),(ex,ey):填充矩形對角座標,區域大小為:(ex-sx+1)*(ey-sy+1)   
//color:要填充的顏色
void LCD_Color_Fill(u16 sx,u16 sy,u16 ex,u16 ey,u16 *color)



還有一些好玩的函式

橫屏顯示

//設定LCD顯示方向
//dir:0,豎屏;1,橫屏
void LCD_Display_Dir(u8 dir)

開啟/關閉顯示
//LCD開啟顯示
void LCD_DisplayOn(void)
//LCD關閉顯示
void LCD_DisplayOff(void)