【蓝桥杯单片机组】(3)键盘

发布者:DreamBig123最新更新时间:2020-07-17 来源: eefocus关键字:蓝桥杯  单片机组  键盘 手机看文章 扫描二维码
随时随地手机看文章

避免错误,一律选择矩阵键盘方式。


比赛用开发板不可使用按键触发外部中断的方式来检测按键


P.S :使用IAP15转接板后,单片机P4.2代替P3.6,P4.4代替P3.7


sfr P4 = 0xc0;

sbit p36replace = P4^2;

sbit p37replace = P4^4;



编程步骤:


(1)将4条列线中的第一条置为0


(2)读行线


(3)判断行线中是否存在为0的行


(4)若存在,则有按键按下, 消抖


(5)读行线,判断是否有行线被置为0,若有,判断哪条行线被置为0,


(6)switch case 匹配行线


(7)(1)++


程序:


 

char liecode[4] = {0x7f, 0xbf, 0xdf, 0xef};

sfr P4 = 0xc0;

sbit p36replace = P4^2;

sbit p37replace = P4^4;

sfr AUXR = 0x8E;

int keycheck()

{

 

char temp,value;

int a;

for(a=0;a<4;a++)

{

if(a == 0)

{

p37replace = 0;

p36replace = 1;

P3 = liecode[a];

}

if(a == 1)

{

p37replace = 1;

p36replace = 0;

P3 = liecode[a];

}

if(a>1)

{

P3 = liecode[a]; //set P35.4=0

}

temp = P3;

value = temp & 0x0f; //check hang

if(value != 0x0f) //a key in this lie has been pressed

{

delayms(10);

temp = P3;

value = temp & 0x0f; //check hang

if(value != 0x0f)

{

if(value == 0x07)

{

key = 1;

 

switch (a)

{

case 0: key += 0;  break;  

case 1: key += 4; break;

case 2: key += 8; break;

case 3: key += 12; break;

}

while((P3 & 0x0f) != 0x0f);

return key;

}

if(value == 0x0b)

{

key = 2;

switch (a)

{

case 0: key += 0; break;

case 1: key += 4; break;

case 2: key += 8; break;

case 3: key += 12; break;

}

while((P3 & 0x0f) != 0x0f);

return key;

}

if(value == 0x0d)

{

key = 3;

switch (a)

{

case 0: key += 0; break;

case 1: key += 4; break;

case 2: key += 8; break;

case 3: key += 12; break;

}

while((P3 & 0x0f) != 0x0f);

return key;

}

if(value == 0x0e)

{

key = 4;

switch (a)

{

case 0: key += 0; break;

case 1: key += 4; break;

case 2: key += 8; break;

case 3: key += 12; break;

}

while((P3 & 0x0f) != 0x0f);

return key;

}

 

}

}

}

return key;

}

若keycheck()置于主程序,需要放在while(1)中,若置于中断中:

void main()

{

 

cls_buzz();

t0_init();

 

while(1)

{

   display(value);

}

 

}

 

void t0_interpt() interrupt 1

{

 

EA = 0;

// TH0 = (65536-45872)/256; //设置定时初值

// TL0 = (65536-45872)%256; //设置定时初值

TL0 = 0xCD;

TH0 = 0xD4;

    value = keycheck();

EA = 1;

}

关键字:蓝桥杯  单片机组  键盘 引用地址:【蓝桥杯单片机组】(3)键盘

上一篇:【蓝桥杯单片机组】AT2C02 EEPROM
下一篇:【蓝桥杯单片机组】DS18B20

推荐阅读最新更新时间:2024-11-22 23:59

C51单片机的3*3矩阵键盘程序
#include reg51.h #include dis.h /**延时1**/ //用于消抖 void delay1(void) {uchar i; for(i=0;i 200;i++); } /****延时2**********/ void delay2(void) { uchar i,j,s; for(i=250;i 0;i--) for(j=250;j 0;j--) for(s=5;s 0;s--); } /****串口初使化****/ void chuankou_init(void) { TMOD=0X20; //定时器1,方式2,8位 计数器 SCON=0x40; //方式1,而不允许
[单片机]
单片机:矩阵键盘和LCD1602
一、矩阵键盘 1、检测按键的方法: (1)先使1-4全部赋低电平,5-8赋高电平。当有按键按下时,5-8中会有某个点平被拉低。 (2)然后依次将1-4中的某一位置0,其他位置1,观察对应返回值,即可确定哪个按键被按下。 2、对应程序 unsigned char bsp_mkeyscan() { unsigned char keyvalue = 0x99; KEYPORT = 0xF0; if (KEYPORT != 0xF0) { KEYPORT = 0xFE; if (KEYPORT != 0xFE) { keyvalue = KEYPORT; while(key
[单片机]
黑莓新机Krypton谍照现身 或取消全键盘设计
TCL曾表示今年除了已发布的黑莓KEYone以外,还会推出另一款黑莓手机,而且不少非官方黑莓社区也曝光过新机的相关硬件配置:1080P屏幕,4000mAh电池,4GB RAM,骁龙625/626处理器。这款代号名为黑莓Krypton的产品,应该和黑莓KEYone都是定位中端的产品,而且该手机可能会放弃黑莓经典的全键盘设计,这样屏幕尺寸更加适合安卓系统。此外还有IP67防水等特性,该机有可望在10月份发布。   近日,国外莓友社区首次曝光黑莓Krypton的谍照,不过只是背面图而已,依然没法确认是否去掉了全键盘设计。对比照片看出,黑莓Krypton摄像头位置和金属圈相比黑莓KEYone稍小,经典的黑莓Logo还在,设计风格和此前发
[手机便携]
51单片机矩阵键盘响应程序
51单片机矩阵键盘响应程序 #include reg51.h // P0端口接LED // P0端口接数码管 // P3端口接矩阵键盘 #define LED P0 #define KEY P3 #define DIG P0 unsigned char GetKey(void); void delay10ms(void); // 独立数码管的段码表 unsigned char val = {0xc0, 0xf9, 0xa4, 0xb0, 0x99, 0x92, 0x82, 0xf8, 0x80, 0x90, 0x88, 0x83, 0xc6, 0xa1, 0x86, 0x8e}; void main(void) { unsig
[单片机]
51<font color='red'>单片</font>机矩阵<font color='red'>键盘</font>响应程序
用Atmega8实现8路键盘D触发锁存器源程序代码
原文参见: http://avr.eefocus.com/article/10-07/833141280106635.html /******************************************************** 实验四(第二版):用Atmega8实现D触发锁存器的功能 实现目的: 1. 管脚设定为输入时,了解如何可以编程设定上拉电阻。 2. 如何使用软件控制取样频率及时间,达到一定的抗干扰目的 3. 为了让程序运行更稳定,防止跑飞,如何使用看门狗? By armok (2004-09-18) a13809260240@126.com ******************************
[单片机]
51单片机简单易懂矩阵式键盘程序
;30H存列号31H存行号32H装键值,要改键盘的值排列可以通过改变后面TAB的值。 ;程序构思,先给键盘的接入口p1赋0F0H,通过检测p1.4-p1.7那个出现低电平,举例如果是p1.4那列有键按 ;下则p1.4出现低电平,则跳到y0得到列号为0,接下来分别给p1.4-p1.7赋0,看什么时候p1.4在那出现低电 ;平,则可以得到行号,最终计算行号*4+列号就可以得到键盘的值,如果要修改矩阵键盘键值排列,则可以 ;通过查表,计算出的前期键值只是作为一个地址。不知表述是否清楚了 SCAN:MOV P1,#0F0H ;键盘扫描程序 JNB P1.4,Y0
[单片机]
4*4矩阵键盘模块程序的调用
产生.lib文件的方法:选择 工程 目标target属性 输出 产生库文件*.lib,修改完后,编译一下程序,无措后,就在工程目录下产生一个.lib文件,到时要用到这个模块程序时,直接把.c和.lib文件拷贝到所在的目录下,再把.c的文件加载到工程文件里就OK了。 /* *************************************************************************************** 摘 要: 4*4小键盘模块程序,供以后其他程序调用.其中P2口高四位接键盘列,P2口低四位接键盘行, 版 本: V1.0 完成日期: 2008.4.28 作 者: ZHOUSFE
[单片机]
12864显示屏4*4键盘实验
12864显示屏4*4键盘实验输出结果:获得键值通过 发光二极管 显示              #include  reg52.h   unsigned char code  IC _DAT ; sbit RS=P3^6;     //RS="H",表示DB7--DB0为显示数据,                    //RS="L",表示DB7--DB0为显示指令数据  sbit WRD = P2^5;  //R/W="H",E="H",数据被读到DB7--DB0                     //R/W="L",E="H→L", DB7--DB0的数据被写到IR或DR  sbit E = P2^6;    //
[单片机]
小广播
设计资源 培训 开发板 精华推荐

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

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

换一换 更多 相关热搜器件

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

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