APP下载

矩阵键盘在实物与Proteus仿真中的不同与解决方法

2016-06-01韩晓燕韩亚丽刘秀敏

单片机与嵌入式系统应用 2016年3期

韩晓燕,韩亚丽,刘秀敏

(中原工学院 信息商务学院电气工程系,郑州 451191)



矩阵键盘在实物与Proteus仿真中的不同与解决方法

韩晓燕,韩亚丽,刘秀敏

(中原工学院 信息商务学院电气工程系,郑州 451191)

摘要:针对矩阵键盘在Proteus仿真中出现的问题,阐述了实际电路与仿真的不同,找到了问题出现的原因,并给出了简单有效的解决方法,实现了矩阵键盘在实际电路与Proteus仿真中的完美统一。矩阵键盘在实际电路与Proteus仿真中的不同说明,仿真软件虽然直观、节约成本、提高了单片机系统设计效率,但仿真软件毕竟与实物有区别。

关键词:矩阵键盘;实际电路;Proteus仿真

引言

Proteus软件是英国Lab Center Electronics公司出版的EDA工具软件,它不仅具有其他EDA工具软件的仿真功能,还能仿真单片机及外围器件。从原理图布图、代码调试到单片机与外围电路协同仿真,可以一键切换到PCB设计,真正实现了从概念到产品的完整设计,是将电路仿真软件、PCB设计软件和虚拟模型仿真软件三合一的设计平台,深受单片机爱好者、从事单片机教学的教师、致力于单片机开发应用的科技工作者的青睐[1]。在使用 Proteus进行系统仿真开发成功之后再实际制作,能极大提高单片机系统设计效率[2]。但仿真软件毕竟不等同于实物,两者之间存在差别,就导致了某些问题的产生,如数码管显示中送段码和位码的顺序问题、矩阵键盘的检测问题等。本文就矩阵键盘在实际电路与Proteus仿真中的不同进行简单阐述,并提出了一种简单有效的解决方案。

1矩阵键盘检测原理

矩阵键盘又称为行列式键盘,是指将单片机的I/O口分为行线和列线,按键跨接在行线和列线上,列线通过上拉电阻接正电源。当键盘上没有键闭合时,所有的行线和列线断开,列线呈高电平;当键盘上某一个键闭合时,该键所对应的列线与行线短路,此时列线的电平由相应行线的电位决定。和行线连接的单片机端口作为输出,和列线连接的端口作为输入。按键识别原理如下:

① 定时控制某根行线输出低电平,且不断循环;

② 读入所有列线,如果结果不全为1,则有按键按下;

③ 找到读入为0的列,结合目前输出为0的行,即可判断出具体的按键位置。

以P3口接4×4键盘为例,如图1所示,当某个键按下时,数码管显示按下键的键值。具体步骤如下:对键盘的行线进行扫描,P3口依次循环输出0xfe、0xfd、0xfb和0xf7,相应地读P3口,若高4位P3.7~P3.4全为1,则说明该行上没有键闭合;如果这一行上有键闭合,且行线为0和列线为0的交叉键即为按下的键,将高4位和低4位合并即得到键码值。

图1 4×4矩阵键盘

参考程序如下:

#include

#define uint unsigned int

#define uchar unsigned char

uchar duan[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x58,0x5e,0x79,0x71};//共阴

uchar key_val[]={0xee,0xde,0xbe,0x7e,0xed,0xdd,0xbd,

图2 去掉上拉电阻的Proteus仿真

0x7d,0xeb,0xdb,0xbb,0x7b,0xe7,0xd7,0xb7,0x77};

uchar key_scan[]={0xfe,0xfd,0xfb,0xf7};

void main(){

unsigned char temp,i,j;

P2=0;

while(1){

for(i=0;i<4;i++){

P3=key_scan[i];

for(j=0;j<16;j++){

if(key_val[j]==P3)

P2=duan[j];

}

}

}

}

2Proteus仿真中出现的问题及解决方法

该程序在实际搭建的电路中能顺利实现功能要求,但在Proteus仿真中却遇到了问题,即无论哪个键按下,数码管均不显示,如按下按键5,数码管并不显示5,而是处于黑屏状态。仔细观察,发现5所在的列线P3.5引脚并未被行线输出的低电平拉为低电平,反倒是该行线P3.1引脚始终输出高电平,其他行则正常轮流输出低电平。经过多次仔细观察和反复测试发现,按下哪个键,哪个键所在的行线即被该键所在列线的上拉电阻拉为高电平,即在Proteus仿真中,高电平与低电平线进行“与”逻辑后并不输出理论上的低电平,而是呈现出高电平,按照矩阵键盘的检测原理编写的程序,实物中正常显示,在Proteus仿真中却出现了问题。

为了保持实物与仿真的统一,经过反复思考和测试,发现了一种简单有效的解决方法,即在Proteus仿真中,将列线上的上拉电阻去掉即可正常显示,如图2所示。当去掉上拉电阻后,按下按键5,按键所在的列线P3.5引脚即被拉为低电平,成功实现了按键的检测。

结语

本文给出的解决方案简单实用,并且使实物与仿真实现了完美统一。同时,矩阵键盘在实际电路与Proteus仿真中的不同,说明了仿真软件虽然直观、节约成本、提高了单片机系统设计效率,但仿真软件毕竟与实物有区别,遇到问题需要认真思考、反复查找,不断提高发现问题和解决问题的能力。

参考文献

[1] Proteus[EB/OL].[2015-09].http://baike.baidu.com/link?url=DD1I-qwjihms42Hckc0-QfXDr8SwNUA7rvjrSz Oy1lswnUPO_-z3471wlnrd8enIZDv-gBRLch73KoUCNj_wY_.

[2] Proteus软件的优点有哪些?[EB/OL].[2015-09].http://zhidao.baidu.com/link?url=6BxZiew_Zuhi-ZVQkgFfiuDlSnAzjhiL9WQVQ-ssD8WGxEaVeAiAQB_KaNET1DlOSV7 HV7l-hxdx0gLSc3WovK.

韩晓燕(讲师),研究方向为电力系统在线检测。

Difference and Solution Between Actual Circuit and Proteus Simulation of Matrix Keyboard

Han Xiaoyan,Han Yali,Liu Xiumin

(College of Information&Business,Zhongyuan University of Technology,Zhengzhou 451191,China)

Abstract:Aiming at the problem of matrix keyboard in the proteus simulation,the paper expounds the difference between the practical circuit and the proteus simulation,and finds out the reason.A simple and effective solution is given,which achieves the perfect unity of the matrix keyboard in the actual circuit and the proteus simulation.The difference also shows that the simulation software is intuitive,saves the cost and improves the efficiency of the microcontroller,but it is different from the real object.

Key words:matrix keyboard;actual circuit;Proteus simulation

收稿日期:(责任编辑:薛士然2015-09-06)

中图分类号:TP211

文献标识码:A