|
Nokia5110 LCD
原文地址: https://www.cnblogs.com/milton/p/16339805.html
有片很早以前買(mǎi)的Nokia5110 LCD一直在紙箱里吃灰. 可能是買(mǎi)其它配件時(shí)送的? 沒(méi)有合適的用途一直扔在那里, 偶爾見(jiàn)到總會(huì)想什么時(shí)候有空給它點(diǎn)一下.
外觀長(zhǎng)這樣. 其實(shí)市面上這種模塊有幾個(gè)不同的版本, 另一種版本是上下有兩排排針, 方便不同的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顆藍(lán)色LED燈珠作為背光. 顯示芯片是Philips PCD8544.
因?yàn)槭荖okia5110手機(jī)的顯示屏, 所以一般都叫它Nokia5110 LCD. 在2014年大屏手機(jī)還沒(méi)流行的年代, 這是個(gè)相當(dāng)不錯(cuò)的顯示輸出設(shè)備, 相對(duì)于1602和2004LCD, 體積小分辨率高, 便宜量又足.
現(xiàn)在遍地12864的LCD/OLED, 還有分辨率更高的彩色LCD可以選擇, 這個(gè)模塊也就沒(méi)什么人用了.
PCD8544
菲利普生產(chǎn)的單片低功耗CMOS LCD驅(qū)動(dòng)控制器芯片, 用于驅(qū)動(dòng)84x48像素的LCD
接口是SPI
顯示內(nèi)存 = 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 復(fù)位
CE 片選, CS
DC 數(shù)據(jù)/指令選擇, D/C
DIN SPI數(shù)據(jù), MOSI
CLK SPI時(shí)鐘線
VCC 電源, 這個(gè)模塊兼容3.3V和5V, 如果沒(méi)有標(biāo)識(shí)建議使用3.3V
BL 背光
GND 接地
指令說(shuō)明
PCD8544 的指令很少, 比 ST7567還少. 顯示機(jī)制和 ST7567 基本上是一樣的.
寫(xiě)數(shù)據(jù)和寫(xiě)命令
使用D/C pin控制, 高電平表示寫(xiě)入數(shù)據(jù), 低電平表示寫(xiě)命令
功能設(shè)置
Function set: 0x20, 疊加下面的參數(shù)
Power down control: 0x04 關(guān)機(jī)模式
Entry mode: 0x02 尋址方式, 設(shè)置后變成垂直尋址, 先下再右; 正常模式是先右再下, 一般使用正常模式
Extended instruction set: 開(kāi)啟擴(kuò)展指令. 開(kāi)啟后可以修改溫度參數(shù), 電壓基準(zhǔn)偏移, 顯示電壓, 后面兩個(gè)用于調(diào)節(jié)LCD的對(duì)比度
顯示控制
Display control: 0x08, 疊加下面的參數(shù)
Display blank 顯示空白: 0x00
Normal mode 正常顯示: 0x04
All display segment on 顯示全部: 0x01
Inverse video mode 反顯模式: 0x05
坐標(biāo)定位
PCD8544的顯示結(jié)構(gòu)
Nokia-5110-PCD8544-LCD-DDRAM-Memory-Map.png (27.16 KB, 下載次數(shù): 37)
下載附件
2022-6-3 16:52 上傳
只能定位到字節(jié), 定位后寫(xiě)入數(shù)據(jù), 會(huì)按設(shè)置好的尋址方式往下寫(xiě)
設(shè)置x坐標(biāo): 0x80 疊加 [0x00, 0x84) 之間的值
設(shè)置y坐標(biāo): 0x40 疊加 [0x00, 0x06) 之間的值
擴(kuò)展指令
下面的命令必須在開(kāi)啟擴(kuò)展指令后執(zhí)行才有效
Temperature control 溫度因子, 0x04 疊加取值 [0x00, 0x03]
Bias system 電壓基準(zhǔn)控制, 0x10 疊加取值 [0x00, 0x07]
Set Vop 顯示電壓控制, 0x80 疊加取值 [0x00, 0x7F]
這三個(gè)指令需要說(shuō)明一下, 設(shè)置不當(dāng)可能會(huì)顯示全黑或者完全無(wú)顯示
溫度因子可以不設(shè)置, 使用默認(rèn)
電壓基準(zhǔn)設(shè)置得越大, 最后的實(shí)際顯示電壓越高, LCD顯示部分就越黑, 如果屏幕無(wú)顯示, 可以先調(diào)成0x07試試
顯示電壓高低和設(shè)置的值成正比, 值越高實(shí)際顯示電壓越高, LCD顯示部分就越黑
使用 STC8H 進(jìn)行測(cè)試
以下使用 STC8H3K32 和 FwLib_STC8 進(jìn)行測(cè)試
接線
上電前一定要檢查一下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();
- // 設(shè)置對(duì)比度, 如果顯示太淡或太深, 需要自行調(diào)整
- PCD8544_SetContrast(0x06, 0x20);
- // 設(shè)置為正常顯示模式
- PCD8544_SetDisplayNormal();
復(fù)制代碼
開(kāi)啟和關(guān)閉背光
- // 開(kāi)啟背光
- PCD8544_SetBackLightState(HAL_State_ON);
- // 關(guān)閉背光
- PCD8544_SetBackLightState(HAL_State_OFF);
復(fù)制代碼
清屏
- PCD8544_Fill(0);
- PCD8544_UpdateScreen();
復(fù)制代碼
反顯
開(kāi)啟反顯后, 需要再設(shè)置為正常顯示模式才能恢復(fù), 不能通過(guò)再次調(diào)用反顯恢復(fù)
- PCD8544_SetDisplayInverted();
復(fù)制代碼
畫(huà)線
- // 從(0,0)畫(huà)線到(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();
復(fù)制代碼
顯示文字
- // 移動(dòng)坐標(biāo)到(3,3)
- PCD8544_GotoXY(3, 3);
- // 使用5x7字體顯示英文
- PCD8544_Puts("LCD:PCD8544", Font_5x7, 1);
- PCD8544_UpdateScreen();
復(fù)制代碼
關(guān)機(jī)模式
- // 關(guān)機(jī)
- PCD8544_SetPowerDownMode(HAL_State_ON);
- // 開(kāi)機(jī)
- PCD8544_SetPowerDownMode(HAL_State_OFF);
復(fù)制代碼
參數(shù)說(shuō)明
這三個(gè)擴(kuò)展命令會(huì)影響顯示, 設(shè)置不當(dāng)會(huì)變成全白或全黑
- #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
復(fù)制代碼
其中
PCD8544_SETTEMP是溫度因子, 通常不需要設(shè)置
PCD8544_SETBIAS是偏壓級(jí)別, 通常設(shè)置為[3,7]之間的指, 對(duì)應(yīng)的寫(xiě)入就是[0x13, 0x17]
PCD8544_SETVOP是系統(tǒng)電壓, 會(huì)受上面的兩個(gè)參數(shù)影響
如果初始化后無(wú)顯示或顯示全黑的, 可以根據(jù)上面的范圍調(diào)整.
演示
208621973.jpg (117.7 KB, 下載次數(shù): 33)
下載附件
2022-6-3 16:53 上傳
視頻中可以看到不同基準(zhǔn)電壓下, 調(diào)節(jié)顯示電壓造成的對(duì)比度變化
https://www.bilibili.com/video/BV1eF411G7Y7
|
|