多位数码管动态显示中的虚影消除

发布者:心若清泉最新更新时间:2017-01-10 来源: eefocus关键字:多位数码管  动态显示  虚影消除 手机看文章 扫描二维码
随时随地手机看文章

在学习动态显示时,发现有一个问题,数字是正常显示了,但是好几个数字上面,某些不应该亮的地方,有一些微微亮,导致数字显示不是很清楚,代码如下(说明:数码管可以显示8个数字,共阳,P3用于选择亮哪一个,P0用于输出数字):


#include

     

#define uchar unsigned char

 

//随手抄来的,虽然我只显示0-7

uchar code table[] = {

    0xC0,0xF9,0xA4,0xB0,

    0x99,0x92,0x82,0xf8,

    0x80,0x90,0x88,0x83,

    0xC6,0xA1,0x86,0x8E

};

 

uchar i;

void main()

{         

    P3 = 0xFF; 

    P0 = 0xFF; 

    while(1)

    {         

        for(i=0;i<8;i++)

        { 

            //共阳,P3用于选择亮哪一个,P0用于输出数字,不同开发板不一样

            P3 = 0xFF & (~( 1 << (i%8) ));//选择使用哪一个数码管

            P0 = table[i];//数码管代码

        }

    }

}

 


后来仔细看了代码,才发现书上有延时的代码,也就是设置完成后,延时1到2毫秒,本来以为没什么用,没想到 一加上,效果立杆见影啊,修改后如下:

#include

     

#define uchar unsigned char

 

void delay1ms()

{

    uchar j;

    for(j=110;j>0;j--)

        ;

}       

 

//随手抄来的,虽然我只显示0-7

uchar code table[] = {

    0xC0,0xF9,0xA4,0xB0,

    0x99,0x92,0x82,0xf8,

    0x80,0x90,0x88,0x83,

    0xC6,0xA1,0x86,0x8E

};

 

uchar i;

void main()

{         

    P3 = 0xFF; 

    P0 = 0xFF; 

    while(1)

    {         

        for(i=0;i<8;i++)

        { 

            //共阳,P3用于选择亮哪一个,P0用于输出数字,不同开发板不一样

            P3 = 0xFF & (~( 1 << (i%8) ));//选择使用哪一个数码管

            P0 = table[i];//数码管代码

             

            /************加上延时后,数码管马上变清晰了**************/

            delay1ms();

            delay1ms();//试了下,2毫秒效果比较好

        }

    }

}


关键字:多位数码管  动态显示  虚影消除 引用地址:多位数码管动态显示中的虚影消除

上一篇:51单片机液晶显示计时器
下一篇:SD卡在单片机上的应用

推荐阅读最新更新时间:2024-03-16 15:29

基于80C51单片机的LED动态显示实例
  单片机80c51接线图如图1所示。图1中,4位显示管用共阳极。运用动态显示,采用循环导通或循环截止各位显示器的做法。当循环显示时间间隔较小时,由于人眼的暂留特性,就将看不出数码管的闪烁现象。    图1 单片机80c51接线图   控制系统设计   程序框图    图2 程序框图   程序清单   程序写入80c51芯片,如下   #include   /*---------------------定义变量----------------------------------*/   sbit p1_0=P1^0;   sbit p1_1=P1^1;   sbit p1_2=P1^2;   sbit p
[单片机]
基于80C51单片机的LED<font color='red'>动态显示</font>实例
多位共阴共阳数码管
  多位数码管和单个数码管的区别就在于:数量 (说了跟没说一样)   单个数码管使用时,只要将八位显示接到单片机的 I/O 口(如 P1)就可以了,多个数码管就要考虑管脚的 复用 问题了。因为多位数码管不仅要在单个数码管显示某种字符,还要指定哪一个数码管显示。以 8 位数码管为例,就需要 16 根线控制,8 个控制段码显示,8 个控制位码显示,这样单片机还可以承受。要是 16 位数码管呢,那就是 8+16=24 位了,再多了呢   想想大街上的霓虹灯广告牌,博主倒是不知道那是个什么原理,不过如果是用单片机实现,使用上述方法的话,单片机引脚肯定不够用!   因此,对于多数码管,需要使用 锁存器 ,达到 引脚复用 的目的。
[单片机]
<font color='red'>多位</font>共阴共阳<font color='red'>数码管</font>
1602液晶动态显示
学了一段时间的51单片机,自己编了一些简单的程序,实现了一些比较简单的功能,我会把这些程序在后面几篇博客中贴上,供需要的人参考。 这些程序都是我调试好的,都能正常使用只是可能有些功能我没有写完,不过我都加了注释提醒,也比较简单,有时间的话,我会补全的。 有些地方写的不妥或不简洁,是因为能力所致,知识欠缺,现在正在恶补 下面的程序是控制1602液晶上下两行分别显示JUST DO IT !和DO YOUR BEST!两句话,并整屏左右移动三次,最后静态显示出来 #include reg52.h #define uchar unsigned char #define uint unsigned int uchar c
[单片机]
单片机左右流水灯与数码管动态显示C程序
本程序所用的原理图下载: 点这里 ,单片机芯片使用的stc89c52;找到相应部分即可.这是一整个单片机开发板的电路图其他的忽略.以下是通过测试的源代码: /* *功能:用定时器0实现定时200毫秒流水灯, * 同时用定时器1实现动态显示654321, * 且蜂鸣器发声; *日期:2014-03-24 *作者:徐冉 *注意事项:若打开两个定时器时,必须使用两个定时器, * 否则两个定时器都不工作!!! **/ /**********AT89C52-RC 51hei单片机实验板**************/ /*************51hei-开发板*********************/ #include reg52
[单片机]
51单片机实现数码管动态显示60~0
硬件电路原理图 元件清单 C语言程序 #include reg51.h unsigned char table ={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f}; //数码管字符码 void show(unsigned char n); void delay(unsigned int k); void main() { unsigned char i; int j; while(1) { for(i=60;j=60,i 0;i--) while(j--) show(i); } } void show(unsigned char n) { P0=table ; P1
[单片机]
51单片机实现<font color='red'>数码管</font><font color='red'>动态显示</font>60~0
51单片机小白零基础教程——数码管动态显示
数码管的动态显示 数码管的动态显示:数码管的动态显示又叫做数码管的动态扫描。动态显示的特点是:将所有位数码管段选线并联在一起,,由位选控制是哪一位数码管有效。所谓动态扫描显示即轮流向各位数码管送出字型码和相应的位选,利用发光管的余晖和人眼视觉暂留作用,使人感觉好像各位数码管同时都在显示,而实际上多位数码管是一位一位轮流显示的,只是轮流的速度比较快,人眼已经无法分辨出来。 关于数码管以及74HC573锁存器的分析放在这,有详细的分析过程,请自行查看https://blog.csdn.net/chrisbum/article/details/115583779?spm=1001.2014.3001.5502 设计要求:在实验板
[单片机]
51单片机小白零基础教程——<font color='red'>数码管</font>的<font color='red'>动态显示</font>
任务11:“数码管”的静态显示和动态显示
本系列教程以AVR单片机为对象,介绍单片机的快速开发方法。 参考教材:《单片机技术及应用项目教程》 栾秋平 电子工业出版社 2019.6 第1版 本文介绍“数码管”的静态显示和动态显示。 一、人眼的视觉暂留效应 二、数码管的静态显示 三、74HC138内部工作原理 四、数码管的动态显示 #ifndef NIXIETUBE_CONFIG_H_ #define NIXIETUBE_CONFIG_H_ #define NIXIETUBE_PORT PORTB #define NIXIETUBE_DDR DDRB #define NIXIETUBE_HC595_CLOCK BIT1 #def
[单片机]
任务11:“<font color='red'>数码管</font>”的静态显示和<font color='red'>动态显示</font>
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
随便看看
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved