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

📄 main.c

📁 stc15单片机测试程序V1.0版
💻 C
字号:
/***********************************************************
实验名称:矩阵按键
程序说明:本程序测试了矩阵按键
实验平台:stc15单片机开发板v1.0版
日期:2012-05-27
QQ:	259902530
www.stcstudy.com    61mcu.taobao.com  版权所有 
***********************************************************/
//矩阵按键测试程序, 输出结果用串口传输到上位机显示,可采用STC下载软件自带串口调试助手观察
#include "STC15F2K.H"
#include "UART.H"
#include <intrins.h>

#define uchar unsigned char
#define uint  unsigned int 

char SMG[]="0123456789";

void delay_ms(uchar t);    //11.0592M晶振下 延时 t ms;
uchar ScanKey(void);       //返回按键的码值(按下按键12时,返回12,否则返回0)
						   //只有松手后才返回码值
void main(void)
{
   uchar New,L[3];
   InitUART();
   while(1)
   {
     New= ScanKey();	 //获取新按键信息
	 if(New)
	 {
	   SendString("按键编码为 : ");
	   L[0] = SMG[New/10];
	   L[1] = SMG[New%10];
	   L[2] = '\0';
	   SendString(L);
	   SendData('\r');
	   SendData('\n');
	 }
	  
   }   
}


void delay_ms(uchar t)
{
    unsigned char a,b;
	while(t--)
    for(b=178;b>0;b--)
        for(a=14;a>0;a--);
}

uchar ScanKey(void)
{
  uchar Tmp,Tmp2,KeyNum;
  P3=0x0f;
  if(P3!=0x0f) 
  {
   delay_ms(8);
   if(P3!=0x0f)
   {
     Tmp=P3;
	 P3 =0xF0;
	 _nop_();_nop_();_nop_();_nop_();
	 Tmp2=P3;
	 Tmp=Tmp+Tmp2;
	 while(P3!=0xF0) ;
	 switch(Tmp&0xF0)
	 {
	   case 0xE0:KeyNum=0;break;
	   case 0xD0:KeyNum=4;break;
	   case 0xB0:KeyNum=8;break;
	   case 0x70:KeyNum=12;break;
	 }
	 switch(Tmp&0x0F)
	 {
	   case 0x0E:KeyNum+=1;break;
	   case 0x0D:KeyNum+=2;break;
	   case 0x0B:KeyNum+=3;break;
	   case 0x07:KeyNum+=4;break;

	 } 
	  P3|=0x03; 	  //此句必须,否则影响 串口输出
	 return KeyNum;
    }
  }
  return 0;
}

⌨️ 快捷键说明

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