⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 dpjjx28.htm

📁 单片机学习最好的教程 写的很好很详细 很有价值
💻 HTM
📖 第 1 页 / 共 2 页
字号:
<HTML>
<HEAD>
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=gb_2312-80">
<META NAME="Generator" CONTENT="Microsoft FrontPage 5.0">
<TITLE>键盘接口与编程</TITLE>
</HEAD>
<BODY background="../back.jpg">
<OL>

<FONT FACE="宋体" LANG="ZH-CN" SIZE=3>
<P ALIGN="JUSTIFY" style="line-height: 150%; margin-top: 0; margin-bottom: 0"></font>

<FONT FACE="宋体" LANG="ZH-CN" SIZE=2><LI>
<p style="line-height: 150%; margin-top: 0; margin-bottom: 0">矩阵式键盘接口技术及编程</LI></p>
</font>

<FONT FACE="宋体" LANG="ZH-CN" SIZE=3>
<p style="line-height: 150%; margin-top: 0; margin-bottom: 0"></P></font></OL>
<OL>
  <FONT FACE="宋体" LANG="ZH-CN" SIZE=3> 
  <P ALIGN="JUSTIFY" style="line-height: 150%; margin-top: 0; margin-bottom: 0">
  </font> 
  <FONT FACE="宋体" LANG="ZH-CN" SIZE=2> 
  <LI>
  <p style="line-height: 150%; margin-top: 0; margin-bottom: 0">矩阵式键盘的结构与工作原理:</LI> 
  </p>
  </font> 
  <FONT FACE="宋体" LANG="ZH-CN" SIZE=3> 
  <p style="line-height: 150%; margin-top: 0; margin-bottom: 0"></P>
  </font> 
  <P ALIGN="JUSTIFY" style="line-height: 150%; margin-top: 0; margin-bottom: 0">
  <FONT FACE="宋体" LANG="ZH-CN" SIZE=2>在键盘中按键数量较多时,为了减少</font><FONT SIZE=2>I/O</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=2>口的占用,通常将按键排列成矩阵形式,如图</FONT><FONT SIZE=2>1</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=2>所示。在矩阵式键盘中,每条水平线和垂直线在交叉处不直接连通,而是通过一个按键加以连接。这样,一个端口(如</FONT><FONT SIZE=2>P1</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=2>口)就可以构成</FONT><FONT SIZE=2>4*4=16</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=2>个按键,比之直接将端口线用于键盘多出了一倍,而且线数越多,区别越明显,比如再多加一条线就可以构成</FONT><FONT SIZE=2>20</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=2>键的键盘,而直接用端口线则只能多出一键(</FONT><FONT SIZE=2>9</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=2>键)。由此可见,在</font></P>
  <table width="300" border="0" cellspacing="2" cellpadding="2">
    <tr> 
      <td>
      <p style="line-height: 150%; margin-top: 0; margin-bottom: 0">
      <font size="2"><img src="dpj281.gif" width="308" height="333"></font></td>
    </tr>
  </table>
  <P ALIGN="JUSTIFY" style="line-height: 150%; margin-top: 0; margin-bottom: 0">
  <FONT FACE="宋体" LANG="ZH-CN" SIZE=2>需要的键数比较多时,采用矩阵法来做键盘是合理的。</font></P>
  <P ALIGN="JUSTIFY" style="line-height: 150%; margin-top: 0; margin-bottom: 0"> 
  <FONT FACE="宋体" LANG="ZH-CN" SIZE=2>矩阵式结构的键盘显然比直接法要复杂一些,识别也要复杂一些,上图中,列线通过电阻接正电源,并将行线所接的单片机的</font><FONT SIZE=2>I/O</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=2>口作为输出端,而列线所接的</FONT><FONT SIZE=2>I/O</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=2>口则作为输入。这样,当按键没有按下时,所有的输出端都是高电平,代表无键按下。行线输出是低电平,一旦有键按下,则输入线就会被拉低,这样,通过读入输入线的状态就可得知是否有键按下了。具体的识别及编程方法如下所述。</font></P>
  <FONT FACE="宋体" LANG="ZH-CN" SIZE=3> 
  <P ALIGN="JUSTIFY" style="line-height: 150%; margin-top: 0; margin-bottom: 0">
  </font> 
  <FONT FACE="宋体" LANG="ZH-CN" SIZE=2> 
  <LI>
  <p style="line-height: 150%; margin-top: 0; margin-bottom: 0">矩阵式键盘的按键识别方法</LI> 
  </p>
  </font> 
  <FONT FACE="宋体" LANG="ZH-CN" SIZE=3> 
  <p style="line-height: 150%; margin-top: 0; margin-bottom: 0"></P>
  </font> 
</OL>
<FONT FACE="宋体" LANG="ZH-CN" SIZE=2>

<P ALIGN="JUSTIFY" style="line-height: 150%; margin-top: 0; margin-bottom: 0">确定矩阵式键盘上何键被按下介绍一种“行扫描法”。</P>
</FONT>
<P ALIGN="JUSTIFY" style="line-height: 150%; margin-top: 0; margin-bottom: 0">
<FONT FACE="宋体" LANG="ZH-CN" SIZE=2>行扫描法</font><FONT SIZE=2>  </FONT>
<FONT FACE="宋体" LANG="ZH-CN" SIZE=2>行扫描法又称为逐行(或列)扫描查询法,是一种最常用的按键识别方法,如上图所示键盘,介绍过程如下。</font></P><OL>
<FONT FACE="宋体" LANG="ZH-CN" SIZE=3>

<P ALIGN="JUSTIFY" style="line-height: 150%; margin-top: 0; margin-bottom: 0"></font><LI>
<p style="line-height: 150%; margin-top: 0; margin-bottom: 0">
<FONT FACE="宋体" LANG="ZH-CN" SIZE=2>判断键盘中有无键按下</font><FONT SIZE=2>  </FONT>
<FONT FACE="宋体" LANG="ZH-CN" SIZE=2>将全部行线</FONT><FONT SIZE=2>Y0-Y3</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=2>置低电平,然后检测列线的状态。只要有一列的电平为低,则表示键盘中有键被按下,而且闭合的键位于低电平线与</FONT><FONT SIZE=2>4</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=2>根行线相交叉的</FONT><FONT SIZE=2>4</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=2>个按键之中。若所有列线均为高电平,则键盘中无键按下。</font><font size="2"></LI></font><FONT FACE="宋体" LANG="ZH-CN" SIZE=3></p>
<p style="line-height: 150%; margin-top: 0; margin-bottom: 0"></P>
<P ALIGN="JUSTIFY" style="line-height: 150%; margin-top: 0; margin-bottom: 0"></FONT><LI>
<p style="line-height: 150%; margin-top: 0; margin-bottom: 0">
<FONT FACE="宋体" LANG="ZH-CN" SIZE=2>判断闭合键所在的位置</font><FONT SIZE=2> </FONT>
<FONT FACE="宋体" LANG="ZH-CN" SIZE=2>在确认有键按下后,即可进入确定具体闭合键的过程。其方法是:依次将行线置为低电平,即在置某根行线为低电平时,其它线为高电平。在确定某根行线位置为低电平后,再逐行检测各列线的电平状态。若某列为低,则该列线与置为低电平的行线交叉处的按键就是闭合的按键。</font><font size="2"></LI></font><FONT FACE="宋体" LANG="ZH-CN" SIZE=3></p>
<p style="line-height: 150%; margin-top: 0; margin-bottom: 0"></P></font></OL>
<FONT FACE="宋体" LANG="ZH-CN" SIZE=2>
<DIR>

<P ALIGN="JUSTIFY" style="line-height: 150%; margin-top: 0; margin-bottom: 0">下面给出一个具体的例子:</P></DIR>

</FONT>
<P ALIGN="JUSTIFY" style="line-height: 150%; margin-top: 0; margin-bottom: 0">
<FONT FACE="宋体" LANG="ZH-CN" SIZE=2>图仍如上所示。</font><FONT SIZE=2>8031</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=2>单片机的</FONT><FONT SIZE=2>P1</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=2>口用作键盘</FONT><FONT SIZE=2>I/O</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=2>口,键盘的列线接到</FONT><FONT SIZE=2>P1</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=2>口的低</FONT><FONT SIZE=2>4</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=2>位,键盘的行线接到</FONT><FONT SIZE=2>P1</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=2>口的高</FONT><FONT SIZE=2>4</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=2>位。列线</FONT><FONT SIZE=2>P1.0-P1.3</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=2>分别接有</FONT><FONT SIZE=2>4</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=2>个上拉电阻到正电源</FONT><FONT SIZE=2>+5V</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=2>,并把列线</FONT><FONT SIZE=2>P1.0-P1.3</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=2>设置为输入线,行线</FONT><FONT SIZE=2>P1.4-P.17</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=2>设置为输出线。</FONT><FONT SIZE=2>4</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=2>根行线和</FONT><FONT SIZE=2>4</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=2>根列线形成</FONT><FONT SIZE=2>16</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=2>个相交点。</font></P>
<OL>
  <FONT FACE="宋体" LANG="ZH-CN" SIZE=3> 
  <P ALIGN="JUSTIFY" style="line-height: 150%; margin-top: 0; margin-bottom: 0">
  </font> 
  <LI>
  <p style="line-height: 150%; margin-top: 0; margin-bottom: 0">
  <FONT FACE="宋体" LANG="ZH-CN" SIZE=2>检测当前是否有键被按下。检测的方法是</font><FONT SIZE=2>P1.4-P1.7</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=2>输出全“</FONT><FONT SIZE=2>0</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=2>”,读取</FONT><FONT SIZE=2>P1.0-P1.3</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=2>的状态,若</FONT><FONT SIZE=2>P1.0-P1.3</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=2>为全“</FONT><FONT SIZE=2>1</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=2>”,则无键闭合,否则有键闭合。</font><font size="2"></LI>
  </font>
  <FONT FACE="宋体" LANG="ZH-CN" SIZE=3> 
  </p>
  <p style="line-height: 150%; margin-top: 0; margin-bottom: 0"></P>
  <P ALIGN="JUSTIFY" style="line-height: 150%; margin-top: 0; margin-bottom: 0">
  </FONT> 
  <FONT FACE="宋体" LANG="ZH-CN" SIZE=2> 
  <LI>
  <p style="line-height: 150%; margin-top: 0; margin-bottom: 0">去除键抖动。当检测到有键按下后,延时一段时间再做下一步的检测判断。</LI> 
  </p>
  </FONT> 
  <FONT FACE="宋体" LANG="ZH-CN" SIZE=3> 
  <p style="line-height: 150%; margin-top: 0; margin-bottom: 0"></P>
  </FONT> 
  <P ALIGN="JUSTIFY" style="line-height: 150%; margin-top: 0; margin-bottom: 0">
   <LI>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -