<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > STM32驅(qū)動(dòng)TFT顯示屏ILI9325

          STM32驅(qū)動(dòng)TFT顯示屏ILI9325

          作者: 時(shí)間:2016-11-24 來(lái)源:網(wǎng)絡(luò) 收藏
          2.4寸TFT240370PQ顯示屏,驅(qū)動(dòng)IC為ILI9325。該屏屏幕電源為2.8~3.3V,背光電源最高3.2V(在3.3V電源下串20Ω電阻或5V下串200Ω電阻),兼容8/16位數(shù)據(jù)接口(可選)。數(shù)據(jù)口電平理論上不能超3.3V,由于TFT內(nèi)部有電壓鉗位,樣品測(cè)試時(shí)可使用5V單片機(jī)。

            寫(xiě)下幾點(diǎn)注意事項(xiàng):

          1、不要急著寫(xiě)屏,首先讀ID,確認(rèn)驅(qū)動(dòng)IC是否ILI9325。ILI9320、ILI9325、ILI9328等驅(qū)動(dòng)IC的初始化參數(shù)會(huì)稍有不同。讀ID還可以確認(rèn)數(shù)據(jù)接口選擇的正確性。如果是16位數(shù)據(jù)接口,ID讀到0x9325;如果是8位數(shù)據(jù)接口,ID讀兩次可得0x93,0x25。

          2、雖然TFT屏的初始化參數(shù)比較多,但參數(shù)要求并不很?chē)?yán)格,不會(huì)因?yàn)橐稽c(diǎn)點(diǎn)的差錯(cuò)而點(diǎn)不亮(當(dāng)然,不寫(xiě)display on的命令肯定不會(huì)亮),所以,在點(diǎn)不亮?xí)r不要首先懷疑Init()的參數(shù)設(shè)置,應(yīng)該先檢查連線的正確性,I/O口的設(shè)置。

          3、要注意給RST的復(fù)位有足夠的時(shí)間,寫(xiě)命令和寫(xiě)數(shù)據(jù)的子函數(shù)里RS的選擇。

          4、賣(mài)屏的商家通常提供的是STC的例程,若STM32驅(qū)不起來(lái),可先用STC把屏點(diǎn)亮,以確認(rèn)該屏正常,再仔細(xì)尋找問(wèn)題所在。

            以下是例程,該例程使用I/O口驅(qū)動(dòng),雖然選擇16位數(shù)據(jù)接口,但刷屏速度有點(diǎn)慢,建議使用LCD總線。背光使用PWM調(diào)節(jié)對(duì)比度(該段程序省略):


          #defineP_TFT_RS   GPIOB
          #define TFT_RS    GPIO_Pin_0
          #defineP_TFT_WR  GPIOB
          #define TFT_WR    GPIO_Pin_1
          #defineP_TFT_RD GPIOB
          #define TFT_RD GPIO_Pin_2
          #defineP_TFT_CS GPIOB
          #define TFT_CS GPIO_Pin_10
          #defineP_TFT_RSTGPIOB
          #define TFT_RST GPIO_Pin_11
          #defineP_TFT_BK GPIOB
          #define TFT_BKGPIO_Pin_7 // TIM4_CH2 PWM


          #define Set_CS GPIO_SetBits(P_TFT_CS,TFT_CS);
          #define Clr_CS GPIO_ResetBits(P_TFT_CS,TFT_CS);

          #define Set_RSGPIO_SetBits(P_TFT_RS,TFT_RS);
          #define Clr_RS GPIO_ResetBits(P_TFT_RS,TFT_RS);

          #define Set_WR GPIO_SetBits(P_TFT_WR,TFT_WR);
          #define Clr_WR GPIO_ResetBits(P_TFT_WR,TFT_WR);

          #define Set_RD GPIO_SetBits(P_TFT_RD,TFT_RD);
          #define Clr_RD GPIO_ResetBits(P_TFT_RD,TFT_RD);

          #define Set_RST GPIO_SetBits(P_TFT_RST,TFT_RST);
          #define Clr_RST GPIO_ResetBits(P_TFT_RST,TFT_RST);

          void GPIO_Configuration(void)
          {
          GPIO_InitTypeDef GPIO_InitStructure;


          GPIO_InitStructure.GPIO_Pin = GPIO_Pin_All;
          GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
          GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
          GPIO_Init(GPIOA, &GPIO_InitStructure);
          GPIO_Init(GPIOB, &GPIO_InitStructure);
          GPIO_Init(GPIOC, &GPIO_InitStructure);
          GPIO_Init(GPIOD, &GPIO_InitStructure);

          GPIO_InitStructure.GPIO_Pin = GPIO_Pin_7;// for PWM
          GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
          GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
          GPIO_Init(GPIOB, &GPIO_InitStructure);

          }


          void DataToIO(u16 val)
          {
          u16 dat;
          dat = GPIO_ReadOutputData(GPIOC);// DBL
          dat = (dat&0xFF00) | (val&0xFF);
          GPIO_Write(GPIOC, dat);

          dat = GPIO_ReadOutputData(GPIOA);// DBH
          dat = (dat&0xFF00) | ((val>>8)&0xFF);
          GPIO_Write(GPIOA, dat);
          }


          void TFT_Write_com(u16 dat) //發(fā)送命令
          {
          Clr_RS;
          Set_RD;
          DataToIO(dat);
          Clr_WR;
          Set_WR;
          }


          void TFT_Write_dat(u16 dat)// 發(fā)送數(shù)據(jù)
          {
          Set_RS;
          Set_RD;
          DataToIO(dat);
          Clr_WR;
          Set_WR;
          }


          u16 TFT_ReadReg(u16 reg)
          {
          u16 datL, datH;
          GPIO_InitTypeDef GPIO_InitStructure;

          Clr_CS;
          TFT_Write_com(reg);

          GPIO_InitStructure.GPIO_Pin = 0xFF;
          GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
          GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU ;// 上拉輸入
          GPIO_Init(GPIOC, &GPIO_InitStructure);
          GPIO_Init(GPIOA, &GPIO_InitStructure);

          GPIOA->ODR = 0xFFFF;
          GPIOC->ODR = 0xFFFF;

          Set_RS;
          Set_WR;
          Clr_RD;
          datH = GPIOA->IDR;
          datL = GPIOC->IDR;
          Set_RD;
          Set_CS;

          GPIO_InitStructure.GPIO_Pin = GPIO_Pin_All;
          GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
          GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
          GPIO_Init(GPIOC, &GPIO_InitStructure);
          GPIO_InitStructure.GPIO_Pin = 0xFF;
          GPIO_Init(GPIOA, &GPIO_InitStructure);
          DataToIO(0xFFFF);

          datH = ((datH<<8)&0xFF00) | (datL&0x00FF);

          return(datH);
          }


          上一頁(yè) 1 2 下一頁(yè)

          評(píng)論


          技術(shù)專(zhuān)區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();