51单片机之矩阵按键

阅读: 评论:0

51单片机之矩阵按键

51单片机之矩阵按键

2018/3/18

单片机

1.说在前面

1.今天从图书馆借到了一本51单片机的基础教程,从其中看到了一些关于单片机的基础知识

1-1:单片机是在一块硅片上集成微处理器,储存器以及各种输入输出接口,所以被称为单片微型计算机,简称单片机

1-2:通俗的来说,单片机就是一块集成芯片,但是有一些特殊的功能,通过在不同时间控制芯片输出高低电平从而输出不同的电平,控制和引脚相连的外围电路的电气情况

对于我的单片机板子ST89c52 40I

STC:前缀    8:8051内核    9:内部是FlashE^2prom存储器    c:cmos存储器    5:无特殊含意    2:内存为2*4KB

40I:40表示单片机的最高晶振为40mhz,I:表示为工业用(c:商业    a:汽车用品    m:军用)

2.矩阵键盘(进入正题)

1.矩阵键盘其实和独立键盘的原理差不多,都是机械按键,都需要实现消抖,但是矩阵键盘需要加上一些特定的条件,不能跟独立键盘一样一个一个定义了(否则定义16个不是要爆炸),所以如果要判断是哪个键位按下,有两种判断方法

 方法一:先通过高四位全部输出低电平,然后逐行扫描,如果低四位不为1(非门)则,该行的按键被按下

方法二(常用):先给高四位全部输出低电平,低四位输出高电平,接受数据,当低四位不全为高电平时,判断所在列,然后,低四位输出低电平,高四位输出高电平,判断行,行列都判断了;

	#include<reg52.h>
//采用宏定义,定义矩阵端口和数码管发送端口#define  GPIO_KEY P1//矩阵端口#define  GPIO_DIG P0//数码管端口typedef unsigned char u8;typedef unsigned int u16;
/*实现38译码器的使用,实现数码管的位选*/sbit LSA=P2^2;sbit LSB=P2^3;sbit LSC=P2^4;u8 KEY_VALUE;//定义矩阵键盘所定义的数u16 i;//延时参数u16 a=0;//使用数组定义,code为定义常量数组,将数组定义在ROM中u8 code smgduan[17]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,
0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};//定义数码管的字码
//延时函数void delay(u16 i){while(i--);}
//判断按键按下的情况void KEYDown(){GPIO_KEY=0x0f;//00001111 定义高四位为低电平,低四位为高电平if(GPIO_KEY!=0x0f)//说明某一列按键按下{delay(1000);//消抖if(GPIO_KEY!=0x0f) //检测代码是否按下{//列判断GPIO_KEY=0x0f;//00001111定义高四位为0,低四位为1switch(GPIO_KEY){//给samg数组赋值,便于让按钮控制数值case(0x07):	KEY_VALUE=0;break;//第一列,00000111case(0x0b): KEY_VALUE=1;break;//第二列,00001011case(0x0d): KEY_VALUE=2;break;//第三列,00001101case(0x0e): KEY_VALUE=3;break;//第四列;00001110}//行判断GPIO_KEY=0xf0;switch(GPIO_KEY){GPIO_KEY=0xf0;//定义高四位为1,低四位为0(第二次判断)case(0x70):	KEY_VALUE=KEY_VALUE;break;//第一行,01110000case(0xb0): KEY_VALUE=KEY_VALUE+4;break;//第二行,10110000case(0xd0): KEY_VALUE=KEY_VALUE+8;break;//第三列,11010000case(0xe0):	KEY_VALUE=KEY_VALUE+12;break;//第四列;11100000}//设置a,设置运转时间while((a<50)&&(GPIO_KEY!=0xf0))//按键松手检测{delay(1000);a++;}}}}	void main()	{
//表示38译码器LSA=1;LSB=1;LSC=0;while(1){KEYDown();GPIO_DIG=smgduan[KEY_VALUE];}}



本文发布于:2024-01-28 20:54:52,感谢您对本站的认可!

本文链接:https://www.4u4v.net/it/170644649510217.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:矩阵   单片机   按键
留言与评论(共有 0 条评论)
   
验证码:

Copyright ©2019-2022 Comsenz Inc.Powered by ©

网站地图1 网站地图2 网站地图3 网站地图4 网站地图5 网站地图6 网站地图7 网站地图8 网站地图9 网站地图10 网站地图11 网站地图12 网站地图13 网站地图14 网站地图15 网站地图16 网站地图17 网站地图18 网站地图19 网站地图20 网站地图21 网站地图22/a> 网站地图23