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

51单片机使用TM1637驱动4位共阳数码管 Proteus 8电路仿真:https://url83.ctfile.com/f/45573183-923207757-82c6a6?p=7526 (访问密码: 7526)C51源代码:https://url83.ctfile.com/f/45573183-923207721-c6e322?p=7526 (访问密码: 7526)TM1637 是一种带键盘扫描接口的LED(发光二极管显示器)驱动控制专用电路,内部集成有MCU 数。字接口、数据锁存器、LED 高压驱动、键盘扫描等电路。一、TM1637简介。 阅读详情

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

STC12C5A60S2系列1T 8051单片机管脚图

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

STC12C5A60S2系列1T 8051单片机I/O口各种不同工作模式及配置

在这里插入图片描述

STC12C5A60S2系列1T 8051单片机I/O口各种不同工作模式介绍

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

TM1637键盘数码管模块概述

TM1638是带键盘扫描接口的LED(发光二极管显示器)驱动控制专用电路,内部集
成有MCU 数字接口、数据锁存器、LED 高压驱动、键盘扫描等电路。主要应用于冰箱、
空调 、家庭影院等产品的高段位显示屏驱动。

TM1637键盘数码管模块特性说明

• 采用功率CMOS 工艺
• 显示模式 10 段×8 位
• 键扫描(8×3bit)
• 辉度调节电路(占空比8 级可调)
• 串行接口(CLK,STB,DIO)
• 振荡方式:RC 振荡(450KHz+5%)
• 内置上电复位电路
• 采用SOP28封装

TM1637键盘数码管模块管脚定义

在这里插入图片描述

TM1637键盘数码管模块管脚功能说明

在这里插入图片描述

TM1637键盘数码管模块按键读取原理

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

TM1637键盘数码管模块按键读取时序

在这里插入图片描述

TM1637键盘数码管模块显示地址寄存器

在这里插入图片描述

TM1637键盘数码管模块数据寄存器

在这里插入图片描述

TM1637键盘数码管模块数据命令寄存器

在这里插入图片描述

TM1637键盘数码管模块地址命令寄存器

在这里插入图片描述

TM1637键盘数码管模块显示控制命令寄存器

在这里插入图片描述

TM1637键盘数码管模块数码管显示按键扫描周期

在这里插入图片描述

TM1637键盘数码管模块串行数据地址传输模式时序图

地址自动加1模式时序图

在这里插入图片描述

固定地址模式时序图

在这里插入图片描述

TM1637键盘数码管模块程序设计流程图

地址自动加1模式的程序设计流程图

在这里插入图片描述

固定地址模式的程序设计流程图

在这里插入图片描述

TM1637键盘数码管模块应用电路

TM1637键盘数码管模块驱动共阴数码管硬件电路

TM1637键盘数码管模块驱动共阳数码管硬件电路

在这里插入图片描述

TM1637键盘数码管模块电气参数

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

TM1637键盘数码管模块的数码管显示与单片机连接的按键的按键值编程

main.c

#include <stc12c5a60s2.h>
#include "Timer0.h"
#include "Key.h"
#include "Digitron.h"
#include "TM1637OfI2C.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();//数码管开机显示函数
//  TM1637AutomaticDisplay();//TM1637键盘数码管模块自动显示函数
  while(1)//主循环
 {
   
    
   KeyScanResult();//按键扫描结果函数
  }
 }

TM1637OfI2C.c

#include "TM1637OfI2C.h"
//#include "Key.h"
//#include "Digitron.h"
#include"intrins.h"
#define uchar unsigned char//自定义无符号字符型为uchar
#define uint unsigned int//自定义无符号整数型为uint

 void Nop(uint i)//微妙延时函数 
{
   
    
  for(;i>0;i--) 
  _nop_(); 
 }
 
 void TM1637OfI2CStart()//TM1637键盘数码管模块开始函数
{
   
   
  TM1637CLK = 1;//TM1637键盘数码管模块时钟线置高电平
  TM1637DIO = 1;//TM1637键盘数码管模块数据线置低电平
  Nop(2);//2微妙延时
  TM1637DIO = 0;//TM1637键盘数码管模块数据线置低电平
 }

 void TM1637OfI2CAsk()//TM1637键盘数码管模块应答函数
{
   
   
  TM1637CLK = 0;//TM1637键盘数码管模块时钟线置低电平
  Nop(5);//5微妙延时 在第八个时钟下降沿之后 开始判断ACK信号
  while(TM1637DIO);//等待TM1637键盘数码管模块数据线置低电平
  TM1637CLK = 1;//TM1637键盘数码管模块时钟线置高电平
  Nop(2);//2微妙延时
  TM1637CLK = 0;//TM1637键盘数码管模块时钟线置低电平
}

 void TM1637OfI2CStop()//TM1637键盘数码管模块停止函数
{
   
   
  TM1637CLK = 0;//TM1637键盘数码管模块时钟线置低电平
  Nop(2);//2微妙延时
  TM1637DIO = 0;//TM1637键盘数码管模块数据线置低电平
  Nop(2);//2微妙延时
  TM1637CLK = 1;//TM1637键盘数码管模块时钟线置高电平
  Nop(2);//2微妙延时
  TM1637DIO = 1;//TM1637键盘数码管模块数据线置高电平
}

 void TM1637OfI2CWriteByte(uchar OneByte)//TM1637键盘数码管模块写字节函数
{
   
   
  uchar i;//声明字节个数变量
  for(i = 0;i < 8;i++)//循环字节个数
 {
   
     
   TM1637CLK = 0;//TM1637键盘数码管模块时钟线置高电平
   if(OneByte & 0x01)//取出字节最低位 如何取出字节最低位?为什么是&0x01?而不是|0x01?以两个数据的字节来说明 如:0000 0010 和 0000 0011 它们的最低位分别为0和1 &0x01后是0和1 也是它们的最低位0和1 如果|0x01后都是1 就再也不是它们原来的最低位0和1 所有不能|0x01 因为取不到字节原来的最低位数据
  {
   
   
    TM1637DIO = 1;//TM1637键盘数码管模块数据线置高电平
   }
   else//否则
  {
   
   
    TM1637DIO = 0;//TM1637键盘数码管模块数据线置低电平
   }
   Nop(3);//2微妙延时
   OneByte = OneByte >> 1;//取出字节最低位后 剩余字节往右移一位 形成新的字节
   TM1637CLK = 1;//TM1637键盘数码管模块时钟线置高电平
   Nop(3);//2微妙延时
  }
 }
 
 /*****
 uchar TM1637ScanKey()//TM1637键盘数码管模块扫描按键函数
{
  uchar i,Key;//声明循环变量 按键变量
  TM1637OfI2CStart();//TM1637键盘数码管模块开始函数
  TM1637OfI2CWriteByte(0x42);//TM1637键盘数码管模块读取按键
  TM1637OfI2CAsk();//TM1637键盘数码管模块应答函数
  TM1637DIO = 1;//TM1637键
【白嫖福利】【TM1637】简单易懂!51单片机完整的数码管驱动程序(数码管和按键拓展芯片) 概述 在使用单片机的过程中发现某些IO口不够用或者单片机的IO口比较少,比如如果IO口直驱数码管的话会用去很多IO口造成不必要的资源浪费 方案 使用TM1637模块,使用的是I2c的IC,只占用2个IO口便可以驱动6位数码管跟16个按键 代码效果演示视频 代码 main函数 #include"reg52.h" #include"tm1637.h" unsigned char code smgduan[17]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07, 0x 阅读详情

相关推荐

基于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键盘数码管模块的按键扫描、数码管显示按键值、显示按键LED应用

TM1638是带键盘扫描接口的LED(发光二极管显示器)驱动控制专用电路,内部集成有MCU 数字接口、数据锁存器、LED 高压驱动、键盘扫描等电路。主要应用于冰箱、空调 、家庭影院等产品的高段位显示屏驱动。main.c//声明TM1638键盘数码管模块显示按键数值数组变量 即TM1638键盘数码管模块每个数码管显示按键数值的数组//共阴数码管 显示0123456789ABCDEF以及熄灭//共阴数码管显示0123456789ABCDEF以及熄灭。

CWQLTYH的博客 1790

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

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

CWQLTYH的博客 1483

基于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单片机的TM1638键盘数码管模块的数码管显示与单片机连接的按键的按键值的功能

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

CWQLTYH的博客 1035

TM1637驱动力位共阳数码管51程序加仿真.rar_tm1637 51_tm1637仿真_tm1637共阳级_tm1637驱

TM1637的51单片机测试程序,仿真成功,有仿真结果,可以方便灵活使用。

基于STC32的四位TM1637程序

该程序使用的开发板为STC公司的屠龙刀,代码风格接近51,微调后51也可以使用! 这个程序中的定时是用软延时做的,所以对单片机频率要求高,该代码用的24Mhz,如有其他频率需求,只需在延时接口更改即可; 程序比较适合新手入门,写的很详细,代码量比较多。有现成的亮度,各位数码管控制等。 该控制非常简单,只需直接输入数字即可显示数字,无需理会段码。

STM32H743+YT8512C以太网通信实战:CubeMX与LWIP配置详解

本文详细解析了基于STM32H743微控制器与YT8512C PHY芯片的以太网通信实战方案。通过CubeMX工具进行RMII接口、MPU、时钟树等关键硬件配置,并重点阐述了如何修改LWIP协议栈驱动代码以适配YT8512C芯片,解决了LAN8742驱动不兼容的问题。文章提供了从工程创建、代码适配到调试验证的完整步骤,帮助开发者快速实现稳定可靠的嵌入式网络连接。

weixin_29190573的博客 559

Xilinx PL端DP显示接口开发实战(一)——环境搭建与硬件选型

本文详细介绍了Xilinx PL端DP显示接口开发的环境搭建与硬件选型实战经验。从Vivado和Vitis 2021.1版本的软件安装要点,到DP141和MCDP6000芯片的选型建议,再到DP1.4接口的RX/TX方向开发关键点,为开发者提供了全面的技术指导。文章还分享了IP核配置、BD原理图设计以及常见问题排查的实用技巧,帮助开发者高效完成Xilinx DP接口开发项目。

weixin_29250573的博客 174

SAP-ABAP:SAP库存管理核心增强:IF_EX_MB_DOCUMENT_BADI 深度解析

SAP库存管理核心增强:IF_EX_MB_DOCUMENT_BADI 深度解析

baidu_35680696的博客 1447

【C/C++ 性能优化】了解cpu 从而进行C++ 高效编程

在当代软件开发领域,CPU(Central Processing Unit,中央处理器)的性能优化一直是一个核心议题。尤其是对于C++开发者而言,无论是在Linux平台还是其他操作系统中,都需要深刻理解CPU的工作原理以及如何充分利用CPU资源,以确保软件运行的高效性和稳定性。正如计算机科学家Donald Knuth在《计算机程序设计的艺术》中所说:“过早的优化是万恶之源”,然而,这并不意味着我们应该忽视性能优化——相反,我们需要在正确的时间以正确的方式进行优化。

探索C++编程的奥秘,分享深入的技术见解和实践,旨在激发读者创造力与解决问题的思维。 4748

OSPF的7种状态,DR与BDR的基本概念,1、2、3、4、5、7类LSA解析,Stub、NSSA、Totally Stub、Totally NSSA的基本概念与配置

OSPF的7种状态,DR与BDR的基本概念,1、2、3、4、5、7类LSA解析,Stub、NSSA、Totally Stub、Totally NSSA的基本概念与配置

weixin_72194028的博客 3008

自抗扰控制(ADRC)理论与工程实践:8.1 自适应ADRC与参数在线整定

自适应自抗扰控制(AADRC)针对传统固定参数ADRC在动态变化系统中的局限性,提出通过在线调整关键参数(如观测器带宽ω₀、控制器带宽ω_c)以适应对象动态变化。主要方法包括基于稳定性理论的自适应律设计和基于性能指标的优化调节,前者保证闭环稳定但设计复杂,后者通过梯度搜索或模糊规则实现性能优化但缺乏严格稳定性证明。当前挑战在于非线性时变系统的稳定性分析、参数变化速率限制及工程实现的计算负担。AADRC拓展了ADRC在变参数系统(如无人机、软体机器人)中的应用,是迈向自主智能控制的关键技术。

技术工作者 215

Android 15.0 系统开机屏幕设置默认横屏显示

在15.0的系统ROM产品定制化开发中,对于产品需求来说,由于是宽屏设备所以产品需要开机默认横屏显示,开机横屏显示这就需要从 两部分来实现,一部分是系统开机动画横屏显示,另一部分是系统屏幕显示横屏显示,从这两方面就可以做到开机默认横屏显示了

安卓兼职framework和app工程师的博客 719

SAP Joule 在顾问与开发者场景的双擎定位:Joule for Consultants 与 Joule for Developers 全面解读

SAP推出企业级AI助手Joule,分为顾问版(Joule for Consultants)和开发者版(Joule for Developers)两个版本。顾问版聚焦咨询业务,整合SAP知识库和方法论,辅助方案设计、差距分析和实施落地;开发者版嵌入开发工具链,支持代码生成、解释、测试和迁移。两者共享智能底座但面向不同场景:顾问版优化项目交付流程,开发者版提升工程效率。典型案例显示,Joule能有效缩短云转型周期,实现从业务咨询到技术落地的无缝衔接。该产品通过AI代理和知识图谱技术,为企业数字化转型提供端到端

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

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

上一篇: 基于STC12C5A60S2系列1T 8051单片机实现一主单片机与多个从单片机先地址通信确认再数据传输的串口通信功能
下一篇: 基于STC12C5A60S2系列1T 8051单片机的TM1637键盘数码管模块的数码管显示与TM1637芯片连接的按键的按键值的功能
CWQLTYH
博客等级 码龄10年 1432粉丝 149原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值