版權(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2026年中能建深地技術(shù)(湖北)有限公司招聘?jìng)淇碱}庫(kù)完整答案詳解
- 2026年中山市民眾錦標(biāo)學(xué)校教師招聘?jìng)淇碱}庫(kù)有答案詳解
- 2026年廣州市天河區(qū)智谷第二幼兒園公開招聘編外聘用制專任教師備考題庫(kù)完整答案詳解
- 2026年泉州幼兒師范高等??茖W(xué)校單招職業(yè)傾向性考試題庫(kù)新版
- 2026年安徽稻香樓汽車維修有限責(zé)任公司前臺(tái)招聘?jìng)淇碱}庫(kù)及1套參考答案詳解
- 2026年湖北生態(tài)工程職業(yè)技術(shù)學(xué)院?jiǎn)握新殬I(yè)技能測(cè)試模擬測(cè)試卷及答案1套
- 2026年山東鋼都物業(yè)服務(wù)有限公司招聘?jìng)淇碱}庫(kù)及答案詳解一套
- 2026年國(guó)投期貨有限公司招聘?jìng)淇碱}庫(kù)完整參考答案詳解
- 2026年泉州職業(yè)技術(shù)大學(xué)單招職業(yè)技能考試模擬測(cè)試卷新版
- 2026年四川長(zhǎng)虹物業(yè)服務(wù)有限責(zé)任公司綿陽(yáng)分公司關(guān)于招聘工程主管崗位的備考題庫(kù)及完整答案詳解1套
- 制氫裝置操作技能訓(xùn)練題單選題100道及答案
- 捏合機(jī)安全操作規(guī)程(3篇)
- 西方經(jīng)濟(jì)學(xué)題庫(kù)1
- 2024-2025學(xué)年四川省成都市蓉城名校聯(lián)盟高一上學(xué)期期中語(yǔ)文試題及答案
- 修復(fù)胃黏膜的十大中藥
- 小學(xué)二年級(jí)上學(xué)期數(shù)學(xué)無紙化試題(共3套)
- 外研版小學(xué)英語(yǔ)(三起點(diǎn))六年級(jí)上冊(cè)期末測(cè)試題及答案(共3套)
- 林場(chǎng)副場(chǎng)長(zhǎng)述職報(bào)告
- 24秋國(guó)家開放大學(xué)《計(jì)算機(jī)系統(tǒng)與維護(hù)》實(shí)驗(yàn)1-13參考答案
- 紙樣師傅工作總結(jié)
- 貴州玄德生物科技股份有限公司年產(chǎn)5000噸生態(tài)特色食品(4500L超臨界CO2流體萃?。┚罴庸どa(chǎn)線建設(shè)項(xiàng)目環(huán)境影響報(bào)告
評(píng)論
0/150
提交評(píng)論