1194|3

32

帖子

0

TA的资源

一粒金砂(中级)

楼主
 

用CH32V103驱动TM1637四位数码管模块 [复制链接]

  本帖最后由 新新科技 于 2023-5-10 19:20 编辑

 

本人参考官方例程,用CH32V103驱动TM1637数码管成功,代码很简单,望各位大佬勿喷。
TM1637.h:

  • #ifndef __TM1637_H__
  • #define __TM1637_H__
  • #include "ch32v10x_conf.h"
  • #define TM1637_DIO_H GPIO_SetBits(GPIOA,GPIO_Pin_1) //配置SDA接口高电平
  • #define TM1637_DIO_L GPIO_ResetBits(GPIOA,GPIO_Pin_1) //配置SDA接口低电平
  • #define TM1637_CLK_H GPIO_SetBits(GPIOA,GPIO_Pin_2) //配置SCL接口高电平
  • #define TM1637_CLK_L GPIO_ResetBits(GPIOA,GPIO_Pin_2) //配置SCL接口低电平
  • #define TM1637_SDA_READ() GPIO_ReadInputDataBit(GPIOA, GPIO_Pin_1) //读SDA口线状态
  • void TM1637_Init(void); //初始化TM1637引脚
  • void TM1637_start(void); // IIC开始
  • void TM1637_ack(void); // IIC应答
  • void TM1637_stop(void); // IIC停止
  • void TM1637_Write(unsigned char DATA); // 写数据函数
  • void TM1637_SetBRI(unsigned char i); // 设置亮度
  • void TM1637_display(unsigned char a, unsigned char b,
  • unsigned char c, unsigned char d); // 按顺序显示
  • #endif

TM1637.c:

  • #include "TM1637.h"
  • unsigned char tab[] =
  • {
  • 0x3F, /*0*/
  • 0x06, /*1*/
  • 0x5B, /*2*/
  • 0x4F, /*3*/
  • 0x66, /*4*/
  • 0x6D, /*5*/
  • 0x7D, /*6*/
  • 0x07, /*7*/
  • 0x7F, /*8*/
  • 0x6F, /*9*/
  • 0x77, /*10 A*/
  • 0x7C, /*11 b*/
  • 0x58, /*12 c*/
  • 0x5E, /*13 d*/
  • 0x79, /*14 E*/
  • 0x71, /*15 F*/
  • 0x76, /*16 H*/
  • 0x38, /*17 L*/
  • 0x54, /*18 n*/
  • 0x73, /*19 P*/
  • 0x3E, /*20 U*/
  • };
  • void TM1637_Init(void)//初始化TM1637引脚
  • {
  • GPIO_InitTypeDef GPIO_InitStructure;
  • RCC_APB2PeriphClockCmd( RCC_APB2Periph_GPIOA, ENABLE );
  • GPIO_InitStructure.GPIO_Pin = GPIO_Pin_1|GPIO_Pin_2;//使用PA1和PA2作为模拟IIC引脚,PA1对应SDA,PA2对应SCL
  • GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP ; //推挽输出模式
  • GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
  • GPIO_Init(GPIOA, &GPIO_InitStructure);
  • //IIC_Idle_State();
  • }
  • void TM1637_start(void) // IIC开始
  • {
  • TM1637_CLK_H;
  • TM1637_DIO_H;
  • Delay_Us(2);
  • TM1637_DIO_L;
  • }
  • void TM1637_ack(void) // IIC应答
  • {
  • u8 i=0;
  • TM1637_CLK_L;
  • Delay_Us(5);
  • TM1637_CLK_H;
  • while (TM1637_SDA_READ() == 1 && (i < 250))
  • i++;
  • TM1637_CLK_H;
  • Delay_Us(2);
  • TM1637_CLK_L;
  • }
  • void TM1637_stop(void) // IIC停止
  • {
  • TM1637_CLK_L;
  • Delay_Us(2);
  • TM1637_DIO_L;
  • Delay_Us(2);
  • TM1637_CLK_H;
  • Delay_Us(2);
  • TM1637_DIO_H;
  • Delay_Us(2);
  • }
  • void TM1637_Write(unsigned char DATA) // 写数据函数
  • {
  • unsigned char i;
  • for (i = 0; i < 8; i++)
  • {
  • TM1637_CLK_L;
  • if (DATA & 0x01)
  • TM1637_DIO_H;
  • else
  • TM1637_DIO_L;
  • Delay_Us(2);
  • DATA = DATA >> 1;
  • TM1637_CLK_H;
  • Delay_Us(2);
  • }
  • // TM1637_ack();
  • }
  • void TM1637_display(unsigned char a, unsigned char b, unsigned char c, unsigned char d) // 按顺序显示
  • {
  • TM1637_start();
  • TM1637_Write(0x40);
  • TM1637_ack();
  • TM1637_stop();
  • TM1637_start();
  • TM1637_Write(0xc0);
  • TM1637_ack();
  • TM1637_Write(tab[a]);
  • TM1637_ack();
  • TM1637_Write(tab[b]);
  • TM1637_ack();
  • TM1637_Write(tab[c]);
  • TM1637_ack();
  • TM1637_Write(tab[d]);
  • TM1637_ack();
  • TM1637_stop();
  • }
  • void TM1637_SetBRI(unsigned char i) // 设置亮度
  • {
  • TM1637_start();
  • TM1637_Write(0x87 + i);
  • TM1637_ack();
  • TM1637_stop();
  • }

 

用CH32V103驱动TM1637数码管.rar

465.44 KB, 下载次数: 2

最新回复

哦,应该是个模块   详情 回复 发表于 2023-5-11 14:18
点赞 关注
 
 

回复
举报

6898

帖子

9

TA的资源

版主

沙发
 

TM1637数码管是什么样的?

点评

应该是编程用 TM1637 驱动数码管  详情 回复 发表于 2023-5-10 14:12
个人签名

在爱好的道路上不断前进,在生活的迷雾中播撒光引

 
 
 

回复

1万

帖子

25

TA的资源

版主

板凳
 
秦天qintian0303 发表于 2023-5-10 13:41 TM1637数码管是什么样的?

应该是编程用 TM1637 驱动数码管

点评

哦,应该是个模块  详情 回复 发表于 2023-5-11 14:18
 
 
 

回复

6898

帖子

9

TA的资源

版主

4
 
dcexpert 发表于 2023-5-10 14:12 应该是编程用 TM1637 驱动数码管

哦,应该是个模块

个人签名

在爱好的道路上不断前进,在生活的迷雾中播撒光引

 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
推荐帖子
DSP基础知识集锦之三 DSP芯片的定点运算

第3章DSP芯片的定点运算 3.1数 的 定 标 在定点DSP芯片中,采用定点数进行数值运算,其操作数一般采用整型数来表示。一个整型 ...

电子设计竞赛系列指导之二--怎么准备这次竞赛

本帖最后由 paulhyde 于 2014-9-15 04:00 编辑 22184

TL431电路的应用专题

蒙soso厚爱,在此向电路新手介绍一个tl431芯片的应用。这颗芯片本身是一个并联基准芯片,由于检测端的存在,可以衍生出很多应用 ...

Arduino AR-15机枪设计-目标自动检测--EEWORLD大学堂

Arduino AR-15机枪设计-目标自动检测:https://training.eeworld.com.cn/course/2095使用了摄像头、AR-15、Arduino和步进电机, ...

我的乖乖 这是什么电子元器件?来个大佬

本帖最后由 小太阳yy 于 2021-8-11 14:49 编辑 上面的丝印是96 TI ,这是德州仪器的?我怎么搜不到呢? 556464 由 ...

【花雕动手做】有趣好玩的音乐可视化系列小项目(07)---大方格频谱灯

偶然心血来潮,想要做一个声音可视化的系列专题。这个专题的难度有点高,涉及面也比较广泛,相关的FFT和FHT等算法也相当复杂,不 ...

如何使用J-Link无限Flash断点功能调试应用?

在嵌入式应用的开发过程中,虽然良好的编程实践和配合适当的编码规范检测软件能够减少代码编写阶段中出现的错误数量,但仍 ...

[RTT&瑞萨高性能 CPK-RA6M4] 6、软件模拟I2C驱动PCF8574评测

一、硬件部分 1、pcf8574说明 手头有块pcf8574的IO扩展板,原来是用来驱动1602的,无奈发现1602坏了,点不亮了。就只能拿p ...

中国反制!将禁止出口光伏硅片制作技术,对此,你怎么看?

中国商务部官网近期发布《中国禁止出口限制出口技术目录》,修订新增了包括光伏硅片制作技术,激光雷达系统,用于人的细胞克隆和 ...

如果我叫你扔掉你仍能正常工作的旧冰箱,你会不会觉得太败家?

节约的人总觉得一件东西一定要修修补补再三年后才能换新。从老一辈那边,我们也一直听到这样的故事和教育,东西还好好的呢,不能 ...

关闭
站长推荐上一条 1/10 下一条
有奖直播:当AI遇见仿真,会有什么样的电子行业革新之路?
首场直播:Simcenter AI 赋能电子行业研发创新
直播时间:04月15日14:00-14:50

查看 »

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

 
机器人开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网 8

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表