您好,欢迎访问三七文档
当前位置:首页 > 行业资料 > 交通运输 > 51单片机用不同IO口写的矩形按键程序
用不同IO口实现矩形按键程序/************************************************//*************main()函数*************************//************************************************/#includereg52.h#defineucharunsignedchar#defineuintunsignedint#defineulongunsignedlong#defineQP2/*********按键端口定义*************/sbitKey_Line0=P3^0;//行四位定义sbitKey_Line1=P1^5;sbitKey_Line2=P1^2;sbitKey_Line3=P3^2;sbitKey_List0=P3^1;//列四位定义sbitKey_List1=P1^3;sbitKey_List2=P1^4;sbitKey_List3=P1^6;/**********************************/ucharKey_line();voidnum_list();voidnum_line();ucharn=0,j=0,n1=0,n2=0,j1=0;ucharnum1=0,a=0,b=0;ucharnum=0,v=0;voidmain(){Q=0x00;while(1){num=Key_line();switch(num){case2:Q=0x01;break;case3:Q=0x02;break;case4:Q=0x03;break;case5:Q=0x04;break;case6:Q=0x05;break;case7:Q=0x06;break;case8:Q=0x07;break;case9:Q=0x08;break;case10:Q=0x09;break;case11:Q=0x0A;break;case12:Q=0x0b;break;case13:Q=0x0c;break;case14:Q=0x0d;break;case15:Q=0x0e;break;case16:Q=0x0f;break;case17:Q=0x00;break;default:break;}}}/*************************************调用函数名:key4x4**功能:调用按键程序**作者:徐日达**描述:4*4按键程序,运用不同**IO口实现,用行列扫描方式***********************************//*************************************函数名:Key_line()**功能:按键行扫描************************************/ucharKey_line(){num_list();//定义行扫描管脚电平if(((Key_List0&&Key_List1&&Key_List2&&Key_List3)==0)&&j==0){num_list();if(((Key_List0&&Key_List1&&Key_List2&&Key_List3)==0)&&j==0)//按键防抖{Delay20us(3);n++;}if(n=20){n=0;n2=1;if(Key_List0==0)returnn2=1;//按下返回标志位if(Key_List1==0)returnn2=2;//按下返回标志位if(Key_List2==0)returnn2=3;//按下返回标志位if(Key_List3==0)returnn2=4;//按下返回标志位}num_line();if(((Key_Line0&&Key_Line1&&Key_Line2&&Key_Line3)==0)&&j==0){if(((Key_Line0&&Key_Line1&&Key_Line2&&Key_Line3)==0)&&j==0)//按键防抖{Delay20us(3);n1++;}if(n1=20){n1=0;j=1;if(Key_Line0==0)returnn2=n2+1;//按下返回标志位if(Key_Line1==0)returnn2=5+n2;//按下返回标志位if(Key_Line2==0)returnn2=9+n2;//按下返回标志位if(Key_Line3==0)returnn2=13+n2;;//按下返回标志位Delay1ms(2);}}}if((Key_List0&&Key_List1&&Key_List2&&Key_List3)&&n=1)//防止误按时n清零{n1=0;//参数清零n=0;j=0;}if((Key_List0&&Key_List1&&Key_List2&&Key_List3)&&j1==1)//松手检测{n=0;//参数清零n1=0;j=0;}return0;//无按下返回标志位}/***********************************************************//**函数名:ucharnum_list()***功能:初始化按键引脚行/************************************************************/voidnum_list(){Key_Line0=0;//定义行扫描管脚电平Key_Line1=0;Key_Line2=0;Key_Line3=0;Key_List0=1;Key_List1=1;Key_List2=1;Key_List3=1;}/***********************************************************//**函数名:ucharnum_line()***功能:初始化按键引脚列/************************************************************/voidnum_line(){Key_Line0=1;//定义列扫描管脚电平Key_Line1=1;Key_Line2=1;Key_Line3=1;Key_List0=0;Key_List1=0;Key_List2=0;Key_List3=0;}
本文标题:51单片机用不同IO口写的矩形按键程序
链接地址:https://www.777doc.com/doc-2927853 .html