这是我在网上论坛上看到的用少量的IO口实现多个按键的电.doc

这是我在网上论坛上看到的用少量的IO口实现多个按键的电.doc

ID:56369271

大小:32.00 KB

页数:3页

时间:2020-06-22

这是我在网上论坛上看到的用少量的IO口实现多个按键的电.doc_第1页
这是我在网上论坛上看到的用少量的IO口实现多个按键的电.doc_第2页
这是我在网上论坛上看到的用少量的IO口实现多个按键的电.doc_第3页
资源描述:

《这是我在网上论坛上看到的用少量的IO口实现多个按键的电.doc》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、这是我在网上论坛上看到的用少量的I/O口实现多个按键的电路。我改了一下,用两个口实现五个按键。我实现的电路是这样的,用P1.1和P1.0两个口接通五个键,K1,K2,K3,K4,K5分别用P2.0,P2.1,P2.2,P2.3,P2.4,P2.5控制五个灯,每个灯代表一个按键按下。可是我的程序能调试通过。可就是当模拟的时候看不到效果,出现两个现象(1)只有K1,K2和K3三个键的功能可以实现,K4,K5的就不行,我怀疑是不是我的对K4,K5的逻辑处理有问题。(2)P2.3的输出灯一直亮。当按下K1,K2和K3这三个键时候可以看见对应的灯亮(此时P2.3对应的

2、灯是灭的)。可是当按K4,K5时就不行了。没反应(P2.3对应的灯是亮的)。K0K1按键二极管接地P1.0P1.1K2K3K4按键的图就是上边那个,然后我通过按键程序的返回值为0,1,2,3,4。去控制P2.0,P2.1,P2.2,P2.3,P2.4,P2.5五个口。去驱动五个小灯(发光二极管)。程序如下,基本思想是先对P1.1和P1.0口输入11.然后读取P1口的状态,当读到00时就认为是K0按下,子程序返回0当读到01时认为是K1键按下,子程序返回1当读到10时认为是K2键按下。子程序返回2当读到11时。认为K0,K1,K2键都没有按下。则再对P1口输入

3、10。如果读到00时认为是K3按下。子程序返回3当读到其它状态时(10,11,01)再对P1口输入01如果读到00时隐时现认为是K4按下。子程序返回4#include#defineucharunsignedcharvoiddelay(unsignedinti);uchargetkey(void);ucharkeyvol;voidmain(void){P2=0x00;for(;;){keyvol=getkey();switch(keyvol){case0:{P2=0x01;}break;//驱动发光二极管case1:{P2=0x02;}bre

4、ak;case2:{P2=0x04;}break;case3:{P2=0x08;}break;case4:{P2=0x10;}break;default:break;}}}uchargetkey(void){ucharx;P1=P1

5、0x03;x=P1&0x03;if(x<3){delay(7000);//延时P1=P1

6、0x03;x=P1&0x03;}//直接返回K0,K1,K2键号0,1,2else{delay(7000);//延时P1=P1

7、0x03;x=P1&0x03;if(x>=3){P1=P1

8、0x03;P1=P1&0xfe;//P1口输入10x

9、=P1&0x03;x=x+3;}if(x==3){delay(7000);P1=P1

10、0x03;P1=P1&0xfe;//10x=P1&0x03;x=x+3;//返回K3键号}if(x>3){P1=P1

11、0x03;P1=P1&0xfd;//01x=P1&0x03;x=x+4;//返回K4键号if(x==4){delay(7000);P1=P1

12、0x03;P1=P1&0xfd;//01x=P1&0x03;x=x+4;}}}returnx;}voiddelay(unsignedinti){while(i--);}

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。