/**************************
文件所用资源
1.端口:P2
2.调用delay_ms函数
**************************/
#include
#include
#define key_port P2 //键盘接口定义
sbit key_port_0=key_port^0;
sbit key_port_1=key_port^1;
sbit key_port_2=key_port^2;
sbit key_port_3=key_port^3;
/**************************
延时函数
***************************/
void delay_ms(unsigned int ms)
{
unsigned int i,j;
for( i=0;i for(j=0;j<332;j++); //332是STC89C52在22.1184MHz晶振
}
/**************************
键盘扫描函数
**************************/
unsigned char keyscan(void)
{
unsigned char key,i;
unsigned char code key_table[16]=
{0xee,0xed,0xeb,0xe7,0xde,0xdd,0xdb,0xd7,0xbe,0xbd,0xbb,0xb7,0x7e,0x7d,0x7b,0x77};
//扫描端口数据与键值的对应关系,可以根据使用来调节顺序
key_port=0x0f; //确定行列位置
if(key_port==0x0f)return(0x10); //无键按下返回0
delay_ms(10); //调用延时函数 ,目的是去前沿键抖。
if(key_port==0x0f)return(0x10); //再次判断。目的是确保检测正确
else
{
for(i=0;i<4;i++) //以下为经典的计算键值(判断闭合键所在的位置)
{
key_port=_cror_(0x7f,i);
if(key_port_0==0)break;
if(key_port_1==0)break;
if(key_port_2==0)break;
if(key_port_3==0)break;
}
key=key_port; //取得键值
for(;key_port!=0x0f;key_port=0x0f); //等待键松开,目的是去后沿键抖
for(i=0;key_table[i]!=key && i<16;i++); //查表取key的值0-F
key=i;
return(key); //带键值返回主调函数
}
}
关键字:4*4 矩阵键盘 C51程序
引用地址:
经典4*4矩阵键盘C51程序
推荐阅读最新更新时间:2024-03-16 15:21
LGD 加速淘汰液晶面板,关 P4 厂全力发展 OLED
继南韩面板巨擘 LG Display(LGD)副董事长 Han Sang-beom 7 月宣布要在今年底关闭位于龟尾市的 P2、P3 和 P4 液晶面板生产线之后,P4 厂已经正式关闭。业界消息直指,LGD 正在加速淘汰液晶面板,要把焦点改放到 OLED。 BusinssKorea 16 日报导,LGD 虽然声称 P2、P3 和 P4 不会另做他用,但部分市场人士预测,这些生产线可能会转而制造 OLED、超大型高分辨率液晶面板等高附加价值的产品。 LGD 11 月 15 日公布的季报告显示,龟尾的 P4 厂(5 代液晶面板厂)已在 10 月正式关闭。 由于 3.5 代厂 P2 已经关闭、4 代厂 P3 也将在年底歇业,LGD 目
[手机便携]
U-Boot移植(4)增加对S3C2440的支持 (修改编译错误)
9、第一次make all,出现如下错误。 从上面错误可以看出明显是结构体中没有定义CAMDIVN,于是要找到定义这个时钟变量的地方,增加它。进入include/s3c24x0.h,找到下面的typedef struct处: typedef struct 的最后一行为新增的。 修改完后保存,再次回到顶层中,先make distclean。 10、再一次make all,又出现了如下错误: 上面到底是什么错误呢?一时是想不通,吃个饭再说吧! 吃完饭来到实验室之后,上网查了些资料,终于明白。 要么U-Boot源码问题,要么是编译器的问题。源码是从官方下的,一般是不会有问题的,那么就是编译器问题,那编译器
[单片机]
预热:回顾2017年高通骁龙峰会,12月4号揭盅更多惊喜
集微网消息,近日高通以别开生面的方式向媒体发出了第三届高通骁龙技术峰会的邀请函,峰会将会在美国夏威夷茂宜岛举行,时间是2018年12月4日到8日。当然,想要获得这些详细讯息,则需要通过高通赠送小米VR一体机才能够看到。 VR看邀请函,承上启下 在笔者看来,VR看邀请函这一小小的举动,除了是惊喜,还有一点承上启下的意味。 高通曾在2017年的骁龙技术峰会提出“XR”(扩展现实)的概念,它把VR、AR、MR等都放在了一起。而当时发布的骁龙845,在基于骁龙835的沉浸式技术上更新优化,将图形处理器升级到Adreno 630视觉处理子系统,AR/VR/MR的体验感得到明显的提升。 而Adreno 630 视觉子系统是
[手机便携]
亚信电子推出新一代PCIe转多I/O(4S,2S+1P,2S+SPI,LB)控制器
亚信电子推出最新一代的「AX99100A PCIe转多I/O(4S,2S+1P,2S+SPI,LB)控制器」,提供一款高性价比的PCIe转多串并口I/O桥接芯片解决方案。 透过PCI Express接口,客户能够轻松支援多个串口、并口、SPI或本地总线等接口,以满足工业、医疗和嵌入式系统产品对I/O接口桥接的市场需求。 亚信电子(ASIX Electronics Corporation)持续深耕工业以太网芯片和I/O接口桥接器市场,在推出全新的EtherCAT从站转IO-Link主站网关和IO-Link设备软体协议栈解决方案之后,亚信今天再度推出最新一代的「AX99100A PCIe转多I/O(4S,2S+1P,2S+SPI
[网络通信]
消息称iPhone 12会有铬手解密:边框致敬苹果4所致
据外媒最新消息称,iPhone 12系列即将发布,对于新机来说,其可能面临一个问题,那就是采用类似iPhone 4的边框设计,在屏幕越大的情况下,手感越不是很好。 最新消息中提到,虽然苹果进行了一定的处理,大屏幕+iPhone 4边框设计,在iPhone 12 Pro Max上并不是优势,反而是一种劣势,因为机身太重,在6.7英寸屏幕下,这让手机握起来非常的铬手。 虽然iPhone 12其他机型可能也有铬手的情况,不过屏幕越小,这个情况越不严重。 对于今年四款iPhone 12的定位,最牛是Pro Max版本,其除了拥有最好的屏幕和最大的内存外,同时后置摄像头也是支持Sensor Shift以及OIS两大防抖技术
[手机便携]
国统计局:4月集成电路产量同比下滑12.1%
据国家统计局今日公布的规模以上工业生产月度数据,4月份计算机、通信和其他电子设备制造业规模以上企业产值同比增长4.9%,主要产品产量中,集成电路当月生产259亿块,同比下滑12.1%,1-4月累计产量1074亿块,同比下滑5.4%,其他产品中,微型计算机设备当月生产3035万台,同比下跌16.8%,移动通信手持机产量1.27亿部,同比下滑1.6%。
[手机便携]
联想4年双目标 杨元庆拚达阵
联想近期陆续在各区域召开年度大会,执行长杨元庆对外宣示未来4年目标,二大核心是改善获利能力,每年税前利润率要成长0.3~0.4个百分点,另一项就是加速转型,今年产品销量力拚破1亿台。 另外近期PC产业再度弥漫悲观气氛,联想上周在香港股价也急跌,联想财务长黄伟明认为,资本市场倾向反应过度,强调联想第1季在全球三大PC市场(大陆、美国、巴西)市占皆上升。 黄伟明也指出,智能手机或平板,背后技术都为个人计算机推动,只是形式外观、消费者的要求转变,不认同PC已死的说法,「以前笔记本兴起时,大家也以为PC要被淘汰」。联想今年成长仍会优于产业水平。 联想自今年4月1日,组织正式改组为「Lenovo」和「Th
[手机便携]
美国国家半导体推出4至20毫安电流环路单线16位DAC
低功耗16位精度的Δ-Σ DAC有助于实现单隔离数据传输 二零一一年八月十六日 -- 中国讯 -- 美国国家半导体(National Semiconductor Corp.)(美国纽约证券交易所上市代码:NSM)宣布,推出一款采用单线接口及4至20 mA电流环路驱动的16位数模转换器(DAC),该产品简化了工业两线制传感器系统中使用的智能变送器设计。高度集成的DAC161P997通过一个隔离元件使隔离的两端进行数据交互,从而降低了工厂和建筑自动化控制系统的元件数量和成本。同时,美国国家半导体本次推出的DAC161P997可直接连接至微控制器,这非常适用于不需要电隔离的传感和检测应用。 低功耗的DAC161P997为系统设计人员
[模拟电子]