基於GUILite來做一個簡易萬年曆。。。

上週看到楊工分享了篇文章《MCU SPI屏也能跑這麼炫酷的特效?來,移植起來秀一秀》介紹了GuiLite開源項目的移植使用,看起來很酷。

咱也來實操一下,做個基於GUI的簡易的萬年曆熟悉熟悉一下這個GUI庫。

關於這個GUI庫的介紹可以看楊工的那篇文章,也可以到其倉庫查看:

https://gitee.com/idea4good/GuiLite

這裏也貼幾個demo圖片給大家一起欣賞一下:

移植比較簡單,這個庫需要的底層LCD接口不多:

主要需要適配的LCD接口就是一個畫像素點的函數:

除此之外還需要準備一個毫秒級延時函數給這個庫使用:

適配好之後我們就可以方面地使用其給我們提供的一些接口了。我們先來實現一個簡易的萬年曆來熟悉一下這個GUI庫。

在這裏有兩種實現方法:一種是使用RTC,另一種是使用這個GUI庫給我們提供的一些時間相關的操作。

第二種方法具體我還沒去了解,我們就直接使用RTC來做實驗。相關的代碼工程可以通過文末的方式獲取。

下面簡單提一下一些需要注意的地方:

1、字體資源

我們使用純LCD驅動接口來顯示一些字符串時,需要提前準備好相關的字庫。

同樣的,使用GuiLite也要提前準備類似的東西,可以通過GuiLiteToolkit.exe這個工具來生成,這個工具也是GuiLite的作者開發的,也是個開源軟件。

使用方式也很簡單,只需簡單幾步即可生成GuiLite需要的相關代碼。輸入想要顯示的字符、設置字體、字體大小,生成代碼:

2、顯示漢字

我們使用純LCD驅動來顯示字符串時,通常都會調用類似這樣的接口:

void LCD_ShowString(uint16_t x,uint16_t y,uint16_t width,uint16_t height,uint8_t size,char *p);
void PutChinese_strings(uint16_t Xpos,uint16_t Ypos,uint8_t *str,uint8_t mode);

在準備好字庫的情況下,想顯示什麼字符串就往這些接口裏扔字符串就可以了。

同樣的,GuiLite也給我們提供了一個類似的接口:

void draw_string(c_surface* surface, int z_order, const char *s, int x, int y, const FONT_INFO* font, unsigned int font_color, unsigned int bg_color, unsigned int align_type = ALIGN_LEFT)

中英文字符串的顯示都是操作這個接口。需要注意的是,這裏顯示中文字符串的方式有點不一樣。比如:

這個類的成員函數裏面最終需要用到的是utf-8編碼的數據。英文字符(ASCII碼字符)是兼容utf-8編碼的,所以轉與不轉都一樣。

但是中文就不行,必須得轉一下。我們可以借用一些在線網站轉一下,這樣的網站有很多,這裏分享一個界面很簡潔的:

https://www.qqxiuzi.cn/bianma/Unicode-UTF.php

這裏的\xxx又是什麼意思呢?

其實這也是我們C語言的知識點之一,我們都知道\n、\r這些都是轉義字符,其實\x後跟的是16進制數據也代表轉義字符。同樣的,\後面跟着八進制數據也代表轉義字符。

只不過這個知識點我們平時用得可能不多,比較容易忘記。看一個表或許我們就可以記起來了:

所以,其實在我們C語言中有好幾種打印輸出hello world字符串的方法:

只是我們平時多用的是第一種方法而已。

在utf-8編碼下,大多數中文字符用3個字節來表示。所以:

"\xe5\xb5\x8c\xe5\x85\xa5\xe5\xbc\x8f\xe5\xa4\xa7\xe6\x9d\x82\xe7\x83\xa9"

表示的就是"嵌入式大雜燴"這一字符串。

3、其它說明

這個庫GUI庫需要用到標準庫的一些東西,所以需要把keil裏面的USE MicroLIB選擇去掉,以便使用標準庫。

如果需要使用打印調試功能的話,平時的使用MicroLIB的方法重定向printf函數就行不通了。可以查看上篇筆記介紹的另一種方法:《串口打印知多少?》

4、演示

哈哈,一抖一抖的,一秒頓一下。湊合看~

5、代碼工程獲取

這個實驗很簡單,移植也比較簡單,大家可以動手玩一下。這個開源庫提供了很多非常豐富的demo,下載鏈接在這:

https://gitee.com/idea4good/GuiLite

1.美商務部又將33家中國公司/機構列入“實體清單”,包括360、雲從科技

2.嵌入式軟件測試的10條祕訣

3.一個單片機ADC的挖坑填坑之旅

4.熱了好多年,其實物聯網剛剛邁過谷底~

5.如何讓STM32優雅地“說”hello world?

6.常見類型ADC選型必知!

免責聲明:本文系網絡轉載,版權歸原作者所有。如涉及作品版權問題,請與我們聯繫,我們將根據您提供的版權證明材料確認版權並支付稿酬或者刪除內容。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章