赞
踩
学习本篇前需要了解的知识:
可以参照本文的【51单片机】系列文章
独立按键在51单片机的所在位置,如下图红框中所示。
独立按键的内部结构图,如下所示。
独立按键的右端都接到电源的负极,左端分别与MCU中对应编号的 IO口(InputOutput)相连接。如下图红色框中所示。
由于LED小灯的内部结构是右端接高电平,要使LED亮起则左端要接低电平,即赋值为0
代码如下:
#include <REGX52.H>
void main()
{
while(1)
{
if(P3_1==0) { //按键按下,LED亮起
P2_0=0;
}
else{ //按键松开,LED熄灭
P2_0=1;
}
}
}
代码如下:
#include <REGX52.H> void Delay(unsigned int xms) //@12.000MHz { unsigned char i, j; while(xms) { i = 2; j = 239; do { while (--j); } while (--i); xms--; } } void main() { while(1) { if(P3_1==0) //按键按下,产生一系列抖动,延时20ms消抖 { Delay(20); while(P3_1==0);//判断按键是否松开。松开则P3_1!=0,跳出循环 Delay(20); P2_0=~P2_0;//将LED状态取反 } } }
代码如下:
#include <REGX52.H> void Delay(unsigned int xms) //@12.000MHz { unsigned char i, j; while(xms--) { i = 2; j = 239; do { while (--j); } while (--i); } } void main() { unsigned char LEDnumber=0; while(1) { if(P3_1==0) { Delay(20); while(P3_1==0); Delay(20); LEDnumber++;//LEDnumber从0000 0001开始二进制累加 P2=~LEDnumber;//P2从1111 1110开始二进制点亮LED } } }
代码如下:
#include <REGX52.H> void Delay(unsigned int xms); //@12.000MHz unsigned char LEDNum=0; void main() { P2=~0x01; while(1) { if(P3_1==0)//K1按键控制LED左移 { Delay(20); while(P3_1==0); Delay(20); LEDNum++; if(LEDNum==8)//LED亮至最左端,调整重新回到最右端。 LEDNum=0; P2=~(0x01<<LEDNum); } if(P3_0==0)//K2按键控制LED右移 { Delay(20); while(P3_0==0); Delay(20); if(LEDNum==0)//LED亮至最右端,调整重新回到最左端。 LEDNum=7; else LEDNum--; P2=~(0x01<<LEDNum); } } } void Delay(unsigned int xms) { unsigned char i, j; while(xms--) { i = 2; j = 239; do { while (--j); } while (--i); } }
以上就是本文的全部内容,感谢您的阅读与支持!喜欢的小伙伴可以点赞收藏,欢迎大家留言评论。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。