时光の尘 2023-10-26 13:20 采纳率: 91.7%
浏览 17
已结题

数码管显示问题乱码显示

数码管显示问题
为什么十位正常显示,个位乱码了呢

img

void zxm_Init(void)                            //字形码函数
{
            SMG_Configuration();                                //数码管初始化
            disp[1] = table[i/10];                //数码管显示十位数字的字形码
            disp[0] = table[i%10];                //数码管显示个位数字的字形码
            temp = (disp[1]<<8)|(disp[0]<<0);    //十位数的字形码左移8位,然后与个位数的字形码合并
            GPIO_Write(GPIOB,temp);
            Delay_ms(300);
}

temp = (disp[1]<<8)|(disp[0]&0x0ff);

这一块这样写的,为什么个位会是乱码呢?

  • 写回答

1条回答 默认 最新

  • CSDN-Ada助手 CSDN-AI 官方账号 2023-10-26 16:19
    关注

    【以下回答由 GPT 生成】

    根据代码和问题描述,可能出现个位显示乱码的原因有以下几个方面:

    1. 数码管初始化问题:首先要确保数码管已经正确初始化,相关引脚设置正确,并且与程序代码一致。可以查看 SMG_Configuration() 函数的实现代码,确保初始化正确。

    2. 字形码表问题:乱码可能是由于字形码表没有正确设置导致的。请确认 table 数组是否包含了正确的字形码,可以打印出 table 数组的内容进行验证。

    3. 变量 i 的赋值问题:关于 i 的赋值部分没有在问题描述中提到,可能是在其他地方赋值的。请确认 i 的赋值是否正确,是否在适当的时机进行了更新。

    4. 数码管显示问题:乱码可能是由于数码管的数位排列顺序不正确导致的。可能十位数和个位数的字形码的位置颠倒,导致显示乱码。你可以尝试交换 disp[1]disp[0] 数组元素的位置,然后再进行数码管的显示。

    请按照以下步骤逐一排查和解决问题:

    Step 1: 验证数码管初始化

    请检查 SMG_Configuration() 函数的实现代码,确保它正确设置了 STM32 的引脚和其他相关设置。你可以参考 STM32 的官方文档或数码管驱动器芯片的规格手册来确认引脚的设置是否正确。如果你对此部分代码没有修改的经验,可以尝试使用其他经过验证的代码库或示例项目。

    Step 2: 验证字形码表

    请检查 table 数组中是否包含了正确的字形码。你可以打印出 table 数组的内容,检查其中每个字母或数字对应的字形码是否正确。确保字形码的存储方式与你所使用的数码管驱动器芯片的要求一致。

    Step 3: 检查变量 i 的赋值方式

    请确认 i 的赋值是否在适当的时机进行了更新,并且赋值的方式是否正确。建议在调用 zxm_Init() 函数之前,通过打印 i 的值来检查其是否已被正确赋值。例如,可以在代码中加入下面的调试语句:

    printf("i = %d\n", i); // 通过串口打印 i 的值
    

    Step 4: 调整数码管显示顺序

    尝试交换 disp[1]disp[0] 数组元素的位置,并重新运行程序。具体操作如下:

    temp = (disp[0]<<8)|(disp[1]<<0); // 交换 disp[0] 和 disp[1]
    GPIO_Write(GPIOB,temp);
    

    这样做的目的是确保符合数码管的显示顺序,防止乱码问题的产生。

    如果你按照上述步骤进行排查和解决,并没有解决问题,请提供更详细的问题信息,例如数码管型号、使用的驱动器芯片、初始化代码等,以便可以提供更准确的帮助。



    【相关推荐】



    如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 11月6日
  • 已采纳回答 10月29日
  • 创建了问题 10月26日

悬赏问题

  • ¥15 数学建模求思路及代码
  • ¥50 silvaco GaN HEMT有栅极场板的击穿电压仿真问题
  • ¥15 谁会P4语言啊,我想请教一下
  • ¥15 哪个tomcat中startup一直一闪而过 找不出问题
  • ¥15 这个怎么改成直流激励源给加热电阻提供5a电流呀
  • ¥50 求解vmware的网络模式问题 别拿AI回答
  • ¥24 EFS加密后,在同一台电脑解密出错,证书界面找不到对应指纹的证书,未备份证书,求在原电脑解密的方法,可行即采纳
  • ¥15 springboot 3.0 实现Security 6.x版本集成
  • ¥15 PHP-8.1 镜像无法用dockerfile里的CMD命令启动 只能进入容器启动,如何解决?(操作系统-ubuntu)
  • ¥30 请帮我解决一下下面六个代码