基于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:。基于89c51单片机的多路抢答器
相关推荐
中吸收最大功率。 2) 行波状态时传输线的传输效率最高。 因反射波带回的能量和入射波一样 会在传输线中 产生损耗,固有反射时的损耗功率增大,传输效率低。 3) 行波状态时传输线功率容量最大。 因在驻波状态时,沿线的高频电场分 布出现波腹,波腹处的电场比传输同样功率时的行波电场高得多,因此容易发生击穿,从而限制了功率容量。 匹配方法 阻抗匹配的方法有二:一是在不匹配系统中适当加入无功元件
源滤波器之后,电源电路输出端的纹波只有 6~8mV 了。 在主控板的电源输入端分别再对177。 15V、177。 5V 加一级 LC 滤波,最后把纹波控制在 6mV 以下了。 主控电路保护二极管: 二极管用以防止电流倒灌 ,防止 烧坏电源。 四、 系统的软件设计 、程序流程图 基于 89C52 的数控直流电源 13 开 始 ‘ +’键按下还是‘ ’键按下。 Flag标志位置‘ 1’
case 9:P2=0x6f。 break。 case 0:P2=0x3f。 break。 } } void show(unsigned long put) { char each[6],i。 /* unsigned long p。 for(i=0。 i6。 i++) { p=pow(10,5i)。 each[i]=(char)(put/p)。 put=put%p。 } */
接收高八位地址信号和控制信号。 P3 口: P3 口管脚是 8 个带内部上拉电阻的双向 I/O 口,可接收输出 4 个 TTL 门电流。 当 P3口写入“ 1”后,它们被内部上拉为高电平,并用作输入。 作为输入,由于外部下拉为低电平, P3口将输出电流( ILL)这是由于上拉的缘故。 P3口也可作为 AT89S52的一些特殊功能口, P3 口同时为闪烁编程和编程校验接收一些控制信号。 RST