单片机行列式键盘扫描原理如下:
1、行线P10~P13为输出线,列线P14~P17为输入线。一开始单片机将行线(P10~P13)全部输出低电平,此时读入列线数据,若列线全为高电平则没有键按下,当列线有出现低电平时调用延时程序以此来去除按键抖动。
2、延时完成后再判断是否有低电平,如果此时读入列线数据还是有低电平,则说明确实有键按下。最后一步确定键值。当判断确实有键按下之后,行线轮流输出低电平,根据读入列线的数据可以确定键值。
3、单片机将P10输出为低电平,其它P11~P13输出高电平,此时读取列线的数据全为高电平,说明没有在第一行有键按下;其次,单片机将P11输出低电平,其它P10、P12、P13仍为高电平。
4、此时再来读取列线数据,发现列线读到的数据有低电平,数值为1011(0x0B),如果我们的键盘布局已经确定,那么0x0B就代表S5的值了。转到S5键功能处理子程序就可以达到目的。
扩展资料
单片机学习方法
1、基础理论知识学习
基础理论知识包括模拟电路、数字电路和C语言知识。。在学习单片机之前,觉得模拟电路和数字电路基础不好的话,不要急着学习单片机,应该先回顾所学过的模拟电路和数字电路知识,为学习单片机加强基础。
2、单片机实践
准备一台电脑、一块单片机开发板、一套视频教程、一本单片机教材和一本C语言教材。电脑是用来编写和编译程序,并将程序代码下载到单片机上;开发板来运行单片机程序,验证实际效果。
现在的笔记本键盘一般都是16+8的方式,即16个pin输出,对应列;8个输入pin脚,对应行。
键盘输入与输出的结构如下:
在Idel状态下,EC把16条输出线全部拉低,使能键盘扫描中断,这样当任意一个按键按下时,就会触发中断(ICU的INT11h),然后EC就开始逐列扫面,比如OUT(0,1,……,15)输出(1,1,……,1,0),(1,1,……,0,1)……(0,1,……,1,1),当数一个列扫描码,得到的行如输入信号为有一个为0的时候,这是得到的列扫描码与行扫描码就是这个键的扫面码。比如上图按下S6的时候,列与行扫描码就分别为1101,1011。然后通过扫描码在Scan table里面找对应的键码,传给OS,确定是哪个键。
在上面的图中,我们看到,在输入信号每个上面都有上拉电阻,这个电阻必须有除非EC的输入pin脚上面的有足够的上拉能力,否则扫描就会出现错误。
下图中,是一个正常的键盘矩阵图。键盘上面的数字就与下面矩阵里面相同的数字对应。
普通键盘结构及工作原理
键盘一般有独立式和行列式(矩阵式)两种。当然还有其它的结构,比如交 互式结构等等,不过其它的结构比较少用,在这里就不介绍了。在中颖的单片机 中,有些单片机的LCD 驱动引脚的SEGMENT 口可以共享按键扫描口,当选择为按 键扫描口时,可以使用这些口来扫描按键,所以在外部电路可以连接LCD 和按键 矩阵,采用分时扫描进行处理。
1、行线P10~P13为输出线,列线P14~P17为输入线。一开始单片机将行线(P10~P13)全部输出低电平,此时读入列线数据,若列线全为高电平则没有键按下,当列线有出现低电平时调用延时程序以此来去除按键抖动。
2、延时完成后再判断是否有低电平,如果此时读入列线数据还是有低电平,则说明确实有键按下。最后一步确定键值。当判断确实有键按下之后,行线轮流输出低电平,根据读入列线的数据可以确定键值。
3、单片机将P10输出为低电平,其它P11~P13输出高电平,此时读取列线的数据全为高电平,说明没有在第一行有键按下;其次,单片机将P11输出低电平,其它P10、P12、P13仍为高电平。
4、此时再来读取列线数据,发现列线读到的数据有低电平,数值为1011(0x0B),如果我们的键盘布局已经确定,那么0x0B就代表S5的值了。转到S5键功能处理子程序就可以达到目的。
扩展资料
单片机学习方法
1、基础理论知识学习
基础理论知识包括模拟电路、数字电路和C语言知识。。在学习单片机之前,觉得模拟电路和数字电路基础不好的话,不要急着学习单片机,应该先回顾所学过的模拟电路和数字电路知识,为学习单片机加强基础。
2、单片机实践
准备一台电脑、一块单片机开发板、一套视频教程、一本单片机教材和一本C语言教材。电脑是用来编写和编译程序,并将程序代码下载到单片机上;开发板来运行单片机程序,验证实际效果。