单片机--key
来源:互联网 发布:js for循环是什么作用 编辑:程序博客网 时间:2024/05/21 23:33
矩阵键盘
矩阵键盘用来控制功能的选择
按键的返回值又分为物理键值和逻辑键值,物理键值是按键实际的01代码,而逻辑键值是01代码翻译而来的十进制数。
key.c
#include "myhead.h"unsigned char key_scan(void)//返回按键的物理键值{ unsigned char keyvalue; KEYPORT = 0xf0; if(0xf0 != KEYPORT)//有按键按下 { delay_ms(10); if(0xf0 != KEYPORT)//确实有按键按下 { KEYPORT = 0xfe; if(0xfe != KEYPORT) { keyvalue = KEYPORT; keyvalue &= 0xf0; keyvalue += 0x0e; while(0xfe != KEYPORT); //有按键抬起 delay_ms(10); while(0xfe != KEYPORT); //确实有按键抬起 return keyvalue; } KEYPORT = 0xfd; if(0xfd != KEYPORT) { keyvalue = KEYPORT; keyvalue &= 0xf0; keyvalue += 0x0d; while(0xfd != KEYPORT); //有按键抬起 delay_ms(10); while(0xfd != KEYPORT); //确实有按键抬起 return keyvalue; } KEYPORT = 0xfb; if(0xfb != KEYPORT) { keyvalue = KEYPORT; keyvalue &= 0xf0; keyvalue += 0x0b; while(0xfb != KEYPORT); //有按键抬起 delay_ms(10); while(0xfb != KEYPORT); //确实有按键抬起 return keyvalue; } KEYPORT = 0xf7; if(0xf7 != KEYPORT) { keyvalue = KEYPORT; keyvalue &= 0xf0; keyvalue += 0x07; while(0xf7 != KEYPORT); //有按键抬起 delay_ms(10); while(0xf7 != KEYPORT); //确实有按键抬起 return keyvalue; } } } return 0x00;}// unsigned char key_pro()//返回按键的逻辑键值// {// unsigned char keynum;// keynum = key_scan();// switch(keynum)// {// case 0x7e :return 0;break;// case 0xbe :return 1;break;// case 0xde :return 2;break;// case 0xee :return 3;break;// case 0x7d :return 4;break;// case 0xbd :return 5;break;// case 0xdd :return 6;break;// case 0xed :return 7;break; // case 0x7b :return 8;break;// case 0xbb :return 9;break;// case 0xdb :return 10;break;// case 0xeb :return 11;break;// case 0x77 :return 12;break;// case 0xb7 :return 13;break;// case 0xd7 :return 14;break;// case 0xe7 :return 15;break; // default:return 16;break; // }// }
此处将逻辑键值注释掉是因为,我在编译代码下载到51板子上时,代码总量超过了51单片机的最大容量,所以在程序中直接选用物理键值。
key.h
#ifndef _KEY_H#define _KEY_Hextern unsigned char key_scan(void);extern unsigned char key_pro();#endif
0 0
- 单片机--key
- 单片机时钟程序(6)key.c
- 单片机时钟程序(7)key.h
- 单片机时钟程序(6)key.c
- 单片机时钟程序(7)key.h
- 51单片机实验(LED and KEY)
- 单片机
- 单片机
- 单片机
- 单片机
- 单片机
- 单片机
- 单片机
- 单片机
- 单片机
- 单片机
- 单片机
- 单片机
- 有关JAVA语言的安卓手机软件开发的分析
- MySQL字段类型详解
- B+树原理及mysql的索引分析
- linux系统间通过cron和ssh实现数据的自动定时传输
- Java常量池相关问题
- 单片机--key
- 软开开发工具总结
- Java Web开发Session超时设置
- 【zzulioj 1841 so easy!麻麻再也不用担心我的数学了!】
- DNS
- ubuntu完全卸载mysql
- List遍历与删除
- Linux下ftp服务的搭建和windows下连接及问题解决
- logback入库配置