基於SPI的0.96OLED資料顯示溫溼度
關於SPI
SPI 介面是 Motorola 首先提出的全雙工三線同步序列外圍介面,採用主從模式(Master Slave)架構;支援多 slave 模式應用,一 般僅支援單 Master。 時鐘由 Master 控制,在時鐘移位脈衝下,資料按位傳輸,高位在前,低位在後(MSB first);SPI 介面有 2 根單向資料線,為全雙工通訊,目前應用中的資料速率可達幾 Mbps 的水平。
提示:以下是本篇文章正文內容,下面案例可供參考
0.96OLED螢幕
相關資料:0.96inch SPI OLED Module(下載原始程式碼)
螢幕滾動和讀取顯示AHT20溫溼度感測器
1.前期準備
開啟原始碼和接線
微控制器實驗的第一步當然是接線了
這裡我們開啟上面連結資料裡面下載好的原始碼
Demo資料夾裡面找到Stm32相關部分
這裡我選擇的是與我板子對應的F103RCT6的4線制SPI模式
開啟後可以看到程式碼裡面很清楚的給出了接線怎麼接
用母對母杜邦線接好
2.螢幕滾動
SSD1306(OLED驅動晶片)指令詳解
通過查閱資料和其他部落格,發現滾動的程式碼如下
void roll_v(void)
{
OLED_WR_Byte(0x2e,OLED_CMD);
OLED_WR_Byte(0x29,OLED_CMD);
OLED_WR_Byte(0x00,OLED_CMD);
OLED_WR_Byte(0x00,OLED_CMD);
OLED_WR_Byte(0x07,OLED_CMD);
OLED_WR_Byte(0x07,OLED_CMD);
OLED_WR_Byte(0x01,OLED_CMD);
OLED_WR_Byte(0x2F,OLED_CMD);
}
void roll_h(void)
{
OLED_WR_Byte(0x2E,OLED_CMD); //關閉滾動
OLED_WR_Byte(0x26,OLED_CMD); //水平向左或者右滾動 26/27
OLED_WR_Byte(0x00,OLED_CMD); //虛擬位元組
OLED_WR_Byte(0x00,OLED_CMD); //起始頁 0
OLED_WR_Byte(0x07,OLED_CMD); //滾動時間間隔
OLED_WR_Byte(0x07,OLED_CMD); //終止頁 7
OLED_WR_Byte(0x00,OLED_CMD); //虛擬位元組
OLED_WR_Byte(0xFF,OLED_CMD); //虛擬位元組
OLED_WR_Byte(0x2F,OLED_CMD); //開啟滾動
}
寫一個測試函式在main裡面迴圈
void TEST_Menu(void)
{
GUI_ShowString(0,0,"631707060324",16,1);
GUI_ShowCHinese(0,20,16,"肖思睿",1);
roll_h();
}
結果如下
讀取並顯示溫溼度
1.字模的提取
上面螢幕滾動的視訊裡面可以看到我顯示了自己的名字和學號
但是如果你試過就會發現
在資料裡面下載下來的程式碼改動後不能直接顯示中文
這是因為程式碼裡面沒有相關的字模
在嵌入式裝置 LCD 上顯示的漢字大多數都屬於點陣漢字。常用的點陣字型檔來自 UCDOS。
我們可以在程式裡面新增對應的字模實現顯示
比如這是我新增的
"肖",0x01,0x00,0x21,0x08,0x11,0x10,0x09,0x20,0x01,0x00,0x3F,0xF8,0x20,0x08,0x20,0x08,
0x3F,0xF8,0x20,0x08,0x20,0x08,0x3F,0xF8,0x20,0x08,0x20,0x08,0x20,0x28,0x20,0x20,
"思",0x00,0x00,0x3F,0xF8,0x21,0x10,0x21,0x10,0x3F,0xF8,0x21,0x10,0x21,0x10,0x3F,0xF8,
0x20,0x08,0x01,0x00,0x08,0x88,0x48,0x84,0x48,0x12,0x48,0x12,0x87,0xF0,0x00,0x00,
"睿",0x01,0x00,0x01,0xF8,0x01,0x00,0x7F,0xFE,0x40,0x02,0x9F,0xF4,0x09,0x20,0x32,0x90,
0x0C,0x60,0x3F,0xF8,0xD0,0x16,0x1F,0xF0,0x10,0x10,0x1F,0xF0,0x10,0x00,0x1F,0xF0,
程式碼的提取可以通過字模提取軟體提取
也可以通過計算手動新增(不推薦,雖然我沒找到軟體就是手動新增的)
比如肖字
第一行就是:0x01,0x00,即:0000 0001 0000 0000
依次類推,就可以得到相關程式碼
新增到oledfont.h檔案裡面就可以直接呼叫了
2.程式碼實現部分
1.GPIO
要同時實現OLED和AHT20的工作,我們第一個要修改的是GPIO_Init
因為他們所接的引腳不同
OLED.c檔案裡面的初始化函式
新增AHT20連線的PB6和PB7
void OLED_Init_GPIO(void)
{
GPIO_InitTypeDef GPIO_InitStructure;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE); //使能B埠時鐘
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10|GPIO_Pin_11|GPIO_Pin_12|GPIO_Pin_6|GPIO_Pin_7; //GPIOB10,11,12,6,7
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; //推輓輸出
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;//速度50MHz
GPIO_Init(GPIOB, &GPIO_InitStructure); //初始化GPIOB10、11、12,6,7
GPIO_SetBits(GPIOB,GPIO_Pin_10|GPIO_Pin_11|GPIO_Pin_12|GPIO_Pin_6|GPIO_Pin_7);
}
2.顯示部分
GUI_DrawLine(WIDTH/2-1,10+(HEIGHT-10)/2-1,WIDTH/2-1,HEIGHT-1,1);
GUI_DrawLine(0,10+(HEIGHT-10)/2-1,WIDTH-1,10+(HEIGHT-10)/2-1,1);
GUI_ShowString(0,1,"631707060324",16,1);
GUI_ShowCHinese(0,20,16,"肖思睿",1);
GUI_ShowString(0,39,"TEMP",8,1);
GUI_DrawCircle(WIDTH/2-1-19, 51, 1,2);
GUI_ShowString(WIDTH/2-1-14,46,"C",16,1);
GUI_ShowString(WIDTH/2-1+2,39,"hum",8,1);
GUI_ShowString(WIDTH/2-1+40,46,"%",16,1);
GUI_ShowNum(WIDTH/2-1-50,46,(tem/10),3,16,1);
GUI_ShowNum(WIDTH/2-1+5,46,(hum/10),3,16,1);
3.實現效果
可以看到,由於手給溫溼度測量帶來的變化清晰的顯示在了螢幕上
相關文章
- 基於SPI/IIC介面的OLED資料顯示
- 基於STM32的OLED的SPI介面資料顯示
- 基於arduino uno的DHT11溫溼度感測器的使用UI
- 基於IIC介面的OLED資料顯示
- STM32基於I2C的AHT20溫溼度採集
- 溫習 SPI 機制 (Java SPI 、Spring SPI、Dubbo SPI)JavaSpring
- STM32基於I2C協議的AHT20溫溼度測量協議
- Micropython TPYBoard v102 溫溼度簡訊通知器(基於SIM900A模組)Python
- AHT20溫溼度採集
- 基於 JSONModel 資料模型的列表控制元件顯示資料的深入討論試讀版JSON模型控制元件
- 溫溼度計算露點函式函式
- Linux基礎命令---mysqlshow顯示資料庫LinuxMySql資料庫
- element table不顯示任何資料,無資料倒是顯示出無資料的了
- Air780E篇:採集溫溼度感測器資料,併網頁檢視AI網頁
- DHT11溫溼度感測器原理剖析
- QChartView顯示實時更新的溫度曲線圖(二)View
- 資料顯示設定攻略
- win10狀態列怎麼新增cpu溫度顯示_win10工作列新增cpu溫度顯示的步驟Win10
- win10怎麼開啟cpu溫度顯示 win10系統顯示cpu溫度如何設定Win10
- 基於 JSONModel 資料模型的 SAP UI5 列表控制元件分頁顯示資料的完整解決方案試讀版JSON模型UI控制元件
- Redis 基礎資料型別重溫Redis資料型別
- 零程式碼搭建一個溫度感測器資料採集與顯示軟體
- Django不顯示CSS的效果(基於Django模板的靜態資源配置問題)DjangoCSS
- Win10系統怎麼在工作管理員顯示顯示卡溫度Win10
- win10 如何顯示隱藏資料夾_win10 如何顯示隱藏的資料夾Win10
- 英偉達:資料顯示顯示卡越好吃雞水平越高
- 資料庫下表和列名顯示資料庫
- 基於SPI的增強式外掛框架設計框架
- win10怎麼顯示隱藏資料夾 win10顯示隱藏資料夾的方法Win10
- 遊戲畫面中實時顯示FPS幀數和CPU和顯示卡使用率、溫度等資訊的方法遊戲
- window10怎麼顯示資料夾大小 win10 如何顯示資料夾大小Win10
- win10 如何顯示資料夾大小 win10如何直接顯示資料夾大小Win10
- Linux基礎命令---top顯示程式資訊Linux
- ICEE-Sensor-Temperature+Humidity:溫度溼度感測器: TI + Sensiron
- 菜鳥入門9,在I2C通訊協議的基礎上完成的溫溼度採集協議
- win10自帶顯示cpu溫度怎麼看 win10自帶cpu溫度顯示功能怎麼按出來Win10
- 軟體工程師樹莓派獲取室內溫溼度的坎坷之旅軟體工程工程師樹莓派
- 基於角色的訪問控制並根據不同的場景顯示不同的反饋資訊