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

📄 text1.c

📁 比较经典的独立键盘及时扫描方法。51单片机中运行
💻 C
字号:

#include<reg52.h>
#define uchar unsigned char

sbit led0 = P2^0; //the led0 bit
sbit led1 = P2^1; //the led0 bit
sbit led2 = P2^2; //the led0 bit
sbit led3 = P2^3; //the led0 bit
sbit led4 = P2^4; //the led0 bit
sbit led5 = P2^5; //the led0 bit

sbit dat164  =P2^6;  //the bit of HC164's data
sbit clk164  =P2^7;  //the bit of HC164's clock

code uchar ledcode[] =  // define the table of the "8bit led" 
{
	0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90,0x88,0x83,0xA7,0xA1,0x86,0x8E
};


void delay(void);
void displayled(uchar i,uchar m);
uchar lightflag=0x00;
void main()
{  
	P0=0xFF;
	P1=0xFF;
	IT0=0;     //低电平出发
	EX0=1;
	EA=1;
	P0=0xFE; 
	while(1)
	{
		if(lightflag>0x00) 
		{
			
			switch(P0)///////////////////////
					{
					    case 0xfe: displayled(1,1);break;
						case 0xfd: displayled(2,2);break;
						case 0xfb: displayled(3,3);break;
						case 0xf7: displayled(4,4);break;
						case 0xef: displayled(5,5);break;
						case 0xdf: displayled(6,6);break;
						
					}
			delay();
			lightflag=0x00;
			P1=0xFF;
		}
		else
		{
			if(P0==0xFF) P0=0xFE;
			else P0=((P0<<1)+1);
		}
					
	}
}
void int_0(void) interrupt 0
{   
	lightflag=P0;
}

void delay(void)
{
	uchar i;
	for(i=0;i<255;i++) ;
}

void displayled(uchar i,uchar m) //第i位led显示m
{
	uchar j,k;
	k=ledcode[m];
	switch(i)
	{
		case 1: led0=0;break;
		case 2: led1=0;break;
		case 3: led2=0;break;
		case 4: led3=0;break;
		case 5: led4=0;break;
		case 6: led5=0;break;
	}

	for (j = 0; j < 8; j++) 
	{	dat164 =(k & 0x80); 		//1000,0000
		//else dat164 = 0;
      	clk164 = 1;
      	clk164 = 0;
      	k<<= 1;
	} 
			
}

⌨️ 快捷键说明

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