![]() |
glinfei 发表于 2024-8-28 10:37 刚刚记错了,不好意思,好像还真是,不在ASCII范围就显示? |
glinfei 发表于 2024-8-28 10:37 应该不是,你看截图,上面三个一样的值就没有问号。楼主用的DATA,有?,我给改成CODE,也一样有?的。没整明白 |
glinfei 发表于 2024-8-28 10:37 感谢!我测试一下。 |
1.如果值在ASCII范围,就显示ASCII,不在就显示? 2.共阳的管子写反了,应先关再赋值,否则会重影,估计8字笔画亮度不同还闪烁。 |
lileisgns 发表于 2024-8-26 21:00 这个我也不太懂啊,有知道的大神给解惑一下呗 |
xiaobendan001 发表于 2024-8-26 14:55 DigiValue[uFirst]的值在调试中怎么显示时带个‘?’号? 感谢! |
xiaobendan001 发表于 2024-8-26 14:55 感谢!我用C++写过软件 ,现在调试都忘记看数码管显示的取值了。但是我数码管显示的8888.还闪烁。 |
![]() 输出的结果也都对啊 |
![]() ![]() 模拟中这四个参数的值并没有改变啊。 |
xiaobendan001 发表于 2024-8-24 13:50 后面调用函数时传入数值了。 |
FloatToNum 函数中的精度问题: 当 fs 值在 10 到 100 之间时,uShu 被计算为 fs * 100,这可能导致精度损失,因为浮点数乘以 100 并向下取整可能不会得到精确的整数。 void FloatToNum(float fs) { // 根据fs的范围确定乘数 uint multiplier; if (fs >= 100) multiplier = 10; else if (fs >= 10) multiplier = 100; else multiplier = 1000; // 将fs转换为整数后乘以相应的乘数 uint temp = (uint)(fs * multiplier); // 四舍五入处理 float remainder = fs - (int)fs; if (remainder >= 0.5f) { temp += 1; } // 计算各个位上的数值 uFirst = temp / 1000; uSecond = (temp / 100) % 10; uThird = (temp / 10) % 10; uFour = temp % 10; } |
不对,你截图显示的就不是一个变量啊,虽然穿进去后不是一个,但是实际上也不会变啊。 |
上面的是全局变量,显示函数里面的参数,是局部变量吧。虽然名字一样,但是应该不是一个。 |