51.如何在单片机上设置键盘扫描仪程序

发布于 科技 2024-08-22
19个回答
  1. 匿名用户2024-02-01

    设置键盘程序?

    这是设计,对吧? 应根据键盘电路进行设计。 不同的电路导致不同的程序。

  2. 匿名用户2024-01-31

    用C的话来说; 这是反转线法; 转到**查找一些信息; 源程序很简单,高四低四; 不要自己编造,浪费你的时间。 当你使用它时,你可以使用它;

  3. 匿名用户2024-01-30

    这与设置无关,但您需要在上面写一个键盘扫描仪!

  4. 匿名用户2024-01-29

    源程序不会发布,所以让我们谈谈这个想法。

    按键扫描:一般按键的模式为行列扫描模式,假设5*5键盘一共25个按键,占用51个单片机和10个IO口。

    扫描方式 一般采用定时扫描方式,在定时中断中进行按键扫描操作。

    可以先将第一行的io口设置为0,然后扫描列中的5个io口,看看哪一个是0,表示按下了这个位置的按钮。

    然后将第二行的 io 设置为 0,重复上述判断。

    依次扫描其余三个。

    当然,要想做好,就得加防抖,重复按键判断,长按键操作处理。

  5. 匿名用户2024-01-28

    #include""

    #define uint unsigned int#define uchar unsigned charuchar key;

    uchar code tab=;

    void delay(uchar z)

    void display(uchar num)void keys():扫描密钥。

    while(temp!=0xf0)等待密钥释放}}p3=0xfd;

    temp=p3;

    temp=temp&0xf0;

    if(temp!=0xf0)

    while(temp!=0xf0)等待密钥被释放} }p3=0xfb;

    temp=p3;

    temp=temp&0xf0;

    if(temp!=0xf0)

    while(temp!=0xf0)等待密钥释放}}p3=0xf7;

    temp=p3;

    temp=temp&0xf0;

    if(temp!=0xf0)

    while(temp!=0xf0)等待密钥被释放}}}void main()}

  6. 匿名用户2024-01-27

    网上有很多,自己找吧。

  7. 匿名用户2024-01-26

    P2的按键扫描与实时时钟模块共享IO,虽然概率很小,但仍有误触发和数据读取错误的几率。

  8. 匿名用户2024-01-25

    前面的宏定义 define k p0

    您的密钥正在使用 P3 端口。

  9. 匿名用户2024-01-24

    uchar code act[4]=;

    char scan_key(void)}}

    if(find==0)return-1;返回值为-1,返回1为正常返回,返回-1为异常返回程序只是程序编写的标准,即没有键。

    return(ini*4+inj);i 是上四位数字的判断,j 是后四位数字的判断。

    0 1 2 3 为零 0,1,2,3 如果开关 0 打开,则 p4 为 0,即 1110 1110

    4 5 6 7 向右移动补 1,得到 1111 1110,j 为 0

    8 9 A b 开关 1 打开 p5 为 0,即 1101 1110,右移 1111 1101

    c d e f 可以判断 j 为 1,也可以推断出 1 一样。

    p4 5 6 7

    按照这个想法,4个端口只能实现4个开关4*4=16,2*2=4必须改变思维方式,如果是因为端口太紧,可以使用P3端口,或者使用分压读取AD判断按钮(AD键盘)。

  10. 匿名用户2024-01-23

    根据图中所示的接线方法,此程序中至少有 4 列键盘。 如果你想把它改成你为键盘图示的程序,我会写一个,不调试可能会有问题。 尝试使用示例程序的样式。

    uchar code act[3]=;

    char scan_key(void)}}if(find==0)return-1;

    return(ini*4+inj);}

  11. 匿名用户2024-01-22

    这本书上的键盘扫描仪本身并不是很有效。

    键盘扫描的基本思想是将整个键盘视为一个整体,并使用变量来存储每个键的状态,一个键对应 1 位。

    例如:如果有 8 个键,设置一个无符号 char 变量来存储其状态,该变量需要设置 3,一个用于当前键状态(命名为 cur)(全局变量),一个用于第一个扫描按钮(命名为 a)(临时变量)和一个用于扫描后去抖动的键(命名为 b)(临时变量)取一个, 比较 a,cur 相同,相同表示密钥没有变化,退出密钥扫描否则延迟 10ms 借记,取 B,比较 a,b 相同,相同的密钥更改有效,cur=a;执行密钥更改处理**。 否则,密钥将被错误触发,密钥扫描将被退出。

    当然,这是基本思想,**延时也可以优化,涉及计时器,有很多字。

  12. 匿名用户2024-01-21

    uchar code act[4]=;

    char scan_key(void)}}

    if(find==0)return-1;返回值为-1,返回1为正常返回,返回-1为异常返回程序只是程序编写的标准,即没有键。

    return(ini*4+inj);i 是上四位数字的判断,j 是后四位数字的判断。

    0 1 2 3 为零 0,1,2,3 如果开关 0 打开,则 p4 为 0,即 1110 1110

    4 5 6 7 向右移动补 1,得到 1111 1110,j 为 0

    8 9 A b 开关 1 打开 p5 为 0,即 1101 1110,右移 1111 1101

    c d e f 可以判断 j 为 1,也可以推断出 1 一样。

    p4 5 6 7

    按照这个想法,4个端口只能实现4个开关4*4=16,2*2=4必须改变思维方式,如果是因为端口太紧,可以使用P3端口,或者使用分压读取AD判断按钮(AD键盘)。

  13. 匿名用户2024-01-20

    发一张键盘部分的截图,蚊子描述不容易理解。

    键盘程序与硬件链接有很大关系。

  14. 匿名用户2024-01-19

    哪些系列的MCU有P4端口?

  15. 匿名用户2024-01-18

    只有30分钟,我想找人教你。

  16. 匿名用户2024-01-17

    你用低位,你为什么要放高位,看你的程序有点不清楚! ~

    您的 P3 端口是集合的最低位,您的情况不是这样的。

    你的这个时间可能是一个无休止的循环。

  17. 匿名用户2024-01-16

    是不是第一个函数被调用了,然后就进入了一个无限循环,所以第二个函数就调用不了了。

  18. 匿名用户2024-01-15

    首先,微控制器引脚默认输出高电量。 让键盘控制一行(假设第n行)的引脚为0,然后按该行上的一个键,然后逐个检查低电平(假设检测为m列),这样就按了nm键。 这个想法是使行为低并检查列(反之亦然)。

  19. 匿名用户2024-01-14

    建议看一下行列式键盘的工作原理。

相关回答
11个回答2024-08-22

你用什么样的AD芯片---不同的芯片是不同的。

9个回答2024-08-22

计数器,记录脉冲数。 乘以一个因子。

10个回答2024-08-22

首先,您必须打开 Total Break EA

其次,打开五个小中断:et0、et1、es、int0、int1,一旦与中断对应的接口收到重要电平,它就会启动。 >>>More

15个回答2024-08-22

PIC单片机与MCS-51系列单片机的区别应该说有三个主要特点: >>>More

4个回答2024-08-22

AT89C52 C 系列是早期产品。 没有了编程和看门狗,为了区别于早期产品,将新产品改为具有看门狗和ISP功能的AT89S52,ISP就是编程的意思。早期是晶格的专利技术,现在被大量使用。 >>>More