OLED的顯示

一、I2C

I2C時序:時鐘線SCL高電平下:SDA由高變低代表啟動信號,開始發送數據;SCL高電平時,數據穩定,數據可以被讀走,開始進行讀操作,SCL低電平時,數據發生改變;每發送一個字節的數據都會產生應答信號;時鐘線SCL低電平下:SDA由低變高代表傳輸數據結束
在這里插入圖片描述
在這里插入圖片描述
初始化: P6數據線(SDA) P7時鐘線(SCL),選用P6和P7兩根引腳,并給他們置為低電平
在這里插入圖片描述
分別輸出數據線和時鐘線
在這里插入圖片描述
在這里插入圖片描述
開始信號:在空閑狀態下先將時鐘線置為低電平輸出0,數據線置位高電平,再根據開始信號的觸發條件:SCL高電平時,SDA由高變低,最后再拉低SCL(增加可靠性和準確行)

在這里插入圖片描述
停止信號:SDA由低變高,原理同開始信號大差不差
在這里插入圖片描述
ACK應答信號,假應答

發送一個字節

發送一個字節,時鐘線拉低時,發送數據;拉高讀取數據
void i2c_Send_Byte(char data)
{int i=0;for(i=7;i>=0;i--)//循環發送8位數據{i2c_SCL(0);//時鐘線拉低i2c_SDA(data &(0x1<<i));//發送數據i2c_SCL(1);//時鐘線拉高,讓接受方接收數據i2c_SCL(0);//時鐘線拉低}
}

發送多個字節

void i2c_Send_Bytes(int *p,int len)
{int i,j;for(j=0;j<len;j++){for(i=7;i>=0;i--){i2c_SCL(0);//時鐘線拉低i2c_SDA(p[j] &(0x1<<i));i2c_SCL(1);//時鐘線拉高,讓接受方接收數據i2c_SCL(0);//時鐘線拉低}i2c_Ack();//一個字節寫完過后需要有應答信號}
}

二、oled

數據格式
在這里插入圖片描述
在這里插入圖片描述

在這里插入圖片描述
在執行到Control Byte,寫命令或者寫數據是根據D\C(為0時命令,1時數據),根據數據格式寫
**加粗樣式**
在這里插入圖片描述

oled的初始化需要用到IIC(引腳的配置),隨后先將oled關閉,最后再打開,中間根據數據手冊而寫

清空函數:防止有外部因素的影響

void Oled_clear(void)
{int page;//頁int seg;//列for(page=0;page<8;page++)//按頁遍歷{for(seg=0;seg<128;seg++)//每一頁的每一列{Oled_Write_cmd(0xB0+page);//頁地址Oled_Write_cmd(0x00+(seg & 0xf));//設置seg列的低地址Oled_Write_cmd(0x10+((seg>>4)&0xf));//設置seg列的高地址Oled_Write_data(0x0);//清屏}}
}

每一頁有8行
在這里插入圖片描述
在這里插入圖片描述

設置行
在這里插入圖片描述
低位與高位
在這里插入圖片描述
顯示數據:32列需要使用4頁,32-64防止數據的覆蓋

unsigned char buff[8][32]={
{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xE0,0x3C,0x18,0x08,0x00,0x00,0x00,0x00,0xFC,0xF8,0x08,0x00,0x00,0x00,0x00,0x80,0xC0,0xE0,0x60,0x40,0x00,0x00,0x00,0x00},
{0x00,0x00,0x20,0x10,0x08,0x04,0x03,0xFF,0xFF,0x01,0x00,0x40,0x40,0x20,0x20,0x10,0xFF,0xFF,0x08,0x0C,0x06,0x02,0x03,0x01,0x00,0x00,0x00,0x00,0xF8,0x00,0x00,0x00},
{0x00,0x00,0x40,0x40,0x40,0x40,0x40,0x4F,0x47,0x40,0x40,0x40,0x40,0x40,0x40,0xFC,0xFC,0x43,0x43,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x63,0x63,0x41,0x00,0x00},
{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x7F,0x3F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},{0x00,0x00,0x00,0x00,0x08,0x10,0x70,0xE0,0x00,0x00,0x00,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0xFC,0xFC,0x48,0x40,0x40,0x40,0x40,0x40,0x60,0x60,0x40,0x00,0x00,0x00},
{0x00,0x04,0x0C,0x18,0x78,0x30,0x00,0x80,0x78,0x24,0x20,0x20,0xA2,0x22,0x22,0x22,0x22,0x22,0x3F,0x3F,0x22,0x22,0x22,0x22,0x23,0xA3,0x22,0x30,0x30,0x20,0x00,0x00},
{0x00,0x40,0x40,0xC0,0xC0,0xE0,0x7C,0x03,0x00,0x00,0x00,0x00,0xFF,0xFF,0x91,0x91,0x91,0x91,0x91,0x91,0x91,0x91,0x91,0x91,0x91,0xFF,0xFF,0x01,0x00,0x00,0x00,0x00},
{0x00,0x00,0x00,0x00,0x3F,0x3F,0x00,0x00,0x00,0x00,0x00,0x00,0x7F,0x3F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x10,0x30,0x70,0x3F,0x1F,0x00,0x00,0x00,0x00,0x00}};void Oled_Display(void)
{int page;//頁int seg;//列for(page=0;page<4;page++)//按頁遍歷{for(seg=0;seg<32;seg++)//每一頁的每一列{Oled_Write_cmd(0xB0+page);//頁地址Oled_Write_cmd(0x00+(seg & 0xf));//設置seg列的低地址Oled_Write_cmd(0x10+((seg>>4)&0xf));//設置seg列的高地址Oled_Write_data(buff[page][seg]);//顯示數據}}for(page=0;page<4;page++)//按頁遍歷{for(seg=32;seg<64;seg++)//每一頁的每一列{Oled_Write_cmd(0xB0+page);//頁地址Oled_Write_cmd(0x00+(seg & 0xf));//設置seg列的低地址Oled_Write_cmd(0x10+((seg>>4)&0xf));//設置seg列的高地址Oled_Write_data(buff[page+4][seg-32]);//顯示數據//當seg從 32 開始計數時,通過seg - 32可以將其轉換為從 0 開始的索引,//這樣就能正確地從buff數組中獲取與當前 OLED 頁面內列位置相對應的數據}}
}

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

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

相關文章

VMware運維效率提升50%,RVTools管理更簡單

RVTools 是一款專為 VMware 虛擬化環境量身打造的高效管理工具&#xff0c;基于 .NET 4.7.2 框架開發&#xff0c;并與 VMware vSphere Management SDK 8.0 和 CIS REST API 深度集成&#xff0c;能夠全面呈現虛擬化平臺的各項關鍵數據。該工具不僅能夠詳細列出虛擬機、CPU、內…

JS 中 json數據 與 base64、ArrayBuffer之間轉換

JS 中 json數據 與 base64、ArrayBuffer之間轉換 json 字符串進行 base64 編碼 function jsonToBase64(json) {return Buffer.from(json).toString(base64); }base64 字符串轉為 json 字符串 function base64ToJson(base64) {try {const binaryString atob(base64);const js…

介紹 C++ 中的智能指針及其應用:以 PyTorch框架自動梯度AutogradMeta為例

介紹 C 中的智能指針及其應用&#xff1a;以 AutogradMeta 為例 在 C 中&#xff0c;智能指針&#xff08;Smart Pointer&#xff09;是用于管理動態分配內存的一種工具。它們不僅自動管理內存的生命周期&#xff0c;還能幫助避免內存泄漏和野指針等問題。在深度學習框架如 Py…

python +t kinter繪制彩虹和云朵

python t kinter繪制彩虹和云朵 彩虹&#xff0c;簡稱虹&#xff0c;是氣象中的一種光學現象&#xff0c;當太陽光照射到半空中的水滴&#xff0c;光線被折射及反射&#xff0c;在天空上形成拱形的七彩光譜&#xff0c;由外圈至內圈呈紅、橙、黃、綠、藍、靛、紫七種顏色。事實…

Zabbix5.0版本(監控Nginx+PHP服務狀態信息)

目錄 1.監控Nginx服務狀態信息 &#xff08;1&#xff09;通過Nginx監控模塊&#xff0c;監控Nginx的7種狀態 &#xff08;2&#xff09;開啟Nginx狀態模塊 &#xff08;3&#xff09;配置監控項 &#xff08;4&#xff09;創建模板 &#xff08;5&#xff09;用默認鍵值…

Python入門教程 —— 字符串

字符串介紹 字符串可以理解為一段普通的文本內容,在python里,使用引號來表示一個字符串,不同的引號表示的效果會有區別。 字符串表示方式 a = "Im Tom" # 一對雙引號 b = Tom said:"I am Tom" # 一對單引號c = Tom said:"I\m Tom" # 轉義…

AcWing練習題:差

讀取四個整數 A,B,C,D&#xff0c;并計算 (AB?CD)的值。 輸入格式 輸入共四行&#xff0c;第一行包含整數 A&#xff0c;第二行包含整數 B&#xff0c;第三行包含整數 C&#xff0c;第四行包含整數 D。 輸出格式 輸出格式為 DIFERENCA X&#xff0c;其中 X 為 (AB?CD) 的…

小程序添加購物車業務邏輯

數據庫設計 DTO設計 實現步驟 1 判斷當前加入購物車中的的商品是否已經存在了 2 如果已經存在 只需要將數量加一 3 如果不存在 插入一條購物車數據 4 判斷加到本次購物車的是菜品還是套餐 Impl代碼實現 Service public class ShoppingCartServiceImpl implements Shoppin…

如何在谷歌瀏覽器中使用自定義搜索快捷方式

在數字時代&#xff0c;瀏覽器已經成為我們日常生活中不可或缺的一部分。作為最常用的瀏覽器之一&#xff0c;谷歌瀏覽器憑借其簡潔的界面和強大的功能深受用戶喜愛。本文將詳細介紹如何自定義谷歌瀏覽器的快捷工具欄&#xff0c;幫助你更高效地使用這一工具。 一、如何找到谷歌…

Python 3 與 Python 2 的主要區別

文章目錄 1. 語法與關鍵字print 函數整數除法 2. 字符串處理默認字符串類型字符串格式化 3. 輸入函數4. 迭代器和生成器range 函數map, filter, zip 5. 標準庫變化urllib 模塊configparser 模塊 6. 異常處理7. 移除的功能8. 其他重要改進數據庫操作多線程與并發類型注解 9. 總結…

關于IDE的相關知識之二【插件推薦】

成長路上不孤單&#x1f60a;&#x1f60a;&#x1f60a;&#x1f60a;&#x1f60a;&#x1f60a; 【14后&#x1f60a;///計算機愛好者&#x1f60a;///持續分享所學&#x1f60a;///如有需要歡迎收藏轉發///&#x1f60a;】 今日分享關于ide插件推薦的相關內容&#xff01…

如何獲取穩定高效的動態代理?

在數據采集的領域&#xff0c;動態代理IP是我們探索網絡世界的小助手&#xff0c;它不僅幫助我們高效地收集信息&#xff0c;還能在保護數據安全方面發揮重要作用。但如何在眾多選擇中找到最適合的那個——即穩定且高效的動態代理也是一大難題。 明確你的需求 首先&#xff0…

基于微信小程序的校園點餐平臺的設計與實現(源碼+SQL+LW+部署講解)

文章目錄 摘 要1. 第1章 選題背景及研究意義1.1 選題背景1.2 研究意義1.3 論文結構安排 2. 第2章 相關開發技術2.1 前端技術2.2 后端技術2.3 數據庫技術 3. 第3章 可行性及需求分析3.1 可行性分析3.2 系統需求分析 4. 第4章 系統概要設計4.1 系統功能模塊設計4.2 數據庫設計 5.…

原生js封裝ajax請求以及css實現提示效果和禁止點擊效果

<!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0,user-scalableno"><title>本地模式網絡切換</title>&l…

Pytorch的自動求導模塊

文章目錄 torch.autograd.backward()基本用法非標量張量的反向傳播保留計算圖指定輸入張量高階梯度計算 與 y.backward() 的區別torch.autograd.grad()基本用法非標量張量的梯度高階梯度計算多輸入、多輸出的梯度計算未使用的輸入張量保留計算圖 與 backward() 的區別 torch.au…

Mac OS

本文來自智譜清言 ------ Mac OS&#xff08;現稱為macOS&#xff09;是蘋果公司開發和銷售的操作系統&#xff0c;自1984年推出以來&#xff0c;它已經經歷了多次重大的演變和發展。 起源&#xff1a;Mac OS 1.0的誕生 - 1984年&#xff0c;蘋果發布了Macintosh計算機&#…

spring中使用@Validated,什么是JSR 303數據校驗,spring boot中怎么使用數據校驗

文章目錄 一、JSR 303后臺數據校驗1.1 什么是 JSR303&#xff1f;1.2 為什么使用 JSR 303&#xff1f; 二、Spring Boot 中使用數據校驗2.1 基本注解校驗2.1.1 使用步驟2.1.2 舉例Valid注解全局統一異常處理 2.2 分組校驗2.2.1 使用步驟2.2.2 舉例Validated注解Validated和Vali…

ubuntu常用快捷鍵和變量記錄

alias b‘cd …/’ alias bb‘cd …/…/’ alias bbb‘cd …/…/…/’ alias bbbb‘cd …/…/…/…/’ alias bbbbb‘cd …/…/…/…/…/’ alias bbbbbb‘cd …/…/…/…/…/…/’ alias apkinfo‘aapt dump badging’ alias npp‘notepad-plus-plus’ export ANDROID_HOME/h…

AWS S3文件存儲工具類

pom依賴 <!--aws-s3--> <dependency><groupId>com.amazonaws</groupId><artifactId>aws-java-sdk-s3</artifactId><version>1.12.95</version></dependency>S3Utils import cn.hutool.core.util.ZipUtil; import com.a…

【SOC 芯片設計 DFT 學習專欄 -- 測試向量生成 ATPG (Automatic Test Pattern Generation) 】

文章目錄 OverviewATPG 的基本功能ATPG 的工作流程ATPG 應用場景示例示例 1&#xff1a;檢測單個信號的 Stuck-at Fault示例 2&#xff1a;針對 Transition Fault 的 ATPG ATPG 工具與常用工具鏈ATPG 優化與挑戰 Overview 本文主要介紹 DFT scan 中的 ATPG 功能。在 DFT (Desi…