STC8H開發(十): SPI驅動Nokia5110 LCD(PCD8544)

来源:https://www.cnblogs.com/milton/archive/2022/06/03/16339805.html
-Advertisement-
Play Games

有片很早以前買的Nokia5110 LCD一直在紙箱里吃灰. 可能是買其它配件時送的? 沒有合適的用途一直扔在那裡, 偶爾見到總會想什麼時候有空給它點一下. 外觀長這樣. 其實市面上這種模塊有幾個不同的版本, 另一種版本是上下有兩排排針, 方便不同的PCB佈局, 功能是一樣的. 單色LCD, 84x... ...


目錄

Nokia5110 LCD

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

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

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

因為是Nokia5110手機的顯示屏, 所以一般都叫它Nokia5110 LCD. 在2014年大屏手機還沒流行的年代, 這是個相當不錯的顯示輸出設備, 相對於1602和2004LCD, 體積小解析度高, 便宜量又足.

現在遍地12864的LCD/OLED, 還有解析度更高的彩色LCD可以選擇, 這個模塊也就沒什麼人用了.

PCD8544

  • 菲利普生產的單片低功耗CMOS LCD驅動控制器晶元, 用於驅動84x48像素的LCD
  • 介面是SPI
  • 顯示記憶體 = 6 banks x 84 segments x 8 bits = 4032 bits = 504位元組
  • Each bank contains 84 columns/segments (from 0 to 83)
  • Each column can store 8 bits of data (from 0 to 7)

Pin腳

  1. RST 複位
  2. CE 片選, CS
  3. DC 數據/指令選擇, D/C
  4. DIN SPI數據, MOSI
  5. CLK SPI時鐘線
  6. VCC 電源, 這個模塊相容3.3V和5V, 如果沒有標識建議使用3.3V
  7. BL 背光
  8. GND 接地

指令說明

PCD8544 的指令很少, 比 ST7567還少. 顯示機制和 ST7567 基本上是一樣的.

寫數據和寫命令

使用D/C pin控制, 高電平表示寫入數據, 低電平表示寫命令

功能設置

Function set: 0x20, 疊加下麵的參數

  • Power down control: 0x04 關機模式
  • Entry mode: 0x02 定址方式, 設置後變成垂直定址, 先下再右; 正常模式是先右再下, 一般使用正常模式
  • Extended instruction set: 開啟擴展指令. 開啟後可以修改溫度參數, 電壓基準偏移, 顯示電壓, 後面兩個用於調節LCD的對比度

顯示控制

Display control: 0x08, 疊加下麵的參數

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

坐標定位

PCD8544的顯示結構

只能定位到位元組, 定位後寫入數據, 會按設置好的定址方式往下寫

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

擴展指令

下麵的命令必須在開啟擴展指令後執行才有效

  • 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下載

初始化

// 重置
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

參考


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • AES(Advanced Encryption Standard) 是一種對稱加密演算法,是比 DES 更好的對稱加密演算法類。 使用AES,在前後端之間傳送密碼等相關數據時,能簡單高效的提高安全性。 前端的 AES(javascript/typescript) 前端的加密庫一般用 crypto-js。 ...
  • 背景 開發應用程式久了,總想刨根問底,尤其對一些有公共答案的問題。大家都能解釋,但是追根究底,都解釋不清。凡是都有為什麼,而且用數字說明問題是最直觀的。 本文主要想探究一下連接資料庫的細節,尤其是在 Web 應用中要使用資料庫來連接池,以免每次發送一次請求就重新建立一次連接。 對於這個問題,答案都是 ...
  • 1、static關鍵字簡介 static為java中的關鍵字,可以修飾類中的方法、變數,以及修飾靜態代碼塊 當用static修飾的方法和變數時可以直接通過類名.方法名和類名.變數名來訪問,不需要進行對象的實例化操作,方便在沒有創建對象的時候來調用方法或者變數 2、static修飾方法 static修 ...
  • 工作中遇到一個古老的程式,資料庫使用的事access,想用python批量導入數據,報“INSERT INTO 語句的語法錯誤”。但是,將插入語句放到access,正常通過,百思不得其解,無奈問度娘,有朋友說有關鍵字,如user,把他加上中括弧設置斷點,把sql【insert into [users ...
  • 條碼的應用已深入生活和工作的方方面面。在處理條碼時,常需要和各種文檔格式相結合。當需要在文檔中插入、編輯或者刪除條碼時,可藉助於一些專業的類庫工具來實現。本文,以操作PDF文件為例,介紹如何在編輯表格時,向單元格中插入條形碼。 【類庫引入及代碼思路】 本次功能測試中,使用 Free Spire.PD ...
  • 最近通過WPF開發項目,為了對WPF知識點進行總結,所以利用業餘時間,開發一個學生信息管理系統【Student Information Management System】。前三篇文章進行了框架搭建和模塊劃分,後臺WebApi介面編寫,以及課程管理模塊開發,本文在前三篇基礎之上,繼續深入開發學生信息... ...
  • 產品簡介 SwebONE是一款OA類的開源解決方案,通過SwebUI平臺開發,包含了註冊、登陸、用戶信息等基本功能。 免費獲取方案 開源代碼: https://github.com/comsmobiler/SwebONE(順便“★Star”一下) 部署文檔 項目服務端部署、資料庫還原請參考教程: h ...
  • grep grep命令的功能似乎過濾制定規則的信息。 冷知識:grep的名字來源於一個sed格式:g/re/p g:所有行,re:正則規則,p:列印 用法: grep(global search regular express and print out line)列印匹配的行(內容) 類似的命令包 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...