单片机数码管动态显示1到8奇响一声偶数响两声

共有两种代码

方法1:

#include<reg52.h>
#define uchar unsigned char
#define uint unsigned int
sbit BEEP=P2^3;

sbit led1=P1^0;
sbit led2=P1^1;
sbit led3=P1^2;
sbit led4=P1^3;
sbit led5=P1^4;
sbit led6=P1^5;
sbit led7=P1^6;
sbit led8=P1^7;



sbit DU=P2^6;
sbit WE=P2^7;

uchar code sz[17]={0x3f , 0x06 , 0x5b ,0x4f , 0x66 , 0x6d ,0x7d ,
                   0x07 , 0x7f , 0x6f ,0x77 , 0x7c , 0x39 , 
                   0x5e , 0x79 , 0x71 , 0x00};	 

void delay(uint xms)		  
{
    uint i,j;
	for(i=xms;i>0;i--)
	    for(j=112;j>0;j--);
}

void main()
{
    while(1)
	{
		led1=0;
		P0=sz[1];	//数字1
		DU=1;
		DU=0;
		P0=0xfe;
		BEEP=0;
		delay(500);
		BEEP=1;
		delay(500);
		led1=1;

		led2=0; 
		P0=sz[2];	//数字2
		DU=1;
		DU=0;
		P0=0xfd;
		BEEP=0;
		delay(250);
		BEEP=1;
		delay(250);
		BEEP=0;
		delay(250);
		BEEP=1;
		delay(250);
		led2=1;
	
		led3=0;
		P0=sz[3];	//数字3
		DU=1;
		DU=0;
		P0=0xfb;
		BEEP=0;
		delay(500);
		BEEP=1;
		delay(500);
		led3=1;

	    led4=0;
		P0=sz[4];	//数字4
		DU=1;
		DU=0;
		P0=0xf7;
	
		BEEP=0;
		delay(250);
		BEEP=1;
		delay(250);
		BEEP=0;
		delay(250);
		BEEP=1;
		delay(250);
		 led4=1;

		 led5=0;
		P0=sz[5];	//数字5
		DU=1;
		DU=0;
		P0=0xef;
	
		BEEP=0;
		delay(500);
		BEEP=1;
		delay(500);
		 led5=1;

		  led6=0;
		P0=sz[6];	//数字6
		DU=1;
		DU=0;
		P0=0xdf;
	
		BEEP=0;
		delay(250);
		BEEP=1;
		delay(250);
		BEEP=0;
		delay(250);
		BEEP=1;
		delay(250);
		led6=1;
		

		led7=0;
		P0=sz[7];	//数字7
		DU=1;
		DU=0;
		P0=0xbf;
	
		BEEP=0;
		delay(500);
		BEEP=1;
		delay(500);
		led7=1;

		led8=0;
	    P0=sz[8];	//数字8
		DU=1;
		DU=0;
		P0=0x7f;
	
		BEEP=0;
		delay(250);
		BEEP=1;
		delay(250);
		BEEP=0;
		delay(250);
		BEEP=1;
		delay(250);
		led8=1;


	}
}

方法2:

#include<reg52.h>
sbit led1=P1^1;
sbit duan=P2^6;
sbit wei=P2^7;
sbit fm=P2^3;
char code smg[17]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71,0x00}  ;
char led[]={0xff,0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};
delay(int xms)
{
int i,j;
for(i=xms;i>=0;i--)
for(j=112;j>=0;j--);
}
main()
{
while(1)
{			               
P0=smg[1];	  //显示数字1
duan=1;duan=0;
P0=0xfe;
P1=led[1];
fm=0;
delay(500);
fm=1;
delay(500);


	   P0=smg[2];	  
duan=1;duan=0;
P0=0xfd;
P1=led[2];
fm=0;
delay(250);
fm=1;
delay(250);
fm=0;
delay(250);
fm=1;
delay(250);


	   P0=smg[3];	 
duan=1;duan=0;
P0=0xfb	;
P1=led[3];
fm=0;
delay(500);
fm=1;
delay(500);

	 P0=smg[4];	  
duan=1;duan=0;
P0=0xf7;
P1=led[4];
fm=0;
delay(250);
fm=1;
delay(250);
fm=0;
delay(250);
fm=1;
delay(250);

	 P0=smg[5];	 
duan=1;duan=0;
P0=0xef;
P1=led[5];
fm=0;
delay(500);
fm=1;
delay(500);

	 P0=smg[6];	 
duan=1;duan=0;
P0=0xdf;
P1=led[6];
fm=0;
delay(250);
fm=1;
delay(250);
fm=0;
delay(250);
fm=1;
delay(250);
	P0=smg[7];	 
duan=1;duan=0;
P0=0xbf;
P1=led[7];
fm=0;
delay(500);
fm=1;
delay(500);

		P0=smg[8];	 
duan=1;duan=0;
P0=0x7f;
P1=led[8];
fm=0;
delay(250);
fm=1;
delay(250);
fm=0;
delay(250);
fm=1;
delay(250);
}
	 }






















 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值