使用Proteus仿真实现51单片机8位数码管滚动显示(含仿真和代码)

1,目标

        使用51单片机控制8位数码管,分别滚动显示单个数字0~7,程序运行之后,单片机先控制最左边的第一位数码管显示0,其他的熄灭,延时一段时间之后,控制左边第二个数码管显示1,其它熄灭,以此类推,反复循环上述过程。

2,设计方式

        使用P0输出段码,P2输出位码,因为单片机的电流不足以点亮数码管,因此,我们可以通过使用由8个NPN型三极管组成的位驱动电路来对数码管进行位驱动和位控制扫描,话不多说,上程序

3,代码如下

#include<reg51.h>
#include<intrins.h>
#define uchar unsigned char
#define uint unsigned int

uchar code dis_code[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8};//共阳数码管段码表 01234567
  
//0xf8,0x82,0x92,0x99,0xb0,0xa4,0xf9,0xc0	7~0
void  delay(uint t)		//延时子函数
{
	uchar i;
	while(t--) for(i=0;i<200;i++);
}

void  main()
{	
	uchar i,j=0x80;//10000000
	while(1)
	{
		for(i=0;i<8;i++)
		{
			j=_crol_(j,1);			//_crol_(j,1)——将j循环左移1位	
			P0=dis_code[i];			//P0口输出段码
			P2=j;				    //P2口输出位控码	
		
			delay(200);	
			P0=0x00;
		}
	}
}

4,仿真图如下

5,小结

        由于数码管的余晖和人眼的“视觉暂留”,只要控制好数码管的显示时间并减小延时时间,即可实现8位数码管“同时点亮”的效果。

物联沃分享整理
物联沃-IOTWORD物联网 » 使用Proteus仿真实现51单片机8位数码管滚动显示(含仿真和代码)

发表评论