单片机数码管动态显示

#include<reg51.h>
sbit LSA=P2^2;
sbit LSB=P2^3;
sbit LSC=P2^4;
unsigned char DIG_CODE[17]={
0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,
0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71
};
void t1configuration();
unsigned int i=1;
int main()
{
while(1)
{
switch(i)
{
case(1):LSA=0;LSB=0;LSC=0;P0=DIG_CODE[0];break;
case(2):LSA=0;LSB=0;LSC=1;P0=DIG_CODE[1];break;
case(3):LSA=0;LSB=1;LSC=0;P0=DIG_CODE[2];break;
case(4):LSA=0;LSB=1;LSC=1;P0=DIG_CODE[3];break;
case(5):LSA=1;LSB=0;LSC=0;P0=DIG_CODE[4];break;
case(6):LSA=1;LSB=0;LSC=1;P0=DIG_CODE[5];break;
case(7):LSA=1;LSB=1;LSC=0;P0=DIG_CODE[6];break;
case(8):LSA=0;LSB=0;LSC=0;P0=DIG_CODE[7];break;
}
}

}
void t1configuration()
{
TMOD=0X01;
TH1=0xff;
TL1=0x9c;

ET1=1;
EA=1;
TR1=1;
}
void timer1() interrupt 3
{
TH1=0xff;
TL1=0x9c;
i++;
if(i>8)
i=1;
}

为什么出不来效果?

第1个回答  2014-07-08
我估计出的效果不是01234567,而是一堆重影。
因为你一个数码管只有亮的操作, 而没有灭的。
动态扫描的基本思路是:在同一个时间内,只有一个数码管是亮的。
你这个扫描方式也有问题,你可以把switch..case放到中断里面去,不需要放到死循环里。
然后在一开始进入中断的时候加上一句,P0=0x00;追问

你QQ多少啊? 我改了一下,这里不能发

追答

看我的资料,有邮箱

本回答被提问者采纳
第2个回答  2014-07-08
动态显示程序,必须不停的、反复的调用。
稍有停顿,就只能看见最后显示的一位字符。

解决方法,可以参考我以前回答的问题:
http://zhidao.baidu.com/question/408722818.html
求采纳为满意回答。

单片机静态显示和动态显示的原理是什么?各有什么特点?
数码管静态显示就是每个数码管的驱动电平不会改变,知道这个数码管的数值发生变化。动态显示就是利用人眼反应迟钝,数码管轮流显示一段时间,比如都是20ms,效果看起来是几个数码管同时亮(实际是只有一个在点亮,其他的是余晖)。静态显示亮度比较亮,功耗大动态显示亮度稍微差点,但是显示位数多注意动态扫...

数码管是如何显示的?
实验介绍 数码管动态显示是蓝桥杯单片机组比赛中常见的模块之一,动态显示原理是通过控制数码管各字段的亮灭,实现数值显示。数码管根据连接方式不同,分为共阳极与共阴极类型。知识点 共阳极数码管原理图:在共阳极结构中,所有发光二极管的阳极连接形成一个公共端com,该端口接电源正极。当某字段二极管的另...

什么是数码管动态显示
数码管动态显示是单片机中应用最为广泛的一种显示方式之一,动态驱动是将所有数码管的8个显示笔划"a,b,c,d,e,f,g,dp"的同名端连在一起,另外为每个数码管的公共极COM增加位选通控制电路,位选通由各自独立的I\/O线控制,当单片机输出字形码时,所有数码管都接收到相同的字形码,但究竟...

四位数码管动态显示?
在代码层面,实现8位数码管同时点亮包括以下几个关键步骤:首先,引入动态显示代码,覆盖静态显示逻辑,并创建用于显示不同数据的数组。例如,使用`u8 Show_Tab[8]`数组来选择每个位的显示内容,根据具体需求调整数组值。通过修改显示函数,确保正确处理闪烁现象,特别是当显示数据无规律时,需调整代码以适应...

单片机8位数码管动态显示00-99
1、配置引脚——根据所使用的数码管的类型和位数,选择合适的引脚连接单片机和数码管,一般使用多路IO口控制,例如8位数码管需要至少8个IO口。2、建立数码管显示表——根据数码管的类型和位数,建立对应的显示表,记录0~9数字对应的数码管段亮灭状态。3、控制数码管动态显示——使用定时器中断和计数器...

为什么数码管不采用动态方式显示?
数码管的显示方式有两种:静态显示和动态显示。1.静态显示方式。所谓静态显示就是指无论是多少位数码管,同时处于显示状态。 当单片机系统中使用静态数码管显示时,需要在每一个数码管上添加一个锁存器,当需要某个数码管显示其他内容时,只需要修改与其相连的锁存器的值即可。 当数码管处于静态显示方式...

单片机数码管动态与静态显示方式的不同 软件编程有什么不同
静态显示通常只有一个数码管的情况下用,直接把段码送到数码管就可以了。阴极直接接地。如果数码管较多一般是不用的,因为IO口不够。动态显示,对于共阴极数码管,把所有数码管的阳极并联后接到单片机IO口上作为段码。把所有阴极顺次接到单片机IO口上作为位码。通过控制位码实现控制单一数码管显示,通过...

单片机 汇编 LED数码管动态显示
所谓的动态显示就是:led灯按设定的循序不停的一个一个(一个数用一块八段管)数的输出显示,由于led灯的闪烁速度很快,而人的眼睛最多只能识别0.2秒间隙以上的变化。那么在人看来,不停闪烁的led管就像是静态显示一样。图中,段控制和位控制分时复用P0口,选用两个锁存器573来分开段控制和位控制...

单片机静态显示和动态显示的原理各有什么特点?
一般在控制数码管显示的时候有:静态显示:每个数码管的段如8段和位有专门的硬件控制,如专门的译码器控制,单片机控制对应的译码器就可以了。每个数码管之间不相互影响。动态显示:多个数码管的段对应连接在一起,共用单片机的IO资源。位对应不同的IO资源,显示时需不停的改变段码和位选来控制显示。

单片机数码管动态显示的过程中,怎么实现让其中一个闪烁,其他的不受影...
1 单片机数码管动态显示的过程中,设置一个闪烁寄存器,专门保存要闪烁显示的位子,再增加一个闪烁显示码的暂存器。2 每次调用显示程序时,先要判断需要显示闪烁的位子的显示码,是不是等于“灭”的显示码,不是的话,将该位的显示码送闪烁显示码的暂存器进行保存,将“灭”的显示码送入相应的显示缓冲...

相似回答