基于89c51单片机的多路抢答器内容摘要:

K2_2 6 define K2_3 7 define K2_4 8 define K3_1 9 define K3_2 10 苏州工业园区职业技术学院课程(设计) 第 13 页 共 31 页 define K3_3 11 define K3_4 12 define K4_1 13 define K4_2 14 define K4_3 15 define K4_4 16 unsigned char code d[]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90,0x88,0x83,0xC6,0xA1,0x86,0x8E,0x7F,0xFF}。 unsigned char jkey, a,b,f,a1,b1,a2,a3,a4,a5,a5,a6,a7,a8,b1,b2,b3,b4,b5,b6,b7,b8,i,diss2[4],a0,b0,aaa1,ss,aa,c,m。 // 对 8051 单片机特殊功能寄存器的说明 define KEY_MASK 0xf0 define NO_KEY 0x00 void delay_1ms(void) //1ms 延时函数 { unsigned int i。 for (i=0。 i1000。 i++)。 } void delay_nms(unsigned int n) //N ms 延时函数 { unsigned int i=0。 for (i=0。 in。 i++) { delay_1ms() } } unsigned char read_keybord() { static unsigned char key_state = 0。 static unsigned char key_value, key_line。 苏州工业园区职业技术学院课程(设计) 第 14 页 共 31 页 static unsigned char key_return = NO_KEY。 unsigned char key_re。 unsigned char i。 switch(key_state) { case 0: key_return = NO_KEY。 key_line = 0xFE。 //0b00001110。 for(i=1。 i=4。 i++) //按键扫描 { P1 = key_line。 //输出行线电平 P1 = key_line。 //输出两次 delay_nms(1)。 key_value = KEY_MASK amp。 P1。 //读列电 平 if(key_value == KEY_MASK) { key_line = 1。 //没有按键 ,继续扫描 key_line |= 0x01。 // delay_nms(2)。 } else { delay_nms(1)。 if(key_value == KEY_MASK) {key_line = 1。 //没有按键 ,继续扫描 key_line |= 0x01。 break。 } else key_state++。 //有键按下 ,停止扫描 break。 //转消抖确认状态 } 苏州工业园区职业技术学院课程(设计) 第 15 页 共 31 页 } break。 case 1: { key_value=key_line amp。 0x0f | key_value。 switch(key_value) //确认按键 { case 0xEE: //0b1110 1110: key_re = K1_1。 break。 case 0xDE: //0b11011110: key_re = K1_2。 break。 case 0xBE: //0b10111110: key_re = K1_3。 break。 case 0x7E: //0b 01111110 : key_re = K1_4。 break。 case 0xED: //0b 11101101 : key_re = K2_1。 break。 case 0xDD: //0b1101 1101: key_re = K2_2。 break。 case 0xBD: //0b10111101: key_re = K2_3。 break。 case 0x7D: //0b01111101: key_re = K2_4。 苏州工业园区职业技术学院课程(设计) 第 16 页 共 31 页 break。 case 0xEB: //0b 11101011: key_re = K3_1。 break。 case 0XDB: //0b 11011011: key_re = K3_2。 f++。 if(f==1)i=1。 if(f==9) f=1。 break。 case 0xBB: //0b1011 1011: key_re = K3_3。 break。 case 0x7B: //0b01111011: key_re = K3_4。 break。 case 0xE7: //0b11100111: key_re = K4_1。 break。 case 0xD7: //0b1101 0111:。
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。 用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。