【51单片机学习过程记录】6数码管动态显示

来源:互联网 发布:什么软件可以看回看 编辑:程序博客网 时间:2024/05/29 02:48

声明:【51单片机学习过程记录】全是我自己学习、实践所记录的过程,我只是菜鸟,所有论点和观点仅代表我个人,不能确定是这个技术的真理。我的目的是学习和有可能成为可以向别人分享的经验,因此有错误我会虚心接受,并认真改正。


aa原理图分析:

和上一篇 数码管的静态显示 分析一样。



bb代码程序:


#include <reg52.h>
#define uchar unsigned char
sbit duan=P2^6;
sbit wei=P2^7;
uchar code table[]={0x3f,0x6,0x5b,0x4f,0x66,0x6d,0x7d,0x7,0x7f,0x6f};
/*
code的作用是告诉单片机,定义的数据要放在ROM(程序存储区)里面,其实是
相当于汇编里面的寻址MOVX,因为C语言中没办法详细描述存入的是ROM还是RAM(寄存器),
所以在软件中添加了这一个语句起到代替汇编指令的作用,对应的还有data是存入RAM的意思。
*/

void delay(int z)
{

  int x,y;

for(x=z;x>0;x--)

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

}

void main()
{

  uchar i;

while(1)

{

/**************************************************************

P0=0xfc;

wei=1;

wei=0;

P0=0x3f;

duan=1;

duan=0;

delay();

静态显示中代码,此处无需给P0赋值0xff去消影,改变在于,

先给P0赋予处理的值,然后再对MC74HC573的LE锁存脚进行操作,

即置高和置低,那么上一步操作中P0的值则不会对接下来的操作造成影响。

***************************************************************/

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

{

P0=0xfe;               //第一个数码管

wei=1;

wei=0;

P0=table[0];        //显示0

duan=1;

duan=0;

delay(10);

P0=0xfd;             //第二个数码管

wei=1;

wei=0;

P0=table[1];      //显示1

duan=1;

duan=0;

delay(10);

}

}

}


cc代码分析:

为代码中的注释部分。


dd总结:

数码管的静态显示,是指定某一个或者几个数码管,然后显示数据。

动态显示方式,所谓动态显示,是指无论在任何时刻,只有一个数码管处于显示状态,每个数码管轮流显示。

当数码管越多的时候,动态显示就可以采用扫描方式用更少的IO去实现显示,即节省IO,这是动态显示的优点。

动态显示的缺点是占用cpu的资源较多。

(静态和动态显示的比较可以百度查阅)


0 0
原创粉丝点击