按键控制程序
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
* 按键控制程序
*
* 连接方法:JP10(P2)与J12 (LED灯)连接,
*
* JP11(P0)与JP5(按键接口)连接* 用led读出按键的状态
本节主要注意:switch 语句的用法函数的调用
#include
#include
unsigned int key;
void delay(ms);
void scan_key();
void led1();
void led2();
void led3();
void led4();
void led5();
void led6();
void led7();
void led8();
main()
{
while(1)
{
scan_key(); //检测按键
switch(key) //读出对应值
{
case 1:led1();key=0;break;
case 2:led2();key=0;break;
case 3:led3();key=0;break;
case 4:led4();key=0;break;
case 5:led5();key=0;break;
case 6:led6();key=0;break;
case 7:led7();key=0;break;
case 8:led8();key=0;break;
default:;
}
}
}
void led1() //led 左移
{
unsigned char i;
P2= 0x01; 00000001
for(i=8;i>0;i--)
{
P2<<=1; //左移一位
delay(100);
}
}
void led2() //led右移
{
unsigned char i;
P2= 0x80; 10000000
for(i=8;i>0;i--)
{
P2>>=1; //右移一位
delay(100);
}
}
void led3() //led 交替闪1 {
P2= 0xaa; 10101010
delay(100);
P2= 0x55; 01010101
delay(100);
P2= 0xaa;
delay(100);
P2= 0x55;
delay(100);
}
void led4() ////led 交替闪2 {
P2= 0x55; 01010101
delay(100);
P2= 0xaa; 10101010
delay(100);
P2= 0x55;
delay(100);
P2= 0xaa;
delay(100);
}
void led5() ////led 交替闪3
P2= 0xcc; 11001100
delay(100);
P2= 0x33; 00110011
delay(100);
P2= 0xcc;
delay(100);
P2= 0x33;
delay(100);
}
void led6() ////led 交替闪4 {
P2= 0x33; 00110011
delay(100);
P2= ~P2; 11001100 //取反
delay(100);
P2= ~P2;
delay(100);
P2= ~P2;
delay(100);
}
void led7()
{
led1();led2();led3();led4();led5();led6(); //全来一遍}
void led8()
{
P2= 0XFF; //全亮
}
void scan_key() //按键检测函数
{
if(P0== 0xfe) 11111110
key= 1;
if(P0== 0xfd) 11111101
key= 2;
if(P0== 0xfb) 11111011
key= 3;
if(P0== 0xf7) 11110111
key= 4;
if(P0== 0xef) 11101111
key= 5;
if(P0== 0xdf) 11011111
key= 6;
if(P0== 0xbf) 10111111
key= 7;
if(P0== 0x7f) 01111111
key= 8;
}
void delay(ms)
{
unsigned i,j;
for(i=ms;i>0;i--)
for(j= 110;j>0;j--);
}
程序首先检查是不是有按键按下,如果没有,则将按键特征变量key置0,同时退出本函数,这样减少了无用程序的运行时间。如果有按键按下同时key等于0(表明是第一次按下),则转入按键处理部分。按键处理主要是定义按键编码,因为从输入口读入的按键值通常需要处理,以便过滤不必要的信息或干扰,同