c语言按键控制程序

c语言按键控制程序,第1张

if(keypress==true)检测有键按下 {delay_us(50) 延桐哗拍迟50us,软件滤波防抖动if(keypress==true) 检测有键被按下 key_value=P1提取键值芦拦 {switch(key_value) 识别是那个键被局羡按下了 case 0x01: XXX;breakcase 0x02:XXXBREAK进入对应工步或者动作即可。 ...... } } }

主要就是按键蚂燃扮检测,防抖呗。

首先给出闷灶检测按键代码:(我这个事4*4键盘。具体你要根据实段森际情况编写)

uchar TestKey()

{

uchar cord_h,cord_l

P6=0x0f

cord_h=P6&0x0f

if(cord_h!=0x0f)

{

Delay_Xms(1)

if(cord_h!=0x0f)

{

cord_h=P6&0x0f

P6=cord_h|0xf0

cord_l=P6&0xf0

return(cord_h+cord_l)

}

}return(0xff)

}

--------------------------------------

然后你在Main函数里编写循环,检测按键然后做你想做的事情。。。

while(1)

{

key=TestKey()//调用键盘扫描,

switch(key)

{

case 0x7e:P4=0xa1break//0 按下相应的键显示相对应的码值

case 0x7d:Show1Menu()break//1

case 0x7b:P4=0x83break//2

case 0x77:P4=0x88break//3

case 0xbe:P4=0x99break//4

case 0xbd:P4=0x90break//5

case 0xbb:P4=0x82break//6

case 0xb7:P4=0xb0break//7

case 0xde:P4=0xc0break//8

case 0xdd:P4=0x80break//9

case 0xdb:P4=0x92break//a

case 0xd7:P4=0xa4break//b

case 0xee:P4=0xc6break//c

case 0xed:P4=0xf8break//d

case 0xeb:P4=0x99break//e

case 0xe7:P4=0xf9break//f

}

}

#include<reg52.h>

#define uint unsigned int

#define uchar unsigned char

void delay_ms(uint)

sbit led0=P0^0

sbit led1=P0^1

sbit key1=P3^2

sbit key2=P3^3

void main()

{

   uchar i=0

   uchar j=0

    while(1)

    {

       if(key1==0)//按键1

       {

        delay_ms(10)

 铅岩       if(key1==0)

        {

            i++

            i=i%2

            switch(i)

            {

                 case 0: led0=1 break//关小灯

                 case 1: led0=0 break//开小灯

                 default:  break

            }

        }

        while(!key1)

        }

        

        if(key2==0)//按键2

       {

        delay_ms(10)

        if(key2==0)

        {

            j++

            j=j%2

          差激粗  switch(j)

            {

                 case 0: led1=1 break//关小灯

                 case 1: led1=0 break//开小灯

                 default:  break

            }

        }

        while(!key2)

        }

    虚镇}

}

void delay_ms(uint z)  //延时子程序

{  

uint x,y

for(x=zx>0x--)

for(y=110y>0y--)

}


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/12290316.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-24
下一篇 2023-05-24

发表评论

登录后才能评论

评论列表(0条)

保存