找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 246|回复: 7
收起左侧

TM1652显示问题

[复制链接]
ID:33548 发表于 2025-4-26 21:11 | 显示全部楼层 |阅读模式
用TM1652驱动5位8段数码管做了一个频率计,在显示65535以下的频率时都正常,在显示70000左右的频率时只能显示2500多,有关的频率计数、变量都是定义成32位的,怎么调试都不对,难道TM1652不能显示65535以上的数字?
回复

使用道具 举报

ID:1133081 发表于 2025-4-26 21:49 | 显示全部楼层
TM系列数码管驱动器都是按位以字节写入显示寄存器。与其5位数的数据类型没有关系。分解数据的常用代码:
/*********************************************/
                swan =  ch/100000;                        // 十万位
                wan  = (ch%100000)/10000;        // 万位
                qian = (ch%10000)/1000;                // 千位
                bai  = (ch%1000)/100;                // 百位
                shi  = (ch%100)/10;                        // 十位
                ge   =  ch%10;                                // 个位
/*********************************************/
                swan = ch/100000;                        // 十万位
                wan  = ch%100000/10000;                // 万位
                qian = ch%10000/1000;                // 千位
                bai  = ch%1000/100;                        // 百位
                shi  = ch%100/10;                        // 十位
                ge   = ch%10;                                // 个位
/*********************************************/
                swan = ch/100000;                        // 十万位
                wan  = ch/10000%10000;                // 万位
                qian = ch/1000%1000;                // 千位
                bai  = ch/100%100;                        // 百位
                shi  = ch/10%10;                        // 十位
                ge   = ch%10;                                // 个位
/**************************************/
                swan = ch/100000%10;                //
                wan  = ch/10000%10;
                qian = ch/1000%10;
                bai  = ch/100%10;
                shi  = ch/10%10;
                ge   = ch%10;
/*********************************************/
                unsigned char buf[6];
                b=ch;                               
                for(i=0;i<6;i++)
                {
                        buf[i]=b%10;//由低位到高位保存
                        b/=10;
                }
/*********************************************/
回复

使用道具 举报

ID:69038 发表于 2025-4-26 22:21 | 显示全部楼层
没有代码,只是猜 :
能显示5位,应该是能显示 到99999,
但你小于65535是下正常 的,那么,只能是你数据类型错了,或是数据在处理时用错类型 。
建 议你把代码发上来。
回复

使用道具 举报

ID:230500 发表于 2025-4-27 08:56 | 显示全部楼层
1652只是显示驱动, 与你显示什么数字  显示多大的数字 原则上是没有关系;
回复

使用道具 举报

ID:624769 发表于 2025-4-27 09:02 | 显示全部楼层
TM1652是串口传输,你电脑直接收一下单片机发出来的串口数据,看看到底是 TM1652问题,还是单片机问题? 到底是单片机问题,还是代码问题? 能问出这样的问题,说明你代码9成以上是复制粘贴来的,根本就没过脑子。
回复

使用道具 举报

ID:277550 发表于 2025-4-27 10:05 | 显示全部楼层
关键程序是如何的
回复

使用道具 举报

ID:584814 发表于 2025-4-27 11:01 | 显示全部楼层
直接定义70000左右的一个数,看能否正常显示。
此处显示内容与代码有关与硬件无关。
回复

使用道具 举报

ID:108361 发表于 2025-4-29 15:48 | 显示全部楼层
你在传递显示数值的变量上,肯定有一个类型错了,仔细检查
回复

使用道具 举报

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

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表