历史上的今天
返回首页

历史上的今天

今天是:2024年08月24日(星期六)

2019年08月24日 | 51单片机 矩阵键盘

2019-08-24 来源:eefocus

 

 

uchar code KEY_TABLE[] =

{

    0x77,0xB7,0xD7,0xE7

0x7B,0xBB,0xDB,0xEB

0x7D,0xBD,0xDD,0xED

0x7E,0xBE,0xDE,0xEE

};//高四位是列,低四位是行

 

uchar code TABLE[] =

{

    '1', '2', '3',

'4', '5', '6',

'7', '8', '9',

    'C', '0', 'A',

};

 

 

char key_scan()

{

uchar temp, key, i;

P1 = 0xf0; //1111 0000 

    //先是扫描列,确定列

    //把列的引脚高四位,设为高电平,行引脚,低四位,设为低电平。当按键按下,会被拉低。

    if (P1 != 0xf0)  

        {

            delay_ms(10);

 

            if (P1!= 0xf0)

            {

                temp = P1;//按下后存在temp

 

                P1 = 0x0f;

                //后扫描行,确定哪一行

                //把行引脚,低四位设为高电平,列的引脚,高四位,设为低电平。当按键按下,会被拉低。

 

                key = temp | P1;

                //行列相或,高四位0所在的位为列,低四位所在的0为行

 

                for (i = 0; i < 12; ++i)//查找对应的按键,并赋值对应的字符

                    if (key == KEY_TABLE[i])

                        break;

 

                return TABLE[i];

            }

        }

 

else

return 0x00;

}



推荐阅读

史海拾趣

问答坊 | AI 解惑

05月12日 把电路调整了一下,上传新图

这是昨晚花了一点时间改出來的,使用STC89C51RC单片机控制按键和读取频率,以及以后采样板上DA的控制,CPLD测频,通过并口传给单片机,分高低8位传,不细说了,大家看图,看看有没有什么疏忽的地方…

查看全部问答>

74LS32

本帖最后由 paulhyde 于 2014-9-15 09:33 编辑 74LS3274LS3274LS3274LS32  …

查看全部问答>

关于高压输电,问个不太明确的问题

每次坐车走高速都能看到高速路两旁的高压输电的铁塔, 铁塔上的输电线并不是一样粗, 在铁塔最顶端的那条线,明显比其他的线要细一些,不知道这条线是做什么的? 经过仔细观察,这条线似乎并不是连通的,因为其他的电线过铁塔时要么有个弧形,要么 ...…

查看全部问答>

ZigBee在电力系统温度测量中的应用

摘要: ZigBee 网络为传感器信号的无线传输提供了新的解决方案,论文分析了ZigBee 技术,IEEE802.15.4 标准及相关应用,将ZigBee 与蜂窝网络结构结合,用于电力系统高压母线温度测量系统中,得到了良好的效果。…

查看全部问答>

懂IBMR40E的看下

我电脑内存是256的,我想扩展内存到1G,带到电脑市场去装太远了,自己买了条512的和条256的回来准备自己装,可是找不到内存插槽在哪里。请问下是不是要把笔记本卸开才可以装啊。哪位高手指点下,能给个截图更好。谢谢了!…

查看全部问答>

脱机程序更新板设计

[求助][讨论]脱机程序更新板设计 我们公司由于软件经常更新,老大叫我做个板子,能够脱机更新程序。 不过我现在还一头雾水,初步大概是这样: 1,开发PC与板子的上位机程序 2,开发板子的驱动 3,硬件设计 请问有人做过没?具体怎么实现? ...…

查看全部问答>

can由环回改为正常模式后。。。

用的是官方提供的exam,设置为还回模式时,能够正常运行,用zlg的USBCAN-II在can端可以接受数据,改为Normal模式后,就收不到数据了。 翻了很多帖子,貌似常见问题有两个:1、stm32的can信号转发器的供电要5V;2、要有两个有效节点。我的应该 ...…

查看全部问答>

用c语言访问I/O口的问题

大家好:   我现在在2407A 的平台下用c语言编写程序,要访问  I/0口,书上说用import和outport 指令,但是这两个指令要知道I/O的通道数,而且只能限定在0~15之间。我看不懂这是什么意思,是不是说只能访问固定的几个I/O口, ...…

查看全部问答>

力转成数字显示PCB板怎么做

我公司现在要设计一款产品,他是由测试力的大小转换成数字显示的,再由电阻或电容感应按键控制整个电路,得到数据后,可以用TF卡或SD卡储存,要实现这些功能,不知道要用到什么模块,什么电路,求求各位,是否可以帮助小弟,小弟的QQ是674833864, ...…

查看全部问答>

(已解决)G2系列用32K晶体做电子钟,遇到一些问题。

G2系列单片机软件怎么设置选择外部32K晶体?  3L有答案,和我有同样问题的看看。 以下内容是我从头文件里看到的。 #define DIVA0               (0x10)   /* ACLK Divide ...…

查看全部问答>