工程中搭建環境
- 軟件: Keil 5.27
- 開發板: 魔女開發板 STM32F103C8
- 屏幕: 1.8寸TFT, 驅動ST7735
有圖有真相,先看運行效果圖, 代碼下載在文章結尾處.
1.8寸屏參數簡述
- 像素: 128 x 160, 如果顯示時右邊和下面有花屏, 在程序中加大一點這個數值基本能解決
- 驅動: ST7735, 小面積的彩屏很多都是這個驅動芯片, 0.96/1.44/1.8, 很通用
- 最大的參數:便宜實用, 才15元, 很適合實驗時數據查看
和板子stm32f103c8的連接
- GND 電源地
- VCC 3.3V, 儘量不要接5V, 小心燒屏
- SCL/SCK PB4 SPI的時鐘引腳, 代碼是模擬SPI,所以不一定要接SPI的引腳
- SDA/DIN PB3 SPI的MOSI引腳 ,代碼是模擬SPI,所以不一定要接SPI的引腳
- RES/RST PB0 復位引腳,最好和單片機的復位引腳相接
- DC /RS PB1 命令、數據選擇引腳
- CS /CE PA4 SPI的CS片選引腳
- BL /LED PB10 控制背光LED, 高電平亮屏
ST7735驅動編程要點、技巧
- 三個要點:寄存器8位,命令+數據、字節發送處理
- 寄存器是8位的:命令8位的,而數據發送時一個跟一個;顏色值16位,要分兩字節發送
- 命令+數據:不管寫字符點還是刷屏,步驟都只是:先發命令,後發數據
- 發命令的操作:拉低 DC引腳,發送1個8位的命令值
- 發數據的操作:拉高 DC引腳,挨字節發出要發送數據
- 屏顯方向:在發命令0x36後,緊跟的一字節數據爲屏顯方向,可選參數:C0/00/A0/60/C8/08/A8/68
- 花屏:如果右邊或下邊有花屏,表示像素沒填充夠,加大一點刷屏值,如130*163
- 英文、中文、圖片: 其實都是畫點和緩存的處理,參考代碼
- SPI:目前網上能搜到的代碼基本都是模擬SPI
代碼編寫
代碼在文章尾部下載,歡迎下載參考.工程中已有詳細註釋,如果還有不明白的可以留言.
中文字庫
想在屏幕上輸出文字,目前通用的做法有三種:
- 英文字符,一般是在工程中引入ASCII字體數據文件,如 font.h.
- 漢字文件,網上諸多示例也是使用字體文件,屏幕商家代碼亦是如此,文件中包含想要輸出的幾個固定漢字字體數據,這樣做的好處:開發快、省硬件成本,缺點:只適合少量、比較固定的文字輸出
- 漢字字庫,如果輸出的文字內容比較多,或經常變動,就需要何用硬件存儲字庫,如W25Q128、TF卡
在這個完整示例中,我用開發板中存儲在W25Q128中的GBK字庫,有12\16\24\32四種大小的漢字, 比自己之前移植的GB2312只有24號大小要好多了。經驗(爬過的坑)讓我深刻體會到,倘若長期和單片機交手,一定要有一個熟悉的硬件字庫、和熟悉的漢字顯示函數!回想以前嘗試移植字庫時, 頭髮都不用剪的,而現在網上資源多了去。
如果手裏還沒有合適的漢字字庫,得想辦法複製移植一份,如原子哥的,野火的,就是搭幾根杜邦線+SPI操作W25Qxx,多複製幾個,一勞永逸。懶動手的兄弟,就只能使用字體文件輸出英文的ASCII嘍。
文件移植
需要的3個文件都在TFT18文件夾裏,整個文件夾複製吧: TFT18.c、TFT18.h、font.h
使用中文的話,還需要w25qxx.c文件的支持,如w25qxx_ReadBuffer();
- 在TFT18.h中修改6個引腳
- 我的字庫在w25q128中,所以字庫起址值在w25qxx.h中: GBK_STORAGE_ADDR,全文搜索這個宏定義吧
- 如果沒有字庫的兄弟,英文輸出吧,只要#include "font.h" 就可以正常輸出英文字符
程序完整代碼下載
STM32F103C8+1.8寸ST7735彩屏中文程序.zip
有積分的兄弟點擊上面的連接,好讓我賺幾個積分。沒積分的兄弟移步到Q羣文件下載:262901124。