历史上的今天

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

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

发布者:BlissfulHeart 来源: eefocus关键字:51单片机  矩阵键盘  扫描 手机看文章 扫描二维码
随时随地手机看文章

 

 

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;

}



关键字:51单片机  矩阵键盘  扫描 引用地址:51单片机 矩阵键盘

上一篇:使用51单片机输出PWM控制舵机
下一篇:51单片机 nrf24l01收发

推荐阅读

虽然机器人行业已经发展了半个世纪,但仍然处于分散发展的阶段,目前,机器人已经作为新型的战略高技术产业受到各国的高度重视,尤其是西方发达国家。我国机器人行业发展迅猛,连续十年的平均增速超过23%,接近世界平均增速12%的两倍,增长速度连续八年保持世界第一。去年的市场份额已占全球的1/3,预计未来会到达50%。虽然我国机器人核心技术与西方发达国...
STM32F103 系统各部分时钟设置 /******************************************************************************** 函数名 : RCC_Configuration* 函数描述 : 设置系统各部分时钟* 输入参数 : 无* 输出结果 : 无* 返回值 : 无*******************************************************************************/ void RCC_Con...
LG 本周似乎已经推出了一项更新,将 Apple TV 应用程序添加到 2018 年的某些电视型号中。 目前尚不清楚引入 Apple TV 应用程序的更新是否已在全球范围内发布,但是来自多个国家/地区的 LG 电视用户近日报告了这一应用程序。今年早些时候,LG 在美国和其它 80 多个国家中为 2019 年的 LG 电视带来了 Apple TV 应用程序,当时 LG 表...
8月24日,国内机器人龙头企业上海新时达电气股份有限公司(下称“新时达”)发布了2021年上半年业绩报告。据报告显示,新时达2021上半年实现营业总收入20.5亿,同比增长19.7%;实现归母净利润8856.3万,同比增长104.4%。另外,新时达上半年营业成本为16.3亿,同比增长20.5%,高于营业收入19.7%的增速,导致毛利率下降0.5%。从业务结构上看,“机器人与运动...

史海拾趣

问答坊 | AI 解惑

手机电视的网络解决方案?

手机电视的网络解决方案?--------复用3G网络还是独立建网?   在过去的几年里,手机电视从各方面都得到了一定的发展,相关领域的环境变得愈发复杂。技术方面,MBMS(多媒体广播和多播业务)标准的到来标志着3G移动通信的参与,其作为3GPP标准的一 ...…

查看全部问答∨

请教关于液位继电器的问题!!!

我想设计一个水位控制系统,让水低于低水位时开始补水,高于高水位停止补水,应该怎么实现啊?我现在手上有C61F-GP液位控制器,但它只能实现一个水位控制…

查看全部问答∨

液晶屏 做过 4位显示的 单颜色显示屏的 青帮忙

液晶屏 做过 4位显示的 单颜色显示屏的 青帮忙 谢谢了   QQ122473474…

查看全部问答∨

QII全编译出现的警告

写好代码后,综合与分析都通过了,o errors, 0 warning。 然后 full compilation, 出现了两个critical warning: 1) 找不到.sdc文件。 这个文件要怎么创建啊? 是不是在full comilation之前还需要做某些步骤? 2) 我的系统中例化了一个PLL, 命 ...…

查看全部问答∨

CreateControl返回值失败

{          CLSID  clsid = { 0x8856F961, 0x340A, 0x11D0, { 0xa9, 0x6b, 0x00, 0xc0, 0x4f, 0xd7, 0x05, 0xa2} };//HTM         if(!m_wndPdf.CreateControl(clsid, NULL, WS_VIS ...…

查看全部问答∨

i++和i--的效率哪个高?为什么呢嚎?

朋友问我2个for循环的语句的效率哪个高?如何判断? for(int i = 0;   i<100 ; i++); for(int i =100; i>0 ; i--); 我的解决方法就是把上面的语句反汇编,通过看汇编代码来判断这2个for循环效率的差异。 但比较下来,2个反汇编的 ...…

查看全部问答∨

驱动加载问题

从setupapi.log中可以看到第一次安装ndis驱动时有如下错误提示:#E154 类别安装程式失败。 错误 31: 连到系统上的设备没有发挥作用。什么原因会引起该错误啊? 谢谢!…

查看全部问答∨

sqlite 中文路径支持问题

各位大虾好,我现在用sqlite 数据库,可是我发现它不支持中文路径,但是我想把数据放到存储卡上,请问该怎么解决呢,我查到可能是字符集的问题,请问该怎么转换呢,望指点…

查看全部问答∨

DS3486问题

我想问一下,我将非差分编码器信号,TTL信号,用DS3486连到单片机,可以起到滤波去毛刺的效果吗?信号会否失真?谢谢! …

查看全部问答∨

直接控制主板IO口输出方波???

最近想直接控制主板IO口搞点东西,如并口,串口,,想输出如38K (26us)的方波,或者采集38K的波形输入。 我做了以下尝试,在循环中直接读取IO的状态变化, 发现采集的不是很精确,采集到的波形变化有漏 的,也很随机。说明这种方式达不到精度。&n ...…

查看全部问答∨
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京ICP证060456号 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved