Nokia5110 LCD
原文地址: https://www.cnblogs.com/milton/p/16339805.html
有片很早以前買的Nokia5110 LCD一直在紙箱里吃灰. 可能是買其它配件時送的? 沒有合適的用途一直扔在那里, 偶爾見到總會想什么時候有空給它點一下.
外觀長這樣. 其實市面上這種模塊有幾個不同的版本, 另一種版本是上下有兩排排針, 方便不同的PCB布局, 功能是一樣的.
Tutorial-for-Interfacing-Nokia-5110-Graphic-LCD-Display-with-Arduino.png (224.59 KB, 下載次數(shù): 35)
下載附件
2022-6-3 16:52 上傳
單色LCD, 84x48像素, 帶4顆藍色LED燈珠作為背光. 顯示芯片是Philips PCD8544.
因為是Nokia5110手機的顯示屏, 所以一般都叫它Nokia5110 LCD. 在2014年大屏手機還沒流行的年代, 這是個相當不錯的顯示輸出設備, 相對于1602和2004LCD, 體積小分辨率高, 便宜量又足.
現(xiàn)在遍地12864的LCD/OLED, 還有分辨率更高的彩色LCD可以選擇, 這個模塊也就沒什么人用了.
PCD8544
菲利普生產(chǎn)的單片低功耗CMOS LCD驅動控制器芯片, 用于驅動84x48像素的LCD
接口是SPI
顯示內存 = 6 banks x 84 segments x 8 bits = 4032 bits = 504字節(jié)
Each bank contains 84 columns/segments (from 0 to 83)
Each column can store 8 bits of data (from 0 to 7)
Pin腳
Nokia-5110-LCD-Module-Pinout.png (16.4 KB, 下載次數(shù): 39)
下載附件
2022-6-3 16:52 上傳
RST 復位
CE 片選, CS
DC 數(shù)據(jù)/指令選擇, D/C
DIN SPI數(shù)據(jù), MOSI
CLK SPI時鐘線
VCC 電源, 這個模塊兼容3.3V和5V, 如果沒有標識建議使用3.3V
BL 背光
GND 接地
指令說明
PCD8544 的指令很少, 比 ST7567還少. 顯示機制和 ST7567 基本上是一樣的.
寫數(shù)據(jù)和寫命令
使用D/C pin控制, 高電平表示寫入數(shù)據(jù), 低電平表示寫命令
功能設置
Function set: 0x20, 疊加下面的參數(shù)
Power down control: 0x04 關機模式
Entry mode: 0x02 尋址方式, 設置后變成垂直尋址, 先下再右; 正常模式是先右再下, 一般使用正常模式
Extended instruction set: 開啟擴展指令. 開啟后可以修改溫度參數(shù), 電壓基準偏移, 顯示電壓, 后面兩個用于調節(jié)LCD的對比度
顯示控制
Display control: 0x08, 疊加下面的參數(shù)
Display blank 顯示空白: 0x00
Normal mode 正常顯示: 0x04
All display segment on 顯示全部: 0x01
Inverse video mode 反顯模式: 0x05
坐標定位
PCD8544的顯示結構
Nokia-5110-PCD8544-LCD-DDRAM-Memory-Map.png (27.16 KB, 下載次數(shù): 37)
下載附件
2022-6-3 16:52 上傳
只能定位到字節(jié), 定位后寫入數(shù)據(jù), 會按設置好的尋址方式往下寫
設置x坐標: 0x80 疊加 [0x00, 0x84) 之間的值
設置y坐標: 0x40 疊加 [0x00, 0x06) 之間的值
擴展指令
下面的命令必須在開啟擴展指令后執(zhí)行才有效
Temperature control 溫度因子, 0x04 疊加取值 [0x00, 0x03]
Bias system 電壓基準控制, 0x10 疊加取值 [0x00, 0x07]
Set Vop 顯示電壓控制, 0x80 疊加取值 [0x00, 0x7F]
這三個指令需要說明一下, 設置不當可能會顯示全黑或者完全無顯示
溫度因子可以不設置, 使用默認
電壓基準設置得越大, 最后的實際顯示電壓越高, LCD顯示部分就越黑, 如果屏幕無顯示, 可以先調成0x07試試
顯示電壓高低和設置的值成正比, 值越高實際顯示電壓越高, LCD顯示部分就越黑
使用 STC8H 進行測試
以下使用 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下載
GitHub: https://github.com/IOsetting/FwL ... d8544_nokia5110_lcd
Gitee: https://gitee.com/iosetting/fw-l ... d8544_nokia5110_lcd
初始化
- // 重置
- 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);
復制代碼
參數(shù)說明
這三個擴展命令會影響顯示, 設置不當會變成全白或全黑
- #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是系統(tǒng)電壓, 會受上面的兩個參數(shù)影響
如果初始化后無顯示或顯示全黑的, 可以根據(jù)上面的范圍調整.
演示
208621973.jpg (117.7 KB, 下載次數(shù): 33)
下載附件
2022-6-3 16:53 上傳
視頻中可以看到不同基準電壓下, 調節(jié)顯示電壓造成的對比度變化
https://www.bilibili.com/video/BV1eF411G7Y7
|