标题: TM1652显示问题 [打印本页]

作者: cjtdz    时间: 2025-4-26 21:11
标题: TM1652显示问题
用TM1652驱动5位8段数码管做了一个频率计,在显示65535以下的频率时都正常,在显示70000左右的频率时只能显示2500多,有关的频率计数、变量都是定义成32位的,怎么调试都不对,难道TM1652不能显示65535以上的数字?

作者: WL0123    时间: 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;
                }
/*********************************************/
作者: zhuls    时间: 2025-4-26 22:21
没有代码,只是猜 :
能显示5位,应该是能显示 到99999,
但你小于65535是下正常 的,那么,只能是你数据类型错了,或是数据在处理时用错类型 。
建 议你把代码发上来。
作者: a399288395    时间: 2025-4-27 08:56
1652只是显示驱动, 与你显示什么数字  显示多大的数字 原则上是没有关系;
作者: 188610329    时间: 2025-4-27 09:02
TM1652是串口传输,你电脑直接收一下单片机发出来的串口数据,看看到底是 TM1652问题,还是单片机问题? 到底是单片机问题,还是代码问题? 能问出这样的问题,说明你代码9成以上是复制粘贴来的,根本就没过脑子。
作者: devcang    时间: 2025-4-27 10:05
关键程序是如何的
作者: man1234567    时间: 2025-4-27 11:01
直接定义70000左右的一个数,看能否正常显示。
此处显示内容与代码有关与硬件无关。
作者: powerdruy    时间: 2025-4-29 15:48
你在传递显示数值的变量上,肯定有一个类型错了,仔细检查
作者: coody_sz    时间: 2025-4-29 17:26
你数据处理的问题,跟显示没啥关系。
作者: 化工事故    时间: 2025-4-29 20:43
TM1652需要正确配置显示模式和亮度,可以再检查分频系数的计算有没有错误
作者: yslsdas    时间: 2025-5-7 14:01
zhuls 发表于 2025-4-26 22:21
没有代码,只是猜 :
能显示5位,应该是能显示 到99999,
但你小于65535是下正常 的,那么,只能是你数据 ...

http://www.51hei.com/bbs/dpj-239955-1.html 我的顯示也有問題能給我看看麼




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1