单片机按键扫描程序和显示程序及延时程序解析.doc

上传人:白大夫 文档编号:3398364 上传时间:2019-08-21 格式:DOC 页数:6 大小:28.50KB
返回 下载 相关 举报
单片机按键扫描程序和显示程序及延时程序解析.doc_第1页
第1页 / 共6页
亲,该文档总共6页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

《单片机按键扫描程序和显示程序及延时程序解析.doc》由会员分享,可在线阅读,更多相关《单片机按键扫描程序和显示程序及延时程序解析.doc(6页珍藏版)》请在三一文库上搜索。

1、单片机按键扫描程序和显示程序及延时程序解析/程序中没有做按键去抖,也没有考虑多个键同时按下的情况。/最低两位数码管显示相应的按键(如按下S10,在显示10;按下S25,则显示25)/无按键按下的时候显示FF/按键跟按键的扫描结果满足如下关系:/按键扫描结果(result)按键扫描结果/K100XE7K180XB7/K110XEBK190XBB/K120XEDK200XBD/K130XEEK210XBE/K140XD7K220X77/K150XDBK230X7B/K160XDDK240X7D/K170XDEK250X7E#include/包含 单片机 内部资源预定义_CONFIG(0x1832)

2、;/芯片配置字,看门狗关,上电延时开,掉电检测关,低压编程关,加密,4M晶体HS振荡intresult;voiddelay();/delay函数申明voidinit();/I/O口初始化函数申明voidsCAN();/按键扫描程序申明voiddisplay(intx);/显示函数申明/-/主程序voidmain()while(1)/循环工作init();/调用初始化子程序scan();/调用按键扫描子程序display(result);/调用结果显示子程序/-/初始化函数voidinit()ADCON1=0X07;/设置A口为普通I/O口TRISA=0X0f;/设置A口高2位为输出,低4位为输

3、入TRISC=0XF0;/设置C口高4位为输入,低4位为输出TRISD=0X00;/设置D口为输出PORTA=0XFF;PORTD=0XFF;/先清除所有显示/-/按键扫描程序voidscan()PORTC=0XF7;/C3输出低电平,其他三位输出高电平asm(“nop”);/插入一定延时,确保电平稳定result=PORTC;/读回C口高4位结果result=result/清除低4位if(result!=0xf0)/判断高4位是否为全1(全1代表没按键按下)?result=result|0x07;/否,加上低4位0x07,做为按键扫描的结果else/是,改变低4位输出,重新判断是否有按键按下

4、PORTC=0XFb;/C2输出低电平,其他三位输出高电平asm(“nop”);/插入一定延时,确保电平稳定result=PORTC;/读回C口高4位结果result=result/清除低4位if(result!=0xf0)/判断高4位是否为全1(全1代表没按键按下)result=result|0x0b;/否,加上低4位0xb,做为按键扫描的结果else/是,改变低4位输出,重新扫描PORTC=0XFd;/C1输出低电平,其他三位输出高电平asm(“nop”);/插入一定延时,确保电平稳定result=PORTC;/读回C口高4位结果result=result/清除低4位if(result!=

5、0xf0)/判断高4位是否为全1(全1代表没按键按下)result=result|0x0d;/否,加上低4位0x0d,做为按键扫描的结果else/是,改变低4位的输出,重新扫描PORTC=0XFe;/C0输出低电平,其他三位输出高电平asm(“nop”);/插入一定延时,确保电平稳定result=PORTC;/读回C口高4位结果result=result/清除低4位if(result!=0xf0)/判断高四位是否为全1(全1代表没有按键按下)result=result|0x0e;/否,加上低4位0x0e,做为按键扫描的结果else/是,全部按键扫描结束,没有按键按下,置无按键按下标志位resu

6、lt=0xff;/扫描结果为0xff,做为没有按键按下的标志/-/显示程序voiddisplay(intx)switch(result)case0xe7:PORTD=0xf9;PORTA=0X2F;delay();PORTD=0xc0;PORTA=0X1F;delay();break;/K10case0xeb:PORTD=0xf9;PORTA=0X2F;delay();PORTD=0xf9;PORTA=0X1F;delay();break;/K11case0xed:PORTD=0xf9;PORTA=0X2F;delay();PORTD=0xa4;PORTA=0X1F;delay();break

7、;/K12case0xee:PORTD=0xf9;PORTA=0X2F;delay();PORTD=0xb0;PORTA=0X1F;delay();break;/K13case0xd7:PORTD=0xf9;PORTA=0X2F;delay();PORTD=0x99;PORTA=0X1F;delay();break;/K14case0xdb:PORTD=0xf9;PORTA=0X2F;delay();PORTD=0x92;PORTA=0X1F;delay();break;/K15case0xdd:PORTD=0xf9;PORTA=0X2F;delay();PORTD=0X82;PORTA=0X

8、1F;delay();break;/K16case0xde:PORTD=0xf9;PORTA=0X2F;delay();PORTD=0XF8;PORTA=0X1F;delay();break;/K17case0xb7:PORTD=0xf9;PORTA=0X2F;delay();PORTD=0X80;PORTA=0X1F;delay();break;/K18case0xbb:PORTD=0xf9;PORTA=0X2F;delay();PORTD=0X90;PORTA=0X1F;delay();break;/K19case0xbd:PORTD=0xa4;PORTA=0X2F;delay();POR

9、TD=0xc0;PORTA=0X1F;delay();break;/K20case0xbe:PORTD=0xa4;PORTA=0X2F;delay();PORTD=0xf9;PORTA=0X1F;delay();break;/K21case0x77:PORTD=0xa4;PORTA=0X2F;delay();PORTD=0xa4;PORTA=0X1F;delay();break;/K22case0x7b:PORTD=0xa4;PORTA=0X2F;delay();PORTD=0xb0;PORTA=0X1F;delay();break;/K23case0x7d:PORTD=0xa4;PORTA=0X2F;delay();PORTD=0x99;PORTA=0X1F;delay();break;/K24case0x7e:PORTD=0xa4;PORTA=0X2F;delay();PORTD=0x92;PORTA=0X1F;delay();break;/K25case0xff:PORTD=0x8e;PORTA=0X2F;delay();PORTD=0x8e;PORTA=0X1F;delay();/无按键按下/-/延时程序voiddelay()/延时程序inti;/定义整形变量for(i=0x100;i-;);/延时

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 其他


经营许可证编号:宁ICP备18001539号-1