新闻中心

EEPW首页>嵌入式系统>设计应用> 51单片机系列连载8—独立键盘与矩阵键盘

51单片机系列连载8—独立键盘与矩阵键盘

作者: 时间:2016-11-27 来源:网络 收藏
在前面我们讲的都是向单片机中向外输出数据,今天我们开始介绍一下如何向单片机里面输入数据,也就是键盘。

本文引用地址://m.amcfsurvey.com/article/201611/322440.htm

键盘有两种,独立式键盘与行列式矩阵键盘。

独立式键盘是指直接用一根I/O口线构成的单个按键电路,每个I/O口的按键不会影响另外一个,具体电路图如下:

接下来看一个程序,这个程序主要是按键二极管亮,同时按一下数码管显示一下,往下加,加到9,具体程序如下:

#include

#defineuintunsignedint;

#defineucharunsignedchar;

sbitd1=P1^2;

sbitduan=P2^2;

sbitwei=P2^3;

sbitkey1=P3^3;

ucharcodetable[]={

0x3f,0x06,0x5b,0x4f,

0x66,0x6d,0x7d,0x07,

0x7f,0x6f,0x77,0x7c,

0x39,0x5e,0x79,0x71};

ucharnum,t1,y,z;

voiddelay(uintz)

{

uintt1,y;

for(t1=z;t1>0;t1--)

for(y=110;y>0;y--);

}

voidmain()

{wei=1;

P0=0xfe;

wei=0;

key1=1;

while(1)

{

if(key1==0)

{

delay(10);

if(key1==0)

{

d1=0;

num ;

if(num==10)

num=0;

}

while(key1==0);//这个语句加的好神奇

}

else

d1=1;

duan=1;

P0=table[num];

duan=0;

}

}

但是在仿真时就出现问题了,C(15):errorC141:syntaxerrornear;对应的是这句voiddelay(uintz),但直到现在我都不知道它到底哪里错了,真悲哀,先记下来,以后有时间回过头再看。

矩阵式键盘跟独立式键盘相反,彼此之间是有联系的,如下图:


矩阵式键盘的原理也很简单,跟独立按键的基本原理是一样的,但是它是一行一行扫描的,由于时间关系就不做过多分析,具体看一下下面的编程:


上一页 1 2 下一页

评论


技术专区

关闭