在键盘的电路中,存在这线与这玩意,
线与和线或:一条线和一个开关,一端是高电平另一端是低电平,开关闭合,整条线就会变为低电平,总的来说就是存在线与的关系,只要一端是低电平闭合开关后,整条线就会拉低,这就是线与;有一端是Z(高组态),闭合开关后,另一端是高电平整条线就是高低电平,反之亦然,这就是线或;
如何编程:先P3=11110000(图中从下至上11110000),假设按下S1则其高四位变为1110(线与)(忽略低四位)这时你已经确定是键盘的第一列的某一按键被按下;再把P3=11101111,把低四位变为一(高四位不变),这时你还没放开按键,因为线与,则P3=11101110;(要想判断按键是否被按下:用&0xf0)
#include #define uchar unsigned char #define uint unsigned int unsigned char code smg_du[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71,0x00}; unsigned char code smg_we[]={0x08,0x18,0x28,0x38,0x48,0x58,0x68,0x78}; //************************************************ //延时函数,在12MHz的晶振频率下 //大约50us的延时 //************************************************ void delay_50us(uint t) { uchar j; for(;t>0;t--) for(j=19;j>0;j--); } //************************************************ //延时函数,在12MHz的晶振频率下 //大约50ms的延时 //************************************************ void delay_50ms(uint t) { uint j; for(;t>0;t--) for(j=6245;j>0;j--); } void main() { uchar key_l,key_h; uchar key; while(1) { P3=0xf0;//11110000 key_l=P3; key_l=key_l&0xf0;//判断按键是否被按下 if(key_l!=0xf0) { delay_50us(100);//消抖 if(key_l!=0xf0)//再判断 { key_l=P3&0xf0; key_l=key_l|0x0f;//11101111(准备对行进行检查) P3=key_l; key_h=P3; key_h=key_h&0x0f;//00001110(把列忽略) key_l=key_l&0xf0;//11100000(把行忽略) key=key_h+key_l; //11101110 } } switch (key) { case 0xee:P1=smg_du[0];break; case 0xde:P1=smg_du[1];break; case 0xbe:P1=smg_du[2];break; case 0x7e:P1=smg_du[3];break; case 0xed:P1=smg_du[4];break; case 0xdd:P1=smg_du[5];break; case 0xbd:P1=smg_du[6];break; case 0x7d:P1=smg_du[7];break; case 0xeb:P1=smg_du[8];break; case 0xdb:P1=smg_du[9];break; case 0xbb:P1=smg_du[10];break; case 0x7b:P1=smg_du[11];break; case 0xe7:P1=smg_du[12];break; case 0xd7:P1=smg_du[13];break; case 0xb7:P1=smg_du[14];break; case 0x77:P1=smg_du[15];break; } } }
上一篇:《初学者C51自学笔记》之PS/2
下一篇:《初学者C51自学笔记》之89C51初步认识
推荐阅读



推荐帖子
- DWDM系统光发射机温度控制电路的优化设计
- 摘要:本文提出了一种在激光发射机温度控制电路中提高控制精度、降低功耗、增加集成度的有效方法,给出了波长的热电温度控制原理及测试结果。DWDM系统光发射机温度控制电路的优化设计
-
fighting
工控电子
- 频谱分析仪使用准则
- 频谱分析仪对于射频工程师来说是必不可少的测试工具,广泛应用于无线电技术的各个领域,本人毕业后一直从事研究的领域为微波与天线测量技术、微弱信号监测、EMC/EMI测量等。射频测量离不开频谱分析仪,故同频谱分析仪结下了不解之缘,因此,在这里我重点谈一下“射频万用表”——频谱分析仪。 频谱分析仪广泛应用于无线电技术的各个领域,例如:电子对抗、卫星通信、移动通信、散射通信、雷达、遥控遥测、侦察干扰、射电天文、卫星导航、航空航天和频谱监测等领域。频谱分析仪对各种类型的信号进行测量和分析时,可测量信
-
xtss
RF/无线
- HDVICP_H.264压缩问题
- 1.dsp端单独运行HDVICP测试程序,通过开发器读取本地文件进行H.264压缩,压 缩结果正确可以播放。由于测试程序读取的测试图像较小为176*144,用开发器读 取本地文件的时间还可以接受,当尝试测试2448*2048的图像压缩时,粗略计算用 开发器读取本地文件时间为1个多小时,于是想将HDVICP封装成一个库,一 个.a64p的文件,在arm端调用该.a64p文件,然后再arm端读取本地文件(读取时 间很短),调用自己封装的压缩库,完成大图片的压缩。问题:在dsp端,读取本地文
-
lyc715088692
TI技术论坛
- ZLG 的USBCAN和以太网卡都支持c++和c#吗?
- ZLG的USBCAN和以太网卡都支持c++和c#吗?ZLG的USBCAN和以太网卡都支持c++和c#吗?
-
喜鹊王子
TI技术论坛
- HSPICE中传输线模型的结构及参量控制
- HSPICE中传输线模型的结构及参量控制HSPICE中传输线模型的结构及参量控制
-
linda_xia
Microchip MCU
- TI低功耗蓝牙芯片CC2541
- 特性点RF2.4-GHz蓝牙低能量符合和专有的RF片上系统支持250kbps的,500kbps的,1Mbps的,2Mbps的数据传输速率–出色的链路预算,启用如果没有外部的远程应用前端–可编程输出功率为0dBm–卓越的接收灵敏度(-94dBm的输出功率1Mbps),选择性和阻断性能–适用于系统定位符合随着世界范围的无线电频率法规:ETSIEN300328和EN3004402级(欧洲),FCCCFR47第15部分(美国),ARIBSTD-T66(日本
-
深圳动能世纪SI
RF/无线