STM32F103C8T6 + ST7735彩屏驅動 LCD顯示漢字


工程中搭建環境

  1. 軟件:     Keil 5.27
  2. 開發板: 魔女開發板 STM32F103C8
  3. 屏幕:     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驅動編程要點、技巧

  1. 三個要點:寄存器8位,命令+數據、字節發送處理
  2. 寄存器是8位的:命令8位的,而數據發送時一個跟一個;顏色值16位,要分兩字節發送
  3. 命令+數據:不管寫字符點還是刷屏,步驟都只是:先發命令,後發數據
  4. 發命令的操作:拉低 DC引腳,發送1個8位的命令值
  5. 發數據的操作:拉高 DC引腳,挨字節發出要發送數據
  6. 屏顯方向:在發命令0x36後,緊跟的一字節數據爲屏顯方向,可選參數:C0/00/A0/60/C8/08/A8/68
  7. 花屏:如果右邊或下邊有花屏,表示像素沒填充夠,加大一點刷屏值,如130*163
  8. 英文、中文、圖片: 其實都是畫點和緩存的處理,參考代碼
  9. 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();

  1. 在TFT18.h中修改6個引腳
  2. 我的字庫在w25q128中,所以字庫起址值在w25qxx.h中: GBK_STORAGE_ADDR,全文搜索這個宏定義吧
  3. 如果沒有字庫的兄弟,英文輸出吧,只要#include "font.h" 就可以正常輸出英文字符

程序完整代碼下載

STM32F103C8+1.8寸ST7735彩屏中文程序.zip

有積分的兄弟點擊上面的連接,好讓我賺幾個積分。沒積分的兄弟移步到Q羣文件下載:262901124。


 

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