2.2寸(14PIN)TFT液晶屏STM32 SPI 控制

屏幕如图所示,共14个IO口(也可能只有13个),控制屏幕的有9个IO口

反面IO口图:

连接通过SPI方式连接:


//默认程序接线说明:
#define LCD_CTRL GPIOB //定义TFT数据端口为PB组
#define LCD_LED GPIO_Pin_9 //MCU_PB9 对应接液晶屏(或者模块)TFT --PIN_LED背光正极(背光可以由IO口提供电流,或者外接3.3V电压)
#define LCD_CS GPIO_Pin_11 //MCU_PB11 对应接液晶屏(或者模块)TFT --CS
#define LCD_SCL GPIO_Pin_13 //MCU_PB13 对应接液晶屏(或者模块)TFT --SCL
#define LCD_SDA GPIO_Pin_15 //MCU_PB15 MOSI 对应接液晶屏(或者模块)TFT --SDA
#define LCD_SDO GPIO_Pin_14 //MCU_PB14 MISO 对应接液晶屏(或者模块)TFT --SDO
#define LCD_RS GPIO_Pin_10 //MCU_PB10 对应接液晶屏(或者模块)TFT --RS/DC
#define LCD_RST GPIO_Pin_12 //MCU_PB12 对应接液晶屏(或者模块)TFT --RST

  实现功能:


//本测试程序演示功能包括:
//1.纯色填充测试
//2.英文显示测试示例
//3.中文显示测试示例
//4.2D按钮显示测试示例
//5.数码管字体数字显示测试示例
//6.图片显示测试示例
//7.横竖屏切换测试示例

main.c文件:


//////////////////////////////////////////////////////////////////////////////////

/* Includes ------------------------------------------------------------------*/
#include "stm32f10x.h"
#include "Lcd_Driver.h"
#include "GUI.h"
#include "delay.h"
#include "Picture.h"

GPIO_InitTypeDef GPIO_InitStructure;

void RCC_Configuration(void);

void Delayms(__IO uint32_t nCount);

unsigned char Num[10]={0,1,2,3,4,5,6,7,8,9};

void Redraw_Mainmenu(void)
{

Lcd_Clear(GRAY0);

Gui_DrawFont_GBK16(16,0,BLUE,GRAY0,"全动电子技术");
Gui_DrawFont_GBK16(16,20,RED,GRAY0,"液晶测试程序");

DisplayButtonUp(15,38,113,58); //x1,y1,x2,y2
Gui_DrawFont_GBK16(16,40,YELLOW,GRAY0,"颜色填充测试");

DisplayButtonUp(15,68,113,88); //x1,y1,x2,y2
Gui_DrawFont_GBK16(16,70,BLUE,GRAY0,"文字显示测试");

DisplayButtonUp(15,98,113,118); //x1,y1,x2,y2
Gui_DrawFont_GBK16(16,100,RED,GRAY0,"图片显示测试");

Gui_DrawFont_GBK16(16,120,BLUE,GRAY0,"S1:Move. ");
Gui_DrawFont_GBK16(16,140,RED,GRAY0, "S2:Sellect ");
delay_ms(1000);
delay_ms(1000);
/*
Gui_DrawFont_Num32(100,125,RED,GRAY0,Num[5]);
delay_ms(1000);
Gui_DrawFont_Num32(100,125,RED,GRAY0,Num[4]);
delay_ms(1000);
Gui_DrawFont_Num32(100,125,RED,GRAY0,Num[3]);
delay_ms(1000);
Gui_DrawFont_Num32(100,125,RED,GRAY0,Num[2]);
delay_ms(1000);
Gui_DrawFont_Num32(100,125,RED,GRAY0,Num[1]);
delay_ms(1000);
Gui_DrawFont_Num32(100,125,RED,GRAY0,Num[0]); */
}

void Num_Test(void)
{
u8 i=0;
Lcd_Clear(GRAY0);
Gui_DrawFont_GBK16(16,20,RED,GRAY0,"Num Test");
delay_ms(1000);
Lcd_Clear(GRAY0);

for(i=0;i<10;i++)
{
Gui_DrawFont_Num32((i%3)*40,32*(i/3)+30,RED,GRAY0,Num[i+1]);
delay_ms(100);
}
delay_ms(1000);

}
//文字显示测试全动电子技术商城因为专注所以专业程
void Font_Test(void)
{
u8 x_offset;
#ifdef H_VIEW //如果定义了横屏显示
x_offset=40;
#else
x_offset=0;
#endif
Lcd_Clear(GRAY0);
Gui_DrawFont_GBK16(16,10,BLUE,GRAY0, " 文字显示测试 ");

delay_ms(1000);
Lcd_Clear(WHITE);
Gui_DrawFont_GBK16(x_offset,10,RED,WHITE, " 全动电子技术有限公司 ");
Gui_DrawFont_GBK16(x_offset,30,RED,WHITE, " QDtech .,LTD ");
Gui_DrawFont_GBK24(x_offset,50,BLUE,WHITE, " 欢迎您 ");
Gui_DrawFont_GBK16(x_offset,100,GREEN,WHITE, " 全程技术支持 ");
Gui_DrawFont_GBK16(x_offset,120,RED,YELLOW, "http://qdtech.taobao.com");
Gui_DrawFont_GBK16(x_offset,140,RED,YELLOW, "E-Mail:[email protected]");
Gui_DrawFont_GBK16(x_offset,160,RED,YELLOW, "技术交流群:324828016");
Gui_DrawFont_GBK16(x_offset,180,BLUE,WHITE, "Tel:15989313508 ");
delay_ms(3000);
}

void Color_Test(void)
{
u8 i=2;
Lcd_Clear(GRAY0);

Gui_DrawFont_GBK16(20,10,BLUE,GRAY0,"Color Test");
delay_ms(1000);

while(i--)
{
Lcd_Clear(WHITE);
Lcd_Clear(BLACK);
Lcd_Clear(RED);
Lcd_Clear(GREEN);
Lcd_Clear(BLUE);
}
}
//16位 垂直扫描 右到左 高位在前
void show_pic(const unsigned char *p)
{
int i,j;
unsigned char picH,picL;
//Lcd_SetRegion(0,0,240-1,240-1);
for(i=0;i<240;i++)
for(j=0;j<320;j++)
{
picH=*p++;
picL=*p++;
Lcd_WriteData(picH);
Lcd_WriteData(picL);
}
}

u16 ID=0;
int main(void)
{
//uint16_t a;
/* System Clocks Configuration **********************************************/
SystemInit();
delay_init(72);//延时初始化
while(1)
{
Lcd_Init();
Lcd_Clear(WHITE);
LCD_LED_SET;
//delay_ms(500);
// LCD_LED_CLR;
//delay_ms(500);
//LCD_LED_SET;
Redraw_Mainmenu();//简单菜单测试
Color_Test();//简单刷屏测试
Num_Test();//数码管字体显示
Font_Test();//中英文测试

Lcd_Clear(WHITE);
show_pic(gImage_123);//图片显示测试
delay_ms(1000);
delay_ms(1000);
Lcd_Clear(WHITE);
Gui_DrawFont_GBK16(10,50,BLUE,GRAY0,"测试成功.");
delay_ms(1000);
}

}

void RCC_Configuration(void)
{
/* Setup the microcontroller system. Initialize the Embedded Flash Interface,
initialize the PLL and update the SystemFrequency variable. */
SystemInit();
}

void Delayms(__IO uint32_t nCount)
{
for(; nCount != 0; nCount--);
}

#ifdef USE_FULL_ASSERT
/**
* @brief Reports the name of the source file and the source line number
* where the assert_param error has occurred.
* @param file: pointer to the source file name
* @param line: assert_param error line source number
* @retval : None
*/

void assert_failed(uint8_t* file, uint32_t line)
{
/* User can add his own implementation to report the file name and line number,
ex: printf("Wrong parameters value: file %s on line %d\r\n", file, line) */

/* Infinite loop */
while (1)
{
}
}
#endif

/******************* (C) COPYRIGHT 2009 STMicroelectronics *****END OF FILE****/

最终效果图:

----------------------------------------------------------------------------------------------------------

其他文件:

整个 STM程序下载:http://download.csdn.net/detail/zgc261/7306853

时间: 2024-07-31 00:44:27

2.2寸(14PIN)TFT液晶屏STM32 SPI 控制的相关文章

TFT液晶屏有什么优点?

TFT液晶屏为每个像素都设有一个半导体开关,其加工工艺类似于大规模集成电路.由于每个像素都可以通过点脉冲直接控制,因而,每个节点都相对独立,并可以进行连续控制,这样的设计不仅提高了显示屏的反应速度,同时可以精确控制显示灰度,所以TFT液晶的色彩更逼真.那么TFT液晶屏它究竟有什么优点呢? 一.显示质量高 由于TFT液晶显示屏每一个点在收到信号后就一直保持那种色彩和亮度,恒定发光,而不像阴极射线管显示器(CRT)那样需要不断刷新亮点.因此,TFT液晶屏画质高而且不会闪烁,把眼睛疲劳降到很低. 二.

LCD液晶屏×××?

LCD液晶屏×××?一个LCD液晶屏的好坏首先要看他的面板,因为LCD液晶屏面板的好坏直接影响到画面的观看效果,并且LCD液晶屏面板占到了整机成本一半以上,是影响LCD液晶屏的造价的主要因素,下面我们来看看关于液晶屏×××的相关内容对于LCD液晶屏×××,我给大家推荐的是"杭州立煌科技有限公司"杭州立煌科技有限公司成立于2009年,主营工业液晶屏.LCD液晶屏.TFT液晶屏,是集代理和销售于一体的高新技术企业,注册资本50万,以诚实守信,永续经营的服务宗旨,遥遥领先于同行业.杭州立煌科

工业液晶屏的选型注意事项

对于研发人员及采购人员来说,如何选择一款适合的工业液晶屏产品是至关重要的.工业液晶屏的选型包括液晶显示屏的类型.品牌与价格.供货.分辨率与尺寸.温度与亮度.接口方式等关键指标. 随着科技的发展,人们对应用于各类控制设备.车载设备.电力设备.纺织机械等设备产品的液晶显示要求越来越高.常见液晶可分为段式.字符型和图形点阵三类.杭州立煌科技代理奇美.天马.三菱.友达.群创等品牌各类尺寸型号的液晶屏产品. TFT液晶屏,尺寸覆盖广,基本上为真彩色显示模块,一般小尺寸液晶屏都内置控制器,直接提供MPU接口

STM32 液晶屏 显示字符串 中遇到的一个问题

用STM32控制液晶屏显示电流.电压参数. 我希望的结果是这样的: 可是,实际写出来的效果是这样的. 可以看出,电流参数那一行后面多出了几个字符"Volta",刚好是要下一行需要显示内容的前面一部分. 试着把电流参数值得位数改短一些,比如把前面的20.54改为2.54.显示出来就是正常的.由此想到这个问题的产生可能和要显示的字符串的长度有关.所以就把跟电流显示的相关的代码都看了看,从定义到调用液晶模块的API. char Current_display[15];// 定义一个与电流参数

LCD1602,4位数据总线液晶屏时钟,STC12C5A60S2的10位ADC功能程序

/* 程序名:   LCD1602,4位数据总线液晶屏时钟,STC12C5A60S2的10位ADC功能程序 编写时间: 2015年10月4日 硬件支持: LCD1602液晶屏  STC12C5A60S2 外部12MHZ晶振  接线定义:   DB7 --> P1^7              DB6 --> P1^6              DB5 --> P1^5              DB4 --> P1^5              RS  --> P3^2;  

Arduino 1602液晶屏实验和程序

在Arduino IDE中, 项目->加载库->管理库中搜索LiquidCrystal,然后安装即可 1.接线图 2.引脚图 3.最简单程序 #include <LiquidCrystal.h> LiquidCrystal lcd(12, 11, 5, 4, 3, 2); void setup() { lcd.begin(16, 2); lcd.print("hello,world!"); } void loop() { } 4.升级版程序 通过串口读取字符串,

s3c2440液晶屏驱动新内核 linux-4.1.24

自带有一部分驱动的配置信息,只要修改这部分就能支援 不同的液晶屏 - /arch/arm/mach-s3c24xx/mach-smdk2440.c 另一部分在 /drivers/video/fbdev/s3c2410fb.c 先打开调试功能,这样内核在启动的时候,就可以输出这些信息,或者使用 dmesg 查看到这些信息.当然,你配置内核 make menuconfig 也可以打开,但是太麻烦了,不如这样. 1 #define CONFIG_FB_S3C2410_DEBUG 2 #define d

19.液晶屏的原理

19.液晶屏的原理 LCD工作原理解析: 1.LCD硬件体系架构: LCD硬件体系:可以看到LCD控制器是在ARM处理器里的,用排线将LCD液晶屏和处理器连接在一起.中间是通过了LCD驱动芯片. 1.1液晶: 液晶属于一种有机化合物,分子形状为长棒状,在不同的电流作用下,分子会做有规律的旋转,这样对光线(背光灯产生)产生了一定的控制(折射),形成一个像素,而很多像素又可构成完整图像. 1.3 LCD驱动芯片: LCD驱动芯片是控制液晶分子发生变化的模块,它为液晶分子的偏转提供电压.通常情况下,L

新巴可科技告诉您LED显示屏与LCD液晶屏的根本区别

现在人们都在追求一种享受,无论是精神还是物质上的,电视.电脑等不可缺设备更是为人们所看重,市场上眼花缭乱的产品,往往让人迷惑不已,比如说常见的lcd与led的区别,都让人感到很迷惑,今天笔者就向大家来讲解lcd与led的区别以及他们各自的特点. (左边是LCD显示屏,右边是LED显示屏) LCD与LED的原理 LCD是LiquidCrystalDisplay的简称,其构造主要是在两片平行的玻璃当中放置液态的晶体,在这平行的两片玻璃中间有许多垂直和水平的细小电线,通过通电与否来控制杆状水晶分子改变