《基于单片机小系统的矩阵键盘接口
电路设计》
实
训
报
告
院 系: 电子电气工程系
班 级: 11电子信息班
老 师: 夏晓玲
第十组:
日 期:2013年4月18日
一、实训目的
1、掌握键盘接口的基本特点,了解键盘和矩阵键盘的应用方法。
2、掌握键盘接口的硬件设计方法,软件程序设计和贴士排错能力。
3、复习利用Keil51软件对程序进行编译。
4、用Proteus软件绘制“矩阵键盘扫描”电路,并用测试程序进行仿真。
5、会根据实际功能,正确选择单片机功能接线,编制正确程序。对实验结果能做出分析和解释,能写出符合规格的实验报告。
二、实训要求
通过实训,学生应达到以下几方面的要求:
素质要求
1.以积极认真的态度对待本次实训,遵章守纪、团结协作。
2.善于发现数字电路中存在的问题、分析问题、解决问题,努力培养工作能力。
能力要求
1.模拟电路的理论知识
2.脉冲与数字电路的理念知识
3.通过模拟、数字电路实验有一定的动手能力
4.能熟练的编写51单片机汇编程序
5.能够熟练的运用仿真软件进行仿真
三、实训工具
1、软件:Proteus软件、keil51。
2、硬件:PC机,串口线,并口线,单片机开发板
四、实训内容
1、掌握并理解“矩阵键盘扫描”的原理及制作,了解各元器件的参数及格 元器件的作用。
2、用keil51测试软件编写51单片机汇编程序
3、用Proteus软件绘制“矩阵键盘扫描”电路原理图。
4、运用仿真软件对电路进行仿真。
五.实训基本步骤
1、用Proteus绘制“矩阵键盘扫描”电路原理图。
2、编写程序使数码管显示当前闭合按键的键值。
3、利用Proteus软件的仿真功能对其进行仿真测试,观察数码管的显示状 态和按键开关的对应关系。
4、用keil51软件编写程序,并生成HEX文件。
5、根据绘制“矩阵键盘扫描”电路原理图,搭建相关硬件电路。
6、用通用编程器或ISP下载HEX程序到MCU。
7、检查验证结果。
六、实验具体内容
使用单片机的P1口与矩阵式键盘连接时,可以将P1口低4位的4条端口线定义为行线,P1口高4位的4条端口线定义为列线,形成4*4键盘,可以配置16个按键,将单片机P2口与七段数码管连接,当按下矩阵键盘任意键时,数码管显示该键所在的键号。
1、电路图
二、程序流程图
3、程序源码
ORG 0000H
AJMP MAIN
ORG 0030H
MAIN:MOV DPTR,#TABLE ;将表头放入DPTR
LCALL KEY ;调用键盘扫描程序
MOVC A,@A+DPTR ;查表后将键值送入ACC
MOV P2,A ;将ACC值送入P0口
LJMP MAIN ;返回反复循环程序
KEY: LCALL KS ;调用检测按键子程序
JNZ K1 ;若有按键按下,则继续
LCALL DELAY2 ;若无按键按下,则调用延时去抖程序
AJMP KEY ;返回,继续检测按键
K1: LCALL DELAY2
LCALL DELAY2 ;若有按键按下,则延时去抖动
LCALL KS ;再调用检测按键程序
JNZ K2 ;确认有键按下,进行下一步
AJMP KEY ;若无按键按下,则返回继续检测
K2: MOV R2,#0EFH ;将扫描值送入R2暂存
MOV R4,#00H ;将第1列值送入R4暂存
K3: MOV P1,R2 ;将R2的值送入P1口
L6: JB P1.0,L1 ;P1.0等于1跳转到L1
MOV A,#00H ;将第1行值送入ACC
AJMP LK ;跳转到键值处理程序
L1: JB P1.1,L2 ;P1.1等于1跳转到L2
MOV A,#04H ;将第2行值送入ACC
AJMP LK ;跳转到键值处理程序进行键值处理
L2: JB P1.2,L3 ;P1.2等于1跳转到L3
MOV A,#08H ;将第3行值送入ACC
AJMP LK ;跳转到键值处理程序
L3: JB P1.3,NEXT ;P1.3等于1跳转到NEXT处
MOV A,#0CH ;将第4行值送入ACC
LK: ADD A,R4 ;将行值与列值相加后的键值送入A
PUSH ACC ;将A中的值送入堆栈暂存
K4: LCALL DELAY2 ;调用延时去抖程序
LCALL KS ;调用检测按键程序
JNZ K4 ;若按键没有松开,则继续返回检测
POP ACC ;键堆栈的值送入ACC
RET
NEXT:INC R4 ;将列值加一
MOV A,R2 ;将R2的值送入A
JNB ACC.7,KEY ;扫描至KEY处进行下一扫描
RL A ;扫描未完,将A中的值右移一位进行下一列的扫描
MOV R2,A ;将ACC的值送入R2暂存
AJMP K3 ;跳转到K3继续
KS: MOV P1,#0FH ;将P1口的高4为置0,低4位置1
MOV A,P1 ;读P1口
XRL A,#0FH ;将A中的值与0FH相异或
RET ;子程序返回
DELAY2: ;40ms延时去抖子程序
MOV R5,#08H
L7: MOV R6,#0FAH
L8: DJNZ R6,L8
DJNZ R5,L7
RET
TABLE: ;7段显示器的数据定义
DB 0C0H,0F9H,0A4H,0B0H,99H ;01234
DB 92H,82H,0F8H,80H,90H ;567
DB 88H,83H,0C6H,0A1H,86H ;ABCDE
DB 8EH ;F
END ;程序结束
四、实验结果
当矩阵键盘的3号键被按下时,P2口的七段数码管显示的数据为3.如下图1所以:
图1
当矩阵键盘的A号键被按下时,P2口的七段数码管显示的数据为A.如下图2所以:
图2
当矩阵键盘的D号键被按下时,P2口的七段数码管显示的数据为d.如下图3所以:
图3
当矩阵键盘的F号键被按下时,P2口的七段数码管显示的数据为F.如下图4所以:
图4