工具/软件:Code Composer Studio
你(们)好 我 使用 MSP430G2553进行了键盘操作 。 但我在视频中提到了一个问题。 如果我按下数字5按钮(或者7、9或3...),它应该会像 LED (0101)一样亮起,但可以在同一列中多次激活其它 LED。 我想 当我按键时会出现电弧。所以,键值会发生变化。我如何解决这个问题?。抱歉我的英语不好
视频链接位于 www.youtube.com/watch
这是我的代码
#include
空延迟(空)
{
unsigned int i=2500;
while (i -);
}
unsigned int tus=50;
void Refresh_Keypad (void)
{
/***1.k Ω satır iken ****
P1OUT|=BIT1;
delay();
if (P1IN&BIT4)
{
TS=0;
}
否则 if (P1IN&BIT7)
{
TS=1;
}
否则 if (P2IN&BIT0)
{
TS=2;
}
否则 if (P2IN&BIT1)
{
TS=3;
}
//**ikinci satır aktif iken*****
P1OUT &=~BIT1;
P1OUT|=BIT2;
delay();
if (P1IN&BIT4)
{
TS=4;
}
否则 if (P1IN&BIT7)
{
TS=5;
}
否则 if (P2IN&BIT0)
{
TS=6;
}
否则 if (P2IN&BIT1)
{
TS=7;
}
//üçüncü satır……………………………………………………
P1OUT &=~BIT2;
P1OUT |=BIT3;
delay();
if (P1IN&BIT4)
{
TS=8;
}
否则 if (P1IN&BIT7)
{
TS=9;
}
否则 if (P2IN&BIT0)
{
TS=10;
}
否则 if (P2IN&BIT1)
{
TS=11;
}
//**dorduncu satır aktif iken*****
P1OUT &=~BIT3;
P1OUT |=BIT4;
delay();
if (P1IN&BIT4)
{
TS=12;
}
否则 if (P1IN&BIT7)
{
TS=13;
}
否则 if (P2IN&BIT0)
{
TS=14;
}
否则 if (P2IN&BIT1)
{
TS=15;
}
P1OUT &=~BIT4;
}
void main (void)
{
WDTCTL = WDTPW + WDTHOLD;
DCOCTL=CALDCO_1MHz;
BCSCTL1=CALBC1_1MHZ;
P1OUT &=~(BIT1 + BIT2 + BIT3 + BIT4);
P1DIR |=(BIT1+BIT2+BIT3+BIT4);
P1DIR &=~(BIT5+BIT7);
P2DIR =~(BIT0+BIT1);
P2OUT =~(BIT2+BIT3+BIT4+BIT4);
P2DIR|=BIT2+BIT3+BIT4+BIT4;
P2OUT &=~(BIT2+BIT3+BIT4+BIT4);
for (;;)
{
refresh_Keypad();
if (tus!=50)
{
TS=4*Tus; //RLAe2e.ti.com/.../KEYPAD.c
P2OUT=0x00;
P2OUT|=Tus;
TS=50;
}
}
}