STM32學習筆記(五)LCD函式
阿新 • • 發佈:2019-01-22
//x,y :起點座標
//len :小數點後的位數
//size:字型大小,此處省略,預設1608字型
//color:顏色,此處僅保留前景色,可自行修改
//num:數值(0~4294967295);
注意到初始化那,因為LCD初始化的時候有用到printf,所以一定要初始化串列埠,不然會宕機TAT
LCD_Clear(color); 這個函式是清屏+填充顏色 (顏色同上)
字型大小有3種選擇,12 ,16,24 前兩個引數好填,x,y就是起始座標,而區域大小填 (200,字型大小(3種選擇))最後一個引數應該很好理解就不多說了
畫線
畫圓
在指定區域填充單一顏色(只能是指定矩形區域)而且給的的座標只能是 sx<=ex && sy<=ey
在指定區域填充顏色塊,同上,只不過顏色要放到數組裡面傳過去
還有一些好玩的函式
開啟/關閉顯示
//len :小數點後的位數
//size:字型大小,此處省略,預設1608字型
//color:顏色,此處僅保留前景色,可自行修改
//num:數值(0~4294967295);
void LCD_ShowNum(u16 x,u16 y,float num,u8 len,u16 color)
- #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; //背景色
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)