STM32F1开发指南笔记22----TFTLCD显示

LCD需要背光显示,因此需要打开背光线。
TFTLCD可以当成SRAM来使用,因此可以用FSMC来管理。

LCD液晶显示器

STM32F1开发指南笔记22----TFTLCD显示_第1张图片
STM32F1开发指南笔记22----TFTLCD显示_第2张图片
STM32F1开发指南笔记22----TFTLCD显示_第3张图片
STM32F1开发指南笔记22----TFTLCD显示_第4张图片
STM32F1开发指南笔记22----TFTLCD显示_第5张图片
STM32F1开发指南笔记22----TFTLCD显示_第6张图片
STM32F1开发指南笔记22----TFTLCD显示_第7张图片STM32F1开发指南笔记22----TFTLCD显示_第8张图片
STM32F1开发指南笔记22----TFTLCD显示_第9张图片
STM32F1开发指南笔记22----TFTLCD显示_第10张图片
STM32F1开发指南笔记22----TFTLCD显示_第11张图片
STM32F1开发指南笔记22----TFTLCD显示_第12张图片
STM32F1开发指南笔记22----TFTLCD显示_第13张图片
STM32F1开发指南笔记22----TFTLCD显示_第14张图片

FSMC(灵活的静态存储控制器)

STM32F1开发指南笔记22----TFTLCD显示_第15张图片
STM32F1开发指南笔记22----TFTLCD显示_第16张图片
STM32F1开发指南笔记22----TFTLCD显示_第17张图片
STM32F1开发指南笔记22----TFTLCD显示_第18张图片
STM32F1开发指南笔记22----TFTLCD显示_第19张图片
STM32F1开发指南笔记22----TFTLCD显示_第20张图片
STM32F1开发指南笔记22----TFTLCD显示_第21张图片
STM32F1开发指南笔记22----TFTLCD显示_第22张图片
STM32F1开发指南笔记22----TFTLCD显示_第23张图片
STM32F1开发指南笔记22----TFTLCD显示_第24张图片STM32F1开发指南笔记22----TFTLCD显示_第25张图片
STM32F1开发指南笔记22----TFTLCD显示_第26张图片
STM32F1开发指南笔记22----TFTLCD显示_第27张图片
STM32F1开发指南笔记22----TFTLCD显示_第28张图片
STM32F1开发指南笔记22----TFTLCD显示_第29张图片
STM32F1开发指南笔记22----TFTLCD显示_第30张图片
STM32F1开发指南笔记22----TFTLCD显示_第31张图片
STM32F1开发指南笔记22----TFTLCD显示_第32张图片
STM32F1开发指南笔记22----TFTLCD显示_第33张图片
STM32F1开发指南笔记22----TFTLCD显示_第34张图片
STM32F1开发指南笔记22----TFTLCD显示_第35张图片

LCD初始化步骤

STM32F1开发指南笔记22----TFTLCD显示_第36张图片

STM32F1开发指南笔记22----TFTLCD显示_第37张图片

main函数

#include "led.h"
#include "delay.h"
#include "key.h"
#include "sys.h"
#include "lcd.h"
#include "usart.h"
 	
 int main(void)
 {	 
 	u8 x=0;
	u8 lcd_id[12];			//存放LCD ID字符串
	delay_init();	    	 //延时函数初始化	  
	NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);	 //设置NVIC中断分组2:2位抢占优先级,2位响应优先级
	uart_init(115200);	 	//串口初始化为115200
 	LED_Init();			     //LED端口初始化
	LCD_Init();
	POINT_COLOR=RED;
	
	sprintf((char*)lcd_id,"LCD ID:%04X",lcddev.id);//将LCD ID打印到lcd_id数组。				 	
  	
	while(1) 
	{		 
		switch(x)
		{
			case 0:LCD_Clear(WHITE);break;
			case 1:LCD_Clear(BLACK);break;
			case 2:LCD_Clear(BLUE);break;
			case 3:LCD_Clear(RED);break;
			case 4:LCD_Clear(MAGENTA);break;
			case 5:LCD_Clear(GREEN);break;
			case 6:LCD_Clear(CYAN);break;
			case 7:LCD_Clear(YELLOW);break;
			case 8:LCD_Clear(BRRED);break;
			case 9:LCD_Clear(GRAY);break;
			case 10:LCD_Clear(LGRAY);break;
			case 11:LCD_Clear(BROWN);break;
		}
		POINT_COLOR=RED;	  
		LCD_ShowString(30,40,210,24,24,"WarShip STM32 ^_^"); 
		LCD_ShowString(30,70,200,16,16,"TFTLCD TEST");
		LCD_ShowString(30,90,200,16,16,"ATOM@ALIENTEK");
 		LCD_ShowString(30,110,200,16,16,lcd_id);		//显示LCD ID
		LCD_ShowString(30,130,200,12,12,"2014/5/4");	      	
	    x++;
		if(x==12)x=0;
		LED0=!LED0;				   		 
		delay_ms(1000);	

	} 
}

该部分代码将显示一些固定的字符,字体大小包括 2412、168 和 12*6 等三种,同时显示LCD 驱动 IC 的型号,然后不停的切换背景颜色,每 1s 切换一次。而 LED0 也会不停的闪烁,指示程序已经在运行了。其中我们用到一个 sprintf 的函数,该函数用法同 printf,只是 sprintf把打印内容输出到指定的内存区间上。

LCD底层驱动十分复杂,根据原厂提供的初始化代码,在主程序中初始化LCD模块,然后调用原厂提供的API实现自己的业务逻辑,不必纠结在底层驱动里。

你可能感兴趣的:(STM32)