STM32F411 Nucleo驱动TFT显示

  • fjjjnk1234
  • LV5工程师
  • |      2015-02-05 21:05:11
  • 浏览量 1470
  • 回复:3

采用16位方式驱动TFT3.2寸屏,控制器为ILI9341

板子与TFT屏接线如下:

PB0:片选端口CS                            PB1:数据/命令RS

PB5:背光                                         PB12WR

PB13:RD                                          PB14:RST

数据线:LCD_D对应PC

//******************************************************************

//函数名:  LCD_GPIOInit

//功能:    GPIO初始化

//输入参数:无

//返回值:  无

//PB0:片选端口CS				PB1:数据/命令RS

//PB5:背光							PB12:WR

//PB13:RD								PB14:RST

//******************************************************************

void LCD_GPIOInit(void)

{

	GPIO_InitTypeDef GPIO_InitStructure;

	

	RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOB | RCC_AHB1Periph_GPIOC, ENABLE);

	

	GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0 | GPIO_Pin_1 | GPIO_Pin_5 | GPIO_Pin_12 | GPIO_Pin_13 | GPIO_Pin_14;

	GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT;

	GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;

	GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL;

	GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz;

	GPIO_Init(GPIOB, &GPIO_InitStructure);

	

	GPIO_SetBits(GPIOB, GPIO_Pin_0 | GPIO_Pin_1 | GPIO_Pin_5 | GPIO_Pin_12 | GPIO_Pin_13 | GPIO_Pin_14);

	

	GPIO_InitStructure.GPIO_Pin = GPIO_Pin_All;

	GPIO_Init(GPIOC, &GPIO_InitStructure);

	GPIO_SetBits(GPIOC, GPIO_Pin_All);

}
测试程序主函数:





int main(void)

{

	SysTick_Init();

	LED_Init();

	LCD_Init();

	while(1)

	{		

		main_test(); 		//测试主界面

		Test_Color();  		//简单刷屏填充测试

		Test_FillRec();		//GUI矩形绘图测试

  	        Test_Circle(); 		//GUI画圆测试

		English_Font_test();//英文字体示例测试

		Chinese_Font_test();//中文字体示例测试

		Pic_test();			//图片显示示例测试

	}	

}
测试程序中用到的相关函数:
指定区域填充颜色函数:





//******************************************************************

//函数名:  LCD_Fill

//功能:    在指定区域内填充颜色

//输入参数:sx:指定区域开始点x坐标

//        	sy:指定区域开始点y坐标

//			ex:指定区域结束点x坐标

//			ey:指定区域结束点y坐标

//        	color:要填充的颜色

//返回值:  无

//******************************************************************

void LCD_Fill(u16 sx,u16 sy,u16 ex,u16 ey,u16 color)

{  	



	u16 i,j;			

	u16 width=ex-sx+1; 		//得到填充的宽度

	u16 height=ey-sy+1;		//高度

	LCD_SetWindows(sx,sy,ex-1,ey-1);//设置显示窗口



#if LCD_USE8BIT_MODEL==1

	LCD_RS_SET;//写数据 

	LCD_CS_CLR;	   

	for(i=0;i

//******************************************************************

//函数名:  LCD_ShowString

//功能:    显示英文字符串

//输入参数:x,y :起点坐标	 

//			size:字体大小

//			*p:字符串起始地址

//			mode:模式	0,填充模式;1,叠加模式

//返回值:  无

//******************************************************************  	  

void LCD_ShowString(u16 x,u16 y,u8 size,u8 *p,u8 mode)

{         

    while((*p<=\'~\')&&(*p>=\' \'))//判断是不是非法字符!

    {   

		if(x>(lcddev.width-1)||y>(lcddev.height-1)) 

		return;     

        LCD_ShowChar(x,y,POINT_COLOR,BACK_COLOR,*p,size,mode);

        x+=size/2;

        p++;

    }  

}
直接上传完整程序,需要的朋友直接下载吧


部分效果图:
 



  • 0
  • 收藏
  • 举报
  • 分享
我来回复

登录后可评论,请 登录注册

所有回答 数量:3
fjjjnk1234 2015-03-01
不是,16位方式驱动。
0   回复
举报
发布
fighter 2015-02-28

SPI屏??

0   回复
举报
发布
武力戡乱 2015-02-05
看看我就留个脚印
0   回复
举报
发布
x
收藏成功!点击 我的收藏 查看收藏的全部帖子