單個按鍵控制多種流水燈狀態

更新一個單個按鍵控制多種流水燈狀態的教程,希望能幫助到大家~

所需元器件如下:
STC89C52RC芯片 *1
10K電阻 *2
100Ω電阻 *8
10uF 電解電容 *1
22pF 瓷片電容 *2
12MHz晶振 *1
按鍵 *2
LED燈 *8

代碼如下:

#include"reg52.h"
#define uchar unsigned char
#define uint unsigned int
#define LED P1
sbit KEY=P3^0;

unsigned char code led_1[8]=
{0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};//定義第一種流水燈狀態
unsigned char code led_2[8]=
{0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe};//定義第二種流水燈狀態
unsigned char code led_3[5]=
{0x7e,0xbd,0xdb,0xe7,0xff};//定義第三種流水燈狀態
unsigned char code led_4[5]=
{0xe7,0xc3,0x81,0x00,0xff};//定義第四種流水燈狀態

unsigned int j,z;   //定義兩個無符號整型變量

void delay(uint x)  //延時
{
	uchar i;
	while(x--)
	{
		for(i=0;i<100;i++);
	}
}

void main()
{
	j=1;    //初始化爲開機第一種流水燈狀態
	while(1)
	{
		if(KEY==0)
		{
			delay(10);
			if(KEY==0)
			{
				j++;
				delay(10);
				if(j>4)
				j=1;
			}
		}
	switch(j)
	{
		case 1:   //第一種流水燈狀態
			for(z=0;z<8;z++)
			{
				LED=led_1[z];
				delay(150);
				if(KEY==0)
				{
					delay(10);
					if(KEY==0)
					{
						j++;
						delay(10);
						if(j>4)
						j=1;
					}
				}
			}
		break;
		case 2:   //第二種流水燈狀態
			for(z=0;z<8;z++)
			{
				LED=led_2[z];
				delay(150);
				if(KEY==0)
				{
					delay(10);
					if(KEY==0)
					{
						j++;
						delay(10);
						if(j>4)
						j=1;
					}
				}
			}
		break;
		case 3:   //第三種流水燈狀態
			for(z=0;z<5;z++)
			{
				LED=led_3[z];
				delay(150);
				if(KEY==0)
				{
					delay(10);
					if(KEY==0)
					{
						j++;
						delay(10);
						if(j>4)
						j=1;
					}
				}
			}
		break;
		case 4:   //第四種流水燈狀態
			for(z=0;z<5;z++)
			{
				LED=led_4[z];
				delay(150);
				if(KEY==0)
				{
					delay(10);
					if(KEY==0)
					{
						j++;
						delay(10);
						if(j>4)
						j=1;
					}
				}
			}
		break;
	}
	}
}

仿真電路圖如下:

在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章