單片機實驗板2011_V1.1-矩陣按鍵練習
原理圖:
/************單片機教學實驗板 ******************/
/*功能描述:學習板整體演示程序 */
/*作者:鄭 文 */
/*編寫時間:2011.3.1 */
/*接外部晶振11.0592 MHZ */
/*功能描述*/
/*4*4矩陣按鍵練習*/
#include
#include
#include
#include
#include
#include
#define uchar unsigned char
#define uint unsigned int
#define ulong unsigned long
sbit speaker=P1^3; //蜂鳴器
sbit A13=P2^5; //
sbit R_D=P3^7; //
sbit D4=P0^4; //
sbit D5=P0^5; //
sbit D6=P0^6; //
sbit D7=P0^7; //
sbit LED_CS=P1^4;
void Key_Beep(void);
void Delay_Beep(unsigned int count);
/*****************按鍵聲音********************/
void Key_Beep(void)
{ uchar i;
for (i=0;i<250;i++)
{ speaker=1;
Delay_Beep(5);
speaker=0;
Delay_Beep(5);
}
speaker=1;
}
/**************************************************/
/***************************蜂鳴器延時子程序start**********************/
void Delay_Beep(unsigned int count)
{
unsigned int i,j;
for(i=0;i
}
/***************************蜂鳴器延時子程序end************************/
/************主程序*************/
void main(void)
{
uchar key_num;
LED_CS=0;
A13=0;
R_D=0;
P0=0Xff;
Key_Beep();
Delay1ms(1000);
Key_Beep();
while(1)
{
;
}
}
////////////////////////////////////////////////////////////////////////////////////////////////
Matrix_Key.h
/*****Program Author : ZhengWen(ClimberWin) *****/
/*************************************************************/
/*****File Function : 4*4 key *****/
/*****Compile Date : 2009/2/1 *****/
/*****Edition Info : V1.0 *****/
/*****Amend Date : *****/
/*************************************************************/
/*************************功能描述****************************/
/*********************4*4矩陣按鍵應用*************************/
/*******************P2為矩陣按鍵的接口************************/
#ifndef __Matrix_Key__
#define __Matrix_Key__
#include
#define uchar unsigned char
#define uint unsigned int
uchar Matrix_Key();//返回值(00-15)16個按鍵
/********4*4矩陣按鍵程序******/
uchar Matrix_Key()
{
uchar key;
uchar temp1,temp2;
uchar key_num;
key=0x55;//初始鍵值
P2=0x0f;
temp1=P2&0x0f;
if(!(temp1==0x0f))
{
P2=0xf0;
temp2=P2&0xf0;
switch(temp1|temp2)
{
case 0xee:key=0; break;
case 0xde:key=1; break;
case 0xbe:key=2; break;
case 0x7e:key=3; break;
case 0xed:key=4; break;
case 0xdd:key=5; break;
case 0xbd:key=6; break;
case 0x7d:key=7; break;
case 0xeb:key=8; break;
case 0xdb:key=9; break;
case 0xbb:key=10;break;
case 0x7b:key=11;break;
case 0xe7:key=12;break;
case 0xd7:key=13;break;
case 0xb7:key=14;break;
case 0x77:key=15;break;
default: ;key=0x55;break;
}
}
else
{;}
return(key);//返回鍵值
}
#endif
評論