按键控制程序

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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(表明是第一次按下),则转入按键处理部分。按键处理主要是定义按键编码,因为从输入口读入的按键值通常需要处理,以便过滤不必要的信息或干扰,同

相关文档
最新文档