www.久久久久|狼友网站av天堂|精品国产无码a片|一级av色欲av|91在线播放视频|亚洲无码主播在线|国产精品草久在线|明星AV网站在线|污污内射久久一区|婷婷综合视频网站

當(dāng)前位置:首頁 > 嵌入式 > 嵌入式云IOT技術(shù)圈
[導(dǎo)讀]一、想法萌生小熊派開發(fā)板的LCD小屏幕使用是ST7789驅(qū)動(dòng)IC,之前一直有在該塊屏幕上實(shí)現(xiàn)滾動(dòng)顯示的想法,最初構(gòu)想在MCU側(cè)創(chuàng)建一個(gè)大的隊(duì)列,將整個(gè)屏幕顯示內(nèi)容交由隊(duì)列管理,然后不停的去整屏刷新以實(shí)現(xiàn)屏幕滾動(dòng)。理論上這樣的實(shí)現(xiàn)比較耗資源,耗費(fèi)CPU資源去操作SPI外設(shè),耗費(fèi)內(nèi)存...

一、想法萌生

小熊派開發(fā)板的 LCD 小屏幕使用是ST7789驅(qū)動(dòng)IC,之前一直有在該塊屏幕上實(shí)現(xiàn)滾動(dòng)顯示的想法,最初構(gòu)想在MCU側(cè)創(chuàng)建一個(gè)大的隊(duì)列,將整個(gè)屏幕顯示內(nèi)容交由隊(duì)列管理,然后不停的去整屏刷新以實(shí)現(xiàn)屏幕滾動(dòng)。

理論上這樣的實(shí)現(xiàn)比較耗資源,耗費(fèi)CPU資源去操作SPI外設(shè),耗費(fèi)內(nèi)存資源去存儲(chǔ)顯示數(shù)據(jù),所以一直沒有去做這件事。

今天在查看ST7789數(shù)據(jù)手冊(cè)寫論文時(shí),偶然發(fā)現(xiàn)ST7789手冊(cè)中:咦?Scroll?滾動(dòng)?發(fā)現(xiàn)新大陸!

根據(jù)手冊(cè)中的8.14章節(jié)描述,旋轉(zhuǎn)滾動(dòng)僅僅是垂直滾動(dòng)的一種模式,由垂直滾動(dòng)區(qū)域定義指令(0x33H)和垂直滾動(dòng)起始地址指令(0x77)決定。

原來我一直想做的功能,ST7789竟然硬件支持,研究研究如何實(shí)現(xiàn),開干!

二、實(shí)現(xiàn)過程

1. 準(zhǔn)備工作

需要了解SPI驅(qū)動(dòng) ST7789的基本原理,可以參考我的這篇教程:

STM32Cube-17 | 使用硬件SPI驅(qū)動(dòng)TFT-LCD(ST7789)

2. 設(shè)置滾動(dòng)區(qū)域

小熊派板載LCD屏幕的大小是240x240,水平和垂直都有240個(gè)像素點(diǎn),但是ST7789驅(qū)動(dòng)IC的顯存大小為320x240,垂直有320行像素點(diǎn),水平有240行像素點(diǎn),平常我們只是用到了顯存的前面一部分。

滾動(dòng)顯示首先需要設(shè)置滾動(dòng)區(qū)域,顯存垂直的320行像素點(diǎn)被劃分為三個(gè)部分:TFA為頂部固定顯示區(qū)域,這部分指定后會(huì)固定顯示,不會(huì)滾動(dòng)顯示;VSA為滾動(dòng)區(qū)域,這部分指定后會(huì)滾動(dòng)顯示;BFA為底部固定顯示區(qū)域,這部分指定后會(huì)固定顯示,不會(huì)滾動(dòng)顯示。

因?yàn)檎麄€(gè)顯存垂直有320行像素點(diǎn),顯然一個(gè)字節(jié)8位是裝不下的,所以「TFA、VSA、BFA三個(gè)區(qū)域的值設(shè)置都是16位,并且三個(gè)值加起來要等于320,否則滾動(dòng)區(qū)域定義失敗」

這里我設(shè)置整屏都滾動(dòng),所以TFA和BFA的值都設(shè)置為0,VSA的值設(shè)為320。

設(shè)置滾動(dòng)區(qū)域的命令為0x33,設(shè)置格式如下圖:首先發(fā)出的是0x33命令,接著發(fā)出的分別是TFA高8位、TFA低8位、VSA高8位、VSA低8位、BFA高8位、BFA低8位,根據(jù)這個(gè)格式,在LCD初始化代碼的最后添加設(shè)置滾動(dòng)顯示區(qū)域的代碼:

/**
?*?@brief?Vertical?Scrolling?Definition.
?*?@param???tfa????top?fixed?area
?*?@param???vsa????scroll?area
?*?@param???bta????bottom?fixed?area
?*?@return??errcode
?*?@retval??0??????success
?*?@retval??-1?????fail?
?*/

int?LCD_Set_Scroll_Area(uint16_t?tfa,?uint16_t?vsa,?uint16_t?bta)
{
????uint8_t?data;
????
????if?(tfa? ?vsa? ?bta?!=?320)?{
????????return?-1;
????}
????
????LCD_Write_Cmd(0x33);
????
????data?=?tfa?>>?8;
????LCD_Write_Data(data);
????data?=?tfa;
????LCD_Write_Data(data);
????data?=?vsa?>>?8;
????LCD_Write_Data(data);
????data?=?vsa;
????LCD_Write_Data(data);
????data?=?bta?>>?8;
????LCD_Write_Data(data);
????data?=?bta;
????LCD_Write_Data(data);
????
????return?0;
}
然后在LCD初始化函數(shù)的最后設(shè)置滾動(dòng)區(qū)域:

/*?Defign?Scroll?Area?*/
LCD_Set_Scroll_Area(0,?240,?80);

3. 設(shè)置滾動(dòng)顯示起始地址

設(shè)置滾動(dòng)顯示起始地址的作用為:設(shè)置LCD屏幕從顯存的哪行開始顯示,示例如下圖,圖中TFA=BFA=0、VSA=320,「如果將滾動(dòng)顯示起始地址設(shè)置為3,則LCD屏幕顯示內(nèi)容將會(huì)從第3行顯存開始」

設(shè)置滾動(dòng)顯示起始地址的指令為0x37,設(shè)置格式如下圖:首先發(fā)出的是0x37命令,接著發(fā)出的分別是VSP高8位、VSP低8位,根據(jù)這個(gè)格式,在LCD初始化代碼的最后添加設(shè)置滾動(dòng)顯示起始地址的代碼:

/**
?*?@brief?Set?Vertical?scroll?start?address?of?RAM.
?*?@param???vsp????scroll?start?address?of?RAM
?*?@return??none
?*/

void?LCD_Set_Scroll_Start_Address(uint16_t?vsp)
{
????
????LCD_Write_Cmd(0x37);
????
????LCD_Write_Data(vsp?/?256);
????LCD_Write_Data(vsp?%?256);
}
使用該函數(shù)設(shè)置一次后達(dá)到了靜態(tài)滾動(dòng)顯示的效果,但并沒有動(dòng)起來,「所以我們可以不停的去調(diào)用,以達(dá)到我們想要的效果」。

三、使用示例

1. 添加顯示內(nèi)容

在main函數(shù)初始化LCD之后,添加LCD顯示內(nèi)容:

LCD_ShowCharStr(10,?0,?"TencentOS?tiny?1",?BLACK,?WHITE,?24);
LCD_ShowCharStr(10,?24,?"TencentOS?tiny?2",?BLACK,?YELLOW,?24);
LCD_ShowCharStr(10,?48,?"TencentOS?tiny?3",?BLACK,?BRRED,?24);
LCD_ShowCharStr(10,?72,?"TencentOS?tiny?4",?BLACK,?PINK,?24);
LCD_ShowCharStr(10,?96,?"TencentOS?tiny?5",?BLACK,?RED,?24);
LCD_ShowCharStr(10,?120,?"TencentOS?tiny?6",?BLACK,?BROWN,?24);
LCD_ShowCharStr(10,?144,?"TencentOS?tiny?7",?BLACK,?GRAY,?24);
LCD_ShowCharStr(10,?168,?"TencentOS?tiny?8",?BLACK,?GBLUE,?24);
LCD_ShowCharStr(10,?192,?"TencentOS?tiny?9",?BLACK,?GREEN,?24);
LCD_ShowCharStr(10,?216,?"TencentOS?tiny?11",?BLACK,?BLUE,?24);

2. 滾動(dòng)顯示

在while(1)中循環(huán)更改滾動(dòng)顯示起始位置:

while(1)?{
????LCD_Set_Scroll_Start_Address(i);
????if?( i?>?240){
????????i?=?0;
????}
????HAL_Delay(5);
}

3. 滾動(dòng)效果

視頻效果可以我的視頻號(hào)【玩板子的小碼農(nóng)】查看呀~

往期精彩

網(wǎng)紅物聯(lián)網(wǎng)開發(fā)板小熊派使用評(píng)測

DIY云端情書打印機(jī)(基于騰訊定制開發(fā)板)

4G Cat.1開發(fā)板還能這么便宜?趕緊搞一塊學(xué)習(xí)學(xué)習(xí)!

網(wǎng)紅騰訊物聯(lián)網(wǎng)開發(fā)板終極開箱評(píng)測,讓我們一睹為快!

點(diǎn)亮AliOS Things IOT開發(fā)板上的的OLED全彩屏

覺得本次分享的文章對(duì)您有幫助,隨手點(diǎn)[在看]并轉(zhuǎn)發(fā)分享,也是對(duì)我的支持。

本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點(diǎn),本站亦不保證或承諾內(nèi)容真實(shí)性等。需要轉(zhuǎn)載請(qǐng)聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請(qǐng)及時(shí)聯(lián)系本站刪除。
換一批
延伸閱讀

LED驅(qū)動(dòng)電源的輸入包括高壓工頻交流(即市電)、低壓直流、高壓直流、低壓高頻交流(如電子變壓器的輸出)等。

關(guān)鍵字: 驅(qū)動(dòng)電源

在工業(yè)自動(dòng)化蓬勃發(fā)展的當(dāng)下,工業(yè)電機(jī)作為核心動(dòng)力設(shè)備,其驅(qū)動(dòng)電源的性能直接關(guān)系到整個(gè)系統(tǒng)的穩(wěn)定性和可靠性。其中,反電動(dòng)勢(shì)抑制與過流保護(hù)是驅(qū)動(dòng)電源設(shè)計(jì)中至關(guān)重要的兩個(gè)環(huán)節(jié),集成化方案的設(shè)計(jì)成為提升電機(jī)驅(qū)動(dòng)性能的關(guān)鍵。

關(guān)鍵字: 工業(yè)電機(jī) 驅(qū)動(dòng)電源

LED 驅(qū)動(dòng)電源作為 LED 照明系統(tǒng)的 “心臟”,其穩(wěn)定性直接決定了整個(gè)照明設(shè)備的使用壽命。然而,在實(shí)際應(yīng)用中,LED 驅(qū)動(dòng)電源易損壞的問題卻十分常見,不僅增加了維護(hù)成本,還影響了用戶體驗(yàn)。要解決這一問題,需從設(shè)計(jì)、生...

關(guān)鍵字: 驅(qū)動(dòng)電源 照明系統(tǒng) 散熱

根據(jù)LED驅(qū)動(dòng)電源的公式,電感內(nèi)電流波動(dòng)大小和電感值成反比,輸出紋波和輸出電容值成反比。所以加大電感值和輸出電容值可以減小紋波。

關(guān)鍵字: LED 設(shè)計(jì) 驅(qū)動(dòng)電源

電動(dòng)汽車(EV)作為新能源汽車的重要代表,正逐漸成為全球汽車產(chǎn)業(yè)的重要發(fā)展方向。電動(dòng)汽車的核心技術(shù)之一是電機(jī)驅(qū)動(dòng)控制系統(tǒng),而絕緣柵雙極型晶體管(IGBT)作為電機(jī)驅(qū)動(dòng)系統(tǒng)中的關(guān)鍵元件,其性能直接影響到電動(dòng)汽車的動(dòng)力性能和...

關(guān)鍵字: 電動(dòng)汽車 新能源 驅(qū)動(dòng)電源

在現(xiàn)代城市建設(shè)中,街道及停車場照明作為基礎(chǔ)設(shè)施的重要組成部分,其質(zhì)量和效率直接關(guān)系到城市的公共安全、居民生活質(zhì)量和能源利用效率。隨著科技的進(jìn)步,高亮度白光發(fā)光二極管(LED)因其獨(dú)特的優(yōu)勢(shì)逐漸取代傳統(tǒng)光源,成為大功率區(qū)域...

關(guān)鍵字: 發(fā)光二極管 驅(qū)動(dòng)電源 LED

LED通用照明設(shè)計(jì)工程師會(huì)遇到許多挑戰(zhàn),如功率密度、功率因數(shù)校正(PFC)、空間受限和可靠性等。

關(guān)鍵字: LED 驅(qū)動(dòng)電源 功率因數(shù)校正

在LED照明技術(shù)日益普及的今天,LED驅(qū)動(dòng)電源的電磁干擾(EMI)問題成為了一個(gè)不可忽視的挑戰(zhàn)。電磁干擾不僅會(huì)影響LED燈具的正常工作,還可能對(duì)周圍電子設(shè)備造成不利影響,甚至引發(fā)系統(tǒng)故障。因此,采取有效的硬件措施來解決L...

關(guān)鍵字: LED照明技術(shù) 電磁干擾 驅(qū)動(dòng)電源

開關(guān)電源具有效率高的特性,而且開關(guān)電源的變壓器體積比串聯(lián)穩(wěn)壓型電源的要小得多,電源電路比較整潔,整機(jī)重量也有所下降,所以,現(xiàn)在的LED驅(qū)動(dòng)電源

關(guān)鍵字: LED 驅(qū)動(dòng)電源 開關(guān)電源

LED驅(qū)動(dòng)電源是把電源供應(yīng)轉(zhuǎn)換為特定的電壓電流以驅(qū)動(dòng)LED發(fā)光的電壓轉(zhuǎn)換器,通常情況下:LED驅(qū)動(dòng)電源的輸入包括高壓工頻交流(即市電)、低壓直流、高壓直流、低壓高頻交流(如電子變壓器的輸出)等。

關(guān)鍵字: LED 隧道燈 驅(qū)動(dòng)電源
關(guān)閉