单片机上的8位数码管显示数字12345678

本文介绍了一种使用51单片机实现8位数码管动态显示的方法,通过控制不同段和位的选择,使得每段显示特定数字,并通过足够快的刷新速度(小于3ms)实现视觉上的连续显示。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

#include<reg52.h>


sbit  DUAN =P2^6;
sbit  WEI =P2^7;

char code sz[17]={0x3f , 0x06 , 0x5b ,0x4f , 0x66 , 0x6d ,0x7d ,
                   0x07 , 0x7f , 0x6f ,0x77 , 0x7c , 0x39 , 
                   0x5e , 0x79 , 0x71 , 0x00};	 //0-9&A-F&"不显示"  字型码

void delay(int xms)		  //xms等于几就延迟几毫秒
{
   int  i,j;
	for(i=xms;i>0;i--)
	    for(j=112;j>0;j--);
}

void main()
{
    while(1)
	{
	    P0=sz[8];	//数字8
		DUAN=1;
		DUAN=0;
		P0=0x7f;
		WEI=1;
		WEI=0;
		delay(2);		//延迟小于3ms人眼则看到8位数码管同时点亮

		P0=sz[7];	//数字7
		DUAN=1;
		DUAN=0;
		P0=0xbf;
		WEI=1;
		WEI=0;
		delay(2);

		P0=sz[6];	//数字6
		DUAN=1;
		DUAN=0;
		P0=0xdf;
		WEI=1;
		WEI=0;
		delay(2);

		P0=sz[5];	//数字5
		DUAN=1;
		DUAN=0;
		P0=0xef;
		WEI=1;
		WEI=0;
		delay(2);

		P0=sz[4];	//数字4
		DUAN=1;
		DUAN=0;
		P0=0xf7;
		WEI=1;
		WEI=0;
		delay(2);

		P0=sz[3];	//数字3
		DUAN=1;
		DUAN=0;
		P0=0xfb;
		WEI=1;
		WEI=0;
		delay(2);

		P0=sz[2];	//数字2
		DUAN=1;
		DUAN=0;
		P0=0xfd;
		WEI=1;
		WEI=0;
		delay(2);

		P0=sz[1];	//数字1
		DUAN=1;
		DUAN=0;
		P0=0xfe;
		WEI=1;
		WEI=0;
		delay(2);



	}
}







注意:每位数码管显示之间延迟时间小于3ms可看见8位数码管同时点亮!!!!

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值