本帖最后由 86hupeng 于 2012-6-7 12:02 编辑
利用单片机2个引脚识别6个按键
大概的程序如下,具体的程序还有待改进
#define S1 1
#define S2 2
#define S3 3
#define S4 4
#define S5 5
#define S6 6
//***************两IO出六键*************************
unsigned char KeyValue(void)
{
unsigned char KeyTemp;
if(!IO1&&!IO2) KeyTemp=S3;//如果都为低,则说明是S3
else if(!IO1) KeyTemp=S2;
else if(!IO2) KeyTemp=S1;
else
{
IO1=1;//拉高IO1,来读取状态
IO2=0;//扫描,置IO1=0;
if(!IO1) //IO1==0的话,只有S4或S5按下会出现
{ //反向扫描按键
IO2=1;//拉高IO2,来读取状态
IO1=0;
if(!IO2) KeyTemp=S4;//IO2==0的话,只能是S4按下会出现
else KeyTemp=S5;
}
else//只能是S6了*/
KeyTemp=S6;
}
IO1=1;
IO2=1;
return(KeyTemp);
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
else//只能是S6了*/
KeyTemp=S6;
的地方改成这样呢?
else//只可能是S6了*/
{
IO2=1;//拉高IO2,来读取状态
IO1=0;
if(!IO2) KeyTemp=S6;//IO2==0的话,只能是S6按下会出现
else KeyTemp=0;//无键
}
一周热门 更多>