微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > 51单片机之键盘扫描方式程序讲解

51单片机之键盘扫描方式程序讲解

时间:11-28 来源:互联网 点击:
按键扫描程序

上电时, 点亮P00口LED

按下K1时, LED向右移一位

按下K2时,LED向左移一位

#include

#include

unsigned char scan_key();

void proc_key(unsigned char key_v);

void delayms(unsigned char ms);

sbit K1 = P1^4;

sbit K2 = P1^5;

main()

{

unsigned char key_s,key_v;

key_v = 0x03;

P0 = 0xfe;

while(1)

{

key_s = scan_key();

if(key_s != key_v)

{

delayms(10);

key_s = scan_key();

if(key_s != key_v)

{

key_v = key_s;

proc_key(key_v);

}

}

}

}

unsigned char scan_key()

{

unsigned char key_s;

key_s = 0x00;

key_s |= K2;

key_s <= 1;

key_s |= K1;

return key_s;

}

void proc_key(unsigned char key_v)

{

if((key_v & 0x01) == 0)

{

P0 = _cror_(P0,1);

}

else if((key_v & 0x02) == 0)

{

P0 = _crol_(P0, 1);

}

}

void delayms(unsigned char ms)

// 延时子程序

{

unsigned char i;

while(ms--)

{

for(i = 0; i 120; i++);

}

}

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top