一、设计思路

三个按键:A按键启动、B按键控制不同流水速度(低中高)、C按键

8个LED灯正极解电源,负极接单片机I/O口。
死循环:设置P2口为11111110,使用左移函数,循环七次。
同时每次位移中间加入延时函数。
三个按键:A按键启动、B按键控制不同流水速度(低中高)、C按键控制流水灯暂停蜂鸣器长响:
思路一:设置一个变量i,起初为0,按下A键后为1;当i为1进入死循环

设置变量j,按下B,j++,当j大于3,j=j-3;使用j*1000,来空置循环函数的延时时间。设置bit变量s=0,按下按键C,s++,当s=1,j进入循环蜂鸣器响,s=0退出循环,在每次延时时检查按键.

二、程序编写

#include<reg52.h>
#include<intrins.h>
typedef unsigned int u16;
typedef unsigned char u8;
u8 j=1;

#define LED P2

sbit K1=P3^1;
sbit K2=P3^0;
sbit K3=P3^2;
sbit BUZ=P1^5;


void delayk(u16 i)       //延时函数快,
{   
    while(i--);
	
}


void delay()       //延时函数
{
	void key2();
	void key3();
	u16 y;
	switch(j)
	{
		case 1:for(y=10000;y>0;y--){key2();key3();}break;
		case 2:for(y=20000;y>0;y--){key2();key3();}break;
		case 3:for(y=40000;y>0;y--){key2();key3();}break;
		
		
	}

}

void key2()
{
	if(K2==0)
		{
			delayk(1000);
			if(K2==0)
			{
			++j;
			}
			if(j>3) { j=j-3;}
		}
		while(!K2);
	}

void key3()
{
	u8 i;
	if(K3==0)
		{
			delayk(1000);
			if(K3==0)
			{ 
        i=1;				
				while(i)			
				{
					BUZ=0;
					while(K3==1&&i==1)
					{
			        if(K3==0)
								{
								delayk(1000);
			          if(K3==0)
		            {
			            i=0;BUZ=1;while(!K3);
				          }
								}
							}
							}
							}
						}
}
				
			

void pamadeng()
{ 
	u8 i;
	while(1)
	{ 
		key2();
		key3();
		LED=0XFE;    //1111 1110
		  delay();
		for(i=0;i<7;i++)
		{
			key2();
			key3();
			LED=_crol_(LED,1);   
		  delay();
		
		}
   }
}
	

	
void main()
{
	while(1)
	{
		if(K1==0)
		{
			delayk(1000);
			if(K1==0)
			{
				pamadeng();
			}
		}
	}
}


您已经阅读00:00:00欢迎留言评论,喜欢的话就为作者点个赞或者赏颗糖吧! 分享