Proteus中数码管动态扫描显示不全(已解决)

文章目录

前言

我是直接把以前写的 51 数码管程序复制过来的,当时看的郭天祥的视频,先送段选,消隐后送位选,最后来个 1ms 的延时。

代码在 Proteus 中数码管静态是可以的,动态显示出了问题------显示不全,我在网上搜的说是 Proteus 的 Bug,需要先送位选再送段选,我试了试也不行。

最后在我多次实验下,终于让我解决了,可以完全显示,而且显示的非常平稳。

这里记录一下:

解决方法

Proteus 中不需要任何设置,只需要将消隐的顺序换一下,把消隐放在送完位选之后,然会延时即可。

c 复制代码
for(i = 0;i < 8;i++)
{
    // 送段选
    NIXIE_TUBE_D = 1;
    P0 = d_table[i];
    NIXIE_TUBE_D = 0;
    // 送位选
    NIXIE_TUBE_W = 1;
    P0 = w_table[i];
    NIXIE_TUBE_W = 0;
    // 消隐
    P0 = 0xff;
    // 延时
    bsp_DelayMS(1);
}

下面是 51 单片机在晶振为 11.0592MHz 时毫秒级的延时函数,STM32 单片机可以使用 HAL 库自带的HAL_Delay进行延时。

c 复制代码
void bsp_DelayMS(uint32_t n)    //@11.0592MHz
{
    uint8_t data i, j;

    if (n == 0)
    {
        return;
    }

    while(n--)
    {
        _nop_();
        i = 2;
        j = 199;
        do
        {
            while (--j);
        } while (--i);
    }
}

后记

对你有所帮助的话,可以点赞支持一下。

相关推荐
我是一棵无人问荆的小草9 小时前
stm32f103单片机的NVIC分组2介绍
stm32·单片机·嵌入式硬件
紫幽9 小时前
从 0 用 Vue 做屏并生成 LVGL 单片机代码(完整源码备忘)
前端·单片机
Be for thing11 小时前
【嵌入式成长3】STC89C51外部中断|中断原理、寄存器、中断服务函数
单片机·嵌入式硬件·学习
科芯创展12 小时前
1A,5.5VIN,同步升降压恒流芯片,XZ3442
单片机
9稳13 小时前
基于PLC的小车运料装卸控制系统设计
开发语言·网络·数据库·单片机·嵌入式硬件
智购科技自动贩卖机14 小时前
自动售货机硬件主控方案选型实战:单片机、树莓派、ESP32怎么选?
人工智能·单片机·嵌入式硬件·物联网·网络协议·yolo·架构
LCG元15 小时前
STM32 多通道 ADC + DMA 采集实战:数据错位、读数跳动的根因与滤波选型
stm32·单片机·嵌入式硬件
电化学仪器白超16 小时前
MV-CS200-10UC相机参数配置
python·单片机·嵌入式硬件·数码相机·自动化·ltspice
我和头发拼了16 小时前
STM32--9USART收发HEX数据包
stm32·单片机·嵌入式硬件
wuyk55516 小时前
7.AVL 树:第一个自平衡二叉搜索树
开发语言·stm32·单片机·算法