51单片机的基础知识—关于数码管的驱动方式

关于数码管的驱动方式

第一种就是单片机的直接扫描:

硬件设备简单,但会消耗大量的单片机CPU时间

这种的特点就是,一旦程序受到阻塞没来得及给单片机的数码管扫描代码,那么我们的数码管就会阻塞或者熄灭。

第二种就是专用的驱动芯片:

内部自带显存,扫描电路,单片机只需要告诉他显示什么即可。

这种芯片有一种叫做TM1640.这个使用更为方便

以下关于单片机的代码就是第一种:让单片机直接进行扫描

#include <REGX52.H>

unsigned char NixieTable[] = 
   {
      0x3F,// 0
			0x06,// 1
			0x5B,// 2
			0x4F,// 3
			0x66,// 4
			0x6D,// 5
			0x7D,// 6
			0X07,// 7
			0X7F,// 8
			0X6F,// 9
			0x77,// A
			0x7C,// B
			0x39,// C
			0x5E,// D
			0X79,// E
			0x71,// F
			0x00,// ¿Õ
			
			};
			
void Delay(unsigned int xms)
{
			unsigned char i,j;
			
			i = 2;
			j = 239;
			do
			{
						while(--j);
			}while(--i);
			xms --;
}

void  Nixie(unsigned char Location, number)

{
						switch(Location)
						
			    {
									case 1:
									P2_4 = 1; P2_3 = 1; P2_2 = 1;
									break;
									case 2:
									P2_4 = 1; P2_3 = 1; P2_2 = 0;
									break;
									case 3:
									P2_4 = 1; P2_3 = 0; P2_2 = 1;
									break;
									case 4:
									P2_4 = 1; P2_3 = 0; P2_2 = 0;
						      break;
									case 5:
									P2_4 = 0; P2_3 = 1; P2_2 = 1;
						      break;
									case 6:
									P2_4 = 0; P2_3 = 1; P2_2 = 0;
						      break;
									case 7:
									P2_4 = 0; P2_3 = 0; P2_2 = 1;
						      break;
									case 8:
									P2_4 = 0; P2_3 = 0; P2_2 = 0;
						      break;
					
			     }
					 P0 = NixieTable[number];
					 Delay(1);
					 P0 = 0x00;
					 
			 
		}
		

void main()

{
			while(1)
			{
			
					Nixie(1,5);
					Nixie(2,2);
					Nixie(3,0);
					Nixie(4,1);
					Nixie(5,3);
					Nixie(6,1);
					Nixie(7,4);
	    
			}			
    
}

其单片机的运行结果如下:

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值