⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 1266.c

📁 51单片机C程序
💻 C
字号:
//利用动态扫描和定时器1在数码管上显示出从765432开始以1%秒的速度
//往下递减直至765400并保持显示此数,与此同时利用定时器0以500MS速度
//进行流水灯从上至下移动,同时蜂鸣器发声,当数码管上数减到停止时,
//实验板上流水灯全部闪烁5次,数码管全熄灭。单片机进入休眠状态。

#include<reg52.h>
#include<intrins.h>
#define uc unsigned char
#define ui unsigned int
sbit beep=P2^3;
sbit dus=P2^6;
sbit wes=P2^7;
uc i,k,a,b,c;
ui count0,count1,num,j;
uc code table[]={
0x3f,0x06,0x5b,0x4f,0x66,0x6d,
0x7d,0x07,0x7f,0x6f,0x77};

void delay(ui x)
{
	for(i=10;i>0;i--)
	 for(j=x;j>0;j--);
}

void display(ui qi,ui bi,ui si,ui ge)
{
	P0=0xff;
	wes=1;
	wes=0;
	P0=table[7];
	dus=1;
	dus=0;
	P0=0xfe;
	wes=1;
	wes=0;
	delay(1);
	
	P0=0xff;
	wes=1;
	wes=0;
	P0=table[6];
	dus=1;
	dus=0;
	P0=0xfd;
	wes=1;
	wes=0;
	delay(1);
	
	P0=0xff;
	wes=1;
	wes=0;
	
	P0=table[qi];
	dus=1;
	dus=0;
	P0=0xfb;
	wes=1;
	wes=0;
	delay(1);
	
	P0=0xff;
	wes=1;
	wes=0;
	P0=table[bi];
	dus=1;
	dus=0;
	P0=0xf7;
	wes=1;
	wes=0;
	delay(1);
	
	P0=0xff;
	wes=1;
	wes=0;
	P0=table[si];
	dus=1;
	dus=0;
	P0=0xef;
	wes=1;
	wes=0;
	delay(1);
	
	P0=0xff;
	wes=1;
	wes=0;
	P0=table[ge];
	dus=1;
	dus=0;
	P0=0xdf;
	wes=1;
	wes=0;
	delay(1);
}


void main()
{
	EA=1;
	ET1=1;
	ET0=1;
	TMOD=0x11;
	TH1=(65536-5000)/256;
	TL1=(65536-5000)%256;
	TH0=(65536-5000)/256;
	TL0=(65536-5000)%256;
	TR1=1;
	TR0=1;
	a=0xfe;
	num=5432;
	while(1)
	{
		
		if(count1==50)
		  {
			count1=0;			
			num--;				    
		   }
		display(num/1000,num%1000/100,num%1000%100/10,num%1000%100%10);
		P1=a;	
		beep=1;
		if(count0==50)
		{
			a=_crol_(a,1);
			count0=0;
			beep=0;			         
		}		
		//if(count0==25)
            //beep=~beep;
	  	
		if(num==5400)
		 {			
			beep=1;	
			TR1=0;
			TR0=0;
			for(b=5;b>0;b--)
  			{				
				for(c=100;c>0;c--)
				display(num/1000,num%1000/100,num%1000%100/10,num%1000%100%10);
	            P1=0x00;
				for(c=100;c>0;c--)
				display(num/1000,num%1000/100,num%1000%100/10,num%1000%100%10);
				P1=0xff;				
			}
			P0=0xff;
			wes=1;
			wes=0;			
			while(1);	
		}		

	}


}
void time1() interrupt 3 using 1
{
TH1=(65536-5000)/256;
TL1=(65536-5000)%256;
count1++;
}
void time0() interrupt 1 using 3
{
TH0=(65536-5000)/256;
TL0=(65536-5000)%256;
count0++;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -