51单片机学习记录——数码管动态显示

发布者:深沉思考最新更新时间:2016-06-03 来源: eefocus关键字:51单片机  数码管  动态显示 手机看文章 扫描二维码
随时随地手机看文章
正在学习51的数码管以及中断,打算利用六位数码管实现一个时钟的功能。

但使用数码管输出时,如果不添加延时语句,那么一直有显示混乱的现象,有时完全无法分辨清楚数字。

如果在传送完数据以后延时1ms,显示混乱情况会好转。

同时发现延时的时间越长,显示效果越好。但是当然,相应的显示稳定程度也会下降,即数码管闪烁。

程序中在送完段选数据以后已经使用了参考书中的“消影”语句:

1 dula=1;
2 P0=table[k];
3 dula=0;
4 P0=0xff;//“消影”

可是这个语句只是在有延时的情况下才有效果,如果我不写延时语句,那么显示依旧混乱。

虽然在显示过程延时不会影响中断的计时,但是我总不想依赖for语句写出来的延时。= =

于是自己就尝试了很多方法,想要解决这个问题,我的目标就是不写延时语句让数码管正常显示。

我有试过先向P0传送数据,然后打开锁存器,马上关闭。

如:

1 P0=table[k];
2 dula=1;
3 dula=0;

但是问题依旧

也尝试过在打开任一锁存器之前,再锁一次另一锁存器(即送一次低电平),仍然无效。

最后发现需要在输出数据之前加这么一段代码:

1         P0=0xff;
2         wela=1;
3         wela=0;
4         P0=0x00;
5         dula=1;
6         dula=0;//初始化消除干扰

加了这段代码,数码管显示不再混乱。语句的功能就类似于初始化一下锁存器的内容。

 

经过两天的研究,终于明白了期中的猫腻。现在发出来跟大家分享一下:(转载请说明出处)

数码管之所以有“影”,根本原因是段选,位选数据无法同时送达。

具体解释一下:当我改变了位选的值后(改变了要显示的数码管),接下来才改变段选的值(改变要显示的数字)。而在这中间有微小的时间间隔,位选的值改变了,但是段选的值没变。也就是说,我改变了要显示的数码管,但是这个数码管显示的是上一个数码管的数字!想到这里,我有如醍醐灌顶,豁然开朗!当然,反之亦然,如果你是先段选再位选,同样有问题。请大家自己考虑。

所以不难解释上面那段代码的作用了,就是在输出之前将之前那个数码管显示空(或者不选择任何数码管)。

所以显然这个初始化代码还可以简化,但是要取决于你是先段选还是先位选。如果先位选,那么就要清空段选数据。

1 P0=0x00;
2 dula=1;
3 dula=0;

反过来也一样。如果先段选,那么清空位选数据即可。

 

百度百科有人问了一个差不多的问题,这里引用过来供大家参考:

51单片机学习记录——数码管动态显示

 

经验总结:数码管的显示,段选数据和位选数据要紧贴,中间不要夹杂其他语句。换句话说,计算在先,最后一次性传送数据。

关键字:51单片机  数码管  动态显示 引用地址:51单片机学习记录——数码管动态显示

上一篇:89S51单片机实现误差几微秒的计时程序
下一篇:51单片机学习总结实例

推荐阅读最新更新时间:2024-03-16 14:56

基于单片机的数码管动态显示器的设计方案
  1.前言   数码管静态显示系统需要占用过多的单片机口线,但是可以保证正常的亮度。为了解决占用口线较多而浪费硬件资源等问题,研究人员开发了一系列诸如74HC595的数码管驱动芯片,该类芯片可以实现串行转并行的工作方式,驱动数码管实现静态和动态显示。但是,这样一种工作方式暴露出控制系统实时性不足等问题,在某些对系统响应时间要求比较高的场合的应用产生了一定的限制。为了解决上述几个弊端,本文提出了一种基于单片机的数码管动态显示器的设计方案,以IAP15F2K61S2系列单片机做控制核心,并采用全新的软硬件电路实现数码管的动态显示。   2.控制系统硬件设计   2.1 显示器外观设计   本显示器采用六个共阳极的数码管,按照
[电源管理]
基于单片机的<font color='red'>数码管</font><font color='red'>动态显示</font>器的设计方案
基于51单片机的流水灯实验
K1键流水灯交替闪烁。 K2键流水灯从两边向中间移动闪烁。 K3键流水灯全部闪烁。 K4键流水灯从LED7到LED0流水闪烁。 单片机源程序如下: #include reg51.h sbit S5=P1^4; sbit S6=P1^5; sbit S7=P1^6; sbit S8=P1^7; unsigned char keyval; void key_scan(void); void forward(void); void backward(void); void Alter(void); void blink(void); void led_delay(void); void delay10ms(void);
[单片机]
基于<font color='red'>51单片机</font>的流水灯实验
三线制Microware同步串行EEPROM在MCS-51单片机
1三线制Microware串行总线   三线制Microware同步串行总线接口是松下半导体公司在其生产的COP系列和HPC系列微控制器上采用的一种串行总线。它使用的三根信号线是数据输入线SI、数据输出线SO和时钟信号线SK。由于三线制Microware总线只需3~4根数据线和控制线即可扩展具有三线制Microware总线的各种I/O器件,而并行总线扩展方法要8根数据线、8~16根地址线和2~3位控制线,因而使用三线制Microware串行总线可以简化电路设计,提高设计的可靠性。 2具有三线制Microware总线的EEPROM   EEPROM是一种可用电气方法在线擦除和再编程的只读存储器,它既有RAM在联机操作中可读可改写的特性
[单片机]
三线制Microware同步串行EEPROM在MCS-<font color='red'>51单片机</font>
单片机控制无刷电机初步调试成果和学习经历
调了一天多的无刷电机,用的无刷电调,其实本来应该是用32做的,但是不知道原理, 于是用了比较熟悉的51单片剂一下来进行调试 一下,查询的资料,还是蛮简单的,但是实际操作并没有那么容易, 在网上查也没有能用的程序,尤其是51,因为基本用无刷的都是无人机 四六轴。所以今天贴上我的程序,分享给大家,希望能对各位减少时间学习,快速上手,本程序实现的功能是在第一次给无刷电机上电后,首先拉高油门,然后降低油门,最后满开油门,注意,,,,注意,,,,注意,一定不要用带螺旋桨的无刷电机来实验,危险,开机后会全速运行,我开全速是为了用涵道,所以全速,, 废话不多说,贴程序 51单片机源程序如下: /**********************
[单片机]
单片机控制无刷电机初步调试成果和学习经历
51单片机与上位机串口通信程序设计
51  单片机  与上位机串口通信程序设计  1. 发送:向总线上发命令  2. 接收:从总线接收命令,并分析是地址还是数据。  3. 定时发送:从内存中取数并向主机发送.  经过调试,以上功能基本实现,目前可以通过上位机对 单片机 进行实时控制。  程序如下:  //这是一个 单片机 C51串口接收(中断)和发送例程,可以用来测试51单片机的中断接收     //和查询发送,另外我觉得发送没有必要用中断,因为程序的开销是一样的   #include  reg51.h   #include  stdio.h   #include  string.h   #define INBUF_LEN 4 //数据长度  unsigned ch
[单片机]
8051单片机数据说明
深入理解并应用C51对标准ANSIC的扩展是学习C51的关键之一。因为大多数扩展功能都是直接针对8051系列CPU硬件的。 具体说明如下(8031为缺省CPU)。 一、Keil C51扩展关键字 C51 V4.0版本有以下扩展关键字(共19个): _at_idata sfr16 alien interrupt small bdata large _task_ Code bit pdata using reentrant xdata compact sbit data sfr 二、内存区域(Memory Areas): 1、 Pragram Area: 由Code说明可有多达64kBytes的程序
[单片机]
基于51单片机的智能小车系统设计
原理图: 程序运行图: 部分程序: /******************************************************************************* * 文件名称:main.c * 说明:本文件为小车控制的主函数 * 功能:1.看门狗定时器初始化 2.调用函数,进行小车直流电机的开环控制 *******************************************************************************/ #include AT89X52.h #include kongzhi.h /********************
[单片机]
浅谈C8051单片机在变风量空调控制系统中的应用
1、前言:   变风量(Variable Air Volume, 简称VAV)空调系统是通过变风量箱去调节送入房间的风量和新回风混合比,并相应调节空调机组的风量或新回风混合比来控制某一空调区域温度的一种空调系统。变风量空调系统可以根据空调载荷的变化及室内要求参数的改变,自动调节空调送风量(达到最小送风量时调节送风温度),以满足室内人员的舒适要求或者其它的工艺要求。同时根据实际送风量自动调节送风机的转速,最大限度的减少风机动力、节约能量。与定风量空调系统相比,变风量空调系统具有节能性、舒适性、环保性、灵活性等优点。 2、硬件电路设计   2.1、风阀与水阀执行电路的设计   本控制器将温度、湿度、CO2传感器检测到的模拟信号
[单片机]
浅谈C80<font color='red'>51单片机</font>在变风量空调控制系统中的应用
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

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

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

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