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

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

详细版介绍见:http://www.ciast.net/post/20151112.html

 

反面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:QDtech2008@gmail.com");
    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

转载于:https://www.cnblogs.com/zitech/p/3712864.html

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 大彩TFT彩屏是一种高分辨率的彩色液晶显示屏,而STM32F103ZET6是一款高性能的微控制器芯片。串口通信是一种常用的数据传输方式,可以用于将数据从发送端传输到接收端。下面是一个关于大彩TFT彩屏和STM32F103ZET6串口通信程序的示例。 首先,在STM32F103ZET6的开发环境下,需要初始化串口的相关配置,如波特率、数据位、停止位和校验位等。然后,可以通过串口发送指令来控制大彩TFT彩屏的显示内容。 下面是一个简单的程序示例: ```c #include "stm32f10x.h" #include <stdio.h> // 定义串口号和波特率 #define USART1_BAUDRATE 9600 #define USART1_COM USART1 // 初始化串口配置 void USART_Configuration(void) { USART_InitTypeDef USART_InitStructure; // 使能串口时钟和GPIO时钟 RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1 | RCC_APB2Periph_GPIOA, ENABLE); // 配置串口引脚 GPIO_InitTypeDef GPIO_InitStructure; GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9; // TXD GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_Init(GPIOA, &GPIO_InitStructure); GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10; // RXD GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING; GPIO_Init(GPIOA, &GPIO_InitStructure); // 配置串口参数 USART_InitStructure.USART_BaudRate = USART1_BAUDRATE; USART_InitStructure.USART_WordLength = USART_WordLength_8b; USART_InitStructure.USART_StopBits = USART_StopBits_1; USART_InitStructure.USART_Parity = USART_Parity_No; USART_InitStructure.USART_HardwareFlowControl = USART_HardwareFlowControl_None; USART_InitStructure.USART_Mode = USART_Mode_Tx | USART_Mode_Rx; // 初始化串口 USART_Init(USART1_COM, &USART_InitStructure); USART_Cmd(USART1_COM, ENABLE); } // 通过串口发送数据 void USART_SendString(USART_TypeDef *USARTx, const uint8_t *buffer) { while (*buffer) { USART_SendData(USARTx, *buffer++); while (USART_GetFlagStatus(USARTx, USART_FLAG_TXE) == RESET); } } int main(void) { // 初始化串口配置 USART_Configuration(); // 发送指令控制大彩TFT彩屏显示 const uint8_t *displayString = "Hello, World!"; USART_SendString(USART1_COM, displayString); while (1) { // 其他任务 } } ``` 这个程序示例通过USART1串口将字符串"Hello, World!"发送到大彩TFT彩屏上进行显示。 ### 回答2: 大彩TFT彩屏STM32F103ZET6串口通信程序的编写需要以下主要步骤: 1. 硬件连接:将STM32F103ZET6的串口引脚与大彩TFT彩屏的串口引脚连接。一般来说,大彩TFT彩屏与STM32F103ZET6的串口通信使用的是USART1或USART2,因此需要将它们的TX引脚与RX引脚相连。 2. 初始化串口:在STM32F103ZET6的程序中,需要使用特定的函数来初始化串口。首先,需要使能USART1或USART2的时钟,并设置对应的GPIO引脚为串口模式。然后,配置串口的波特率、数据位数、停止位数和奇偶校验位等参数。 3. 发送数据:使用STM32F103ZET6的串口发送函数,将要发送的数据写入到串口数据寄存器中。可以将字符串、单个字符或者其他数据类型转换为字节数组,并通过串口发送出去。 4. 接收数据:使用串口接收中断或者查询方式来接收来自大彩TFT彩屏的数据。如果使用中断方式,在接收到数据后,通过中断回调函数处理接收到的数据。若使用查询方式,则需要定期查询串口接收寄存器是否有数据。 5. 处理接收的数据:对于从大彩TFT彩屏接收到的数据,根据通信协议进行解析和处理。根据具体的需求,可能需要将接收到的数据转换为对应的格式或者执行特定的动作。 总的来说,编写大彩TFT彩屏STM32F103ZET6串口通信程序需要配置串口相关的硬件和软件,发送和接收数据,并进行数据处理。具体实现的细节和代码可以根据具体的需求来进行调整和修改。 ### 回答3: 大彩TFT彩屏是一款常用的显示设备,可以实现图形界面的显示。而STM32F103ZET6是一款基于ARM Cortex-M3内核的单片机,它具有丰富的外设资源,适用于许多应用场合。 要实现STM32F103ZET6与大彩TFT彩屏之间的串口通信,首先需要确认彩屏的通信协议和波特率。通常大彩TFT彩屏使用的是串行外设接口(SPI)或者串行外设接口(I2C)进行通信。可以通过查阅相关文档或者联系厂家获取详细的通信协议和波特率信息。 在STM32F103ZET6上,可以使用其内置的串口外设(USART)来进行串口通信。首先需要配置串口的波特率、数据位、停止位、校验位等参数。然后通过编程的方式,可以通过USART的发送和接收寄存器来实现数据的发送和接收。 为了实现与大彩TFT彩屏的通信,还需要连接正确的引脚。一般来说,STM32F103ZET6的串口引脚有多个可选,需要根据具体引脚定义和大彩TFT彩屏的通信协议进行连接。 在程序编写方面,可以使用STM32CubeMX生成初始化代码,然后在Keil或者其他编译软件中编写主程序。可以根据通信需求,编写发送和接收函数,并在主程序中进行调用。可以采用轮询方式或者中断方式进行数据的发送和接收。 在编写程序时,需要注意的是,要根据大彩TFT彩屏的通信协议对发送的数据进行格式化,确保数据的正确传输和显示。可以参考大彩TFT彩屏的开发文档或者例程,了解发送和接收数据的格式和规范。 总结起来,实现STM32F103ZET6与大彩TFT彩屏的串口通信程序需要明确通信协议和波特率,配置串口参数,连接正确的引脚,编写发送和接收函数,确保数据正确传输和显示。这样就能够实现STM32F103ZET6与大彩TFT彩屏之间的串口通信。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值