您现在的位置: 主页 > MCU > 单片机技术应用 > 51单片机学习笔记,4*4矩阵键盘 -
本文所属标签:
为本文创立个标签吧:

51单片机学习笔记,4*4矩阵键盘 -

来源: 网络用户发布,如有版权联系网管删除 2018-09-07 

[导读]今天学习了下矩阵键盘,4*4, 分别代表0~F这16个数字我们按了哪个键就显示到数码管上看完郭老师讲解原理后就自己动手写了,郁闷的是在keil软件中,我在switch-case语句中 少了个冒号,竟然编译通过!结果当然不正确了,然后

今天学习了下矩阵键盘,

本文引用地址: http://www.21ic.com/app/mcu/201808/781792.htm

4*4, 分别代表0~F这16个数字

我们按了哪个键就显示到数码管上

看完郭老师讲解原理后就自己动手写了,郁闷的是

在keil软件中,我在switch-case语句中 少了个冒号,竟然编译通过!

结果当然不正确了,然后我再keil中调试代码,那更郁闷了,P3口在扫描到第2行键盘时就

会复位成0xff,怎么赋值都没用,其实是没写冒号啊!

调了半天都不行,最后不得不将STC89C52RC换上仿真芯片SST89E516,在线调试后才发现的错误,

然后参考书上的代码才调试成功的,表示无语~~~

mark下

C代码收藏代码

#include

#include"MY51.H"

voidshowKey(uint8num);//静态显示

voidkeyScan();

voidmain()

{

showKey(18);//初始显示的是6个负号

while(1)

{//循环检测

keyScan();

}

}

voidshowKey(uint8num)

{

P0=0xc0;//11000000打开6个数码管

wela=open;

wela=lock;

P0=table[num];

dula=1;

dula=0;

}

voidkeyScan()

{

uint8num=0;//定义显示的数字

uint8temp=0;//P3口回读信息

uint8i=0;//定义矩阵键盘行号索引

for(i=0;i<4;i++)//共4行

{

P3=_crol_(0xfe,i);//扫描的行索引号,从第0行到第3行

temp=P3;//读取P3口

temp=temp&0xf0;//提取高4位

if(temp!=0xf0)//按键了

{

delayms(5);//消抖

temp=P3;

temp=temp&0xf0;

if(temp!=0xf0)//真的按键了

{

switch(temp)

{

case0xe0://11100000

{

num=0+4*i;

break;

}

case0xd0://11010000

{

num=1+4*i;

break;

}

case0xb0://10110000

{

num=2+4*i;

break;

}

case0x70://01110000

{

num=3+4*i;

break;

}

default:

{

num=18;//18号索引是负号

led7=0;//按了不该按的指示灯

break;

}

}

while(1)//松开按键检测

{

temp=P3;//读取P3口

temp=temp&0xf0;//提取高4位

if(temp==0xf0)//松开按键了

{

delayms(5);

temp=P3;

temp=temp&0xf0



              查看评论 回复



嵌入式交流网主页 > MCU > 单片机技术应用 > 51单片机学习笔记,4*4矩阵键盘 -
 

"51单片机学习笔记,4*4矩阵键盘 -"的相关文章

网站地图

围观()