您的位置 首页 新品

单片机试验板2011_V1.1-矩阵按键操练

原理图:/************单片机教学实验板******************//*功能描述:学习板整体演示程序*//*作者:郑文*//*编写时间:2011.3.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;ifor(j=0;j<10;j++);
}
/***************************蜂鸣器延时子程序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

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/xinpin/267237.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部