首页 > 代码库 > 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)



cortex_m3_stm32嵌入式学习笔记(十二):TFTLCD显示(深入库函数)