matrix key——51程序
2016-09-15 17:44
183 查看
unsigned char segdata[16] ={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71}; unsigned char bitdata[8] = {0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f}; unsigned char tempdata[8] = 0x0; unsigned char key_scan() { unsigned char keyvalue; KEYPORT = 0xf0; if(0xf0 != KEYPORT) { delay_ms(10); if(0xf0 != KEYPORT) { KEYPORT = 0xfe; if(0xfe != KEYPORT) { keyvalue = 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 0xff; } unsigned char key_pro() { unsigned char keynum; keynum = key_scan(); switch(keynum) { case 0x7e:return 0; case 0xbe:return 1; case 0xde:return 2; case 0xee:rerurn 3; case 0x7d:return 4; case 0xbd:return 5; case 0xdd:return 6; case 0xed:return 7; case 0x7b:return 8; case 0xbb:return 9; default:return 0xff; } } void matrix() { unsigned char key; key = key_pro(); if(0xff != key) { tempdata[0] = segdata[key / 16]; tempdata[1] = segdata[key % 16]; } }
相关文章推荐
- 51汇编模拟PT2272解码程序
- 经典c程序100例==51--60
- 51精确延时程序
- 51系列单片机延时程序计算的分析(汇编)
- C语言趣味程序百例精解之JAVA实现(51)谁是窃贼
- 51串口通信 C程序
- 51单片机数码管动态扫描C程序
- 我开发51程序后自已总结的一个程序结构与思想
- 51的综合应用程序
- 经典c程序100例==51--60
- 51单片机 Keil C 延时程序的简单研究770973054
- 51单片机延时程序的简单研究
- 51单片机控制步进电机的程序
- ARM与51编写程序的区别
- 很久以前写的一个应用于51上面的多功能控制采集系统的..学习板内核程序
- 51单片机8*8点阵LED显示原理及程序
- 第一个dp-51程序实现拉幕效果
- 使用IAR embedded workbench for MCS-51编写的一个示例程序
- 51单片机超声波测距C程序
- 51隐藏的初始化程序