仿真电路
- 元件:
英文名|中文名|属性
:-|:-|:-|:-
LED-GREN|绿色LED|-
RX8|8位电阻排|元件值设置为1k
BUTTON|按键|-
RES|电阻|元件值设置为10K
-
电路图:
-
仿真图:
按键1 上移点亮的LED
按键2 下移点亮的LED
程序设计
main.c
:#include <AT89X51.H> #define uchar unsigned char #define uint unsigned int //延时函数 t为毫秒(不准) void delay(uint t) { uint i; while (t--) { for (i = 120; i; i--) ; } } //主程入口 void main() { char n = 0; //用来标记哪一个LED亮 P2 = 0xff; //让P2所有引脚输出高电平 for (;;) //死循环,和while(1)等价 { if (P2 & 0x03) //判断P2的1,2脚是不是高电平 { delay(10); //延时消除抖动 if (!(P2 & 0x01)) //P2.0相连的按键被按下 { if (--n < 0) { n = 7; } } if (!(P2 & 0x02)) //P2.1相连的按键被按下 { if (++n > 7) { n = 0; } } } P1 = ~(1 << n); //控制P1输出 delay(400); //粗略延时 } }
注解
-
两个按键一端连接到电源和P2,另一端接地
当按键松开时,P2某一脚与电源相连,为高电平
当按键按下时,P2某一脚接地,为低电平 -
"按键消抖"
按键按下的时候会有一段时间电位不稳定
一般要等10ms左右再判断一次
本文链接:https://blog.chrxw.com/archives/2020/03/03/1068.html
转载请保留本文链接,谢谢