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

📄 led.c

📁 一个基于51单片机的定时报警设计电路及程序
💻 C
字号:
#include <reg52.h>

unsigned char zimo[10]={0xc0,0xf9,0xa4,0xb0,	// 0, 1, 2, 3
				0x99,0x92,0x82,0xf8,0x80,0x90};// 4, 5, 6, 7, 8, 9
unsigned char disflag[4]={0xfe,0xfd,0xfb,0xf7};
unsigned char disbuf[4];
unsigned char n;
unsigned char flag;
unsigned char key;
unsigned char KeyDelaytime;
unsigned char Key_v;
unsigned char Keystate;
#define KEY_DELAY_TIME 10
#define KEY_IDEL 0x00
#define KEY_DELAY 0x01
#define WAIT_KEY_OPEN 0x02
sbit	AN1 = P3^2;
sbit	AN2 = P3^3;

void scan_key()
{
	switch(Keystate)
	{
		case KEY_IDEL :
			P3=0xff;
			Key_v=AN1;
			if((Key_v&0x01)==0)
			{
				Keystate=KEY_DELAY;
				KeyDelaytime=0;
			}
		break;
		case KEY_DELAY :
			if(KeyDelaytime>=KEY_DELAY_TIME)
			{
				P3=0xff;
				Key_v=AN1;
				if((Key_v&0x01)==0)
				{
					key++;
					if(key==6)key=0;
					Keystate=WAIT_KEY_OPEN;
				}
				else
				{
					Keystate=KEY_IDEL;
				}
			}
		break;
		case WAIT_KEY_OPEN :
			P3=0xff;
			Key_v=AN1;
			if(Key_v&0x01)Keystate=KEY_IDEL;
		break;
}
			
			
}
int main()
{
	unsigned char i;
	P0 = 0xff;
	P2 = 0xff;
	TMOD = 0x01;
	TH0 = 0xfc;
	TL0 = 0x18;
	IE = 0x82;
	key=0;
	flag=0;
	n=0;
	for(i=0;i<4;i++)
	{
		disbuf[i]=zimo[i];
	}
	TR0=1;
	while(1)
	{
		scan_key();
	}
	return 0;
}

void timer0(void) interrupt 1
{
	TH0=0xfc;
	TL0=0x18;
	KeyDelaytime++;
	if(flag<key+1)
	{
		P0=disbuf[n];
		P2=disflag[n];
	 }
	else
	{
		P2=0xff;
		P0=0;
	 }
	 flag++;
	 if(flag==6)
	 {
		n++;
		if(n==4)
		{
			n=0;
		}
		flag=0;
	}
}

⌨️ 快捷键说明

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