TM1640學習手冊及示例代碼

數據手冊?

TM1640數據手冊

數據手冊解讀

這里我們看管腳定義DIN和SCLK,一個數據線一個時鐘線

SEG1~SEG8為段碼,GRID1~GRID16為位碼(共陰極情況下)

這里VDD給5V

?數據指令

數據命令設置

地址命令設置

顯示控制命令

共陰極硬件連接圖

這里我們只介紹共陰極,共陽極需要在代碼里調整,有興趣可以私聊我

注意事項

TM1640驅動源碼(非阻塞)

tm1640.c
//******************************************************************************
/*** @Name       : TM1640_Start* @Date       : 2025年4月21日* @Description: TM1640起始* @Parameters : None* @Return     : None*/  
void TM1640_Start(void)
{TM_SDA_H();TM_SCL_H();__NOP();__NOP();TM_SDA_H();__NOP();__NOP();TM_SDA_L();__NOP();__NOP();__NOP();__NOP();TM_SCL_L();__NOP();__NOP();
}//******************************************************************************
/*** @Name       : TM1640_Stop* @Date       : 2025年4月21日* @Description: TM1640結束* @Parameters : None* @Return     : None*/  
void TM1640_Stop(void)
{TM_SCL_H();__NOP();__NOP();TM_SDA_L();__NOP();__NOP();TM_SDA_H();__NOP();__NOP();TM_SCL_L();TM_SDA_L();
}//******************************************************************************
/*** @Name       : TM1640_WriteData* @Date       : 2025年4月21日* @Description: 寫入一字節的數據* @Parameters : oneByte:需要發送的數據字節* @Return     : None*/  
void TM1640_WriteData(uint8_t oneByte)
{uint8_t index;for(index=0;index<8;index++){TM_SCL_L();if(oneByte&0x01) TM_SDA_H();elseTM_SDA_L();__NOP();__NOP();__NOP();TM_SCL_H();oneByte=oneByte>>1;}TM_SCL_L();__NOP();__NOP();__NOP();__NOP();TM_SDA_L();__NOP();__NOP();
}//******************************************************************************
/*** @Name       : TM1640_Handle* @Date       : 2025年4月21日* @Description: 啟動、寫數據和控制顯示* @Parameters : None* @Return     : None*/  
void TM1640_Handle(void)
{uint8_t index;TM1640_Start();TM1640_WriteData(CMD_DATA_1);//地址自動加1,普通模式TM1640_Stop();TM1640_Start();TM1640_WriteData(START_ADDRESS_1);for(index=0;index<smg_num;index++){TM1640_WriteData(smg[index]);}TM1640_Stop();TM1640_Start();TM1640_WriteData(BRIGHTNESS_LEVEL_4);TM1640_Stop();__NOP();}

這里smg[index]需要你自己去定義,然后將數組傳入tm1640中就可以?

tm1640.h
/*數碼管數量*/
#define smg_num    16(最大16位)
/*顯示控制命令,設置亮度打開顯示屏,共8級亮度,也就是設置不同的脈沖寬度*/
#define BRIGHTNESS_LEVEL_1  0x88
#define BRIGHTNESS_LEVEL_2  0x89
#define BRIGHTNESS_LEVEL_3  0x8a
#define BRIGHTNESS_LEVEL_4  0x8b
#define BRIGHTNESS_LEVEL_5  0x8c
#define BRIGHTNESS_LEVEL_6  0x8d
#define BRIGHTNESS_LEVEL_7  0x8e
#define BRIGHTNESS_LEVEL_8  0x8f
#define CLOSE_DISPLAY       0x80/*數據設置命令*/
#define CMD_DATA_1          0X40 //地址自動加1,普通模式       0100 0000
#define CMD_DATA_2          0X44 //地址固定,普通模式          0100 0100
#define CMD_DATA_3          0X48 //地址自動加1,內部測試模式   0100 1000
#define CMD_DATA_4          0X4C //地址固定,內部測試模式      0100 1100/*地址命令設置 顯存地址為0xC0-0xCF*/
#define START_ADDRESS_1       0XC0 //第一個數碼管
#define START_ADDRESS_2       0XC1 
#define START_ADDRESS_3       0XC2 
#define START_ADDRESS_4       0XC3 
#define START_ADDRESS_5       0XC4 
#define START_ADDRESS_6       0XC5 
#define START_ADDRESS_7       0XC6 
#define START_ADDRESS_8       0XC7 
#define START_ADDRESS_9       0XC8 
#define START_ADDRESS_10      0XC9 
#define START_ADDRESS_11      0XCa 
#define START_ADDRESS_12      0XCb 
#define START_ADDRESS_13      0XCc 
#define START_ADDRESS_14      0XCd 
#define START_ADDRESS_15      0XCe 
#define START_ADDRESS_16      0XCf#define TM_SCL_H()  GPIOB->BSRR = GPIO_PIN_6
#define TM_SCL_L()  GPIOB->BRR = GPIO_PIN_6#define TM_SDA_H()  GPIOB->BSRR = GPIO_PIN_7
#define TM_SDA_L()  GPIOB->BRR = GPIO_PIN_7

?

?

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

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

相關文章

uni-app 開發企業級小程序課程

課程大小&#xff1a;7.7G 課程下載&#xff1a;https://download.csdn.net/download/m0_66047725/90616393 更多資源下載&#xff1a;關注我 備注&#xff1a;缺少兩個視頻5-14 tabs組件進行基本的數據展示和搜索歷史 處理searchData的刪除操作 1-1導學.mp4 2-10小程序內…

判斷點是否在多邊形內

代碼段解析: const intersect = ((yi > y) !== (yj > y)) && (x < (xj - xi) * (y - yi) / (yj - yi) + xi); 第一部分:(yi > y) !== (yj > y) 作用:檢查點 (x,y) 的垂直位置是否跨越多邊形的當前邊。 yi > y 和 yj > y 分別檢查邊的兩個端…

【redis】集群 如何搭建集群詳解

文章目錄 集群搭建1. 創建目錄和配置2. 編寫 docker-compose.yml完整配置文件 3. 啟動容器4. 構建集群超時 集群搭建 基于 docker 在我們云服務器上搭建出一個 redis 集群出來 當前節點&#xff0c;主要是因為我們只有一個云服務器&#xff0c;搞分布式系統&#xff0c;就比較…

[langchain教程]langchain03——用langchain構建RAG應用

RAG RAG過程 離線過程&#xff1a; 加載文檔將文檔按一定條件切割成片段將切割的文本片段轉為向量&#xff0c;存入檢索引擎&#xff08;向量庫&#xff09; 在線過程&#xff1a; 用戶輸入Query&#xff0c;將Query轉為向量從向量庫檢索&#xff0c;獲得相似度TopN信息將…

C語言復習筆記--字符函數和字符串函數(下)

在上篇我們了解了部分字符函數及字符串函數,下面我們來看剩下的字符串函數. strstr 的使用和模擬實現 老規矩,我們先了解一下strstr這個函數,下面看下這個函數的函數原型. char * strstr ( const char * str1, const char * str2); 如果沒找到就返回NULL指針. 下面我們看下它的…

FreeRTOS中的優先級翻轉問題及其解決方案:互斥信號量詳解

FreeRTOS中的優先級翻轉問題及其解決方案&#xff1a;互斥信號量詳解 在實時操作系統中&#xff0c;任務調度是基于優先級的&#xff0c;高優先級任務應該優先于低優先級任務執行。但在實際應用中&#xff0c;有時會出現"優先級翻轉"的現象&#xff0c;嚴重影響系統…

深度學習-全連接神經網絡

四、參數初始化 神經網絡的參數初始化是訓練深度學習模型的關鍵步驟之一。初始化參數&#xff08;通常是權重和偏置&#xff09;會對模型的訓練速度、收斂性以及最終的性能產生重要影響。下面是關于神經網絡參數初始化的一些常見方法及其相關知識點。 官方文檔參考&#xff1…

GIS開發筆記(9)結合osg及osgEarth實現三維球經緯網格繪制及顯隱

一、實現效果 二、實現原理 按照5的間隔分別創建經緯線的節點,掛在到組合節點,組合節點掛接到根節點。可以根據需要設置間隔度數和線寬、線的顏色。 三、參考代碼 //創建經緯線的節點 osg::Node *GlobeWidget::createGraticuleGeometry(float interval, const osg::Vec4 …

《Relay IR的基石:expr.h 中的表達式類型系統剖析》

TVM Relay源碼深度解讀 文章目錄 TVM Relay源碼深度解讀一 、從Constant看Relay表達式的設計哲學1. 類定義概述2. ConstantNode 詳解1. 核心成員2. 關鍵方法3. 類型系統注冊 3. Constant 詳解1. 核心功能 二. 核心內容概述(1) Relay表達式基類1. RelayExprNode 和 RelayExpr 的…

自動駕駛地圖數據傳輸協議ADASIS v2

ADASIS&#xff08;Advanced Driver Assistance Systems Interface Specification&#xff09;直譯過來就是 ADAS 接口規格&#xff0c;它要負責的東西其實很簡單&#xff0c;就是為自動駕駛車輛提供前方道路交通相關的數據&#xff0c;這些數據被抽象成一個標準化的概念&#…

Flutter 狀態管理 Riverpod

Android Studio版本 Flutter SDK 版本 將依賴項添加到您的應用 flutter pub add flutter_riverpod flutter pub add riverpod_annotation flutter pub add dev:riverpod_generator flutter pub add dev:build_runner flutter pub add dev:custom_lint flutter pub add dev:riv…

【EasyPan】MySQL主鍵與索引核心作用解析

【EasyPan】項目常見問題解答&#xff08;自用&持續更新中…&#xff09;匯總版 MySQL主鍵與索引核心作用解析 一、主鍵&#xff08;PRIMARY KEY&#xff09;核心作用 1. 數據唯一標識 -- 創建表時定義主鍵 CREATE TABLE users (id INT AUTO_INCREMENT PRIMARY KEY,use…

IcePlayer音樂播放器項目分析及學習指南

IcePlayer音樂播放器項目分析及學習指南 項目概述 IcePlayer是一個基于Qt5框架開發的音樂播放器應用程序&#xff0c;使用Visual Studio 2013作為開發環境。該項目實現了音樂播放、歌詞顯示、專輯圖片獲取等功能&#xff0c;展現了桌面應用程序開發的核心技術和設計思想。 技…

vscode 打開新頁簽

目錄 vscode 打開新頁簽 完整settings.json內容&#xff1a; vscode 打開新頁簽 .vscode目錄中 新建settings.json 在 settings.json 文件中&#xff0c;添加或修改以下行&#xff1a; json "workbench.editor.enablePreview": false 這將禁用預覽模式&#xff0…

C語言高頻面試題——常量指針與指針常量區別

1. 常量指針&#xff08;Pointer to Constant&#xff09; 定義&#xff1a; 常量指針是指向一個常量數據的指針&#xff0c;即指針指向的內容不能通過該指針被修改。 語法&#xff1a; const int* ptr;或者&#xff1a; int const* ptr;解釋&#xff1a; const修飾的是指…

c++基礎·列表初始化

目錄 一、列表初始化的核心優勢 二、基礎數據類型與數組初始化 1. 基礎類型初始化 2. 數組初始化 三、類與結構體初始化 1. 構造函數匹配規則 2. 注意事項 四、標準容器初始化 五、聚合類型&#xff08;Aggregate Types&#xff09;初始化 1. 聚合類型定義 2. 初始化…

數據分析與產品、運營、市場之間如何有效對齊

數據分析的重要性在于它能夠將海量的原始信息轉化為可操作的洞察。以產品開發為例,通過用戶行為數據的分析,產品經理可以清晰了解哪些功能被頻繁使用,哪些設計導致用戶流失,從而優化迭代方向。運營團隊則依靠數據分析來監控供應鏈效率、預測需求波動,甚至通過實時數據調整…

[C]基礎11.深入理解指針(3)

博客主頁&#xff1a;向不悔本篇專欄&#xff1a;[C]您的支持&#xff0c;是我的創作動力。 文章目錄 0、總結1、字符指針變量2、數組指針變量2.1 數組指針變量是什么&#xff1f;2.2 數組指針變量怎么初始化&#xff1f; 3、二維數組傳參的本質4、函數指針變量4.1 函數指針變量…

【漏洞復現】CVE-2024-38856(ApacheOfbiz RCE)

【漏洞復現】CVE-2024-38856&#xff08;ApacheOfbiz RCE&#xff09; 1. 漏洞描述 Apache OFBiz 是一個開源的企業資源規劃&#xff08;ERP&#xff09;系統。它提供了一套企業應用程序&#xff0c;用于集成和自動化企業的許多業務流程。 這個漏洞是由于對 CVE-2023-51467 的…

C++入門小館: 深入string類(二)

嘿&#xff0c;各位技術潮人&#xff01;好久不見甚是想念。生活就像一場奇妙冒險&#xff0c;而編程就是那把超酷的萬能鑰匙。此刻&#xff0c;陽光灑在鍵盤上&#xff0c;靈感在指尖跳躍&#xff0c;讓我們拋開一切束縛&#xff0c;給平淡日子加點料&#xff0c;注入滿滿的pa…