鴻蒙南北向開發(fā)基礎(chǔ)及項(xiàng)目實(shí)戰(zhàn)教程 課件4.2 LCD顯示屏驅(qū)動(dòng)_第1頁(yè)
鴻蒙南北向開發(fā)基礎(chǔ)及項(xiàng)目實(shí)戰(zhàn)教程 課件4.2 LCD顯示屏驅(qū)動(dòng)_第2頁(yè)
鴻蒙南北向開發(fā)基礎(chǔ)及項(xiàng)目實(shí)戰(zhàn)教程 課件4.2 LCD顯示屏驅(qū)動(dòng)_第3頁(yè)
鴻蒙南北向開發(fā)基礎(chǔ)及項(xiàng)目實(shí)戰(zhàn)教程 課件4.2 LCD顯示屏驅(qū)動(dòng)_第4頁(yè)
鴻蒙南北向開發(fā)基礎(chǔ)及項(xiàng)目實(shí)戰(zhàn)教程 課件4.2 LCD顯示屏驅(qū)動(dòng)_第5頁(yè)
已閱讀5頁(yè),還剩19頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

4.2LCD顯示屏驅(qū)動(dòng)

本章主要講述LCD顯示屏驅(qū)動(dòng)方法。通過學(xué)習(xí)本節(jié)將能夠了解LCD顯示屏驅(qū)動(dòng)方法。通過本節(jié)學(xué)習(xí)可以熟悉:SPI的通信原理鴻蒙系統(tǒng)SPI操作函數(shù)LCD屏工作原理LCD顯示屏驅(qū)動(dòng)SPI的通信原理鴻蒙系統(tǒng)SPI操作函數(shù)LCD屏工作原理LCD顯示屏驅(qū)動(dòng)SPI的通信原理(1/3)SPI(SerialPeripheralInterface)同I2C一樣,既是一種通信協(xié)議,也是一種通信接口。與I2C接口相比,SPI接口以同步傳輸和更高的數(shù)據(jù)傳輸速率而著稱,其傳輸速度最高可達(dá)40MHz。同時(shí)SPI可全雙工傳輸,接口中有兩根數(shù)據(jù)線,一根用于數(shù)據(jù)輸入,一根用于數(shù)據(jù)輸出。MOSI:masteroutputslaveinput(主機(jī)輸出從機(jī)輸入功能的數(shù)據(jù)線)MISO:masterinputslaveoutput(主機(jī)輸入從機(jī)輸出功能的數(shù)據(jù)線)SPICLK:提供時(shí)鐘信號(hào)的時(shí)鐘線,每個(gè)周期信號(hào)收發(fā)一位數(shù)據(jù)SPICS:使能設(shè)備的片選線,通常低電平時(shí)表示所連接的SPI設(shè)備就處于工作狀態(tài),當(dāng)處于高電平狀態(tài)時(shí),則連接的SPI設(shè)備停止工作SPI的通信原理(2/3)SPI在通信過程中可選擇使用4種不同的時(shí)序,如圖所示:SPI是在SPICLK邊沿時(shí)(上升沿/下降沿)進(jìn)行采樣數(shù)據(jù)或者輸出數(shù)據(jù)的,其中CPOL是表示空閑時(shí)SPICLK引腳的電平狀態(tài),0表示空閑時(shí)SPICLK為低電平,1表示空閑時(shí)SPICLK為高電平。CPHA是表示在SPICLK的第幾個(gè)邊沿時(shí)進(jìn)行數(shù)據(jù)采樣,

0表示第0個(gè)邊沿時(shí)進(jìn)行采樣數(shù)據(jù),1表示在第1個(gè)邊沿時(shí)進(jìn)行采樣數(shù)據(jù)。SPI的通信原理(3/3)

與I2C設(shè)備不同,SPI設(shè)備并沒有設(shè)備地址,

多個(gè)設(shè)備連接時(shí)同一個(gè)SPI接口時(shí),需要使用不同的片選線(也就是使用不同的IO口)來區(qū)別要訪問的設(shè)備。SPI的通信原理鴻蒙系統(tǒng)SPI操作函數(shù)LCD屏工作原理LCD顯示屏驅(qū)動(dòng)鴻蒙系統(tǒng)SPI操作函數(shù)(1/4)鴻蒙系統(tǒng)在hi_spi.h頭文件中提供了SPI控制器操作函數(shù),關(guān)鍵的函數(shù)有:hi_u32hi_spi_init(hi_spi_idxspi_id,hi_spi_cfg_init_paraminit_param,consthi_spi_cfg_basic_info*param);//配置指定的SPI控制器//參數(shù)spi_id指定操作第幾個(gè)SPI控制器//參數(shù)init_param變量用于指定SPI控制器是作為主機(jī)還是從機(jī)。//

作主機(jī)時(shí)變量清零:hi_spi_cfg_init_paramspi_init_param={0};//參數(shù)param指定SPI配置信息結(jié)構(gòu)體變量的地址

hi_u32hi_spi_host_write(hi_spi_idxspi_id,hi_pvoidwrite_data,hi_u32byte_len);//SPI控制器發(fā)出數(shù)據(jù)//參數(shù)spi_id指定操作的SPI控制器//參數(shù)write_data指定存放要發(fā)出的數(shù)據(jù)緩沖區(qū)地址//參數(shù)byte_len指定要發(fā)出的數(shù)據(jù)長(zhǎng)度

鴻蒙系統(tǒng)SPI操作函數(shù)(2/4)hi_u32hi_spi_host_read(hi_spi_idxspi_id,hi_pvoidread_data,hi_u32byte_len);//SPI控制器接收數(shù)據(jù)//參數(shù)spi_id指定操作的SPI控制器//參數(shù)read_data指定存放接收數(shù)據(jù)的緩沖區(qū)地址//參數(shù)byte_len指定要接收的數(shù)據(jù)長(zhǎng)度hi_u32hi_spi_host_writeread(hi_spi_idxspi_id,hi_pvoidwrite_data,hi_pvoidread_data,hi_u32byte_len);//SPI控制器同時(shí)收發(fā)數(shù)據(jù)

//參數(shù)spi_id指定操作的SPI控制器//參數(shù)write_data指定存放要發(fā)出的數(shù)據(jù)緩沖區(qū)地址//參數(shù)read_data指定存放接收數(shù)據(jù)的緩沖區(qū)地址//參數(shù)byte_len指定收發(fā)的數(shù)據(jù)長(zhǎng)度鴻蒙系統(tǒng)SPI操作函數(shù)(3/4)

在當(dāng)前工程源碼中已提供Hi3861SPI控制器的驅(qū)動(dòng)源代碼,但工程中并沒有將控制器驅(qū)動(dòng)源文件加入編譯配置,導(dǎo)致無法調(diào)用鴻蒙系統(tǒng)的SPI操作函數(shù)。為此在IoTTouchSwitch目錄下創(chuàng)建IoTSpi文件夾,將工程源碼目錄src\device\hisilicon\hispark_pegasus\sdk_liteos\platform\drivers\spi下的hi_spi.c、spi.c、spi.h源文件復(fù)制到IoTSpi目錄里,然后創(chuàng)建BUILD.gn文件,并輸入編譯配置語(yǔ)句如下:static_library("IoTSpi"){

sources=[

"hi_spi.c",

"spi.c",

]

include_dirs=[

"./",

"http://utils/native/lite/include",

"http://kernel/liteos_m/kal/cmsis",

"http://base/iot_hardware/peripheral/interfaces/kits",

"http://device/hisilicon/hispark_pegasus/sdk_liteos/platform/os/Huawei_LiteOS/components/lib/libc/musl/include",

]}鴻蒙系統(tǒng)SPI操作函數(shù)(4/4)

接著修改IoTTouchSwitch目錄下的BUILD.gn文件,加入IoTSpi模塊的編譯。增加語(yǔ)句如下:lite_component("app"){features=[..."IoTSpi:IoTSpi",]...}SPI的通信原理鴻蒙系統(tǒng)SPI操作函數(shù)LCD屏工作原理LCD顯示屏驅(qū)動(dòng)LCD屏工作原理(1/2)LCD顯示屏(LiquidCrystalDisplay,液晶顯示屏)的工作原理主要基于液晶分子在電場(chǎng)作用下的排列變化,這種變化影響通過液晶層的光線折射狀態(tài),從而控制光線的傳輸或阻斷,實(shí)現(xiàn)圖像的顯示。LCD屏內(nèi)部主要分層結(jié)構(gòu)如圖所示。首先,液晶本身不能發(fā)光,所以LCD屏需要一個(gè)背光層提供光源。在液晶層沒有電壓施加時(shí),液晶分子排列比較混亂,光線無法通過,此時(shí)屏幕像素點(diǎn)呈現(xiàn)黑色;

當(dāng)不同的電壓施加到液晶分子上時(shí),液晶分子會(huì)沿電場(chǎng)方向排列組合,允許光線經(jīng)過偏光片調(diào)整光線方向,通過紅、綠、藍(lán)三基色濾光片后分解成三種顏色的光線,屏幕就會(huì)顯示相應(yīng)顏色的像素點(diǎn)。LCD屏工作原理(2/2)

如何控制LCD屏每個(gè)像素點(diǎn)液晶分子的電場(chǎng)與刷出每個(gè)像素點(diǎn)顏色是一件要求極高的精細(xì)工作,所以每個(gè)LCD屏基本會(huì)集成一個(gè)驅(qū)動(dòng)IC。驅(qū)動(dòng)IC初始化后,我們只需向它提供每個(gè)像素點(diǎn)的數(shù)據(jù),它就會(huì)自動(dòng)控制相應(yīng)像素點(diǎn)液晶分子的電場(chǎng),在屏幕像素點(diǎn)相應(yīng)位置顯示相應(yīng)的顏色。SPI的通信原理鴻蒙系統(tǒng)SPI操作函數(shù)LCD屏工作原理LCD顯示屏驅(qū)動(dòng)LCD顯示屏驅(qū)動(dòng)(1/6)通過杜邦線將轉(zhuǎn)接板LCD屏接口與開發(fā)板的引腳連接如下:

轉(zhuǎn)接板

開發(fā)板

BLC

-------

IO09

CS

-------

IO12

DC

-------

IO11

RESET

-------

IO05

MOSI

-------

IO08

SCK

-------

IO10

VCC

-------

3.3V

GND

-------

GND其中BLC引腳用于控制LCD屏的背光亮度,引腳低電平時(shí)最亮,處于高電平時(shí)熄屏。同時(shí)轉(zhuǎn)接板已集成背光控制電路,可通過PWM調(diào)整屏的背光亮度。由于驅(qū)動(dòng)過程主要是向LCD屏單向傳輸配置參數(shù)和像素?cái)?shù)據(jù),因此僅使用了MOSI數(shù)據(jù)引腳,而未使用MISO引腳。DC引腳的作用是區(qū)分MOSI傳輸?shù)臄?shù)據(jù)類型:低電平時(shí),MOSI傳輸?shù)氖荓CD驅(qū)動(dòng)IC的寄存器地址;高電平時(shí),則傳輸寄存器的配置值。LCD顯示屏驅(qū)動(dòng)(2/6)

采用的觸摸屏模組的LCD屏驅(qū)動(dòng)IC型號(hào)為ST7789,它通過SPI接口接收配置信息與像素點(diǎn)數(shù)據(jù),所以ST7789驅(qū)動(dòng)IC本質(zhì)上就是一個(gè)SPI設(shè)備。驅(qū)動(dòng)主體流程如圖所示:ST7789芯片內(nèi)部存在大量的寄存器,用于配置屏幕分辨率、顯示方向等設(shè)置,或接收傳輸?shù)南袼攸c(diǎn)數(shù)據(jù)。ST7789的SPI通信時(shí)序如圖所示:LCD顯示屏驅(qū)動(dòng)(3/6)

在IoTTouchSwitch目錄下創(chuàng)建IoTLcd子目錄,

并在子目錄里創(chuàng)建IoTLcd.h頭文件,聲明LCD顯示屏的功能函數(shù)、IO口及自定義的顏色等。IoTLcd.h頭文件關(guān)鍵代碼:

//LCD顯示屏SPI的IO的宏定義//LCD顯示屏使用IO的宏定義

//自定義的RGB565顏色的宏定義voidIoTLcdDrawBackground(hi_u16color);//整個(gè)屏幕畫出指定顏色//LCD顯示屏背光設(shè)置,level值越大亮度就越高,值范圍:0~99voidIoTLcdSetBackLight(unsignedcharlevel);

//在LCD屏的xy坐標(biāo)開始畫出寬bmpW高bmpH的bmp圖像的像素?cái)?shù)據(jù),data為存放像素點(diǎn)陣數(shù)據(jù)的緩沖區(qū)地址//fontColor指定顯示的像素點(diǎn)顏色,backColor為不顯示的像素點(diǎn)顏色voidIoTLcdDrawBmp(intx,inty,intbmpW,intbmpH,hi_u8*data,

hi_u16fontColor,hi_u16backColor)LCD顯示屏驅(qū)動(dòng)(4/6)

然后創(chuàng)建IoTLcd.c源文件,并在文件中根據(jù)廠家提供的參考程序源碼實(shí)現(xiàn)LCD顯示屏的基礎(chǔ)驅(qū)動(dòng)功能,源文件關(guān)鍵函數(shù):staticvoidlcdIoInit();//LCD的IO口初始化staticvoidlcdSpiInit();//SPI控制器初始化staticvoidlcdWriteReg(hi_u8dat);//SPI控制器發(fā)出寄存器地址staticvoidlcdWriteData8(hi_u8dat);//SPI控制器發(fā)出8位數(shù)據(jù)staticvoidlcdWriteData16(hi_u16dat);//SPI控制器發(fā)出16位數(shù)據(jù)staticvoidlcdInit();//LCDST7789驅(qū)動(dòng)IC初始化voidIoTLcdSetBackLight(hi_u8level);//背光設(shè)置,level值越大亮度就越高staticvoidlcdSetPosition(hi_u16x,hi_u16y,hi_u16w,hi_u16h);//設(shè)置顯示屏像素點(diǎn)數(shù)據(jù)的更新區(qū)域voidIoTLcdDrawBackground(hi_u16color);//整個(gè)屏幕畫出指定顏色voidIoTLcdInit();//實(shí)現(xiàn)IO、SPI控制器、驅(qū)動(dòng)IC的初始化、背光設(shè)置、與讓屏輸出背景色APP_FEATURE_INIT(IoTLcdInit);LCD顯示屏驅(qū)動(dòng)(5/6)在IoTLcd目錄下創(chuàng)建BUILD.gn文件,并輸入語(yǔ)句如下:static

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論