51单片机—独立按键

#include 
#include "./delay/delay.h"

sbit key1 = P1^0;
sbit beep = P2^7;

#define SEGPORT P0
sbit bit_select = P2^0;
sbit seg_select = P2^1;

unsigned char segdata[16] = {0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};
unsigned char bitdata[8] = {0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};
unsigned char TempData[2];

void display()
{
	static unsigned char i = 0;
	SEGPORT = 0x0;
	seg_select = 1;
	seg_select = 0;

	SEGPORT = 0xff;
	bit_select = 1;
	bit_select = 0; //消重影

	SEGPORT = TempData[i];
	seg_select = 1;
	seg_select = 0;

	SEGPORT = bitdata[i];
	bit_select = 1;
	bit_select = 0;
	i++;
	if(2 == i)
	{
		i = 0;
	}


}
void timer0_isr(void) interrupt 1
{
	TH0 = (65536 - 2000) / 256;
	TL0 = (65536 - 2000) % 256;
	display();
}
//0xD8,0xF7
void timer0_init(void)
{
	EA = 1;
	TH0 = (65536 - 2000) / 256;
	TL0 = (65536 - 2000) % 256;
	TL0 = 0xD8;
	ET0 = 1;
	TR0 = 1;
}
void main()
{
     unsigned char i;
	 unsigned char disdata = 0;
     timer0_init();
     
	 
	 while(1)
	 {
	 	
		 if(0 == key1)  //有按键按下
		 {
		    delay_ms(10);
			if(0 == key1) //确实有按键按下
			{
				for(i = 0 ; i < 200; i++)
				{
					beep = ~beep;
					delay_us(200);
				}
				while(!key1);  //有按键抬起
				delay_ms(10);
				while(!key1);  //确实有按键抬起
				disdata++;
				if(100 == disdata)
			    {
			     	disdata = 0;
			    }

			}
		 	
		 }
		 TempData[0] = segdata[disdata / 10];
		 TempData[1] = segdata[disdata % 10];
         
		 delay_us(200);
		// delay_us(200);
		// delay_us(100);
 
		 
	 }
}

你可能感兴趣的:(单片机)