51单片机c语言 矩阵键盘,51单片机学习之路 —— 1.8 矩阵键盘

原标题:51单片机学习之路 —— 1.8 矩阵键盘

1 什么是?

这里补一个键盘的定义

大家看,这就是矩阵键盘()

四行 分别连到P3.0 PP3.2(INT0) P3.3(INT1) (从上到下)

四列 分别连到P3.4(LCDEN) P3.5(RS) P3.6(WR) P3.7(RD)(左到右)

2

独立键盘一端固定位! 检验较为方便

但矩阵键盘不一样,他两边都与的I/O相连接。所以检测方法有些不同

要人为送出低电平,我们采取以下的检测方法:

1. 先送一列为低电平,其余几列都为高电平(用此来确定列数)

2. 然后立即轮流检测每一行是否有低电平(确定行数)

我们写一个函数,用两个变量接受列和行的数据 cord_l cord_h

P3 = 0xf0; // 1111 0000

判断是否有按键按下: 例如 S6按下

1.

2. 假设S6按下

此刻S6按下导通P3.4接口LCDEN为低电平(可以这样理解是P3.0与P3.4 0&1=0)

此时的P3口为 1110 0000 (0xe0)

P3 & 0xf0 (P3和0xf0按位与)

P3 = 1110 0000

0xf0 = 1111 0000

= 1110 0000 = 0xe0

这时

成立

表示有按键按下

3 延时消抖

4 储存值

P3 = 1110 0000

0xf0 = 1111 0000

cord_l = 1110 0000

cord_l = 1110 0000

0x0f = 0000 1111

P3 = 1110 1111 = 1110 1110(按下的是s6 P3.0 与 P3.1 与)

P3 = 1110 1110

0x0f = 0000 1111

cord_h = 0000 1110

cord_l = 1110 0000

cord_h = 0000 1110

返回值 = 1110 1110 = 0xee

这样我们就确定了一个值0xee 意味着是s6按下

2 程序编写 要求:按顺序按下s6~s21 依次显示0~f 6个静态显示即可

矩阵键盘

这里让数码管一开始显示一个-

用了一个循环让其一直执行

注意switch中的表达式就是我们通过扫描键盘扫描出的键值码。

3 补充:

c语言中的一些运算符

运算符

范例

说明

+

a+b

a变量值和b变量值相加

-

a-b

a变量值和b变量值相减

*

a*b

a变量值乘以b变量值

/

a/b

a变量值除以b变量值

%

a%b

取a变量值除以b变量值的余数

=

a=6

将6设定给a变量,即a变量值等于6

+=

a+=b

等同于a=a+b,将a和b相加的结果又存回a

-=

a-=b

等同于a=a-b,将a和b相减的结果又存回a

*=

a*=b

等同于a=a*b,将a和b相乘的结果又存回a

/=

a/=b

等同于a=a/b,将a和b相除的结果又存回a

%=

a%=b

等同于a=a%b,将a变量值除以b变量值余数又存回a

++

a++

a的值加1,即a=a+1

--

a--

a的值减1,即a=a-1

>

a>b

测试a的值是否大于b

<

a

测试a的值是否小于b

=

a=b

测试a的值是否等于于b

>=

a>=b

测试a的值是否大于或等于b

<=

a<=b

测试a的值是否小于或等于b

!=

a!=b

测试a的值是否不等于b

&&

a&&b

a和b做逻辑做AND,两个变量都是“真”,结果才为“真”否则结果为“0”

||

a||b

a和b做逻辑做OR,只要任何一个变量为“真”,结果就为“真”

!a

将a变量的值取反,即原来为“真”则变“假”,为“假”则变为“真”

>>

a>>b

将a按位右移b个位

<<

a<

将a按位左移b个位,右侧补“0”

|

a|b

a和b的按位做OR运算

&

a&b

a和b的按位做AND运算

^

a^b

a和b的按位做XOR运算

~

~a

将a的每一位取反

&

a=&b

将b变量的地址存入a

*

*a

用来取寄存器所指地址内的值

责任编辑:

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值