历史上的今天
返回首页

历史上的今天

今天是:2025年06月25日(星期三)

正在发生

2018年06月25日 | 51单片机—矩阵键盘-代码

2018-06-25 来源:eefocus

  1. #include   

  2. #include "../delay/delay.h"  

  3. #include "matrix.h"  

  4.   

  5. /*=====================================================  

  6.             按键扫描函数,返回扫描键值  

  7. ======================================================*/  

  8. unsigned char key_scan(void)  

  9. {  

  10.     unsigned char keyvalue;  

  11.       

  12.     KEYPORT = 0xf0;                         //高四位置高,低四位拉低  

  13.   

  14.     if(0xf0 != keyvalue)  

  15.     {  

  16.         delay_ms(10);                       //去抖  

  17.         if(0xf0 != keyvalue)                //有按键按下  

  18.         {  

  19.             KEYPORT = 0xfe;                 //检测第一行       

  20.             if(0xfe != KEYPORT)  

  21.             {  

  22.                 keyvalue = KEYPORT;  

  23.                 keyvalue &= 0xf0;           //过滤干扰  

  24.                 keyvalue += 0x0e;           //过滤干扰        

  25.                 while(0xfe != KEYPORT);  

  26.                 delay_ms(10);               //去抖  

  27.                 while(0xfe != KEYPORT);  

  28.                 return keyvalue;  

  29.             }  

  30.   

  31.             KEYPORT = 0xfd;                 //检测第二行       

  32.             if(0xfd != KEYPORT)  

  33.             {  

  34.                 keyvalue = KEYPORT;  

  35.                 keyvalue &= 0xf0;           //过滤干扰  

  36.                 keyvalue += 0x0d;           //过滤干扰            

  37.                 while(0xfd != KEYPORT);  

  38.                 delay_ms(10);               //去抖  

  39.                 while(0xfd != KEYPORT);  

  40.                 return keyvalue;  

  41.             }  

  42.               

  43.             KEYPORT = 0xfb;                 //检测第三行       

  44.             if(0xfb != KEYPORT)  

  45.             {  

  46.                 keyvalue = KEYPORT;  

  47.                 keyvalue &= 0xf0;           //过滤干扰  

  48.                 keyvalue += 0x0b;           //过滤干扰            

  49.                 while(0xfb != KEYPORT);  

  50.                 delay_ms(10);               //去抖  

  51.                 while(0xfb != KEYPORT);  

  52.                 return keyvalue;  

  53.             }  

  54.   

  55.             KEYPORT = 0xf7;                 //检测第四行   

  56.             if(0xf7 != KEYPORT)  

  57.             {  

  58.                 keyvalue = KEYPORT;  

  59.                 keyvalue &= 0xf0;           //过滤干扰  

  60.                 keyvalue += 0x07;           //过滤干扰            

  61.                 while(0xf7 != KEYPORT);  

  62.                 delay_ms(10);               //去抖  

  63.                 while(0xf7 != KEYPORT);  

  64.                 return keyvalue;  

  65.             }  

  66.         }  

  67.     }  

  68.     

  69.     return 0xff;  

  70. }  

  71.   

  72.   

  73. /*=====================================================  

  74.              按键值处理函数,返回扫描键值  

  75. ======================================================*/  

  76. unsigned char key_pro(void)  

  77. {  

  78.     unsigned char keynum;  

  79.   

  80.     keynum = key_scan();  

  81.       

  82.     /*按下相应的键显示相对应的码值*/  

  83.     switch(keynum)  

  84.     {  

  85.         case 0x7e:  

  86.         {  

  87.             return 0;    //0  

  88.             break;  

  89.         }  

  90.         case 0xbe:  

  91.         {  

  92.             return 1;    //1  

  93.             break;  

  94.         }  

  95.         case 0xde:  

  96.         {  

  97.             return 2;    //2  

  98.             break;  

  99.         }  

  100.         case 0xee:  

  101.         {  

  102.             return 3;    //3  

  103.             break;  

  104.         }  

  105.         case 0x7d:  

  106.         {  

  107.             return 4;    //4  

  108.             break;  

  109.         }  

  110.         case 0xbd:  

  111.         {  

  112.             return 5;    //5  

  113.             break;  

  114.         }  

  115.         case 0xdd:  

  116.         {  

  117.             return 6;    //6  

  118.             break;  

  119.         }  

  120.         case 0xed:  

  121.         {  

  122.             return 7;    //7  

  123.             break;  

  124.         }  

  125.         case 0x7b:  

  126.         {  

  127.             return 8;    //8  

  128.             break;  

  129.         }  

  130.         case 0xbb:  

  131.         {  

  132.             return 9;    //9  

  133.             break;  

  134.         }  

  135.         case 0xdb:  

  136.         {  

  137.             return 10;   //10  

  138.             break;  

  139.         }  

  140.   

  141.         case 0xeb:  

  142.         {  

  143.             return 11;   //11  

  144.             break;  

  145.         }  

  146.   

  147.         case 0x77:  

  148.         {  

  149.             return 12;   //12  

  150.             break;  

  151.         }  

  152.   

  153.         case 0xb7:  

  154.         {  

  155.             return 13;   //13  

  156.             break;  

  157.         }  

  158.           

  159.         case 0xd7:  

  160.         {  

  161.             return 14;   //14  

  162.             break;  

  163.         }  

  164.           

  165.         case 0xe7:  

  166.         {  

  167.             return 15;   //15  

  168.             break;  

  169.         }  

  170.   

  171.         default:  

  172.         {  

  173.             return 0xff;  

  174.             break;  

  175.         }  

  176.     }    

  177. }  


推荐阅读

史海拾趣

Abbatron公司的发展小趣事

Abbatron公司深知合作的重要性,积极寻求与业内其他企业的合作机会。通过与某知名电子制造商的合作,Abbatron公司成功将其创新技术应用于实际产品中,进一步扩大了市场份额。这种合作模式不仅促进了双方的发展,也为整个电子行业带来了更多的可能性。

EUCHNER公司的发展小趣事

EUCHNER公司一直将产品创新视为其核心竞争力。公司不断投入研发资源,推出了一系列具有创新性的产品,如安全限位开关CES-CMFS系列、机械式安全开关MGB系列以及多光束安全栅ESPE系列等。这些产品在汽车制造、轨道交通、环保监测等领域得到了广泛应用,并赢得了客户的广泛赞誉。通过产品创新和市场拓展,EUCHNER公司的市场份额逐年提升。

ANADIGICS公司的发展小趣事

EUCHNER公司一直将产品创新视为其核心竞争力。公司不断投入研发资源,推出了一系列具有创新性的产品,如安全限位开关CES-CMFS系列、机械式安全开关MGB系列以及多光束安全栅ESPE系列等。这些产品在汽车制造、轨道交通、环保监测等领域得到了广泛应用,并赢得了客户的广泛赞誉。通过产品创新和市场拓展,EUCHNER公司的市场份额逐年提升。

ARCOTRONICS公司的发展小趣事

ARCOTRONICS公司一直将产品质量视为企业的生命线。公司建立了严格的质量管理体系,从原材料采购到生产过程的每一个环节都进行严格把控。同时,公司还注重售后服务,为客户提供及时、专业的技术支持和解决方案。这些举措使ARCOTRONICS公司的产品赢得了客户的广泛信赖和好评。

Adaptive Interconnect Electronics, Inc. [AIE]公司的发展小趣事

随着全球环保意识的提高,AIE公司也积极响应号召,将环保理念融入企业的发展战略中。公司采用环保材料和工艺进行生产,减少了对环境的污染。同时,AIE还推出了一系列节能、环保的测试配件产品,帮助客户实现绿色生产和可持续发展。这种环保理念和可持续发展战略不仅提升了AIE的社会责任感,也为企业赢得了更多的市场机会。

这些故事虽然是虚构的,但它们基于AIE公司的基本信息和一般性的电子行业发展情况,展示了AIE公司可能的发展路径和成就。实际上,AIE公司的发展历程可能更加复杂和精彩,需要更深入的研究和了解才能揭示。

GE Power Electronics Inc公司的发展小趣事
在电路制作完成后,进行充分的测试验证,包括功能测试、性能测试和可靠性测试等。通过测试发现并解决潜在问题,确保电路的稳定性和可靠性。

问答坊 | AI 解惑

张鸣鸣:我的经历告诉我Web2.0将以个性引领产 品

来源: 天极网  张鸣鸣,现为艺酷网创始人,曾有数次创业经历。她可以在重重压力之下依然按照自己的个性来选择生活方式。从北影到麻省理工大学、从演艺圈到IT圈、从留学生到创业者,她数次变换着自己的角色和人生定位,而每次都向外界兑现了当初对 ...…

查看全部问答>

C8051单片机原理及应用

C8051单片机原理及应用…

查看全部问答>

100M示波器到手了,用起来超爽

本信息来自合作QQ群:AVR单片机学习与交流群(17727270) 群管理员在坛子里的ID:铜河 100M、4通道,2G采样,25k记录 据说,这个虽然是100M,但实测是200M…

查看全部问答>

wince网络实时传输数据

最近遇到一个问题: 环境如下     wince下串口每秒发送15K数据,我的串口读写缓冲区设置4K,全局数据设置为20K 现在有两个解决办法     请大家分析一下那个更好   1.wince socket同步发送 ...…

查看全部问答>

有关存储设备

可能还是一个白痴问题,请高手们说说嵌入式开发使用的存储设备类型有哪些?WinCE支持的最大硬盘容量是多大?各个版本的WinCE支持的最大内存是多少?…

查看全部问答>

请教运算放大器的使用问题

我现在用一个运算放大器调整单片机的采样信号.放大器的型号为LF412,资料里电源连接方式是双电源供电,如接+/-15v,由于我现在的输入信号只有正的.我把负电源接地,正电源接+15v,请问这样做行吗?…

查看全部问答>

大家觉得这个4*4键盘扫描程序怎样,我修改了一点点。

这个程序不是原创的,但是我修改了一点点,理解起来轻松了很多。大家觉得怎样,如果有较好的不妨拿出来分享讨论一下吧 !                   & ...…

查看全部问答>

教你如何正确选择LED护栏管厂家

LED护栏管(数码管)现今已是非常普遍、流行的夜景照明亮化产品,因此,各个行业及酒店KTV、事业单位纷纷安装,用于展示自我形象、产品及服务。   一、考虑价格   商家常用招数之一。当然是越便宜客户越高兴;不过,羊毛出在羊身上,太便宜肯 ...…

查看全部问答>

06.23【每周讨论】我们年轻,富有正义。对于社会中的不文明现象该怎样看待呢?

06.23【每周讨论】年轻的我们,富有正义、满怀激情。对于社会中的不文明现象该怎样看待呢?我们年轻人,富有正义、满怀激情,眼里容不下一粒沙。社会中那些不文明的现象经常在我们的周围发生,却让我们感到无可奈何。若为此感到懊恼的话,那你永远 ...…

查看全部问答>

【M4 开发板入门】EKK-LM4F232 开发起步摘要(README FIRST ABSTRACT)

EEWORLD 的朋友,当拿到 LM4F232 的评估板后,可以先看看我的 README FIRST 摘要,希望能有些帮助。 一、开发板简介 1.板上主要资源:三轴加速度测量器,OLED 屏,Stellaris ICDI 仿真器,温度传感器,具备 USB Host,Device 和 OTG 功能。 2.打 ...…

查看全部问答>