STM32第十五課:LCD屏幕及應用

文章目錄

  • 需求
  • 一、LCD顯示屏
  • 二、全屏圖片
  • 三、數據顯示
    • 1.顯示歡迎詞
    • 2.顯示溫濕度
    • 3.顯示當前時間
  • 四、需求實現代碼


需求

1.在LCD屏上顯示一張全屏圖片。
2.在LCD屏上顯示當前時間,溫度,濕度。
在這里插入圖片描述


一、LCD顯示屏

??液晶顯示器,簡稱 LCD(Liquid Crystal Display),相對于上一代 CRT 顯示器(陰極射線管顯示器), LCD 顯示器具有功耗低、體積小、承載的信息量大及不傷眼的優點,因而它成為了現在的主流電子顯示設備,其中包括電視、電腦顯示器、手機屏幕及各種嵌入式設備的顯示器。
??顯示器尺寸:顯示器的大小一般以英寸表示,如 5 英寸、 21 英寸、 24 英寸等,這個長度是指屏幕對角線的長度, 通過顯示器的對角線長度及長寬比可確定顯示器的實際長寬尺寸。
LCD屏幕的構成:顯示屏由液晶顯示面板、觸摸面板以及 PCB 底板構成.
本次使用的屏幕是2.8 寸的 TFTLCD 顯示屏,該模塊支持 65K 色顯示,顯示分辨率為 320×240,接口為 16 位的 8080 并口,自帶觸摸功能(本文沒用到)。

二、全屏圖片

首先將該LCD屏官方寫好的三個文件添加進工程中的api文件夾中
在這里插入圖片描述
打開圖片取模軟件。
在這里插入圖片描述
在這里插入圖片描述
找到想要設置的圖片,用電腦自帶的畫圖軟件將分辨率設置為340x240。
在這里插入圖片描述
然后在圖片取模軟件中打開該圖片。
在這里插入圖片描述
按照圖中所示設置即可。
記得設置完寬度和高度后,點一下藍色框起的部分。
最后點擊保存,該文件會生成一個.c文件,該文件內為圖片取模后的數組。
將該文件添加到工程中即可。
在這里插入圖片描述
在主函數中外部聲明一下該數組。
在這里插入圖片描述
在官方給的bsp_lcd.c中找到LCD初始化文件并在主函數中聲明。
由于我使用的圖片為橫圖,所以將顯示改為橫屏顯示。
在這里插入圖片描述
在這里插入圖片描述

最后在官方文件中找到LCD_ShowPhoto()函數,填寫參數并將其添加到主函數中就可以了。
參數填寫:x,y為圖片左上角坐標,這里為了鋪滿全屏填0,0。
長寬直接最大340X240。最后就是圖片的數組了,記得強轉一下,以符合要求。
實現效果:
在這里插入圖片描述

三、數據顯示

1.顯示歡迎詞

在官方文件中找到hz1616數組
在這里插入圖片描述
將想要顯示的漢字加入進數組中。
再打開數字取模軟件
在這里插入圖片描述
輸入所需漢字,點擊生成字模。
將生成的數字添加到Hz_16_16[]數組中,再將16個數組刪去中間的{},合并為32個數組。
要注意:1.漢字順序要跟數組順序相對應。
????2.keil5要將編碼格式設置成簡體中文。
在這里插入圖片描述
最后在主函數找到顯示漢字的函數
在這里插入圖片描述
參數填寫:xy坐標,字體背景顏色,字體顏色,中文字符串

2.顯示溫濕度

將之前寫好的DHT11模塊初始化,數據處理加載到主函數中,然后外部聲明溫濕度。
在這里插入圖片描述
在這里插入圖片描述
在這里插入圖片描述
由于LCD屏顯示函數需要轉換為字符串,而溫濕度為浮點型量。
所以我們需要將浮點型轉換為字符串,此處我使用的是sprintf來轉換。
先聲明兩個字符串來承接轉換后的結果:
在這里插入圖片描述
再使用sprintf進行轉換:
在這里插入圖片描述
最后使用LCD_ShowString();函數打印即可。
參數:x,y開始坐標,字體背景顏色,字體顏色,轉換后的字符串。
在這里插入圖片描述
要注意數據長度要多設置點,防止小數點后的數字顯示不出來。
中間字符的顯示函數為LCD_ShowChar()函數。
只要是ASCII碼表上有的字符都能打出來,直接填序號即可。
參數:xy開始坐標,字符序號,大小(為了和漢字保持一致,我們這里用的都是16),最后的0為不加背景。

3.顯示當前時間

先將RTC模塊加入進工程。

在這里插入圖片描述
使用localtime處理一下當前時間,并保存到結構體里。
最后使用sprintf轉換為字符串即可
在這里插入圖片描述

四、需求實現代碼

使用以上知識綜合應用就能實現需求,關鍵代碼如下:
main.c

#include "stm32f10x.h"
#include "usart.h"
#include "stdio.h"
#include "delay.h"
#include "string.h"
#include "pwm.h"
#include "adc.h"
#include "su03t.h"
#include "dht11.h"
#include "kqm.h"
#include "key.h"
#include "RTC.h"
#include "bsp_lcd.h"
char D_wen[20];
char D_shi[20];
char D_time[20];extern float voc;
extern float ch2o;
extern float co2;
extern float hum;
extern float tem;
extern ADCARR adcData;
extern const unsigned char gImage_hengliu[153600];
uint8_t key3flag,cntt;
uint32_t sec=0;
int main()
{NVIC_SetPriorityGrouping(5);//兩位搶占兩位次級Usart1_Config(); SysTick_Config(72000);Led_Init();key_Init();LCD_Init();Kqm_U4Config();Su03t_U5Config();DHT11_Config();	 RTC_Configuration();LCD_ShowPhoto(0, 0,320, 240, (uint8_t*)gImage_hengliu);while(1){	sec = RTC_GetCounter();time_t seconds=sec;struct tm *info = localtime(&seconds);if(ledcnt[0]>=ledcnt[1]){//過去500msledcnt[0]=0;Get_Smoke_Light_MidValue();//煙霧光照中位數DHT11_ReadData();//溫濕度KQM_DealData();//空氣質量Led_Toggle(1);printf(" LED閃爍 \r\n");printf("本地時間:%d-%02d-%02d %02d:%02d:%02d\r\n",info->tm_year + 1900, info->tm_mon + 1, info->tm_mday,info->tm_hour, info->tm_min, info->tm_sec);//LCD顯示sprintf(D_wen, "%.2f", tem);sprintf(D_shi, "%.2f", hum);sprintf(D_time, "%d-%02d-%02d %02d:%02d:%02d", info->tm_year + 1900, info->tm_mon + 1, info->tm_mday,info->tm_hour, info->tm_min, info->tm_sec);LCD_ShowChineseStr(0,0,WHITE,RED,"歡迎使用空氣質量檢測儀");	//一個漢字屏幕上占16LCD_ShowChar(176,0,33,16,0);//顯示字符!LCD_ShowChineseStr(0,150,WHITE,RED,"室內溫度");	//一個漢字屏幕上占16LCD_ShowChar(64,150,58,16,0);//顯示字符:LCD_ShowString(72,150,100,16,16,(uint8_t*)D_wen);LCD_ShowChineseStr(0,166,WHITE,RED,"室內濕度");	//一個漢字屏幕上占16LCD_ShowChar(64,166,58,16,0);//顯示字符:LCD_ShowString(72,166,100,16,16,(uint8_t*)D_shi);LCD_ShowChineseStr(0,220,WHITE,RED,"當前時間");	//一個漢字屏幕上占16LCD_ShowChar(64,220,58,16,0);//顯示字符:LCD_ShowString(72,220,300,16,16,(uint8_t*)D_time);}Su03tDealData();//命令獲取	}return 0;
}

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/38413.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/38413.shtml
英文地址,請注明出處:http://en.pswp.cn/web/38413.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

node_sqlite3.node is not a valid win32 application

electron打包報錯 使用electron在linux平臺打包含有sqlite3的項目為win32應用時在運行階段,有時會遇到下面的錯誤 node_sqlite3.node is not a valid win32 application出現該錯誤的原因主要是在64bit的linux環境中,sqlite3默認build出來的二進制文件不…

【Windows】Visual Studio Installer下載緩慢解決辦法

【Windows】Visual Studio Installer下載緩慢解決辦法 1.背景2.分析3.結果 1.背景 使用visual studio在線安裝包進行IDE安裝,發現下載幾乎停滯,網速幾乎為零。 經過排查并不是因為實際網絡帶寬導致。 這里涉及DNS知識; DNS(Dom…

消防認證-防火卷簾

一、消防認證 消防認證是指消防產品符合國家相關技術要求和標準,且通過了國家認證認可監督管理委員會審批,獲得消防認證資質的認證機構頒發的證書,消防產品具有完好的防火功能,是住房和城鄉建設領域驗收的重要指標。 二、認證依據…

TP8 JS(html2canvas) 把DIV內容生成二維碼并與背景圖、文字組合生成分享海報

方法一:前端JS生成(推薦) 注意: 1.這個網頁只能截圖圖片效果代碼,其它任何html效果都不能有,不然截圖就不準確 2.如果要生成的圖片DIV內容中引用了第三個方的圖片,就是不使用同一個域名下的圖片,需要把后…

Python爬取淘寶商品評價信息實戰:從零到一的高效教程

引言:揭秘淘寶數據金礦 在電商領域,用戶評價是衡量產品優劣的金標準。作為Python爬蟲工程師,掌握從淘寶這座數據金礦中挖掘寶貴評價信息的技能至關重要。本文將帶你手把手實操,用Python爬蟲技術獲取淘寶商品的評價信息&#xff0…

Docker多階段構建Node.js應用程序

Node.js 應用程序 創建一個目錄來存放你的項目文件,然后在該目錄下創建以下文件。 package.json {"name": "docker-node-test","version": "1.0.0","description": "A simple Node.js app for Docker mu…

【折騰筆記】使用 PicList + Lsky Pro 對圖片進行雙重壓縮

前言 因為服務器的帶寬比較小,為了提高網站的訪問速度,網站內的圖片進行壓縮是必不可少的。另外將圖片轉換成WebP的格式可以減小文件大小、加快加載速度、支持高級特性(如透明度和動畫),以及減少存儲需求,為網站提供了顯著的性能。需要提前安裝好PicList客戶端和Lsky Pr…

最快33天錄用!一投就中的醫學4區SCI,幾乎不退稿~

【SciencePub學術】今天小編給大家推薦2本生物醫學領域的SCI,此期刊為我處目前合作的重點期刊!影響因子0-3.0之間,最重要的是審稿周期較短,對急投的學者較為友好! 醫學醫藥類SCI 01 / 期刊概況 【期刊簡介】IF&…

那些好用的 Vue3 的工具搭子!!【送源碼】

2020 年 9 月 18 日 Vue3 的正式發布已經過去了大約 3 年 9 個月左右!!! 隨著 Vue3 版本的逐漸成熟,我們的前端世界也迎來了一系列令人振奮的更新和工具。Vue 生態圈的持續擴大,無疑為前端開發人員帶來了前所未有的便…

通過pycharm使用git和github的步驟

一、在Pycharm工具中配置集成Git和GitHub。 1.集成Git。 打開Pycharm, 點擊File-->Settins-->Version Control-->Git 然后在 Path to Git executable中選擇本地的git.exe路徑。如下圖: 2.集成GitHub 打開Pycharm, 點擊File-->Settins-->Version…

探索未來遠程調試新紀元——《串口網口遠程調試軟件》:無縫連接,高效調試

文章目錄 前言一、無縫連接,突破距離限制二、高效調試,提升工作效率三、安全可靠,保護數據安全四、用戶友好,簡化操作流程五、軟件地址六、遠程調試軟件 七、基本操作1、訂閱主題2、連接3、串口調試4、網口調試 八、軟件地址結束語…

PO模式登錄測試

項目實踐 登陸項目測試 get_driver import page from selenium import webdriverclass GetDriver:driver Noneclassmethoddef get_driver(cls):if cls.driver is None:cls.driver webdriver.Edge()cls.driver.maximize_window()cls.driver.get(page.url)return cls.drivercl…

Java高風險漏洞與修復之——LDAP injection(LDAP注入)

LDAP注入介紹 LDAP注入是一種攻擊技術,它可以利用應用程序中的安全漏洞對LDAP(輕量級目錄訪問協議)服務進行惡意查詢或修改操作。當應用程序未能適當地清理用戶的輸入內容,將其嵌入到LDAP查詢中時,就可能發生LDAP注入。攻擊者通過注入未經授權的指令或條件來操縱查詢結果…

【代碼隨想錄訓練營】【Day 66】【圖論-3】| 卡碼 101-104

【代碼隨想錄訓練營】【Day 66】【圖論-3】| 卡碼 101-104 需強化知識點 103,104 優化思路 題目 101. 孤島的總面積 此處 area 多余 def dfs(grid, x, y, area):dirs [[0, 1], [0, -1], [1, 0], [-1, 0]]m, n len(grid), len(grid[0])area[0] 1grid[x][y] …

k8s學習筆記——k8s升級

前一段時間,由于搭建k8s集群的硬件設備故障,老化導致k8s需要重裝。使用原來的kubeadm安裝方式卻發現裝不了了。查了一下官方文檔,說從v1.24版本之后,kubelet移除了容器引擎,容器及鏡像管理將有第三方工具來接管&#x…

Vue.js有哪些優點和缺點

Vue.js 作為一個流行的前端框架,具有許多優點和一些潛在的缺點。以下是 Vue.js 的一些主要優點和缺點: 優點: 輕量級和靈活性:Vue.js 的核心庫專注于視圖層,這使得它非常輕量級(壓縮后只有幾十KB&#xff…

Web 反爬指南

本質上說,防抓的目的在于增加腳本或機器獲取你網站內容的難度,而不要影響真實用戶的使用或搜索引擎的收錄 不幸的是這挺難的,你需要在防抓和降低真實用戶以及搜索引擎的可訪問性之間做一下權衡。 為了防爬(也稱為網頁抓取、屏幕…

智譜AI: ChatGLM API的使用

一、獲取API 1、打開網址:智譜AI開放平臺 注冊賬號登錄 2、登錄,查看API key (注冊后贈送100萬token,實名認證后多贈送400萬, 有效期一個) 二、安裝及調用 安裝質譜SDK pip install zhipuai調用方式 流式調用 from zhipuai import ZhipuA…

開放簽電子簽章,讓簽字有跡可循

開放簽(企業版)V2.0.5版本上線后,系統支持一鍵查詢電子文件的簽署操作記錄,支持一鍵生成詳細的簽署記錄報告,詳細請看下圖: 1、操作記錄詳情: 從合同發起、填寫、簽署、撤銷等環節全流程展示操…

【Linux從入門到放棄】探究進程如何退出以進程等待的前因后果

🧑?💻作者: 情話0.0 📝專欄:《Linux從入門到放棄》 👦個人簡介:一名雙非編程菜鳥,在這里分享自己的編程學習筆記,歡迎大家的指正與點贊,謝謝! 進…