基于STC12C5A60S2系列1T 8051单片机的TM1638键盘数码管模块的数码管显示与TM1638芯片连接的按键的按键值应用

基于STC12C5A60S2系列1T 8051单片机的TM1638键盘数码管模块的数码管显示与单片机连接的按键的按键值的功能 TM1638是带键盘扫描接口的LED(发光二极管显示器)驱动控制专用电路,内部集成有MCU 数字接口、数据锁存器、LED 高压驱动、键盘扫描等电路。主要应用于冰箱、空调 、家庭影院等产品的高段位显示屏驱动。main.c#define uchar unsigned char//自定义无符号字符型为uchar#define uint unsigned int//自定义无符号整数型为uintvoid PortModeSet()//端口模式设置函数void main()//主函数。 阅读详情

基于STC12C5A60S2系列1T 8051单片机的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键盘数码管模块电气参数

在这里插入图片描述在这里插入图片描述在这里插入图片描述

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//自定义无符号整数型为uint

 void 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 晶振为12MHz
  Timer0Init();//定时器0的16位定时模式1用12分频定时2ms初始化函数 晶振为12MHz
  DigitronBootDisplay();//数码管开机显示函数
  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//自定义无符号整数型为uint

 void 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键盘数码管模块写操作
 }

 uchar TM1638OfI2CReadByte()//TM1638键盘数码管模块读字节函数
{
   
   
  uchar i;//声明字节位个数变量
  uchar ByteData = 0;//声明字节数据变量
  TM1638DIO = 1;//拉高TM1638键盘数码管模块数据线端口 读入数据
  for(i = 0; i < 8; i++)//循环字节位个数
 {
   
   
   ByteData >>= 1;//字节数据往右移一位 形成新的数据的字节 如:1010 1010 右移一位 变为0101 0101
   TM1638CLK = 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引脚对应的按键按下时 相对应的按键字节值内的字节位为1
基于STC12C5A60S2系列1T 8051单片机的TM1638键盘数码管模块的按键扫描、数码管显示按键值、显示按键LED应用 TM1638是带键盘扫描接口的LED(发光二极管显示器)驱动控制专用电路,内部集成有MCU 数字接口、数据锁存器、LED 高压驱动、键盘扫描等电路。主要应用于冰箱、空调 、家庭影院等产品的高段位显示屏驱动。main.c//声明TM1638键盘数码管模块显示按键数值数组变量 即TM1638键盘数码管模块每个数码管显示按键数值的数组//共阴数码管 显示0123456789ABCDEF以及熄灭//共阴数码管显示0123456789ABCDEF以及熄灭。 阅读详情

相关推荐

基于STC12C5A60S2系列1T 8051单片机的TM1637键盘数码管模块的数码管显示与TM1637芯片连接的按键的按键值的功能

TM1638是带键盘扫描接口的LED(发光二极管显示器)驱动控制专用电路,内部集成有MCU 数字接口、数据锁存器、LED 高压驱动、键盘扫描等电路。主要应用于冰箱、空调 、家庭影院等产品的高段位显示屏驱动。main.c#define uchar unsigned char//自定义无符号字符型为uchar#define uint unsigned int//自定义无符号整数型为uintvoid PortModeSet()//端口模式设置函数void main()//主函数。

CWQLTYH的博客 1528

基于STC12C5A60S2系列1T 8051单片机的TM1638键盘数码管模块的数码管显示应用

TM1638是带键盘扫描接口的LED(发光二极管显示器)驱动控制专用电路,内部集成有MCU 数字接口、数据锁存器、LED 高压驱动、键盘扫描等电路。主要应用于冰箱、空调 、家庭影院等产品的高段位显示屏驱动。main.cvoid main(void)//主函数//声明TM1638键盘数码管模块数码管个数变量void TM1638Init(void)//TM1638键盘数码管模块初始化函数for(i=0;i

CWQLTYH的博客 1481

基于STC12C5A60S2系列1T 8051单片机的TM1637键盘数码管模块的数码管显示与单片机连接的按键的按键值的功能

TM1638是带键盘扫描接口的LED(发光二极管显示器)驱动控制专用电路,内部集成有MCU 数字接口、数据锁存器、LED 高压驱动、键盘扫描等电路。主要应用于冰箱、空调 、家庭影院等产品的高段位显示屏驱动。main.c#define uchar unsigned char//自定义无符号字符型为uchar#define uint unsigned int//自定义无符号整数型为uintvoid PortModeSet()//端口模式设置函数void main()//主函数。

CWQLTYH的博客 1152

使用STM32控制TMI1638输出8个LED8个数码管8个按键

本次实验用到的TMI1638是淘宝优信电子上面购买的,可实现8个LED8个数码管8个按键。

tangxiaokang的博客 979

TM1638芯片 LED数码管驱动器 详细介绍

  相比MAX7219,TM1638的操作更加复杂,但是功能也更加强大 目录TM1638简介器件特性TM1638引脚图引脚功能说明TM1638地址组 显存地址 键值地址TM1638指令表 指令分类 数据命令 地址命令 显示控制命令TM1638的两种数码管使用方式共阴方式共阳方式TM1638数据格式按键扫描和键扫复用按键扫描电路按键复用自己编写的驱动程序(C51) TM1638简介   TM1638...

DaveoCKII的博客 3万+

STC单片机+TM1638用3个IO口实现24个独立按键显示

STC12+TM1638用3个IO口实现24个独立按键显示

perseverance51博客 1166

TM1638在C51单片机系统中的应用与编程

TM1638模块的通信协议是一个基于串行接口的协议,具备简单的命令/数据结构,使得通信过程相对直观。协议工作在单主单从模式,即单片机作为主设备控制TM1638从设备。基本的通信步骤包括:数据位格式:数据以8位字节为单位进行传输,最高位先行。命令集:TM1638定义了一系列的命令集,例如显示控制、读写存储器等。数据格式:数据传输可以是单字节或多字节,取决于命令字节。时序控制:通信过程中时钟线CLK和数据线DATA的逻辑状态变化控制数据的发送和接收。

weixin_32480007的博客 1209

一个简单的驱动程序例程

可以参考。配套博客解释,可以一看。。。http://blog.youkuaiyun.com/li171049/article/details/17612283

51单片机 IO口模拟串口通讯C程序

51单片机 IO口模拟串口通讯C程序

TM1638测试程序C51.rar

注释非常详细,已经测试,有待开发欢迎下来进阶开发,

TM1638驱动程序

TM1638驱动程序 可驱动4个按键 2个数码管

TM1638.rar_C语言_LED驱动控制片_TM1638_stc15控制TM1638_tm1638驱动电流

TM1638 LED驱动控制专用电路C语言驱动

TM1638驱动程序_1638驱动led程序_1638摁键程序_TM1638_tm1638程序_

简单的TM1638的按键及LED的驱动程序

TM1638芯片使用心得

这段时间因为设计项目需要用到数码管和按钮,因为数码管过多,没有办法使用IO扫描方式,所以就是使用了专用IC驱动芯片,TM1638芯片可以驱动数码可以驱动矩阵键盘。

win 11bitlocker恢复密匙一般情况的解决方式(这里指的是你现在使用的微软账户一直没有变更过)

本来没有打算写这一篇解决帖子的,但是最近好多微博的友友都在私我询问解决方法,孩子虽然很热心,但是真的回复不过来了,打字太累了,这里给大家简单指个路,希望能够对大家有所帮助。 当时出现这个问题的时候,一搜网上的解决方法都是重装系统什么的,真是吓死孩子啦。后来去微软的官网倒腾了半天解决了问题。其实只要你没有改过微软账户,你可以直接试试我这个方法,大概三到五分钟解决问题吧。 和我情况不一样的也可以参考一下贴吧里一些大佬的分享,或者实在着急我感觉去淘宝上找个解决也不是未尝不可。 出现问题: 解决方案: 直接去微软

zhiqingxue的博客 2万+

【开源训练数据集2】10个最适合机器学习的股票市场数据集

​随着加密货币在世界各地的兴起,人们现在有比以往更多的投资方式。然而,这并不像低买高卖那么简单。如果你能准确预测股市,你就会成为地球上最富有的人之一。因此,之前已经有关于如何利用情绪分析来预测股市的研究。对于那些希望构建类似预测模型的人,本文将介绍 10 个用于机器学习的股票市场和加密货币数据集。

u010542847的博客 2139

【LCMM实战指南】从增长混合模型到潜在类别轨迹分析的纵向数据建模

本文深入解析了LCMM(潜在类别混合模型)在纵向数据建模中的应用,对比了LCGA与GMM的核心差异与选择策略。通过R语言lcmm包的实战演练,详细展示了从数据模拟、模型拟合、类别数选择到结果解读的全流程,为识别数据中不同的发展轨迹亚型提供了系统指南。

weixin_29070861的博客 380

javascript 酷炫时钟

javascript 酷炫时钟

liuhao9999的博客 631

MicroPython学习:在STM32上进行移植

本文将介绍如何在STM32上移植MicroPython,并提供相应的源代码。通过以上步骤,你已经成功地将MicroPython移植到STM32上,并可以使用MicroPython语言编写和运行代码。你可以进一步探索MicroPython的功能和API,以利用STM32的各种外设和功能。使用STM32CubeProgrammer或其他适当的烧录工具,将编译生成的MicroPython固件烧录到STM32微控制器中。打开该文件,并根据你的STM32微控制器类型进行必要的配置更改。模块来控制STM32的LED。

JeeVue的博客 1237

想在 Visual Studio Code 里进行 ABAP 开发,需要安装的扩展列表

安装完毕后,我们可以将 SAP 系统配置为 Visual Studio Code 连接的远程文件系统。为了连接到 SAP 系统,需要启用 ABAP 开发工具 (ADT) ICF 节点,这与 SAP Hana Studio 等工具使用的服务相同。打开 SAP GUI 并连接到目标系统,运行事务 SICF,然后激活 ADT_SRV 服务,如下所示。这启用了允许代码编辑器和 IDE 连接到 SAP 系统的服务。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 3122

Python 爬虫实战:拼多多商品评论情感分析(含词云生成与差评预警)

在电商行业竞争日益激烈的当下,商家对商品评论的分析需求愈发迫切。通过 Python 爬虫收集拼多多商品评论,并结合情感分析、词云可视化及差评预警技术,商家可精准洞察消费者反馈,优化商品与服务。本文将深度剖析从爬虫搭建到数据挖掘的关键环节,助力读者构建全流程电商评论分析系统。

yansideyucsdn的博客 1450

计算机毕设项目十四:美团酒店评论情感分析完整数据代码-可直接运行

计算机毕设项目十四:美团酒店评论情感分析完整数据代码-可直接运行

693

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

上一篇: 基于STC12C5A60S2系列1T 8051单片机通过一个触摸按键单击长按都增加数值另一个触摸按键单击长按都减少数值应用
下一篇: 基于STC12C5A60S2系列1T 8051单片机实现一主单片机与一从单片机相互发送数据的RS485通信功能
CWQLTYH
博客等级 码龄10年 1432粉丝 149原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值