当前位置: 首页 > article >正文

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

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

  • STC12C5A60S2系列1T 8051单片机管脚图
  • STC12C5A60S2系列1T 8051单片机I/O口各种不同工作模式及配置
  • STC12C5A60S2系列1T 8051单片机I/O口各种不同工作模式介绍
  • TM1637键盘数码管模块概述
  • TM1637键盘数码管模块特性说明
  • TM1637键盘数码管模块管脚定义
  • TM1637键盘数码管模块管脚功能说明
  • TM1637键盘数码管模块按键读取原理
  • TM1637键盘数码管模块按键读取时序
  • TM1637键盘数码管模块显示地址寄存器
  • TM1637键盘数码管模块数据寄存器
  • TM1637键盘数码管模块数据命令寄存器
  • TM1637键盘数码管模块地址命令寄存器
  • TM1637键盘数码管模块显示控制命令寄存器
  • TM1637键盘数码管模块数码管显示按键扫描周期
  • TM1637键盘数码管模块串行数据地址传输模式时序图
    • 地址自动加1模式时序图
    • 固定地址模式时序图
  • TM1637键盘数码管模块程序设计流程图
    • 地址自动加1模式的程序设计流程图
    • 固定地址模式的程序设计流程图
  • TM1637键盘数码管模块应用电路
    • TM1637键盘数码管模块驱动共阴数码管硬件电路
    • TM1637键盘数码管模块驱动共阳数码管硬件电路
  • TM1637键盘数码管模块电气参数
  • TM1637键盘数码管模块的数码管显示与TM1637芯片连接的按键的按键值编程
  • TM1638键盘数码管模块的数码管显示与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键盘数码管模块的数码管显示与TM1637芯片连接的按键的按键值编程

main.c

#include <stc12c5a60s2.h>
#include "Timer0.h"
#include "Key.h"
#include "Digitron.h"
#include "TM1637OfI2C.h"
#include"TM1637KeyProcess.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();//数码管开机显示函数
//  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//自定义无符号整数型为uintvoid 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键盘数码管模块数据线置高电平for(i = 0;i < 8;i++)//循环取出按键变量一字节中八位二进制数{  TM1637CLK = 0;//TM1637键盘数码管模块时钟线置低电平Key = Key >> <
http://www.lryc.cn/news/2413968.html

相关文章:

  • JAX-WS 介绍 【转载】
  • 东方航空航班如何值机?
  • location.hash属性介绍
  • 键盘打字指法规范(附图解)
  • 什么是webservice
  • 数据中心日常运维主要工作内容具体包括哪些方面呢?
  • Windows系统缺少丢失mscoree.dll文件如何解决的?
  • 如何扩容C盘?6种扩展C盘方法!
  • process.waitfor()超时配置
  • Structs2学习(三)
  • win怎么查看linux文件,Windows下查看LINUX ext2/ext3格式的三种常用方法(图解)
  • Element UI --- Select下拉框多选页面数据不更新问题
  • ComponentOne Crack,componentone控件集
  • 【迅搜18】扩展(一)Xapian官方文档学习
  • Android广播机制——广播的注册
  • 线程死锁及其解决
  • 微信小程序自定义navigation-bar导航栏(自适应安卓苹果)
  • 最全软件测试工具大全
  • Git:Git分支管理规范 / 常用命令
  • illegalargumentexception是什么异常_Java程序员必备:异常的十个关键知识点
  • 【C语言】初学者写基础代码的基本步骤
  • CRC循环冗余校验码总结
  • Windows XP SP3 Chinese - Simplified (NX)渗透详细解析
  • 傅里叶变换 二维离散傅里叶变换
  • Nature Microbiology | 可感染阿斯加德古菌的六种深海沉积物中的病毒基因组
  • 3DMAX程序贴图之3D木材贴图使用教程
  • java与javascript
  • 模糊神经网络系统1
  • MOS基础知识
  • 笔记本电脑如何开启wifi热点共享