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

📄 键盘扫描.c

📁 单片机键盘扫描程序,STC12C5410单片机
💻 C
字号:
#include 	"STC12C5410AD.H"
#include	<stdio.h>
#include 	"键盘扫描.H"
#include 	<math.h>

unsigned int m=0,n=0;
unsigned int i=0,j=0;
unsigned char Key_InitNumber=0,Key_Number=0,Key_i=0,Key_Buffer=0;
unsigned int idata value[]={0,1,1,1,
	1,1,1,1,
	1,1,1,1,
	1,1,1,1,
	1,1,1,1};

#define NUMBER (0x131A) 	
unsigned int BUFF1=0;


void	Delay_10US(void)
{
	for(j=0;j<10;j++)
		{;}                                                                                                        
}

void D200M(void)									//不开定时器0的时候,
{																//定时200MS,示波器显示2MS--2.02MS
	for(j=0;j<923;j++)
	{
		for(i=0;i<100;i++)
		{
			;	
		}	
	}                                                                                                        
}

void Key_Clock(unsigned char Key_InitNumber)				//键盘扫描的时钟序列1
{
	for(Key_i=0;Key_i<Key_InitNumber;Key_i++)
	{
		P2_1=0;
		Delay_10US();
		P2_1=1;
		Delay_10US();
	}
}

void Key_Clock1(void)				//键盘扫描的时钟序列2
{
	P2_1=0;
	Delay_10US();
	P2_1=1;
	Delay_10US();
}

void initTimer(void)						//定时器初始化,晶振6MHz,
{																//定时器0,方式2(8位定时器),中断100us
 	TMOD=0x22;											//(2^8-x)*12/(6*(10^6))=100*(10^-6)
 	TH0=0xB2;											//解得x=206,TH0=0xCE,TL0=0xCE;
 	TL0=0xB2;															
	//TL0=0x1f;
	AUXR=0x80;
	
}

void initPWM(void)				//PWM的初始化			
{
	CMOD=0x02;
//	CL=0x00;
//	CH=0x00;
	CCAP0L=0x80;						//80H=128D
	CCAP0H=0x80;
	CCAPM0=0x42;
//	PCA_PWM0=0x00;
	CR=1;	
	
	AUXR=0xE0;
 	TMOD=0x15;
 	IE=0x88;
 	TH0=0x00;
 	TL0=0x00;
  TH1=0x15;
 	TL1=0xA0;
 	
	
//	P0=0x02;     	//RN3:CH2,通道2
	P0=0x00;				//RN1:CH0,通道0
}


void timer0(void) interrupt 1 using 1				
{																//每0.01ms中断一次
//	P3_5=!P3_5;
	P2_4=!P2_4;
}

void timer1(void) interrupt 3
{
 	TH1=0x15;
 	TL1=0xA0;
 //add your code here.
 	BUFF1=(TH0<<8)+TL0;
 	TH0=0x00;
 	TL0=0x00;
}





void main()
{
//	initTimer();										//定时器初始化
//AUXR=0x00;
//TR0=1;
	ET0=1;
	EA=1;
	AUXR=0x80;
	P1=0xff;													//默认为1,设置为0时才有效

	P2_1=0;														//164的初始化	
	P2_2=1;
	P2_3=1;

	P0_3=0;														//LED和蜂鸣器的初始化
	P2_0=0;
	P1_7=1;
	
	P2_4=0;
	P3_4=0;
	
	for(;;)
	{
		Key_Buffer=0;
		P2_2=1;
		P2_3=1;
		Key_Clock(20);									//键盘各按键的初始化
		P2_4=0;
		P3_4=0;
		P1_7=1;
			
		P2_2=0;
		Key_Clock1();
/*		if(P2_3=0)
		{
			initTimer();
			Code_08();
			P1_7=0;	
		}  */
		
		for(Key_Number=1;Key_Number<17;Key_Number++)
		{
			P2_2=1;
			Key_Clock1();		
			if(P2_3==0)
			{
				Key_Buffer=Key_Number;	
	//			break;
			}
			
			switch (Key_Buffer)
			{
				case 1:
					break;
				case 2:
					break;
				case 3:
					break;					
				case 4:	
					break;
				
				case 9:	
					break;
				case 10:				
					break;
				case 11:			
					break;
				case 12:				
					break;
				case 13:			
					break;
				case 14:				
					break;
				case 15:			
					break;
				default:
					TR0=0;
					TR1=0;
					break;	
			}
			
		}
				
		P2_0=!P2_0;
		D200M();
	}
	
	
}

⌨️ 快捷键说明

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