Arduino筆記(101):使用LCD12864RSPI程式庫控制ST7920顯示

ST7920 大面板顯示器可以顯示 128x64的解析度,有時又稱為 LCD12864。我在整理如何使用這個顯示器的資料時,發現有兩個接線方式,使用的函式庫也不同,如果顯示不需要用到中文字型,或是可以使用簡體中文的,可以用 LCD12864SPI 這個程式庫,比較簡單,功能也很有限,無法繪圖。另一篇將實作U8g2呈現中文的方法,這個程式庫功能非常強大,包括字型放大、繪圖等功能。本篇將實作如何使用 LCD12864SPI 程式庫顯示英數字、簡體中文,以及單色的圖片在顯示器上。

ST7920 (LCD12864) 規格如下:
  • 電源電壓:VDD4.5~5.5V(內置升壓電路,無需負壓)
  • 控制器:ST7920
  • 點陣個數:128列×64行
  • 顯示顏色:藍底白字
  • 可視角度:170度
  • LCD類型:STN
  • 控制介面:4/8位元數位並行驅動(LCD12864預設模式)和3位元串列
  • LED背光:藍色
  • 軟體功能:游標顯示、畫面移位元、自訂字元、反白顯示、睡眠模式等
  • 工作溫度:-20℃~70℃
  • 存儲溫度:-30℃~80℃
  • 可通過連接Interface Shield使用Arduino直接驅動,也可根據引腳圖使用杜邦線連接
  • 模組尺寸:93×70×22mm
  • 視域尺寸:73×39mm

[找出漢字內碼]

我從淘X買的這個 ST7920 內建簡體中文 GB2312 字碼,當顯示繁體中文會出現一些奇奇怪怪的字,或無法顯示。找出簡體漢字的內碼,主要是要讓這片可以顯示簡體中文,可以用以下方法找到內碼,放在程式中來呈現中文: 
(1) 使用 Google 翻譯將繁體中文轉成簡體中文
以「中文測試」這幾個字為例,轉換後,將翻譯結果的簡體字全選,按下Ctrl + C,複製這幾個字。

(2) 使用 千千秀字 找出內碼
在輸入的方框貼上剛剛複製的內容,按下「查詢」,可以得知這幾個字的各種編碼。

(3) 將編碼放到程式中
可以看到查詢結果 GB2312編碼:中 D6D0 ,文 CEC4, 测 B2E2, 试 CAD4,將每個字碼拆成兩個 16 進位數字,放在程式中的顯示陣列,如「中」的「D6D0」,則拆成「0xD6, 0XD0」,如以下程式:
unsigned char show1[]={
0xD6, 0xD0, 0xCE, 0xC4, 0xB2, 0xE2, 0xCA, 0xD4
};

[如何轉換圖片為程式碼]

(1) 編輯要轉換的圖檔,將圖等比例縮成 128x64 大小

(2) 到 這裡 下載 LCD Image Converter 轉檔工具。下載後執行程式,並開啟稍早小畫家儲存的檔案。

(3)下拉選單「Options」→ 「Conversion」,開啟另一個視窗,在「Preset:」下拉選擇「Monochrome」。
(4)按下「Show Preview」,出現以下視窗:

(5)將右邊一堆16進位的數字「全選Ctrl+A」複製Ctrl+C起來。開啟 Arduino IDE 程式,貼在以下兩行程式中間。
unsigned char logo[]={

};
(6)再使用 DrawFullScreen()函式將上面的資料載入,就會呈現圖形在 ST7920 顯示器上。


[安裝程式庫Library]

本實作需要安裝以下程式庫:
下載後解壓縮,放置到 Arduino 的 Libraries(通常在C:\Documents\Arduino\libraries中),如需要更進一步說明,可參考下載程式庫(Library)安裝方法請參考另一篇文章:  Arduino筆記:安裝 Arduino IDE 程式庫(Library)

[材料]

  • Arduino UNO  x1
  • ST7920 (LCD12864)液晶顯示器  x1
  • 10K 可變電阻 x1
  • 麵包板 x2
  • 排線 n 條

[接線圖]

Arduino UnoST7920(12864) LCDB10K可變電阻
GNDGND左側接腳
+5VVCC-
D3EN-
D8RS-
D9R/W-
GNDPSB-
3.3VBLA-
GNDBLK-
-VOUT左側接腳
-VO中央接腳

[程式]

以下是顯示 圖形的程式:
 
#include <LCD12864RSPI.h>
#define AR_SIZE( a ) sizeof( a ) / sizeof( a[0] )

unsigned char show1[]={
0xD6, 0xD0, 0xCE, 0xC4, 0xB2, 0xE2, 0xCA, 0xD4
};

unsigned char logo[]={
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x0f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
0xff, 0xff, 0xff, 0xff, 0xff, 0xf8, 0x7f, 0xa0, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
0xff, 0xff, 0xff, 0xff, 0xff, 0xc3, 0xff, 0xfe, 0x0f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
0xff, 0xff, 0xff, 0xff, 0xff, 0x1f, 0xc1, 0x0f, 0xe1, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
0xff, 0xff, 0xff, 0xff, 0xfc, 0x7c, 0x0b, 0x20, 0xfc, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
0xff, 0xff, 0xff, 0xff, 0xf9, 0xf1, 0xfb, 0xbe, 0x1f, 0x1f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
0xff, 0xff, 0xff, 0xff, 0xe3, 0x87, 0xf9, 0x3f, 0xc3, 0xc3, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
0xff, 0xff, 0xff, 0xff, 0x8e, 0x3f, 0xfb, 0xbf, 0xf8, 0xf9, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
0xff, 0xff, 0xff, 0xff, 0x3c, 0xff, 0xf9, 0xbf, 0xfe, 0x3c, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 
0xff, 0xff, 0xff, 0xfc, 0x73, 0xff, 0xfd, 0xbf, 0xff, 0x8f, 0x1f, 0xff, 0xff, 0xff, 0xff, 0xff, 
0xff, 0xff, 0xff, 0xf9, 0xe7, 0xff, 0xf9, 0xbf, 0xff, 0xe7, 0xc5, 0xff, 0xff, 0xff, 0xff, 0xff, 
0xff, 0xff, 0xff, 0xe3, 0xc0, 0x00, 0x01, 0x80, 0x00, 0x01, 0xf0, 0x00, 0xff, 0xff, 0xff, 0xff, 
0xff, 0xff, 0xff, 0x8f, 0xff, 0xfd, 0xbf, 0xff, 0x77, 0xfe, 0xff, 0xd4, 0x0f, 0xff, 0xff, 0xff, 
0xff, 0xff, 0xfe, 0x3f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xe0, 0xff, 0xff, 0xff, 
0xff, 0xff, 0xe0, 0xff, 0xff, 0xdf, 0xff, 0xc0, 0xff, 0xff, 0xff, 0xff, 0xfc, 0x3f, 0xff, 0xff, 
0xff, 0xfc, 0x0f, 0xff, 0xff, 0xff, 0xff, 0xf5, 0xff, 0xff, 0xff, 0xff, 0xff, 0x8f, 0xff, 0xff, 
0xff, 0xf1, 0xff, 0xff, 0xeb, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xe3, 0xff, 0xff, 
0xff, 0xf7, 0xff, 0xff, 0x00, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0x80, 0xff, 0xfb, 0xff, 0xff, 
0xff, 0xe7, 0xff, 0xfc, 0x6e, 0x3f, 0xff, 0xff, 0xff, 0xff, 0xfe, 0x2a, 0x1f, 0xf9, 0xff, 0xff, 
0xff, 0xef, 0xff, 0xf1, 0x00, 0xcf, 0xff, 0xff, 0xff, 0xff, 0xfc, 0x80, 0x4f, 0xfc, 0xff, 0xff, 
0xff, 0xcf, 0xff, 0xf6, 0x7e, 0x27, 0xff, 0xff, 0xff, 0xff, 0xf9, 0x3f, 0x03, 0xfe, 0xff, 0xff, 
0xff, 0xef, 0xff, 0xe5, 0xc3, 0x97, 0xff, 0xff, 0xff, 0xff, 0xf2, 0xe1, 0xd3, 0xfe, 0xff, 0xff, 
0xff, 0xcf, 0xff, 0xc9, 0x18, 0xcb, 0xff, 0xff, 0xff, 0xff, 0xe4, 0x8e, 0x65, 0xfe, 0xff, 0xff, 
0xff, 0xef, 0xff, 0xd2, 0x7e, 0x69, 0xff, 0xff, 0xff, 0xff, 0xe9, 0x3f, 0x35, 0xfe, 0xff, 0xff, 
0xff, 0xef, 0xff, 0xc6, 0xff, 0xa5, 0xff, 0xff, 0xff, 0xff, 0xcb, 0x7f, 0xd0, 0xfe, 0x7f, 0xff, 
0xff, 0xef, 0xff, 0x8d, 0xff, 0xb5, 0xff, 0xff, 0xff, 0xff, 0xc2, 0xff, 0xca, 0xfe, 0xff, 0xff, 
0xff, 0xe7, 0xff, 0xa9, 0xff, 0x95, 0xff, 0xff, 0xff, 0xff, 0xd6, 0xff, 0xca, 0xfc, 0xff, 0xff, 
0xff, 0xf0, 0x7f, 0x8d, 0xff, 0xd1, 0xff, 0xff, 0xff, 0xff, 0xd4, 0xff, 0xea, 0x7c, 0xff, 0xff, 
0xff, 0xfe, 0x03, 0xa9, 0xff, 0x95, 0xff, 0xff, 0xff, 0xff, 0xd6, 0xff, 0xea, 0xfd, 0xff, 0xff, 
0xff, 0xff, 0xf0, 0x2d, 0xff, 0xb0, 0x04, 0xab, 0x7f, 0xff, 0xd2, 0xff, 0xca, 0x01, 0xff, 0xff, 
0xff, 0xff, 0xff, 0xa5, 0xff, 0xa5, 0x50, 0x00, 0x00, 0x00, 0x0a, 0x7f, 0xda, 0x5f, 0xff, 0xff, 
0xff, 0xff, 0xff, 0xf4, 0xff, 0x2f, 0xff, 0xff, 0xf6, 0xaa, 0xbb, 0x7f, 0x93, 0xff, 0xff, 0xff, 
0xff, 0xff, 0xff, 0xf3, 0x3e, 0x6f, 0xff, 0xff, 0xff, 0xff, 0xf9, 0x1f, 0x37, 0xff, 0xff, 0xff, 
0xff, 0xff, 0xff, 0xf9, 0x80, 0xdf, 0xff, 0xff, 0xff, 0xff, 0xfc, 0xc0, 0x67, 0xff, 0xff, 0xff, 
0xff, 0xff, 0xff, 0xfc, 0xf7, 0x1f, 0xff, 0xff, 0xff, 0xff, 0xfe, 0x7b, 0x9f, 0xff, 0xff, 0xff, 
0xff, 0xff, 0xff, 0xfe, 0x18, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0x8c, 0x3f, 0xff, 0xff, 0xff, 
0xff, 0xff, 0xff, 0xff, 0xc3, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xd1, 0xff, 0xff, 0xff, 0xff, 
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff
};

unsigned char en_char0[]="LCD12864 Display";  
unsigned char en_char1[]="Test By Ceiling "; 
unsigned char en_char2[]="                ";
unsigned char en_char3[]="   2020.12.15   ";

void setup()
{
  LCDA.Initialise();    // 初始化螢幕
  delay(100);
  
}

void loop()
{
  LCDA.CLEAR();
  delay(500);    
  LCDA.DisplayString(0,0,en_char0,16);
  delay(10);
  LCDA.DisplayString(1,0,en_char1,16);
  delay(10);
  LCDA.DisplayString(2,0,en_char2,16);
  delay(10);
  LCDA.DisplayString(3,0,en_char3,16);
  delay(5000);

  LCDA.CLEAR();
  delay(500);     
  LCDA.DisplayString(0,0,show1,8);
  delay(5000);

  LCDA.CLEAR();
  delay(500);   
  LCDA.DrawFullScreen(logo); 
  delay(6000);  
}

[實作結果]


[參考資料]

Post a Comment

較新的 較舊