普中开源电子分享网

 找回密码
 立即注册
搜索
查看: 3362|回复: 4

[已解决] 动态数码管闪烁问题

 关闭 [复制链接]

1

主题

3

帖子

17

积分

新手上路

Rank: 1

积分
17
发表于 2019-12-28 14:05:29 | 显示全部楼层 |阅读模式
本帖最后由 韩俊吉 于 2019-12-28 14:10 编辑

不管怎么改delay的延时时间(1-500),都闪烁,求大N解决

#include "reg52.h"                         //此文件中定义了单片机的一些特殊功能寄存器

typedef unsigned int u16;          //对数据类型进行声明定义
typedef unsigned char u8;

sbit LSA=P2^2;
sbit LSB=P2^3;
sbit LSC=P2^4;

u8 code smgduan[17]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,
                                        0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};//显示0~F的值

/*******************************************************************************
* 函 数 名         : delay
* 函数功能                   : 延时函数,i=1时,大约延时10us
*******************************************************************************/
void delay(u16 i)
{
        while(i--);        
}

/*******************************************************************************
* 函 数 名         : DigDisplay
* 函数功能                   : 数码管动态扫描函数,循环扫描8个数码管显示
*******************************************************************************/
void DigDisplay()
{
        u8 i;
        for(i=0;i<8;i++)
        {
                switch(i)         //位选,选择点亮的数码管,
                {
                        case(0):
                                LSA=0;LSB=0;LSC=0; break;//显示第0位
                        case(1):
                                LSA=1;LSB=0;LSC=0; break;//显示第1位
                        case(2):
                                LSA=0;LSB=1;LSC=0; break;//显示第2位
                        case(3):
                                LSA=1;LSB=1;LSC=0; break;//显示第3位
                        case(4):
                                LSA=0;LSB=0;LSC=1; break;//显示第4位
                        case(5):
                                LSA=1;LSB=0;LSC=1; break;//显示第5位
                        case(6):
                                LSA=0;LSB=1;LSC=1; break;//显示第6位
                        case(7):
                                LSA=1;LSB=1;LSC=1; break;//显示第7位        
                }
                P0=smgduan;//发送段码
                delay(1);
                P0=0X00;
        }
}

/*******************************************************************************
* 函 数 名       : main
* 函数功能                 : 主函数
* 输    入       : 无
* 输    出             : 无
*******************************************************************************/
void main()
{        
while(1)
        {        
                DigDisplay();  //数码管显示函数        
        }               
}

回复

使用道具 举报

1

主题

3

帖子

17

积分

新手上路

Rank: 1

积分
17
 楼主| 发表于 2019-12-28 14:06:23 | 显示全部楼层
delay()消影时间调1-100都闪烁
回复 支持 反对

使用道具 举报

20

主题

216

帖子

1115

积分

金牌会员

Rank: 6Rank: 6

积分
1115
发表于 2019-12-28 16:04:33 | 显示全部楼层
什么开发板 是不是用的仿真器下载的程序
回复 支持 反对

使用道具 举报

1

主题

3

帖子

17

积分

新手上路

Rank: 1

积分
17
 楼主| 发表于 2019-12-28 17:12:44 | 显示全部楼层
Nanachi 发表于 2019-12-28 16:04
什么开发板 是不是用的仿真器下载的程序

A7的板子用的仿真器
回复 支持 反对

使用道具 举报

20

主题

216

帖子

1115

积分

金牌会员

Rank: 6Rank: 6

积分
1115
发表于 2019-12-30 08:51:02 | 显示全部楼层
韩俊吉 发表于 2019-12-28 17:12
A7的板子用的仿真器

仿真器运行的速度比较慢 所以扫描比较慢 会导致扫描速度不够显示不流畅
回复 支持 反对

使用道具 举报

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

本版积分规则

关闭

站长推荐上一条 /1 下一条

Archiver|手机版|小黑屋|普中开源电子分享网 粤ICP备16123577号-2

GMT+8, 2024-5-3 08:52 , Processed in 0.367738 second(s), 30 queries .

Powered by 论坛搭建 X3.4

Copyright © 2001-2021, Tencent Cloud.

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