基于STC12C5A60S2系列1T 8051單片機的TM1638鍵盤數碼管模塊的數碼管顯示與單片機連接的按鍵的按鍵值的功能

基于STC12C5A60S2系列1T 8051單片機的TM1638鍵盤數碼管模塊的數碼管顯示與單片機連接的按鍵的按鍵值應用

  • STC12C5A60S2系列1T 8051單片機管腳圖
  • STC12C5A60S2系列1T 8051單片機I/O口各種不同工作模式及配置
  • STC12C5A60S2系列1T 8051單片機I/O口各種不同工作模式介紹
  • TM1638鍵盤數碼管模塊概述
  • TM1638鍵盤數碼管模塊特性說明
  • TM1638鍵盤數碼管模塊管腳定義
  • TM1638鍵盤數碼管模塊管腳功能說明
  • TM1638鍵盤數碼管模塊按鍵讀取原理
  • TM1638鍵盤數碼管模塊按鍵讀取時序
  • TM1638鍵盤數碼管模塊顯示地址寄存器
  • TM1638鍵盤數碼管模塊鍵掃數據寄存器
  • TM1638鍵盤數碼管模塊數據寄存器
  • TM1638鍵盤數碼管模塊數據命令寄存器
  • TM1638鍵盤數碼管模塊地址命令寄存器
  • TM1638鍵盤數碼管模塊顯示控制命令寄存器
  • TM1638鍵盤數碼管模塊數碼管串行數據傳輸
    • 數據接收(寫數據)
    • 數據讀取(讀數據)
  • TM1638鍵盤數碼管模塊串行數據地址傳輸模式時序圖
    • 地址自動加1模式時序圖
    • 固定地址模式時序圖
  • TM1637鍵盤數碼管模塊程序設計流程圖
    • 地址自動加1模式的程序設計流程圖
    • 固定地址模式的程序設計流程圖
  • TM1638鍵盤數碼管模塊應用電路
    • TM1638鍵盤數碼管模塊驅動共陰數碼管硬件電路
    • TM1638鍵盤數碼管模塊驅動共陽數碼管硬件電路
  • TM1638鍵盤數碼管模塊電氣參數
  • TM1638鍵盤數碼管模塊的數碼管顯示與單片機連接的按鍵的按鍵值編程
  • TM1638鍵盤數碼管模塊的數碼管顯示與單片機連接的按鍵的按鍵值實驗現象

STC12C5A60S2系列1T 8051單片機管腳圖

在這里插入圖片描述在這里插入圖片描述

STC12C5A60S2系列1T 8051單片機I/O口各種不同工作模式及配置

在這里插入圖片描述

STC12C5A60S2系列1T 8051單片機I/O口各種不同工作模式介紹

在這里插入圖片描述在這里插入圖片描述

TM1638鍵盤數碼管模塊概述

TM1638是帶鍵盤掃描接口的LED(發光二極管顯示器)驅動控制專用電路,內部集
成有MCU 數字接口、數據鎖存器、LED 高壓驅動、鍵盤掃描等電路。主要應用于冰箱、
空調 、家庭影院等產品的高段位顯示屏驅動。

TM1638鍵盤數碼管模塊特性說明

? 采用功率CMOS 工藝
? 顯示模式 10 段×8 位
? 鍵掃描(8×3bit)
? 輝度調節電路(占空比8 級可調)
? 串行接口(CLK,STB,DIO)
? 振蕩方式:RC 振蕩(450KHz+5%)
? 內置上電復位電路
? 采用SOP28封裝

TM1638鍵盤數碼管模塊管腳定義

在這里插入圖片描述

TM1638鍵盤數碼管模塊管腳功能說明

在這里插入圖片描述

TM1638鍵盤數碼管模塊按鍵讀取原理

在這里插入圖片描述在這里插入圖片描述

TM1638鍵盤數碼管模塊按鍵讀取時序

在這里插入圖片描述

TM1638鍵盤數碼管模塊顯示地址寄存器

在這里插入圖片描述

TM1638鍵盤數碼管模塊鍵掃數據寄存器

在這里插入圖片描述在這里插入圖片描述

TM1638鍵盤數碼管模塊數據寄存器

在這里插入圖片描述

TM1638鍵盤數碼管模塊數據命令寄存器

在這里插入圖片描述

TM1638鍵盤數碼管模塊地址命令寄存器

在這里插入圖片描述

TM1638鍵盤數碼管模塊顯示控制命令寄存器

在這里插入圖片描述

TM1638鍵盤數碼管模塊數碼管串行數據傳輸

數據接收(寫數據)

在這里插入圖片描述

數據讀取(讀數據)

在這里插入圖片描述

TM1638鍵盤數碼管模塊串行數據地址傳輸模式時序圖

地址自動加1模式時序圖

在這里插入圖片描述

固定地址模式時序圖

在這里插入圖片描述

TM1637鍵盤數碼管模塊程序設計流程圖

地址自動加1模式的程序設計流程圖

在這里插入圖片描述

固定地址模式的程序設計流程圖

在這里插入圖片描述

TM1638鍵盤數碼管模塊應用電路

TM1638鍵盤數碼管模塊驅動共陰數碼管硬件電路

在這里插入圖片描述

TM1638鍵盤數碼管模塊驅動共陽數碼管硬件電路

在這里插入圖片描述

TM1638鍵盤數碼管模塊電氣參數

在這里插入圖片描述在這里插入圖片描述在這里插入圖片描述

TM1638鍵盤數碼管模塊的數碼管顯示與單片機連接的按鍵的按鍵值編程

main.c

#include <stc12c5a60s2.h>
#include "Timer0.h"
#include "Key.h"
#include "Digitron.h"
#include "TM1638OfI2C.h"
//#include"intrins.h"
#define uchar unsigned char//自定義無符號字符型為uchar
#define uint unsigned int//自定義無符號整數型為uintvoid PortModeSet()//端口模式設置函數
{P0M1 = 0x00;P0M0 = 0x00;P1M1 = 0x00;P1M0 = 0x00;P2M1 = 0x00;P2M0 = 0x00;P3M1 = 0x00;P3M0 = 0x00;P4M1 = 0x00;P4M0 = 0x00;}void main()//主函數
{PortModeSet();//端口模式設置函數
//  Uart1Init();//串行口1工作模式1的8位串行口波特率可變初始化函數 波特率為9600bps 晶振為12MHzTimer0Init();//定時器0的16位定時模式1用12分頻定時2ms初始化函數 晶振為12MHzDigitronBootDisplay();//數碼管開機顯示函數TM1638OfI2CInit();//TM1638鍵盤數碼管模塊初始化函數 
//  TM1637AutomaticDisplay();//TM1637鍵盤數碼管模塊自動顯示函數while(1)//主循環{ KeyScanResult();//按鍵掃描結果函數}}

TM1638OfI2C.c

#include "TM1638OfI2C.h"
//#include "Key.h"
//#include "Digitron.h"
#include"intrins.h"
#define uchar unsigned char//自定義無符號字符型為uchar
#define uint unsigned int//自定義無符號整數型為uintvoid TM1638OfI2CWriteByte(uchar Data)//TM1638鍵盤數碼管模塊寫字節函數
{uchar i;//聲明字節位個數變量for (i = 0; i < 8; i++)//循環字節位個數{TM1638CLK = 0;//拉低TM1638鍵盤數碼管模塊時鐘線端口 讓TM1638鍵盤數碼管模塊進行輸出字節某位操作TM1638DIO =  Data & 0x01;//取出該數據的字節最低位 如何取出該數據的字節最低位?為什么是&0x01?而不是|0x01?以兩個數據的字節來說明 如:0000 0010 和 0000 0011 它們的最低位分別為0和1 &0x01后是0和1 也是它們的最低位0和1 如果|0x01后都是1 就再也不是它們原來的最低位0和1 Data >>= 1;//取出該數據的字節最低位后 剩余字節往右移一位 形成新的數據的字節TM1638CLK = 1;//拉高TM1638鍵盤數碼管模塊時鐘線端口 結束TM1638鍵盤數碼管模塊輸出字節某位操作}}void TM1638OfI2CWriteCommand(uchar Command)//TM1638鍵盤數碼管模塊寫命令函數
{TM1638STB = 0;//拉低TM1638鍵盤數碼管模塊片選線端口 讓TM1638鍵盤數碼管模塊進行寫操作TM1638OfI2CWriteByte(Command);//通過TM1638鍵盤數碼管模塊寫字節函數來寫命令TM1638STB = 1;//拉高TM1638鍵盤數碼管模塊片選線端口 結束TM1638鍵盤數碼管模塊寫操作}void TM1638OfI2CWriteData(uchar Address,uint Data)//TM1638鍵盤數碼管模塊寫數據函數 在指定的顯示地址寫入數據
{TM1638STB = 0;//拉低TM1638鍵盤數碼管模塊片選線端口 讓TM1638鍵盤數碼管模塊進行寫操作TM1638OfI2CWriteByte(0x00 | Address);//通過TM1638鍵盤數碼管模塊寫字節函數來寫顯示地址TM1638OfI2CWriteByte(Data);//通過TM1638鍵盤數碼管模塊寫字節函數來寫數據TM1638STB = 1;//拉高TM1638鍵盤數碼管模塊片選線端口 結束TM1638鍵盤數碼管模塊寫操作}/***** uhar TM1638OfI2CReadByte()//TM1638鍵盤數碼管模塊讀字節函數
{uchar i;//聲明字節位個數變量uchar ByteData = 0;//聲明字節數據變量TM1638DIO = 1;//拉高TM1638鍵盤數碼管模塊數據線端口 讀入數據for(i = 0; i < 8; i++)//循環字節位個數{ByteData >>= 1;//字節數據往右移一位 形成新的數據的字節 如:1010 1010 右移一位 變為0101 0101TM1638CLK = 0;//拉低TM1638鍵盤數碼管模塊時鐘線端口 讓TM1638鍵盤數碼管模塊進行讀取字節某位操作if(TM1638DIO)//判斷TM1638鍵盤數碼管模塊數據線端口是否為高電平ByteData |= 0x80;//置該數據的字節最高位為1 其余位不變 如何置該數據的字節最高位為1?為什么是|=0x80?而不是&=0x80?以兩個數據的字節來說明 如:0100 0000 和 1000 0000 它們的最高位分別為0和1 |=0x80后都是1 也是它們的最高位都置為1 如果&=0x80后最高位分別是0和1 就再也不是它們原來的最高位都置為1 TM1638CLK = 1;//拉高TM1638鍵盤數碼管模塊時鐘線端口 結束TM1638鍵盤數碼管模塊讀取字節某位操作}return ByteData;//返回字節數據}
*****/ /***** uchar TM1638OfI2CReadKey()//TM1638鍵盤數碼管模塊讀按鍵函數
{uchar KeyByteArrary[4];//聲明按鍵字節值數組變量uchar i;//聲明按鍵字節值數組個數變量 uchar KeyValue = 0;//聲明按鍵數值變量TM1638STB=0;//拉低TM1638鍵盤數碼管模塊片選線端口 讓TM1638鍵盤數碼管模塊進行讀操作TM1638OfI2CWriteByte(0x42); //設置TM1638鍵盤數碼管模塊的數據命令寄存器 寫鍵掃數據命令 注意:這里要先寫完4個字節鍵值才能將TM1638STB置1 否則寫鍵值無效for (i = 0; i < 4; i++)//循環按鍵字節值數組中字節值個數 共有4個按鍵字節值KeyByteArrary[i] = TM1638OfI2CReadByte();//發送TM1638ReadByte(0x42)讀鍵掃數據命令后 開始讀取按鍵數據BYTE1—BYTE4共4個字節 從低位開始讀取數據 TM1638鍵盤數碼管模塊上的K和KS引腳對應的按鍵按下時 相對應的按鍵字節值內的字節位為1TM1638STB=1;//拉高TM1638鍵盤數碼管模塊片選線端口 結束TM1638鍵盤數碼管模塊進行讀操作for (i = 0; i < 4; i++)//循環按鍵字節值數組中字節值個數 共有4個按鍵字節值KeyValue |= KeyByteArrary[i] << i;//通過按鍵字節值循環取值來確定TM1638鍵盤數碼管模塊上的K引腳下對應的KS系列八個按鍵的前四個按鍵按鍵字節值   for (i = 0; i < 8; i++)//循環TM1638鍵盤數碼管模塊上的K引腳下對應的KS系列八個按鍵if ((0x01 << i) == KeyValue)//判斷TM1638鍵盤數碼管模塊上的K引腳下對應的KS系列八

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

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

相關文章

C++面向對象程序設計 - 輸入和輸出

程序的輸入指的是文件將數據傳送給程序&#xff0c;程序的輸出指的是從程序將數據傳送輸出文件。 C的輸入和和輸出包括以下三個方面&#xff1a; 對系統指定的標準設備的輸入和輸出&#xff0c;即從鍵盤輸入數據&#xff0c;輸出到顯示器屏幕。以外存磁盤&#xff08;或光盤、…

初探 Spring Boot Starter Security:構建更安全的Spring Boot應用

引言 Spring Boot 作為 Java 生態系統下的熱門框架&#xff0c;以其簡潔和易上手著稱。而在構建 Web 應用程序時&#xff0c;安全性始終是開發者必須重視的一個方面。Spring Boot Starter Security 為開發者提供了一個簡單但功能強大的安全框架&#xff0c;使得實現身份驗證和…

從動態代理角度簡單理解Spring AOP

1. 概述 動態代理 是指在運行時&#xff0c;動態地創建目標類的代理對象&#xff0c;并對其中特定的方法進行攔截或增強的技術。這種技術主要用于在不修改目標類代碼的情況下&#xff0c;增強目標類的功能。 在Java中&#xff0c;動態代理主要基于Java的反射機制和接口來實現…

gdc2024:Raytracing in Snowdrop技術實現與性能優化策略

在今年的GDC&#xff08;游戲開發者大會&#xff09;的Advanced Graphics Summit上&#xff0c;關于Snowdrop引擎中光線追蹤技術的討論引起了廣泛關注。 一、光線追蹤全局照明的實現細節 屏幕空間追蹤&#xff1a; 屏幕空間追蹤從相機出發&#xff0c;對屏幕上的每個像素點生成…

DDL—表—數據類型—字符串類型相關語法

&#xff08;1&#xff09;表格可視化 普通字符串 類型大小描述CHAR0~255 bytes定長字符串&#xff0c;其表示即使你存儲一個字符&#xff0c;它也會占用你括號里個數的字符的空間&#xff0c;因為未占用的字符的其它空間會用空格進行補位。需要再后面跟一個參數&#xff1a;…

harmony 鴻蒙ArkUI動畫/交互事件開發常見問題(ArkTS)

ArkUI動畫/交互事件開發常見問題(ArkTS) 焦點事件onBlur/onFocus回調無法觸發(API 9) 問題現象 焦點事件onBlur/onFocus回調無法觸發 解決措施 焦點事件默認情況下需要外接鍵盤的Tab鍵&#xff0c;或方向鍵觸發&#xff0c;點擊觸發焦點事件需要添加焦點控制屬性focusOnTo…

Linux 監控USB硬盤插拔事件并自動掛載和卸載

定義udev規則來監控USB插拔事件。 一、在/etc/udev/rules.d目錄下隨意創建一個規則文件&#xff0c;例&#xff1a;99-usb-mount.rules KERNEL"sd[b-z]?",SUBSYSTEM"block",RUN"/usr/local/src/mountusb.sh %k $env{ACTION}"二、創建 /usr/lo…

基于arm64架構國產操作系統|Linux下的RTMP|RTSP低延時直播播放器開發探究

技術背景 2014年4月8日起&#xff0c;美國微軟公司停止了對Windows XP SP3操作系統提供服務支持&#xff0c;這引起了社會和廣大用戶的廣泛關注和對信息安全的擔憂。而2020年對Windows7服務支持的終止再一次推動了國產系統的發展。工信部對此表示&#xff0c;將繼續加大力度&a…

C++ 紅黑樹

目錄 1.紅黑樹的概念 2.紅黑樹的性質 3.紅黑樹節點的定義 4.紅黑樹的插入操作 5.數據測試 1.紅黑樹的概念 紅黑樹&#xff0c;是一種二叉搜索樹&#xff0c;但在每個結點上增加一個存儲位表示結點的顏色&#xff0c;可以是Red或Black。 通過對任何一條從根到葉子的路徑上各個…

C++基礎與深度解析 | 泛型算法 | bind | Lambda表達式

文章目錄 一、泛型算法1.泛型算法的分類2.迭代器分類 二、bind與lambda表達式1.bind2.lambda表達式 三、泛型算法的改進--ranges(c20) 一、泛型算法 C中的泛型算法是標準模板庫&#xff08;STL&#xff09;的一部分&#xff08;這里重點討論 C 標準庫中定義的算法&#xff0c;而…

【vue-cli搭建vue項目的過程2.x】

vue-cli搭建vue項目 vue-cli搭建vue項目安裝node安裝vue-cli腳手架并創建項目安裝 Ant Design Vue或element-ui(筆者使用Ant-design-vue組件&#xff0c;并全局引入)開發安裝三方庫包1、Package.json文件---引入如下package.json文件執行npm i或npm install命令即可下載如下依賴…

數據結構~~鏈式二叉樹

目錄 一、基本概念 鏈式存儲概念 二、鏈式二叉樹的結構 鏈式二叉樹結構 構建鏈式二叉樹 二叉樹的遍歷 二叉樹節點和高度等 二叉樹銷毀 三、鏈式二叉樹的練習 相同的樹 對稱二叉樹 另外一顆子樹 二叉樹前序遍歷 二叉樹遍歷 四、完整代碼 Tree.h Tree.c 五、總結 一…

Linux服務升級:Predixy 升級代理 Redis-cluster 集群

目錄 一、實驗 1.環境 2. 啟動Redis服務 3.Predixy 升級代理 Redis-cluster 集群 二、問題 1. Predixy進行set操作報錯 2.如何創建腳本啟動predixy 3.Redis代理對比 一、實驗 1.環境 &#xff08;1&#xff09;主機 表1 主機 系統版本節點軟件IP備注CentOS7.9Redis…

Springboot開發 -- Postman 調試類型詳解

引言 在 Spring Boot 應用開發過程中&#xff0c;接口測試是必不可少的一環。Postman 作為一款強大的 API 開發和測試工具&#xff0c;可以幫助開發者輕松構建、測試和管理 HTTP 請求。本文將為大家介紹如何在 Spring Boot 開發中使用 Postman 進行接口測試。 一、準備工作 安…

C/C++|malloc分配內存詳解

看本節前&#xff0c;希望讀者有linux內存分布的基本概念&#xff0c;可以閱讀這篇文章&#xff1a; 進程虛擬地址空間和函數調用棧 在本節中希望讀者可以一口氣閱讀完所有內容。 本博客內容全部來自小林coding&#xff1a;malloc 是如何分配內存的&#xff1f; 這里僅為筆記記…

Python-圖片旋轉360,保存對應圖片

#Author &#xff1a;susocool #Creattime:2024/5/25 #FileName:turn360 #Description: 會旋轉指定的圖像文件360度&#xff0c;并將每個旋轉后的圖像保存到指定目錄&#xff0c;文件名以旋轉角度命名。 from PIL import Imagedef rotate_and_save(image_path, output_dir) :# …

Linux/Ubuntu 中安裝 ZeroTier,實現內網穿透,2分鐘搞定

相信很多人都有遠程連接家中設備的需求&#xff0c;如遠程連接家中的NAS、Windows等服務&#xff0c;所以會涉及到一個內網穿透工具的使用&#xff0c;如果沒有公網IP的情況下&#xff0c;推薦大家使用ZeroTier&#xff0c;這是一款強大的內網穿透工具。 mac和windows版的操作…

Nginx-狂神說

Nginx概述 公司產品出現瓶頸&#xff1f; 我們公司項目剛剛上線的時候&#xff0c;并發量小&#xff0c;用戶使用的少&#xff0c;所以在低并發的情況下&#xff0c;一個jar包啟動應用就夠了&#xff0c;然后內部tomcat返回內容給用戶。 但是慢慢的&#xff0c;使用我們平臺…

HTTP 各版本差異

http1.0 它的特點是每次請球和響應完畢后都會銷毀TCP 連接。同時規走前一個響應完成后才發送下一個請求。這樣做有兩個問題&#xff1a; 無法復用連接了。 每次請求都要創建新的TCP連接&#xff0c;完成三次握手和四次揮手。網絡利用率低 隊頭阻塞 如果前一個請求被某種原因阻…

K8S認證|CKA題庫+答案| 13. sidecar 代理容器日志

目錄 13、使用 sidecar 代理容器日志 CKA v1.29.0模擬系統免費下載試用&#xff1a; 題目&#xff1a; 開始操作&#xff1a; 1&#xff09;、切換集群 2&#xff09;、生成yaml文件 3&#xff09;、官網找模板 4&#xff09;、編輯yaml文件 5&#xff09;、應用yaml…