51单片机入门学习------数码管

一.数码管原理

1.138译码器

        其有3个输入端A、B和C,输出端有8位,对应51单片机的8位数码LED。将输入端输入的3位数据作为3位二进制码(C B A 的顺序),然后译码器将2进制转为10进制,使对应的引脚变成低电平,其余引脚为高电平,这样就能使对应的数码LED点亮。

        优点:从8个线控制减少到3个线控制,节约了单片机的I/O口资源。

        特别要注意的是:

1)3位二进制数转为十进制为0—7。但数码管的编号是1—8。因此想要计算对应数码管的二进制数,需要先使数码管编号-1,再转为二进制数。

2)3位二进制码(C B A 的顺序),也就是P2_4=;   P2_3=;    P2_2=; 。

2.数码管

 1)74HC245

        74hc245是一种在单片机系统中常用的驱动器,三态输出八路收发器,在电路中的作用是:增加io口的驱动能力,比如说51单片机的io口本身的驱动电流较小但所带的负载很大,这种时候就可以使用74hc245来增强io口的驱动能力。

 2)引脚:
        74HC245的引脚包括输出使能(OE),方向控制(DIR),A组输入/输出(A0-A7),B组输入/输出(B0-B7),电源(VDD)和(GND)。

        DIR:双向数据缓存,DIR接高电平,将A组(A0-A7)数据传输到B组(B0-B7)。

3)逻辑功能:

        只有当输出使能OE为0时,芯片才能被使能,不然芯片所以输入输出端口处于高阻态(既不是高电平也不是低电平)。

4)电容

 电容104 代表10后面加4个0,也就是10 0000 pF

5)应用实例

功能:使编号为5的数码管显示数字“6”

代码

#include <REGX52.H>

void mian()
{
	//编号为5的数码管
	P2_4=1;
	P2_3=0;
	P2_2=0;
	//数码管显示“6”数字  (0111 1011)  (D7)
	P0=0x7D;
    //需要带上while循环
	while(1)
	{
	}
}

二.动态数码管显示

原理:人眼视觉暂留

消影 :P0=0x00;break;

功能:使多个LED亮起

代码:


#include <REGX52.H>
#include <INTRINS.H>

void delay(int d)
{
    while(d--)
    {
         _nop_();
         _nop_();
         _nop_();
    }
}


int NixieTube (int Location,int Number)
{
     int x=Location-1;
     P2_2=x%2;P2_3=(x/2)%2;P2_4=(x/4)%2;

     switch(Number)
     {
      case 0:P0=0x3F;delay(100);P0=0x00;break;
      case 1:P0=0x06;delay(100);P0=0x00;break;
      case 2:P0=0x5B;delay(100);P0=0x00;break;
      case 3:P0=0x4F;delay(100);P0=0x00;break;
      case 4:P0=0x66;delay(100);P0=0x00;break;
      case 5:P0=0x6D;delay(100);P0=0x00;break;
      case 6:P0=0x7D;delay(100);P0=0x00;break;
      case 7:P0=0x07;delay(100);P0=0x00;break;
      case 8:P0=0x7F;delay(100);P0=0x00;break;
      case 9:P0=0x6F;delay(100);P0=0x00;break;
     }
}

void main()
{
     while(1)
     {
         NixieTube(1,1);
         NixieTube(2,2);
         NixieTube(3,3);
     }
}

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值