第八章 TFT-LCD編程22寸天馬原裝串口 TFT SPI 液晶屏模塊 高清240X320 兼容5110_第1頁
第八章 TFT-LCD編程22寸天馬原裝串口 TFT SPI 液晶屏模塊 高清240X320 兼容5110_第2頁
第八章 TFT-LCD編程22寸天馬原裝串口 TFT SPI 液晶屏模塊 高清240X320 兼容5110_第3頁
第八章 TFT-LCD編程22寸天馬原裝串口 TFT SPI 液晶屏模塊 高清240X320 兼容5110_第4頁
第八章 TFT-LCD編程22寸天馬原裝串口 TFT SPI 液晶屏模塊 高清240X320 兼容5110_第5頁
已閱讀5頁,還剩21頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1、TFT-LCDTFT-LCDTFT-LCD編程步驟編程步驟8.18.2第八章 TFT-LCD 編程LCM型號:TM022HDH26(其內(nèi)核芯片為ILI9340,大小為 2.2寸 )STM32F10 x2、 TFT-LCD 各引腳的定義SD卡引腳-在TFT-LCD上的SD卡STM32F10 xPin NameI/O說明說明Descriptions SDOOLCD的串行口輸出LEDI背光正極其可以接IO管腳(背光可以由IO口提供電流),或者外接3.3V電壓SCKILCD的串行口時鐘SDIILCD的串行口輸入D/CIData / CommandThis pin is used to select “

2、Data or Command” in the parallel interface or 4-wire 8-bit serial data interface. When DCX = 1, data is selected. When DCX = 0, command is selected.RESETI復(fù)位接單片機的IO管腳(或接單片機的復(fù)位信號實際試驗 無效)CSI片選GNDIVCCI供電電壓2.83.3V,背光也是2.83.3V,絕對不能接5VSTM32F10 xTFT-LCD:Pin Name說明說明說明說明接接stm32單片機的管腳單片機的管腳SDOSP1LCD的串行口輸出PA6L

3、EDI背光正極外接3.3V電壓或PA0GPIO_Pin_9SCKSP1LCD的串行口時鐘PA5SDISP1LCD的串行口輸入PA7D/CIData / CommandPA3GPIO_Pin_10RESET(不可省略)I復(fù)位PA4GPIO_Pin_12CSI片選PA8 GPIO_Pin_11GNDI103小板連線:8.2 TFT-LCD8.2 TFT-LCD 編程步驟編程步驟顯示字符顯示字符4、LCD初始化初始化5、LCD清屏清屏8.2 TFT-LCD8.2 TFT-LCD 編程步驟編程步驟2、加入頭文件加入頭文件1、字符的字模字符的字模7、設(shè)置光標位置,顯示字符設(shè)置光標位置,顯示字符顯示字符顯

4、示字符6、點亮液晶屏點亮液晶屏(若用(若用GPIO管腳管腳 接接 LCD背光正極)背光正極)(若用(若用3.3V電壓 直接接直接接 LCD背光正極:無需要此步)背光正極:無需要此步)3、延時初始化延時初始化STM32F10 x1、字符的字模、字符的字模在 font.h 文件中,定義:#define USE_ONCHIP_FLASH_FONT 1const unsigned char asc16=/數(shù)組數(shù)組asc6:保存保存16*8點陣字庫點陣字庫#if USE_ONCHIP_FLASH_FONT /條件編譯:當條件滿足,才編譯以下語句條件編譯:當條件滿足,才編譯以下語句0 x00,0 x00,

5、0 x00,0 x00,0 x00,0 x00,0 x00,0 x00,0 x00,0 x00,0 x00,0 x00,0 x00,0 x00,0 x00,0 x00, / 0 x00,0 x10,0 x10,0 x10,0 x10,0 x10,0 x10,0 x10,0 x10,0 x10,0 x00,0 x00,0 x10,0 x10,0 x00,0 x00, /!0 x00,0 x00,0 x6C,0 x6C,0 x24,0 x24,0 x00,0 x00,0 x00,0 x00,0 x01,0 x00,0 x00,0 x00,0 x00,0 x00, /0 x00,0 x24,0 x2

6、4,0 x24,0 x24,0 xFE,0 x48,0 x48,0 x48,0 x48,0 xFC,0 x90,0 x90,0 x90,0 x90,0 x00, /#0 x00,0 x10,0 x3C,0 x54,0 x92,0 x90,0 x50,0 x38,0 x14,0 x12,0 x12,0 x92,0 x54,0 x78,0 x10,0 x00, /$0 x00,0 x00,0 x22,0 x5C,0 x94,0 xA8,0 x48,0 x10,0 x10,0 x24,0 x2A,0 x52,0 x54,0 x88,0 x00,0 x00, /%0 x00,0 x00,0 x30,0

7、 x48,0 x48,0 x50,0 x20,0 x6E,0 x54,0 x94,0 x8C,0 x88,0 x8A,0 x74,0 x00,0 x00, /&0 x00,0 x00,0 x30,0 x30,0 x10,0 x10,0 x00,0 x00,0 x00,0 x00,0 x00,0 x00,0 x00,0 x00,0 x00,0 x00, /0 x00,0 x04,0 x08,0 x10,0 x10,0 x20,0 x20,0 x20,0 x20,0 x20,0 x20,0 x10,0 x10,0 x08,0 x04,0 x00, /(0 x00,0 x80,0 x40,0

8、 x20,0 x20,0 x10,0 x10,0 x10,0 x10,0 x10,0 x10,0 x20,0 x20,0 x40,0 x80,0 x00, /)0 x00,0 x00,0 x00,0 x00,0 x10,0 x54,0 x38,0 x10,0 x38,0 x54,0 x10,0 x00,0 x00,0 x00,0 x00,0 x00, /*0 x00,0 x00,0 x00,0 x10,0 x10,0 x10,0 x10,0 xFE,0 x10,0 x10,0 x10,0 x10,0 x00,0 x00,0 x00,0 x00, /+0 x00,0 x00,0 x00,0 x0

9、0,0 x00,0 x00,0 x00,0 x00,0 x00,0 x00,0 x00,0 x00,0 x10,0 x10,0 x20,0 x00, /,0 x00,0 x00,0 x00,0 x00,0 x00,0 x00,0 x00,0 xFE,0 x00,0 x00,0 x00,0 x00,0 x00,0 x00,0 x00,0 x00, /-0 x00,0 x00,0 x00,0 x00,0 x00,0 x00,0 x00,0 x00,0 x00,0 x00,0 x00,0 x00,0 x10,0 x10,0 x00,0 x00, /.0 x00,0 x00,0 x04,0 x04,0

10、 x08,0 x08,0 x10,0 x10,0 x20,0 x20,0 x40,0 x40,0 x80,0 x80,0 x00,0 x00, /0 x00,0 x00,0 x38,0 x44,0 x82,0 x82,0 x82,0 x82,0 x82,0 x82,0 x82,0 x82,0 x44,0 x38,0 x00,0 x00, /00 x00,0 x00,0 x10,0 x70,0 x10,0 x10,0 x10,0 x10,0 x10,0 x10,0 x10,0 x10,0 x10,0 x7C,0 x00,0 x00, /10 x00,0 x00,0 x38,0 x44,0 x82

11、,0 x82,0 x04,0 x08,0 x10,0 x20,0 x40,0 x82,0 x84,0 xFC,0 x00,0 x00, /2 . ;在在 2 2. .0 0版本固件庫中:版本固件庫中:font.h font.h 在目錄在目錄 QDtech_2.2QDtech_2.2天馬模塊測試程序天馬模塊測試程序_STM32user_STM32user中。中。STM32F10 x若要顯示漢字,可到網(wǎng)上下載fonthz.c文件,其包含漢字字符的字模,把其加入到所建立的工程中,就不需要再自定義漢字字模了。若需要自定義 字符的字模:用字符的字模:用 各類各類“取字模軟件取字模軟件”,獲取所需要顯示的

12、字符的字模。獲取所需要顯示的字符的字模。在在 3.4.5 3.4.5版本固件庫中:版本固件庫中:font.h font.h 在目錄在目錄STM32F10 x_StdPeriph_Lib_V3.5.0UtilitiesSTM32_EVALSTM32F10 x_StdPeriph_Lib_V3.5.0UtilitiesSTM32_EVALCommonCommon中。中。在給定的固件庫函數(shù)中,通常會包含font.h文件,其包含標準ASCII字符(數(shù)字、英文等)的字模,其不需要再自定義。在在 3.1 3.1版本固件庫中:版本固件庫中:font.h font.h 在目錄在目錄STM32F10 x_Std

13、Periph_Lib_V3.10UtilitiesSTM32_EVALSTM32F10 x_StdPeriph_Lib_V3.10UtilitiesSTM32_EVAL中。中。STM32F10 x2、加入頭文件、加入頭文件#include stm32f10 x_lib.h#include HelloRobot.h /使用RCC_Configuration( ); 設(shè)置系統(tǒng)時鐘SYSCLK以下程序,都是基于V2.0固件函數(shù)庫STM32F10 x#include Lcd_Driver.h/該頭文件的作用:對main()函數(shù)中使用的函數(shù),進行聲明。聲明,本文件要用到的,其它文件中的函數(shù)。(省略了ex

14、tern)實際可以直接在main函數(shù)之前,聲明這些函數(shù),以代替本頭文件。聲明聲明調(diào)用調(diào)用/以上這些函數(shù)在Lcd_Driver.c中定義STM32F10 x#include GUI.h /該頭文件的作用:對main()函數(shù)中使用的函數(shù),進行聲明。聲明,本文件要用到的,其它文件中的函數(shù)。(省略了extern)實際可以直接在main函數(shù)之前,聲明這些函數(shù),以代替本頭文件。聲明聲明調(diào)用調(diào)用/以上這些函數(shù)在GUI.c中定義STM32F10 x#include “delay.h /該頭文件的作用:對main()函數(shù)中使用的函數(shù),進行聲明。聲明,本文件要用到的,其它文件中的函數(shù)。(省略了extern)實際可

15、以直接在main函數(shù)之前,聲明這些函數(shù),以代替本頭文件。聲明聲明調(diào)用調(diào)用/以上這些函數(shù)在delay.c中定義STM32F10 x#include /若主程序中,用到了printf()函數(shù)STM32F10 x2、使能使能使用到的使用到的外設(shè)對應(yīng)的外設(shè)對應(yīng)的時鐘時鐘在初始化函數(shù) Lcd_Init ( )函數(shù)中,已經(jīng)使能了外設(shè)的時鐘,在這里,就不需要(像LCM1602一樣)補加 對外設(shè)時鐘的使能。STM32F10 x3、延時初始化、延時初始化:使用函數(shù)RCC_Configuration(); /設(shè)置SYSCLK=72MHz使用函數(shù)delay_init(72); /SystemTick定時器初始化,用

16、于延時STM32F10 x本處 延時,是用SystemTick定時器來實現(xiàn)的。而且是用直接操作寄存器方法實現(xiàn)延時delay()(i)使用固件庫函數(shù)實現(xiàn)delay()-缺陷:全速運行 屏幕上會出現(xiàn)一橫線(ii)用直接操作寄存器方法實現(xiàn)delay()-沒有缺陷STM32F10 x4、LCD初始化初始化:使用函數(shù)Lcd_Init( )設(shè)置與LCD相連的 STM32管腳初始化LCD模塊 (即設(shè)置LCD工作模式)初始化過程包括以下初始化過程包括以下2 2方面:方面:STM32F10 xvoid Lcd_Init(void)/SPIv_Init(); /用io口模擬的spi初始化SPI1_Init();/

17、實際的spi口初始化Lcd_Reset(); Lcd_WriteIndex(0 xCB); Lcd_WriteData(0 x39); Lcd_WriteData(0 x2C); Lcd_WriteData(0 x00); Lcd_WriteData(0 x34); Lcd_WriteData(0 x02); Lcd_WriteIndex(0 xCF); Lcd_WriteData(0 x00); 設(shè)置與LCD相連的 STM32管腳初始化LCD模塊(即設(shè)置LCD工作模式)STM32F10 x在在Lcd_Init(void)(void)函數(shù)中,函數(shù)中,初始化初始化LCDLCD模塊的這些寄存器設(shè)置

18、值:為何這樣設(shè)置,模塊的這些寄存器設(shè)置值:為何這樣設(shè)置,沒有一本沒有一本書,講得清楚,現(xiàn)在只能說,大致了解。書,講得清楚,現(xiàn)在只能說,大致了解。有些有些寄存器設(shè)置值,與寄存器設(shè)置值,與TFT-LCDTFT-LCD控制器指令和狀態(tài)字的說明不符控制器指令和狀態(tài)字的說明不符合合 或或 按其修改也沒有效果。按其修改也沒有效果。STM32F10 x完整的 void Lcd_Init(void)/SPIv_Init(); /用io口模擬的spi初始化SPI1_Init();/實際的spi口初始化Lcd_Reset(); Lcd_WriteIndex(0 xCB); Lcd_WriteData(0 x39)

19、; Lcd_WriteData(0 x2C); Lcd_WriteData(0 x00); Lcd_WriteData(0 x34); Lcd_WriteData(0 x02); Lcd_WriteIndex(0 xCF); Lcd_WriteData(0 x00); Lcd_WriteData(0XC1); Lcd_WriteData(0X30); Lcd_WriteIndex(0 xE8); Lcd_WriteData(0 x85); Lcd_WriteData(0 x00); Lcd_WriteData(0 x78); Lcd_WriteIndex(0 xEA); Lcd_WriteDa

20、ta(0 x00); Lcd_WriteData(0 x00); Lcd_WriteIndex(0 xED); Lcd_WriteData(0 x64); Lcd_WriteData(0 x03); Lcd_WriteData(0X12); Lcd_WriteData(0X81); Lcd_WriteIndex(0 xF7); Lcd_WriteData(0 x20); Lcd_WriteIndex(0 xC0); /Power control Lcd_WriteData(0 x23); /VRH5:0 Lcd_WriteIndex(0 xC1); /Power control Lcd_Wri

21、teData(0 x10); /SAP2:0;BT3:0 Lcd_WriteIndex(0 xC5); /VCM control Lcd_WriteData(0 x3e); /對比度調(diào)節(jié) Lcd_WriteData(0 x28); Lcd_WriteIndex(0 xC7); /VCM control2 Lcd_WriteData(0 x86); /- Lcd_WriteIndex(0 x36); / Memory Access Control #ifdef H_VIEW Lcd_WriteData(0 xE8); /C8 /48 68豎屏/28 E8 橫屏#elseLcd_WriteData

22、(0 x48); #endif Lcd_WriteIndex(0 x3A); Lcd_WriteData(0 x55); Lcd_WriteIndex(0 xB1); Lcd_WriteData(0 x00); Lcd_WriteData(0 x18); Lcd_WriteIndex(0 xB6); / Display Function Control Lcd_WriteData(0 x08); Lcd_WriteData(0 x82); Lcd_WriteData(0 x27); Lcd_WriteIndex(0 xF2); / 3Gamma Function Disable Lcd_Wri

23、teData(0 x00); Lcd_WriteIndex(0 x26); /Gamma curve selected Lcd_WriteData(0 x01); Lcd_WriteIndex(0 xE0); /Set Gamma Lcd_WriteData(0 x0F); Lcd_WriteData(0 x31); Lcd_WriteData(0 x2B); Lcd_WriteData(0 x0C); Lcd_WriteData(0 x0E); Lcd_WriteData(0 x08); Lcd_WriteData(0 x4E); Lcd_WriteData(0 xF1); Lcd_Writ

24、eData(0 x37); Lcd_WriteData(0 x07); Lcd_WriteData(0 x10); Lcd_WriteData(0 x03); Lcd_WriteData(0 x0E); Lcd_WriteData(0 x09); Lcd_WriteData(0 x00); Lcd_WriteIndex(0XE1); /Set Gamma Lcd_WriteData(0 x00); Lcd_WriteData(0 x0E); Lcd_WriteData(0 x14); Lcd_WriteData(0 x03); Lcd_WriteData(0 x11); Lcd_WriteDa

25、ta(0 x07); Lcd_WriteData(0 x31); Lcd_WriteData(0 xC1); Lcd_WriteData(0 x48); Lcd_WriteData(0 x08); Lcd_WriteData(0 x0F); Lcd_WriteData(0 x0C); Lcd_WriteData(0 x31); Lcd_WriteData(0 x36); Lcd_WriteData(0 x0F); Lcd_WriteIndex(0 x11); /Exit Sleep delay_ms(120); Lcd_WriteIndex(0 x29); /Display on Lcd_Wr

26、iteIndex(0 x2c);設(shè)置與LCD相連的 STM32管腳初始化LCD模塊(即設(shè)置LCD工作模式)STM32F10 xvoid SPI1_Init(void) SPI_InitTypeDef SPI_InitStructure; GPIO_InitTypeDef GPIO_InitStructure; /配置SPI1管腳RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO|RCC_APB2Periph_GPIOA, ENABLE);GPIO_InitStructure.GPIO_Pin = LCD_SCL | LCD_SDA;GPIO_InitStruc

27、ture.GPIO_Speed = GPIO_Speed_50MHz;GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;GPIO_Init(LCD_CTRL, &GPIO_InitStructure);GPIO_InitStructure.GPIO_Pin = LCD_SDO ; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_Init(LCD_CTRL, &GPIO_InitStr

28、ucture); GPIO_InitStructure.GPIO_Pin = LCD_LED |LCD_RS | LCD_CS| LCD_RST ;GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;GPIO_Init(LCD_CTRL, &GPIO_InitStructure);/SPI1配置選項RCC_APB2PeriphClockCmd(RCC_APB2Periph_SPI1 ,ENABLE);SPI_InitStructure.SPI_D

29、irection = SPI_Direction_2Lines_FullDuplex;SPI_InitStructure.SPI_Mode = SPI_Mode_Master;SPI_InitStructure.SPI_DataSize = SPI_DataSize_8b;SPI_InitStructure.SPI_CPOL = SPI_CPOL_High;SPI_InitStructure.SPI_CPHA = SPI_CPHA_2Edge;SPI_InitStructure.SPI_NSS = SPI_NSS_Soft;SPI_InitStructure.SPI_BaudRatePresc

30、aler =SPI_BaudRatePrescaler_2;SPI_InitStructure.SPI_FirstBit = SPI_FirstBit_MSB;SPI_InitStructure.SPI_CRCPolynomial = 7; SPI_Init(SPI1, &SPI_InitStructure);/使能SPI1SPI_Cmd(SPI1, ENABLE); 設(shè)置與LCD相連的 STM32管腳STM32F10 x5、LCD清屏清屏【方法】使用函數(shù) LCD_Clear(u16 Color);#define RED 0 xf800#define GREEN0 x07e0#define BLUE 0 x001f#define WHITE0 xffff#define BLACK0 x0000#define YELLOW 0 xFFE0#define GRAY0 0 xEF7D /灰色灰色0 3165 00110 001011 00101#define GRAY1 0 x8410 /灰色灰色1 00000 000000 00000#def

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論