单片机学习小组
直播中

辛太励

7年用户 1140经验值
擅长:20153
私信 关注

编写矩阵键盘模块有哪些注意事项

编写矩阵键盘模块有哪些注意事项?
怎样去设置串口数据格式的?

回帖(1)

周志光

2022-2-23 10:05:50
1.由于涉及到串口, 编写矩阵键盘模块时切忌给P36,P37赋值。

#define set(x)  P32=(x&0x04)>>2;P33=(x&0x08)>>3;P34=(x&0x10)>>4;P35=(x&0x20)>>5
#define get()   (P3&0x3c)

void keyscan()
{
        set(0x0c);
        dat=get();
        set(0x30);
        dat=(dat|get())^0xff;
        Trg=(dat&(dat^Cont));
        Cont=dat;
}


我这里用的是三行式,当然用经典那种delay行(列)扫描肯定也能实现,不过千万别有P36,P37
2.题目已经表明串口数据格式,最后一位必须是’n’!!!(我当时就没注意,把问题复杂化了,如果在发送窗口输了很长一串数据会怎么样,如果只输了一字节会怎么样…这涉及到你存放接收数据数组要设置多大,何时清0,还有何时error,相当复杂,当时脑子就想这**能写?!)

3.关于长按键,我的思路是设置一个标志位,按键按下阶段该标志位一直为1,当它置1超过一定时间便会执行长按键。`

case 0xdb:                          //S13
         key13=1;
         while(P35==0);
         key13=0;

if(key13)
{
        tt++;
        if(tt==1000)
        {
                longkey=1;
                qidong=!qidong;
        }
}
举报

更多回帖

发帖
×
20
完善资料,
赚取积分