野火电子论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 9786|回复: 8

大神帮我看看这个液晶显示程序应该怎么改!

[复制链接]
发表于 2017-5-4 09:30:14 | 显示全部楼层 |阅读模式
本帖最后由 1努力成工程shi 于 2017-5-4 09:36 编辑

客服给的DHT11的串口显示和液晶显示的例程。通过修改gpio口,那个串口的可以用了。
但是那个液晶显示的例程不能用。
我的板子是f103指南者,显示屏目测和例程里的一样是ili9341。
应该就是lcd程序里的GPIO口对不上板子的。
程序也不大啊。。。
可是我研究了一段时间了。还是改不对。求教客服&大神帮忙修改下这个程序。让他能够在指南者上跑起来!
工程文件在附件里。
下面贴了ili9341.c和ili9341.h

液晶显示温湿度.rar

3.36 MB, 下载次数: 15

回复

使用道具 举报

 楼主| 发表于 2017-5-4 09:34:11 | 显示全部楼层
#include "bsp_ili9341_lcd.h"
#include "ascii.h"       

#define DEBUG_DELAY()

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

/**
  * @brief  ³õʼ»¯¿ØÖÆLcDµÄIO
  * @param  ÎÞ
  * @retval ÎÞ
  */
void LCD_GPIO_Config(void)
{
    GPIO_InitTypeDef GPIO_InitStructure;
   
    /* ʹÄÜFSMCʱÖÓ*/
    RCC_AHBPeriphClockCmd(RCC_AHBPeriph_FSMC, ENABLE);
   
    /* ʹÄÜFSMC¶ÔÓ¦ÏàÓ¦¹Ü½ÅʱÖÓ*/
    RCC_APB2PeriphClockCmd( RCC_APB2Periph_GPIOD | RCC_APB2Periph_GPIOE
                                  | RCC_APB2Periph_GPIOB | RCC_APB2Periph_GPIOG
                                  | RCC_APB2Periph_GPIOF , ENABLE);
   
    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
    GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
   
    /* ÅäÖÃLCD±³¹â¿ØÖƹܽÅ*/
    GPIO_InitStructure.GPIO_Pin = GPIO_Pin_1;               
    GPIO_Init(GPIOB, &GPIO_InitStructure);
   
    /* ÅäÖÃLCD¸´Î»¿ØÖƹܽÅ*/
    GPIO_InitStructure.GPIO_Pin = GPIO_Pin_11 ;          
    GPIO_Init(GPIOG, &GPIO_InitStructure);                    
   
    /* ÅäÖÃFSMCÏà¶ÔÓ¦µÄÊý¾ÝÏß,FSMC-D0~D15: PD 14 15 0 1,PE 7 8 9 10 11 12 13 14 15,PD 8 9 10*/       
    GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
    GPIO_InitStructure.GPIO_Mode =  GPIO_Mode_AF_PP;
   
    GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0 | GPIO_Pin_1 | GPIO_Pin_8 | GPIO_Pin_9 |
                                  GPIO_Pin_10 | GPIO_Pin_14 | GPIO_Pin_15;
    GPIO_Init(GPIOD, &GPIO_InitStructure);
   
    GPIO_InitStructure.GPIO_Pin = GPIO_Pin_7 | GPIO_Pin_8 | GPIO_Pin_9 | GPIO_Pin_10 |
                                  GPIO_Pin_11 | GPIO_Pin_12 | GPIO_Pin_13 | GPIO_Pin_14 |
                                  GPIO_Pin_15;
    GPIO_Init(GPIOE, &GPIO_InitStructure);
   
                /* ÅäÖÃFSMCÏà¶ÔÓ¦µÄ¿ØÖÆÏß
                 * PD4-FSMC_NOE   CD-RD
                 * PD5-FSMC_NWE   CD-WR
                 * PG12-FSMC_NE4  CD-CS
                 * PE2-FSMC_A23   CD-DC
                */
    GPIO_InitStructure.GPIO_Pin = GPIO_Pin_4;
    GPIO_Init(GPIOD, &GPIO_InitStructure);
   
    GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5;
    GPIO_Init(GPIOD, &GPIO_InitStructure);
   
    GPIO_InitStructure.GPIO_Pin = GPIO_Pin_12;
    GPIO_Init(GPIOG, &GPIO_InitStructure);  
   
    GPIO_InitStructure.GPIO_Pin = GPIO_Pin_2;
    GPIO_Init(GPIOE, &GPIO_InitStructure);  
   
    /* tft control gpio init */         
    /* ¿ª±³¹â */
                GPIO_ResetBits(GPIOB, GPIO_Pin_1);  
}

/**
  * @brief  LCD  FSMC ģʽÅäÖÃ
  * @param  ÎÞ
  * @retval ÎÞ
  */
void LCD_FSMC_Config(void)
{
    FSMC_NORSRAMInitTypeDef  FSMC_NORSRAMInitStructure;
    FSMC_NORSRAMTimingInitTypeDef  p;
   
   
    p.FSMC_AddressSetupTime = 0x02;         //µØÖ·½¨Á¢Ê±¼ä
    p.FSMC_AddressHoldTime = 0x00;         //µØÖ·±£³Öʱ¼ä
    p.FSMC_DataSetupTime = 0x05;                 //Êý¾Ý½¨Á¢Ê±¼ä
    p.FSMC_BusTurnAroundDuration = 0x00;
    p.FSMC_CLKDivision = 0x00;
    p.FSMC_DataLatency = 0x00;
    p.FSMC_AccessMode = FSMC_AccessMode_B;         // Ò»°ãʹÓÃģʽBÀ´¿ØÖÆLCD
   
    FSMC_NORSRAMInitStructure.FSMC_Bank = FSMC_Bank1_NORSRAM4;
    FSMC_NORSRAMInitStructure.FSMC_DataAddressMux = FSMC_DataAddressMux_Disable;
    //FSMC_NORSRAMInitStructure.FSMC_MemoryType = FSMC_MemoryType_SRAM;
                FSMC_NORSRAMInitStructure.FSMC_MemoryType = FSMC_MemoryType_NOR;
    FSMC_NORSRAMInitStructure.FSMC_MemoryDataWidth = FSMC_MemoryDataWidth_16b;
    FSMC_NORSRAMInitStructure.FSMC_BurstAccessMode = FSMC_BurstAccessMode_Disable;
    FSMC_NORSRAMInitStructure.FSMC_WaitSignalPolarity = FSMC_WaitSignalPolarity_Low;
    FSMC_NORSRAMInitStructure.FSMC_WrapMode = FSMC_WrapMode_Disable;
    FSMC_NORSRAMInitStructure.FSMC_WaitSignalActive = FSMC_WaitSignalActive_BeforeWaitState;
    FSMC_NORSRAMInitStructure.FSMC_WriteOperation = FSMC_WriteOperation_Enable;
    FSMC_NORSRAMInitStructure.FSMC_WaitSignal = FSMC_WaitSignal_Disable;
    FSMC_NORSRAMInitStructure.FSMC_ExtendedMode = FSMC_ExtendedMode_Disable;
    FSMC_NORSRAMInitStructure.FSMC_WriteBurst = FSMC_WriteBurst_Disable;
    FSMC_NORSRAMInitStructure.FSMC_ReadWriteTimingStruct = &p;
    FSMC_NORSRAMInitStructure.FSMC_WriteTimingStruct = &p;  
   
    FSMC_NORSRAMInit(&FSMC_NORSRAMInitStructure);
   
    /* ʹÄÜ FSMC Bank1_SRAM Bank */
    FSMC_NORSRAMCmd(FSMC_Bank1_NORSRAM4, ENABLE);  
}

/**
* @brief  LCD Èí¼þ¸´Î»
* @param  ÎÞ
* @retval ÎÞ
*/
void LCD_Rst(void)
{                       
                GPIO_ResetBits(GPIOG, GPIO_Pin_11);         //µÍµçƽ¸´Î»
    Delay(0xAFFf<<2);                                           
    GPIO_SetBits(GPIOG, GPIO_Pin_11);                          
    Delay(0xAFFf<<2);        
}

/**
* @brief  &Aring;&auml;&Ouml;&Atilde;lcd&sup3;&otilde;&Ecirc;&frac14;&raquo;&macr;&frac14;&Auml;&acute;&aelig;&AElig;÷
* @param  &Icirc;&THORN;
* @retval &Icirc;&THORN;
*/
void LCD_REG_Config(void)
{
        /*  Power control B (CFh)  */
        DEBUG_DELAY();
        LCD_ILI9341_CMD(0xCF);
        LCD_ILI9341_Parameter(0x00);
        LCD_ILI9341_Parameter(0x81);
        LCD_ILI9341_Parameter(0x30);
       
        /*  Power on sequence control (EDh) */
        DEBUG_DELAY();
        LCD_ILI9341_CMD(0xED);
        LCD_ILI9341_Parameter(0x64);
        LCD_ILI9341_Parameter(0x03);
        LCD_ILI9341_Parameter(0x12);
        LCD_ILI9341_Parameter(0x81);
       
        /*  Driver timing control A (E8h) */
        DEBUG_DELAY();
        LCD_ILI9341_CMD(0xE8);
        LCD_ILI9341_Parameter(0x85);
        LCD_ILI9341_Parameter(0x10);
        LCD_ILI9341_Parameter(0x78);
       
        /*  Power control A (CBh) */
        DEBUG_DELAY();
        LCD_ILI9341_CMD(0xCB);
        LCD_ILI9341_Parameter(0x39);
        LCD_ILI9341_Parameter(0x2C);
        LCD_ILI9341_Parameter(0x00);
        LCD_ILI9341_Parameter(0x34);
        LCD_ILI9341_Parameter(0x02);
       
        /* Pump ratio control (F7h) */
        DEBUG_DELAY();
        LCD_ILI9341_CMD(0xF7);
        LCD_ILI9341_Parameter(0x20);
       
        /* Driver timing control B */
        DEBUG_DELAY();
        LCD_ILI9341_CMD(0xEA);
        LCD_ILI9341_Parameter(0x00);
        LCD_ILI9341_Parameter(0x00);
       
        /* Frame Rate Control (In Normal Mode/Full Colors) (B1h) */
        DEBUG_DELAY();
        LCD_ILI9341_CMD(0xB1);
        LCD_ILI9341_Parameter(0x00);
        LCD_ILI9341_Parameter(0x1B);
       
        /*  Display Function Control (B6h) */
        DEBUG_DELAY();
        LCD_ILI9341_CMD(0xB6);
        LCD_ILI9341_Parameter(0x0A);
        LCD_ILI9341_Parameter(0xA2);
       
        /* Power Control 1 (C0h) */
        DEBUG_DELAY();
        LCD_ILI9341_CMD(0xC0);
        LCD_ILI9341_Parameter(0x35);
       
        /* Power Control 2 (C1h) */
        DEBUG_DELAY();
        LCD_ILI9341_CMD(0xC1);
        LCD_ILI9341_Parameter(0x11);
       
        /* VCOM Control 1(C5h) */
        LCD_ILI9341_CMD(0xC5);
        LCD_ILI9341_Parameter(0x45);
        LCD_ILI9341_Parameter(0x45);
       
        /*  VCOM Control 2(C7h)  */
        LCD_ILI9341_CMD(0xC7);
        LCD_ILI9341_Parameter(0xA2);
       
        /* Enable 3G (F2h) */
        LCD_ILI9341_CMD(0xF2);
        LCD_ILI9341_Parameter(0x00);
       
        /* Gamma Set (26h) */
        LCD_ILI9341_CMD(0x26);
        LCD_ILI9341_Parameter(0x01);
        DEBUG_DELAY();
       
        /* Positive Gamma Correction */
        LCD_ILI9341_CMD(0xE0); //Set Gamma
        LCD_ILI9341_Parameter(0x0F);
        LCD_ILI9341_Parameter(0x26);
        LCD_ILI9341_Parameter(0x24);
        LCD_ILI9341_Parameter(0x0B);
        LCD_ILI9341_Parameter(0x0E);
        LCD_ILI9341_Parameter(0x09);
        LCD_ILI9341_Parameter(0x54);
        LCD_ILI9341_Parameter(0xA8);
        LCD_ILI9341_Parameter(0x46);
        LCD_ILI9341_Parameter(0x0C);
        LCD_ILI9341_Parameter(0x17);
        LCD_ILI9341_Parameter(0x09);
        LCD_ILI9341_Parameter(0x0F);
        LCD_ILI9341_Parameter(0x07);
        LCD_ILI9341_Parameter(0x00);
       
        /* Negative Gamma Correction (E1h) */
        LCD_ILI9341_CMD(0XE1); //Set Gamma
        LCD_ILI9341_Parameter(0x00);
        LCD_ILI9341_Parameter(0x19);
        LCD_ILI9341_Parameter(0x1B);
        LCD_ILI9341_Parameter(0x04);
        LCD_ILI9341_Parameter(0x10);
        LCD_ILI9341_Parameter(0x07);
        LCD_ILI9341_Parameter(0x2A);
        LCD_ILI9341_Parameter(0x47);
        LCD_ILI9341_Parameter(0x39);
        LCD_ILI9341_Parameter(0x03);
        LCD_ILI9341_Parameter(0x06);
        LCD_ILI9341_Parameter(0x06);
        LCD_ILI9341_Parameter(0x30);
        LCD_ILI9341_Parameter(0x38);
        LCD_ILI9341_Parameter(0x0F);
       
        /* memory access control set */
        DEBUG_DELAY();
        LCD_ILI9341_CMD(0x36);        
        LCD_ILI9341_Parameter(0xC8);    /*&Ecirc;ú&AElig;&Aacute;  ×ó&Eacute;&Iuml;&frac12;&Ccedil;&micro;&frac12;(&AElig;&eth;&micro;&atilde;)&micro;&frac12;&Oacute;&Ograve;&Iuml;&Acirc;&frac12;&Ccedil;(&Ouml;&Otilde;&micro;&atilde;)&Eacute;¨&Atilde;è·&frac12;&Ecirc;&frac12;*/
        DEBUG_DELAY();
       
        /* column address control set */
        LCD_ILI9341_CMD(0X2A);
        LCD_ILI9341_Parameter(0x00);
        LCD_ILI9341_Parameter(0x00);
        LCD_ILI9341_Parameter(0x00);
        LCD_ILI9341_Parameter(0xEF);
       
        /* page address control set */
        DEBUG_DELAY();
        LCD_ILI9341_CMD(0X2B);
        LCD_ILI9341_Parameter(0x00);
        LCD_ILI9341_Parameter(0x00);
        LCD_ILI9341_Parameter(0x01);
        LCD_ILI9341_Parameter(0x3F);
       
        /*  Pixel Format Set (3Ah)  */
        DEBUG_DELAY();
        LCD_ILI9341_CMD(0x3a);
        LCD_ILI9341_Parameter(0x55);
       
        /* Sleep Out (11h)  */
        LCD_ILI9341_CMD(0x11);       
        Delay(0xAFFf<<2);
        DEBUG_DELAY();
       
        /* Display ON (29h) */
        LCD_ILI9341_CMD(0x29);
}

/**
* @brief  lcd&sup3;&otilde;&Ecirc;&frac14;&raquo;&macr;&pound;&not;&Egrave;&ccedil;&sup1;&ucirc;&Ograve;&ordf;&Oacute;&Atilde;&micro;&frac12;lcd&pound;&not;&Ograve;&raquo;&para;¨&Ograve;&ordf;&micro;÷&Oacute;&Atilde;&Otilde;&acirc;&cedil;&ouml;&ordm;&macr;&Ecirc;&yacute;
* @param  &Icirc;&THORN;
* @retval &Icirc;&THORN;
*/
void LCD_Init(void)
{
        LCD_GPIO_Config();
        LCD_FSMC_Config();
       
        LCD_Rst();
        LCD_REG_Config();
}

void LCD_Clear(uint16_t x, uint16_t y, uint16_t width, uint16_t height, uint16_t color)
{
        uint32_t i = 0;
       
        /* column address control set */
        LCD_ILI9341_CMD(0X2A);
        LCD_ILI9341_Parameter( x >> 8 );         /* &Iuml;&Egrave;&cedil;&szlig;8&Icirc;&raquo;&pound;&not;&Egrave;&raquo;&ordm;ó&micro;&Iacute;8&Icirc;&raquo; */
        LCD_ILI9341_Parameter( x & 0xff );                 /* column start   */
        LCD_ILI9341_Parameter( (x+width-1) >> 8 );   /* column end   */
        LCD_ILI9341_Parameter( (x+width-1) & 0xff );
       
        /* page address control set */       
  LCD_ILI9341_CMD(0X2B);                              
        LCD_ILI9341_Parameter( y >> 8 );                        /* page start   */
        LCD_ILI9341_Parameter( y & 0xff );
        LCD_ILI9341_Parameter( (y+height-1) >> 8);  /* page end     */
        LCD_ILI9341_Parameter( (y+height-1) & 0xff);
       
        /* memory write */
        LCD_ILI9341_CMD(0x2c);       
               
        for( i=0; i < width*height; i++ )
        {
                LCD_WR_Data( color );
                //Delay(0x0FFf);
        }       
}

void LCD_SetCursor(uint16_t x, uint16_t y)       
{       
        LCD_ILI9341_CMD(0X2A);                                  /* &Eacute;è&Ouml;&Atilde;X×&oslash;±ê */
        LCD_ILI9341_Parameter(x>>8);         /* &Iuml;&Egrave;&cedil;&szlig;8&Icirc;&raquo;&pound;&not;&Egrave;&raquo;&ordm;ó&micro;&Iacute;8&Icirc;&raquo; */
        LCD_ILI9341_Parameter(x&0xff);         /* &Eacute;è&Ouml;&Atilde;&AElig;&eth;&Ecirc;&frac14;&micro;&atilde;&ordm;&Iacute;&frac12;á&Ecirc;&oslash;&micro;&atilde;*/
        LCD_ILI9341_Parameter(x>>8);
        LCD_ILI9341_Parameter(x&0xff);

    LCD_ILI9341_CMD(0X2B);                              /* &Eacute;è&Ouml;&Atilde;Y×&oslash;±ê*/
        LCD_ILI9341_Parameter(x>>8);
        LCD_ILI9341_Parameter(x&0xff);
        LCD_ILI9341_Parameter(x>>8);
        LCD_ILI9341_Parameter(x&0xff);                     
}

//  _ _ _ _ _ _
// |           |
// |           |
// |           |
// |           |
// |           |
// |           |
// |           |
// |           |
// |           |
// |           |
// |           |
// |           |
//  - - - - - -
void LCD_OpenWindow(uint16_t x, uint16_t y, uint16_t width, uint16_t height)
{       
        LCD_ILI9341_CMD(0X2A);                                  /* &Eacute;è&Ouml;&Atilde;X×&oslash;±ê */
        LCD_ILI9341_Parameter( x >> 8 );         /* &Iuml;&Egrave;&cedil;&szlig;8&Icirc;&raquo;&pound;&not;&Egrave;&raquo;&ordm;ó&micro;&Iacute;8&Icirc;&raquo; */
        LCD_ILI9341_Parameter( x & 0xff );         /* &Eacute;è&Ouml;&Atilde;&AElig;&eth;&Ecirc;&frac14;&micro;&atilde;&ordm;&Iacute;&frac12;á&Ecirc;&oslash;&micro;&atilde;*/
        LCD_ILI9341_Parameter( (x+width-1) >> 8 );
        LCD_ILI9341_Parameter( (x+width-1) & 0xff );

        LCD_ILI9341_CMD(0X2B);                              /* &Eacute;è&Ouml;&Atilde;Y×&oslash;±ê*/
        LCD_ILI9341_Parameter( y >> 8 );
        LCD_ILI9341_Parameter( y & 0xff );
        LCD_ILI9341_Parameter( (y+height-1) >> 8);
        LCD_ILI9341_Parameter( (y+height-1) & 0xff);
}

void LCD_SetPoint(uint16_t x , uint16_t y , uint16_t color)       
{       
        LCD_SetCursor(x, y);
        LCD_ILI9341_CMD(0x2c);                 /* &ETH;&acute;&Ecirc;&yacute;&frac34;&Yacute; */
        LCD_WR_Data(color);
}

uint16_t LCD_RD_data(void)       
{       
        uint16_t R=0, G=0, B=0 ;

        R = *(__IO uint16_t *)Bank1_LCD_D;           /*FIRST READ OUT DUMMY DATA*/
        R = *(__IO uint16_t *)Bank1_LCD_D;          /*READ OUT RED DATA  */
        B = *(__IO uint16_t *)Bank1_LCD_D;          /*READ OUT BLACK DATA*/
        G = *(__IO uint16_t *)Bank1_LCD_D;          /*READ OUT GREEN DATA*/
       
    return (((R>>11)<<11) | ((G>>10)<<5) | (B>>11));
}

uint16_t LCD_GetPoint(uint16_t x , uint16_t y)
{
        uint16_t temp;

        LCD_SetCursor(x, y);
        LCD_ILI9341_CMD(0x2e);         /* &para;&Aacute;&Ecirc;&yacute;&frac34;&Yacute; */
        temp=LCD_RD_data();
        return (temp);
}

void LCD_DispChar(uint16_t x, uint16_t y, uint8_t ascii, uint16_t color)
{
        uint16_t page, column, temp, i;
        i = ascii - ' ';
       
        LCD_OpenWindow(x, y, STR_WIDTH, STR_HEIGHT);
        LCD_ILI9341_CMD(0X2C);       
       
        for( page=0; page < STR_HEIGHT; page++ )
        {
                temp = asc2_1206[i];
                for( column=0; column < STR_WIDTH; column++ )
                {
                        if( temp & 0x01 )
                        {
                                LCD_WR_Data( color );
                        }
                        else
                        {
                                LCD_WR_Data( BACKGROUND );                                                               
                        }
                        temp >>= 1;               
                }/* &Ograve;&raquo;&ETH;&ETH;&ETH;&acute;&Iacute;ê */
        }/* &Egrave;&laquo;&sup2;&iquest;&ETH;&acute;&Iacute;ê */
}

void LCD_DispStr(uint16_t x, uint16_t y, uint8_t *pstr, uint16_t color)
{
        while( *pstr != '\0' )
        {
                if( x > (COLUMN-STR_WIDTH) )
                {
                        x = 0;
                        y += STR_HEIGHT;
                }
                if( y > (PAGE-STR_HEIGHT) )
                {
                        x = 0;
                        y = 0;
                }
                LCD_DispChar(x, y, *pstr, color);
                x += STR_WIDTH;
                pstr++;
        }
}

//  temp = 345   length = 0
//  34           1
//  3            2
//  0            3


//  0    6    12
//  ____ ____ ____
void LCD_DisNum(uint16_t x, uint16_t y, uint32_t num, uint16_t color)
{
        uint32_t length = 0, temp = 0;
        temp = num;
       
        if( temp == 0 )
        {
                LCD_DispChar(x, y, '0', color);
                return;
        }
       
        while( temp )
        {// &micro;&Atilde;&micro;&frac12;num&micro;&Auml;&sup3;¤&para;&Egrave;
                temp /= 10;
                length ++;
        }
       
        while( num )
        {
                /* &acute;&Oacute;&cedil;&ouml;&Icirc;&raquo;&iquest;&ordf;&Ecirc;&frac14;&Iuml;&Ocirc;&Ecirc;&frac34; */
                LCD_DispChar((x+STR_WIDTH*(length--)-STR_WIDTH), y, (num%10)+'0', color);
                num /= 10;
        }       
}
这个是bsp_ili9341_lcd.c
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-5-4 09:35:09 | 显示全部楼层
#ifndef __BSP_ILI9341_LCD_H
#define        __BSP_ILI9341_LCD_H

#include "stm32f10x.h"

/***************************************************************************************
2^26 =0X0400 0000 = 64MB,&Atilde;&iquest;&cedil;&ouml; BANK &Oacute;&ETH;4*64MB = 256MB
64MB:FSMC_Bank1_NORSRAM1:0X6000 0000 ~ 0X63FF FFFF
64MB:FSMC_Bank1_NORSRAM2:0X6400 0000 ~ 0X67FF FFFF
64MB:FSMC_Bank1_NORSRAM3:0X6800 0000 ~ 0X6BFF FFFF
64MB:FSMC_Bank1_NORSRAM4:0X6C00 0000 ~ 0X6FFF FFFF

&Ntilde;&iexcl;&Ocirc;&ntilde;BANK1-BORSRAM4 &Aacute;&not;&frac12;&Oacute; TFT&pound;&not;&micro;&Oslash;&Ouml;··&para;&Icirc;§&Icirc;&ordf;0X6C00 0000 ~ 0X6FFF FFFF
FSMC_A23 &frac12;&Oacute;LCD&micro;&Auml;DC(&frac14;&Auml;&acute;&aelig;&AElig;÷/&Ecirc;&yacute;&frac34;&Yacute;&Ntilde;&iexcl;&Ocirc;&ntilde;)&frac12;&Aring;
&frac14;&Auml;&acute;&aelig;&AElig;÷&raquo;ù&micro;&Oslash;&Ouml;· = 0X6C00 0000
RAM&raquo;ù&micro;&Oslash;&Ouml;· = 0X6D00 0000 = 0X6C00 0000+2^23*2 = 0X6C00 0000 + 0X100 0000 = 0X6D00 0000
&micro;±&Ntilde;&iexcl;&Ocirc;&ntilde;&sup2;&raquo;&Iacute;&not;&micro;&Auml;&micro;&Oslash;&Ouml;·&Iuml;&szlig;&Ecirc;±&pound;&not;&micro;&Oslash;&Ouml;·&Ograve;&ordf;&Ouml;&Oslash;&ETH;&Acirc;&frac14;&AElig;&Euml;&atilde;  
****************************************************************************************/


#define Bank1_LCD_C    ((u32)0x6C000000)           //Disp Reg ADDR
#define Bank1_LCD_D    ((u32)0x6D000000)       //Disp Data ADDR       // A23 PE2

/*&Ntilde;&iexcl;&para;¨LCD&Ouml;&cedil;&para;¨&frac14;&Auml;&acute;&aelig;&AElig;÷*/
#define LCD_WR_REG(index)    ((*(__IO u16 *) (Bank1_LCD_C)) = ((u16)index))
/*&Iacute;ùLCD GRAM&ETH;&acute;&Egrave;&euml;&Ecirc;&yacute;&frac34;&Yacute;*/
#define LCD_WR_Data(val)       ((*(__IO u16 *) (Bank1_LCD_D)) = ((u16)(val)))

#define LCD_ILI9341_CMD(index)       LCD_WR_REG(index)
#define LCD_ILI9341_Parameter(val)         LCD_WR_Data(val)

/*&frac12;&laquo;LCD&Ouml;&ETH;&micro;&Auml;index&frac14;&Auml;&acute;&aelig;&AElig;÷&Eacute;è&Ouml;&Atilde;&Icirc;&ordf;val&Ouml;&micro;*/
//#define LCD_WR_CMD(index,val)  do{(*(__IO u16 *) (Bank1_LCD_C)) = ((u16)index);        (*(__IO u16 *) (Bank1_LCD_D)) = ((u16)(val));}while(0)
//#define LCD_WR_CMD(index,val)  {(*(__IO u16 *) (Bank1_LCD_C)) = ((u16)index);        (*(__IO u16 *) (Bank1_LCD_D)) = ((u16)(val));}


#define COLUMN                240
#define PAGE                320       

// SRT &Ecirc;&Ccedil;string&micro;&Auml;&Euml;&otilde;&ETH;&acute;
#define STR_WIDTH                6                /* ×&Ouml;·&ucirc;&iquest;í&para;&Egrave; */
#define STR_HEIGHT                12                /* ×&Ouml;·&ucirc;&cedil;&szlig;&para;&Egrave; */

#define BACKGROUND                BLACK

#define WHITE                                  0xFFFF        /* °×&Eacute;&laquo; */
#define BLACK        0x0000        /* &ordm;&Uacute;&Eacute;&laquo; */
#define GREY         0xF7DE        /* &raquo;&Ograve;&Eacute;&laquo; */
#define BLUE         0x001F        /* &Agrave;&para;&Eacute;&laquo; */
#define BLUE2        0x051F        /* &Ccedil;&sup3;&Agrave;&para;&Eacute;&laquo; */
#define RED          0xF800        /* &ordm;ì&Eacute;&laquo; */
#define MAGENTA      0xF81F        /* &ordm;ì×&Iuml;&Eacute;&laquo;&pound;&not;&Ntilde;ó&ordm;ì&Eacute;&laquo; */
#define GREEN        0x07E0        /* &Acirc;&Igrave;&Eacute;&laquo; */
#define CYAN         0x7FFF        /* &Agrave;&para;&Acirc;&Igrave;&Eacute;&laquo;&pound;&not;&Ccedil;à&Eacute;&laquo; */
#define YELLOW       0xFFE0        /* &raquo;&AElig;&Eacute;&laquo; */

void LCD_Init(void);
void LCD_Clear(uint16_t x, uint16_t y, uint16_t width, uint16_t height, uint16_t color);
void LCD_SetCursor(uint16_t x, uint16_t y);
void LCD_OpenWindow(uint16_t x, uint16_t y, uint16_t width, uint16_t height);
void LCD_SetPoint(uint16_t x , uint16_t y , uint16_t color);
uint16_t LCD_GetPoint(uint16_t x , uint16_t y);
void LCD_DispChar(uint16_t x, uint16_t y, uint8_t ascii, uint16_t color);
void LCD_DispStr(uint16_t x, uint16_t y, uint8_t *pstr, uint16_t color);
void LCD_DisNum(uint16_t x, uint16_t y, uint32_t num, uint16_t color);

#endif /* __BSP_ILI9341_LCD_H */
#ifndef __BSP_ILI9341_LCD_H
#define        __BSP_ILI9341_LCD_H

#include "stm32f10x.h"

/***************************************************************************************
2^26 =0X0400 0000 = 64MB,&Atilde;&iquest;&cedil;&ouml; BANK &Oacute;&ETH;4*64MB = 256MB
64MB:FSMC_Bank1_NORSRAM1:0X6000 0000 ~ 0X63FF FFFF
64MB:FSMC_Bank1_NORSRAM2:0X6400 0000 ~ 0X67FF FFFF
64MB:FSMC_Bank1_NORSRAM3:0X6800 0000 ~ 0X6BFF FFFF
64MB:FSMC_Bank1_NORSRAM4:0X6C00 0000 ~ 0X6FFF FFFF

&Ntilde;&iexcl;&Ocirc;&ntilde;BANK1-BORSRAM4 &Aacute;&not;&frac12;&Oacute; TFT&pound;&not;&micro;&Oslash;&Ouml;··&para;&Icirc;§&Icirc;&ordf;0X6C00 0000 ~ 0X6FFF FFFF
FSMC_A23 &frac12;&Oacute;LCD&micro;&Auml;DC(&frac14;&Auml;&acute;&aelig;&AElig;÷/&Ecirc;&yacute;&frac34;&Yacute;&Ntilde;&iexcl;&Ocirc;&ntilde;)&frac12;&Aring;
&frac14;&Auml;&acute;&aelig;&AElig;÷&raquo;ù&micro;&Oslash;&Ouml;· = 0X6C00 0000
RAM&raquo;ù&micro;&Oslash;&Ouml;· = 0X6D00 0000 = 0X6C00 0000+2^23*2 = 0X6C00 0000 + 0X100 0000 = 0X6D00 0000
&micro;±&Ntilde;&iexcl;&Ocirc;&ntilde;&sup2;&raquo;&Iacute;&not;&micro;&Auml;&micro;&Oslash;&Ouml;·&Iuml;&szlig;&Ecirc;±&pound;&not;&micro;&Oslash;&Ouml;·&Ograve;&ordf;&Ouml;&Oslash;&ETH;&Acirc;&frac14;&AElig;&Euml;&atilde;  
****************************************************************************************/


#define Bank1_LCD_C    ((u32)0x6C000000)           //Disp Reg ADDR
#define Bank1_LCD_D    ((u32)0x6D000000)       //Disp Data ADDR       // A23 PE2

/*&Ntilde;&iexcl;&para;¨LCD&Ouml;&cedil;&para;¨&frac14;&Auml;&acute;&aelig;&AElig;÷*/
#define LCD_WR_REG(index)    ((*(__IO u16 *) (Bank1_LCD_C)) = ((u16)index))
/*&Iacute;ùLCD GRAM&ETH;&acute;&Egrave;&euml;&Ecirc;&yacute;&frac34;&Yacute;*/
#define LCD_WR_Data(val)       ((*(__IO u16 *) (Bank1_LCD_D)) = ((u16)(val)))

#define LCD_ILI9341_CMD(index)       LCD_WR_REG(index)
#define LCD_ILI9341_Parameter(val)         LCD_WR_Data(val)

/*&frac12;&laquo;LCD&Ouml;&ETH;&micro;&Auml;index&frac14;&Auml;&acute;&aelig;&AElig;÷&Eacute;è&Ouml;&Atilde;&Icirc;&ordf;val&Ouml;&micro;*/
//#define LCD_WR_CMD(index,val)  do{(*(__IO u16 *) (Bank1_LCD_C)) = ((u16)index);        (*(__IO u16 *) (Bank1_LCD_D)) = ((u16)(val));}while(0)
//#define LCD_WR_CMD(index,val)  {(*(__IO u16 *) (Bank1_LCD_C)) = ((u16)index);        (*(__IO u16 *) (Bank1_LCD_D)) = ((u16)(val));}


#define COLUMN                240
#define PAGE                320       

// SRT &Ecirc;&Ccedil;string&micro;&Auml;&Euml;&otilde;&ETH;&acute;
#define STR_WIDTH                6                /* ×&Ouml;·&ucirc;&iquest;í&para;&Egrave; */
#define STR_HEIGHT                12                /* ×&Ouml;·&ucirc;&cedil;&szlig;&para;&Egrave; */

#define BACKGROUND                BLACK

#define WHITE                                  0xFFFF        /* °×&Eacute;&laquo; */
#define BLACK        0x0000        /* &ordm;&Uacute;&Eacute;&laquo; */
#define GREY         0xF7DE        /* &raquo;&Ograve;&Eacute;&laquo; */
#define BLUE         0x001F        /* &Agrave;&para;&Eacute;&laquo; */
#define BLUE2        0x051F        /* &Ccedil;&sup3;&Agrave;&para;&Eacute;&laquo; */
#define RED          0xF800        /* &ordm;ì&Eacute;&laquo; */
#define MAGENTA      0xF81F        /* &ordm;ì×&Iuml;&Eacute;&laquo;&pound;&not;&Ntilde;ó&ordm;ì&Eacute;&laquo; */
#define GREEN        0x07E0        /* &Acirc;&Igrave;&Eacute;&laquo; */
#define CYAN         0x7FFF        /* &Agrave;&para;&Acirc;&Igrave;&Eacute;&laquo;&pound;&not;&Ccedil;à&Eacute;&laquo; */
#define YELLOW       0xFFE0        /* &raquo;&AElig;&Eacute;&laquo; */

void LCD_Init(void);
void LCD_Clear(uint16_t x, uint16_t y, uint16_t width, uint16_t height, uint16_t color);
void LCD_SetCursor(uint16_t x, uint16_t y);
void LCD_OpenWindow(uint16_t x, uint16_t y, uint16_t width, uint16_t height);
void LCD_SetPoint(uint16_t x , uint16_t y , uint16_t color);
uint16_t LCD_GetPoint(uint16_t x , uint16_t y);
void LCD_DispChar(uint16_t x, uint16_t y, uint8_t ascii, uint16_t color);
void LCD_DispStr(uint16_t x, uint16_t y, uint8_t *pstr, uint16_t color);
void LCD_DisNum(uint16_t x, uint16_t y, uint32_t num, uint16_t color);

#endif /* __BSP_ILI9341_LCD_H */
这个是ili9341.h 我觉得问题就在这两页代码中。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-5-4 16:05:15 | 显示全部楼层
顶一顶。
回复

使用道具 举报

发表于 2017-5-5 21:05:21 | 显示全部楼层
把图片这几个对应的引脚改过来就OK了
QQ截图20170505210311.png
回复 支持 反对

使用道具 举报

发表于 2017-5-5 21:13:34 | 显示全部楼层

液晶屏一直白屏

还有头文件里的这个宏的地址也要改成A16 PD11对应地址
QQ截图20170505211143.png
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-5-6 23:03:51 | 显示全部楼层
本帖最后由 1努力成工程shi 于 2017-5-7 00:08 编辑
一只小蝌蚪 发表于 2017-5-5 21:13
还有头文件里的这个宏的地址也要改成A16 PD11对应地址

谢谢。我刚刚看见。
还有头文件里的这个宏的地址也要改成A16 PD11对应地址“
这个怎么改啊?A16/PD11不是一个地址吗?那是两个宏啊
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-5-6 23:04:45 | 显示全部楼层
一只小蝌蚪 发表于 2017-5-5 21:05
把图片这几个对应的引脚改过来就OK了

我试下!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-5-6 23:58:20 | 显示全部楼层
本帖最后由 1努力成工程shi 于 2017-5-7 00:09 编辑
一只小蝌蚪 发表于 2017-5-5 21:13
还有头文件里的这个宏的地址也要改成A16 PD11对应地址

这两个地址为何要改?
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

联系站长|手机版|野火电子官网|野火淘宝店铺|野火电子论坛 ( 粤ICP备14069197号 ) 大学生ARM嵌入式2群

GMT+8, 2024-11-24 06:02 , Processed in 0.055543 second(s), 26 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表