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

声明:【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
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值