有片很早以前買的Nokia5110 LCD一直在紙箱裡吃灰. 可能是買其它配件時送的? 沒有合適的用途一直扔在那裡, 偶爾見到總會想什麼時候有空給它點一下.
外觀長這樣. 其實市面上這種模組有幾個不同的版本, 另一種版本是上下有兩排排針, 方便不同的PCB佈局, 功能是一樣的.
單色LCD, 84x48畫素, 帶4顆藍色LED燈珠作為背光. 顯示晶片是Philips PCD8544.
因為是Nokia5110手機的顯示屏, 所以一般都叫它Nokia5110 LCD. 在2014年大屏手機還沒流行的年代, 這是個相當不錯的顯示輸出裝置, 相對於1602和2004LCD, 體積小解析度高, 便宜量又足.
現在遍地12864的LCD/OLED, 還有解析度更高的彩色LCD可以選擇, 這個模組也就沒什麼人用了.
PCD8544 的指令很少, 比 ST7567還少. 顯示機制和 ST7567 基本上是一樣的.
使用D/C pin控制, 高電平表示寫入資料, 低電平表示寫命令
Function set: 0x20, 疊加下面的引數
Display control: 0x08, 疊加下面的引數
PCD8544的顯示結構
只能定位到位元組, 定位後寫入資料, 會按設定好的定址方式往下寫
下面的命令必須在開啟擴充套件指令後執行才有效
這三個指令需要說明一下, 設定不當可能會顯示全黑或者完全無顯示
以下使用 STC8H3K32 和 FwLib_STC8 進行測試
上電前一定要檢查一下VCC和GND是否正確, 電壓是否正確
P37 -> RES, RESET
P36 -> DC, A0
P35 -> CE, Chip Select
P32 -> SCK, SCL, CLK, Clock
P12 -> BL, Backlight
P34 -> MOSI, Din
GND -> GND
3.3V -> VCC
程式碼可以從GitHub或者Gitee下載
// 重置
PCD8544_Reset();
// 設定對比度, 如果顯示太淡或太深, 需要自行調整
PCD8544_SetContrast(0x06, 0x20);
// 設定為正常顯示模式
PCD8544_SetDisplayNormal();
// 開啟背光
PCD8544_SetBackLightState(HAL_State_ON);
// 關閉背光
PCD8544_SetBackLightState(HAL_State_OFF);
PCD8544_Fill(0);
PCD8544_UpdateScreen();
開啟反顯後, 需要再設定為正常顯示模式才能恢復, 不能通過再次呼叫反顯恢復
PCD8544_SetDisplayInverted();
// 從(0,0)畫線到(83,0)
PCD8544_DrawLine(0, 0, 83, 0, 1);
PCD8544_DrawLine(0, 0, 0, 47, 1);
PCD8544_DrawLine(83, 0, 83, 47, 1);
PCD8544_DrawLine(0, 47, 83, 47, 1);
PCD8544_UpdateScreen();
// 移動座標到(3,3)
PCD8544_GotoXY(3, 3);
// 使用5x7字型顯示英文
PCD8544_Puts("LCD:PCD8544", &Font_5x7, 1);
PCD8544_UpdateScreen();
// 關機
PCD8544_SetPowerDownMode(HAL_State_ON);
// 開機
PCD8544_SetPowerDownMode(HAL_State_OFF);
這三個擴充套件命令會影響顯示, 設定不當會變成全白或全黑
#define PCD8544_SETTEMP 0x04 // Extended instruction set - Set temperature coefficient
#define PCD8544_SETBIAS 0x10 // Extended instruction set - Set bias system
#define PCD8544_SETVOP 0x80 // Extended instruction set - Write Vop to register
其中
PCD8544_SETTEMP
是溫度因子, 通常不需要設定PCD8544_SETBIAS
是偏壓級別, 通常設定為[3,7]之間的指, 對應的寫入就是[0x13, 0x17]PCD8544_SETVOP
是系統電壓, 會受上面的兩個引數影響如果初始化後無顯示或顯示全黑的, 可以根據上面的範圍調整.
視訊中可以看到不同基準電壓下, 調節顯示電壓造成的對比度變化
https://www.bilibili.com/video/BV1eF411G7Y7