找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 1859|回復(fù): 0
打印 上一主題 下一主題
收起左側(cè)

STC8H硬件SPI驅(qū)動Nokia5110 LCD(PCD8544)

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:912806 發(fā)表于 2022-6-3 16:54 | 只看該作者 |只看大圖 回帖獎勵 |倒序瀏覽 |閱讀模式
Nokia5110 LCD

原文地址: https://www.cnblogs.com/milton/p/16339805.html

有片很早以前買的Nokia5110 LCD一直在紙箱里吃灰. 可能是買其它配件時送的? 沒有合適的用途一直扔在那里, 偶爾見到總會想什么時候有空給它點一下.

外觀長這樣. 其實市面上這種模塊有幾個不同的版本, 另一種版本是上下有兩排排針, 方便不同的PCB布局, 功能是一樣的.


單色LCD, 84x48像素, 帶4顆藍色LED燈珠作為背光. 顯示芯片是Philips PCD8544.

因為是Nokia5110手機的顯示屏, 所以一般都叫它Nokia5110 LCD. 在2014年大屏手機還沒流行的年代, 這是個相當(dāng)不錯的顯示輸出設(shè)備, 相對于1602和2004LCD, 體積小分辨率高, 便宜量又足.

現(xiàn)在遍地12864的LCD/OLED, 還有分辨率更高的彩色LCD可以選擇, 這個模塊也就沒什么人用了.

PCD8544

菲利普生產(chǎn)的單片低功耗CMOS LCD驅(qū)動控制器芯片, 用于驅(qū)動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腳



RST 復(fù)位
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ù), 低電平表示寫命令

功能設(shè)置
Function set: 0x20, 疊加下面的參數(shù)

Power down control: 0x04 關(guān)機模式
Entry mode: 0x02 尋址方式, 設(shè)置后變成垂直尋址, 先下再右; 正常模式是先右再下, 一般使用正常模式
Extended instruction set: 開啟擴展指令. 開啟后可以修改溫度參數(shù), 電壓基準偏移, 顯示電壓, 后面兩個用于調(diào)節(jié)LCD的對比度
顯示控制
Display control: 0x08, 疊加下面的參數(shù)

Display blank 顯示空白: 0x00
Normal mode 正常顯示: 0x04
All display segment on 顯示全部: 0x01
Inverse video mode 反顯模式: 0x05

坐標定位

PCD8544的顯示結(jié)構(gòu)


只能定位到字節(jié), 定位后寫入數(shù)據(jù), 會按設(shè)置好的尋址方式往下寫

設(shè)置x坐標: 0x80 疊加 [0x00, 0x84) 之間的值
設(shè)置y坐標: 0x40 疊加 [0x00, 0x06) 之間的值

擴展指令

下面的命令必須在開啟擴展指令后執(zhí)行才有效

Temperature control 溫度因子, 0x04 疊加取值 [0x00, 0x03]
Bias system 電壓基準控制, 0x10 疊加取值 [0x00, 0x07]
Set Vop 顯示電壓控制, 0x80 疊加取值 [0x00, 0x7F]
這三個指令需要說明一下, 設(shè)置不當(dāng)可能會顯示全黑或者完全無顯示

溫度因子可以不設(shè)置, 使用默認
電壓基準設(shè)置得越大, 最后的實際顯示電壓越高, LCD顯示部分就越黑, 如果屏幕無顯示, 可以先調(diào)成0x07試試
顯示電壓高低和設(shè)置的值成正比, 值越高實際顯示電壓越高, 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

初始化
  1. // 重置
  2. PCD8544_Reset();
  3. // 設(shè)置對比度, 如果顯示太淡或太深, 需要自行調(diào)整
  4. PCD8544_SetContrast(0x06, 0x20);
  5. // 設(shè)置為正常顯示模式
  6. PCD8544_SetDisplayNormal();
復(fù)制代碼

開啟和關(guān)閉背光
  1. // 開啟背光
  2. PCD8544_SetBackLightState(HAL_State_ON);
  3. // 關(guān)閉背光
  4. PCD8544_SetBackLightState(HAL_State_OFF);
復(fù)制代碼

清屏
  1. PCD8544_Fill(0);
  2. PCD8544_UpdateScreen();
復(fù)制代碼



反顯
開啟反顯后, 需要再設(shè)置為正常顯示模式才能恢復(fù), 不能通過再次調(diào)用反顯恢復(fù)
  1. PCD8544_SetDisplayInverted();
復(fù)制代碼


畫線
  1. // 從(0,0)畫線到(83,0)
  2. PCD8544_DrawLine(0,   0,  83,  0, 1);
  3. PCD8544_DrawLine(0,   0,   0, 47, 1);
  4. PCD8544_DrawLine(83,  0,  83, 47, 1);
  5. PCD8544_DrawLine(0,  47,  83, 47, 1);
  6. PCD8544_UpdateScreen();
復(fù)制代碼


顯示文字
  1. // 移動坐標到(3,3)
  2. PCD8544_GotoXY(3, 3);
  3. // 使用5x7字體顯示英文
  4. PCD8544_Puts("LCD:PCD8544", Font_5x7, 1);
  5. PCD8544_UpdateScreen();
復(fù)制代碼


關(guān)機模式
  1. // 關(guān)機
  2. PCD8544_SetPowerDownMode(HAL_State_ON);
  3. // 開機
  4. PCD8544_SetPowerDownMode(HAL_State_OFF);
復(fù)制代碼


參數(shù)說明
這三個擴展命令會影響顯示, 設(shè)置不當(dāng)會變成全白或全黑
  1. #define PCD8544_SETTEMP             0x04 // Extended instruction set - Set temperature coefficient
  2. #define PCD8544_SETBIAS             0x10 // Extended instruction set - Set bias system
  3. #define PCD8544_SETVOP              0x80 // Extended instruction set - Write Vop to register
復(fù)制代碼


其中
PCD8544_SETTEMP是溫度因子, 通常不需要設(shè)置
PCD8544_SETBIAS是偏壓級別, 通常設(shè)置為[3,7]之間的指, 對應(yīng)的寫入就是[0x13, 0x17]
PCD8544_SETVOP是系統(tǒng)電壓, 會受上面的兩個參數(shù)影響
如果初始化后無顯示或顯示全黑的, 可以根據(jù)上面的范圍調(diào)整.

演示



視頻中可以看到不同基準電壓下, 調(diào)節(jié)顯示電壓造成的對比度變化

https://www.bilibili.com/video/BV1eF411G7Y7


分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏4 分享淘帖 頂 踩
回復(fù)

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機教程網(wǎng)

快速回復(fù) 返回頂部 返回列表