全球旧事资料 分类
51单片机矩阵键盘的C语言程序与分析200910171925学习51单片机矩阵键盘时我有点迷乱了不知道是怎样处理的经过仔细分析电路然后终于明白其中的原理这样的话再看程序就是那样的简单了首先看一下电路图是怎样连接的我买的开发板上是AT89S52单片机矩阵键盘在P3口接法如下图
当然上面的图的意思是P31P33跟P34P37不一样的他们是相互连接当按下键时组成4416个键的如果给P3一个扫描初值的话如0x0F则没有键按下时为P31P33为1P34P37为0如果有键按下则情况发生变化高电平接入低电平如P33与P37连接的键按下则P33与P37为0即接地了则P3此时为00000111这时如果用P30x0F则高四位为0低四位保留可
f以得到低四位的内容了通过去抖操作即一个delay可以得到低四位内容这里设为hP30x0F如果再得到高四位内容则可以组成一个数来定位哪个键了用P3h0xF0这会出现什么情况呢101111这里难道高四位全置1吗不是的当赋值后如果有键按下的话P3高四位不会全为1111被拉到01110了P33与P37连接的键按下P33与P37为0如则即接地了即0111F0之后得到01110000这样的话我们得到高四位的值了用高四位低四位就可以得到一个数值确定一个键下面看看人家编写的程序相信不是太难了吧keyboardc这里的行与列的扫描也就是把字节的8位高四位与低四位分开来从而确定坐标行列扫描程序可以自己定义端口和扫描方式这里做简单介绍i
cludereg52h包含头文件defi
eucharu
sig
edchardefi
eui
tu
sig
edi
tu
sig
edcharco
stdofly0x3f0x060x5b0x4f0x660x6d0x7d0x070x7f0x6f0x770x7c0x390x5e0x790x710F数码管来显示按下键的值ucharkeysca
voidvoiddelayui
ti主要的矩阵键盘扫描函数
voidmai
ucharkeyP20x001数码管亮按相应的按键会显示按键上的字符while1keykeysca
调用键盘扫描switchkeycase0x7eP0dofly0break0按下相应的键显示相对应的码值原理就是高四位一列低四位一列的组合011111107e0表示按键后为01表示没有按键按下的即P37与P31连接为低电平为S1键
f其他类推case0x7dP0dofly1break1case0x7bP0dofly2break2case0x77P0dofly3break3case0xbeP0dofly4break4case0xbdP0dofly5break5case0xbbP0dofly6break6case0xb7P0dofly7break7case0xdeP0dofly8break8case0xddP0dofly9break9case0xdbP0dofly10breakacase0xd7P0dofly11breakbcase0xeeP0dofly12breakccase0xedP0dofly13breakdcase0xebP0dofly14breakecase0xe7P0dofly15breakfucharkeysca
voir
好听全球资料 返回顶部