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)
时间: 2024-10-13 17:53:30

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

cortex_m3_stm32嵌入式学习笔记(二十二):触摸屏实验(触摸屏驱动)

目前最常用的触摸屏有两种:电阻式触摸屏与电容式触摸屏. 电阻式触摸屏 在 Iphone 面世之前,几乎清一色的都是使用电阻式触摸屏, 电阻式触摸屏利用压力感应进行触点检测控制,需要直接应力接触, 通过检测电阻来定位触摸位置. 电阻触摸屏的主要部分是一块与显示器表面非常配合的电阻薄膜屏,这是一种多层的复合薄膜,它以一层玻璃或硬塑料平板作为基层,表面涂有一层透明氧化金属(透明的导电电阻)导电层,上面再盖有一层外表面硬化处理.光滑防擦的塑料层.它的内表面也涂有一层涂层.在他们之间有许多细小的(小于 1

cortex_m3_stm32嵌入式学习笔记(二十):IIC实验(I2C串行总线)

IIC(Inter- Integrated Circuit)总线是一种由 PHILIPS 公司开发的两线式串行总线,用于连接微控制器及其外围设备.它是由数据线SDA 和时钟SCL构成的串行总线,可发送和接收数据.在 CPU 与被控 IC 之间. IC 与 IC 之间进行双向传送, 高速 IIC 总线一般可达 400kbps 以上. ALIENTEK MiniSTM32 开发板板载的 EEPROM 芯片型号为 24C02.该芯片的总容量是 256个字节,该芯片通过 IIC 总线与外部连接,我们本章

cortex_m3_stm32嵌入式学习笔记(二十四):内存管理实验(动态内存)

有用过C语言编程的童鞋对动态管理内存肯定有点了解..好处就不多说了 今天实现STM32的动态内存管理 内存管理,是指软件运行时对计算机内存资源的分配和使用的技术.其最主要的目的是如何高效,快速的分配,并且在适当的时候释放和回收内存资源. 内存管理的实现方法有很多种,他们其实最终都是要实现两个函数:malloc 和 free(好熟悉): malloc 函数用于内存申请, free 函数用于内存释放. 实现方式:分块式内存管理 从上图可以看出,分块式内存管理由内存池和内存管理表两部分组成.内存池被等

cortex_m3_stm32嵌入式学习笔记(二十一):SPI实验(通信总线)

SPI 是英语 Serial Peripheral interface 的缩写,顾名思义就是串行外围设备接口.是 Motorola首先在其 MC68HCXX 系列处理器上定义的. SPI 接口主要应用在 EEPROM, FLASH,实时时钟, AD 转换器,还有数字信号处理器和数字信号解码器之间. SPI,是一种高速的,全双工,同步的通信总线,并且在芯片的管脚上只占用四根线,节约了芯片的管脚,同时为 PCB 的布局上节省空间,提供方便,正是出于这种简单易用的特性,现在越来越多的芯片集成了这种通信

cortex_m3_stm32嵌入式学习笔记(二十三):红外遥控实验(输入捕捉+解码)

红外遥控是一种无线.非接触控制技术,具有抗干扰能力强,信息传输可靠,功耗低,成本低,易实现等显著优点,被诸多电子设备特别是家用电器广泛采用,并越来越多的应用到计算机系统中. 红外遥控的编码方式目前广泛使用的是: PWM(脉冲宽度调制)的 NEC 协议和 PhilipsPPM(脉冲位置调制) 的 RC-5 协议的.ALIENTEK MiniSTM32 开发板配套的遥控器使用的是NEC 协议,其特征如下: 1. 8 位地址和 8 位指令长度: 2.地址和命令 2 次传输(确保可靠性) 3. PWM

cortex_m3_stm32嵌入式学习笔记(二):独立按键实验(IO输入)

上一个也就是第一个实验做的是关于LED的,属于IO口的输出使用,这一节实验是独立按键的使用,即IO 口的输入使用 ministm32 开发板上一共有3个独立按键,分别为 KEY0  KEY1 WK_UP 原理图如下: 注意: KEY0 KEY1 是低电平有效(即它们为低电平时代表按键按下)而 WK_UP 是高电平有效,为什么呢..很明显,这个问题要分析上面的原理图才能知道的,好吧本渣没学过数模电电路也就勉强70多分(半本书..还没学完),就硬着头皮来分析一下吧(对错可不保证啊..QAQ):很明显

虚拟机VMWare学习笔记十二 - 将物理机抓取成虚拟机

1. 安装VMware vCenter Converter Standalone Client 运行虚拟机,File -- Virtualize a Physical Machine 这时如果电脑中没有VMware vCenter Converter Standalone Client ,则会进行安装. 安装过程 之后图标会出现在桌面上,双击运行 选择连接到本地服务器,登陆 点击转换计算机 这个,可以将本地计算机抓取成虚拟机,也可以将其他可以访问的计算机(需知道管理员用户名及密码)抓取成虚拟机.

laravel3学习笔记(十二)

原作者博客:ieqi.net ==================================================================================================== 请求反射 HTTP 协议本身是无状态性的,但是在应用中处理各种业务逻辑时我们必须要有状态的把控,这样,折中的办法就是将状态进行标记然后嵌入到 HTTP 协议的请求中,然后应用根据这些标记来进行状态的串联以及处理.所以我们就要对请求进行反射处理以获取请求信息, Lara

Swift学习笔记十二:下标脚本(subscript)

下标脚本就是对一个东西通过索引,快速取值的一种语法,例如数组的a[0].这就是一个下标脚本.通过索引0来快速取值.在Swift中,我们可以对类(Class).结构体(structure)和枚举(enumeration)中自己定义下标脚本的语法 一.常规定义 class Student{ var scores:Int[] = Array(count:5,repeatedValue:0) subscript(index:Int) -> Int{ get{ return scores[index];

《Hibernate学习笔记十二》学生、课程、分数关系的设计与实现

<Hibernate学习笔记十二>学生.课程.分数关系的设计与实现 这个马士兵老师的Hibernate视频学习的一个题目,这里面要用到多对多.多对一的关联关系以及联合主键,因此觉得挺好的,自己写篇博文来记录下. 先考虑数据库表 1.学生表:为简单起见,只考虑了学生id和学生姓名,其中id为主键 2.课程表:为简单起见,只考虑了课程id和课程名称,其中id为主键 3.分数表 分数表有两种解决方案 3.1 第一种为:使用联合主键:student_id 和 course_id 3.2 第二种:不使用