单片机课程设计4x8矩阵键盘.docx

上传人:b****3 文档编号:3796464 上传时间:2022-11-25 格式:DOCX 页数:11 大小:145.04KB
下载 相关 举报
单片机课程设计4x8矩阵键盘.docx_第1页
第1页 / 共11页
单片机课程设计4x8矩阵键盘.docx_第2页
第2页 / 共11页
单片机课程设计4x8矩阵键盘.docx_第3页
第3页 / 共11页
单片机课程设计4x8矩阵键盘.docx_第4页
第4页 / 共11页
单片机课程设计4x8矩阵键盘.docx_第5页
第5页 / 共11页
点击查看更多>>
下载资源
资源描述

单片机课程设计4x8矩阵键盘.docx

《单片机课程设计4x8矩阵键盘.docx》由会员分享,可在线阅读,更多相关《单片机课程设计4x8矩阵键盘.docx(11页珍藏版)》请在冰豆网上搜索。

单片机课程设计4x8矩阵键盘.docx

单片机课程设计4x8矩阵键盘

单片机原理与应用课程设计

矩阵式键盘与显示

班级:

机102-1

姓名:

许传栋

学号:

201056502133

组号:

六组

组员:

孔令伟、张叶荣、尚桂香、许传栋、刘金林

目录:

一、设计要求(3

二、硬件设计(3

三、键盘的运行(6

四、数码管的显示(6

五、键盘键值的确定(6

六、按键顺序码的显示(7

七、74LS48的应用(8

八、数码管接口引脚(9

九、程序设计(10

附录(18

一、设计要求

1、完成单片机与32键矩阵式键盘的连接方法。

2、识别是否有键按下,并将键值用两位数码管显示出来。

3、用软件延时取出按键抖动。

二、硬件设计

1、总体构思

本次设计为32键矩阵式键盘,因此采用4x8式按键分布。

分为4行8列的布局。

如图T2_1

图T2_1

当行线和列线分别置一和置零时,按键两端的电压将发生改变。

将键盘的所有引线连出,行线联接到P2口的低四位,列线联接到P1口,从而构成了单片机对键盘按钮动作的读取电路。

将键值用两位数码管显示,因此要利用两片数码管。

由于单片机通过P0口进行输出,因此将P0口的高四位和低四位分别输出数码管的十位和个位,并在单片机与数码管之间接入74LS48。

74LS48

的作用是将P0的四位输出转化为八位,并且作为晶体管的驱动,74LS48的输出电流为6mA,刚好满足数码管的电流。

连接电路如图T2_2

图T2_2

单片机将数据从P0口输出后经过74LS48的转换与驱动带动,数码管进行数码的显示,通过数码管的显示判断出按钮的位置。

将上述键盘和显示电路联接到单片机上:

键盘的行线联接到单片机的P2.0~P2.3上,列线联接到单片机的P1口,P0.0~P0.3,P0.4~P0.7分别连接到两片74LS48的输入端口。

再接入单片机的晶振电路和复位电路,构成单片机的总体电路设计。

如图T2_3

图T2_3

根据总体电路图的联接,设计出实际的物品。

三、键盘的运行

将32个按钮按照4x8的方式排列并连接到电路后。

先将行线全部置一列线全部置零,在将列线置一行线全部置零,检测各行线和列线的的键值,若键值产生变化则表明有按钮按下,否则表示没有按键按下。

对于有按键按下的线路将其中变化的键值,通过软件查表得出其对应的顺序码,并将其保存。

四、数码管的显示

将从键盘处读取的顺序码转换为BCD码从P0口处进行输出。

因此用P0口的高四位和低四位分别代表十位和个位进行输出。

数码管需要8根输入,并且连接到单片机上需要驱动,因此选择采用74LS48进行转换与驱动。

五、键盘键值的确定

由于行线和列线分别置一和置零,当按下按钮后,该按钮所在的行线和列线上所检测到的电位将会发生变化,曾而判断出不同的按钮所对应的位置和顺序码,确定数码管显示的数值。

个按键的键值如图

T5_1

图T5_1

如图T5_1所示,在线左侧,键值的最后一位均为F;在线右侧,键值对低二位均为F。

因此可根据F所在位置的不同判断按键在线左侧还是右侧。

且出去为F的为后左侧和右侧的键值时一一对应相等的。

在查询按键键位位置时,只需建立一个相同的表即可。

六、按键顺序码的显示

先将顺序码定制为FFH,再在差表时,将顺序码逐次加一,当查找到对应的键值的同时也取得了在表中相应的顺序码。

当按键所在的位置为线的左侧时顺序码纪委输出置,在线的右侧时则需将顺序码加16在进行输出。

输出由两片数码管进行显示,所以要将十六进制数转化为BCD码进行输出。

将八个输出端口分成两组,一组输出为十位、另一组输出为个位。

并将十位于个位分别联接到不同的74LS48的输入端进行译码,控制晶体管的显示。

达到显示的目的。

七、74LS48的应用

八、数码管接口引脚

九、程序设计

1、程序设计流程:

如图T8_1

图T8_1

按照电路图联接电路,确定行线与列线所对应的I/O接口。

通过MOV指令将行线所在的端口P2口赋值为0FH,列线所在端口P1口

赋值为00H。

读取P2口的低四位存入R0。

通过MOV指令将行线所在的端口P2口赋值为00H,列线所在的端口P1口赋值为FFH。

取P1口的高四位存入R2,P1口的低四位存入R1。

取P2的低四位作为高四位分别与P1的低四位和高四位组合为新的八位二进制数,并分别保存在R4和R7中。

判断P1的高四位是否等于0F0H。

若相等,表明对应于P1低四位的按钮有动作,在进行查表,确定该键所对应的顺序码;若不相等,则表明对应于P1高四位的按钮有动作,进行跳转,跳转到判断P1高四位顺序码的指令,进行查表。

由于键值的原因,两组所查的表完全相同。

当动作的按钮在低位时,将顺序码存入到30H单元;当动作的按钮在高四位时,将顺序码加16再存入30H。

将顺序码除后10,将整数部分与余数部分组成一个新的八位二进制,并将其通过P0口进行输出。

在检测到有按键按下后,通过演示程序,对按键进行去抖操作。

具体程序及注释如下:

ORG0000H

LJMPSTART

ORG0100H;识别键盘有无按下程序首

地址

START:

MOVP1,#00H;所有列线置低电平

MOVP2,#0FH;所有行线置高电平MOVA,P2;读P2口

ANLA,#0FH;取出低四位

MOVR0,A;P2低四位暂存到R0MOVP1,#0FFH;所有列线置高电平

MOVP2,#00H;所有的行线置低电平MOVA,P1;读P1口

MOVR3,A;p1口暂存到R3

ANLA,#0FH;取出低四位

MOVR1,A;P1口低四位暂存到R1MOVA,R3;读取P1口给累加器ANLA,#0F0H;取出P1口高四位

MOVR2,A;P1口的高四位暂存到R2MOVA,R0;读取P2口的低四位给累

加器A

SWAPA;累加器A中低四位和高四

位交换

ORLA,R1;P1口的低四位与P2口的

低四位逻辑或运算重新

组合,存在累加器AMOVR4,A;P1口的低四位与P2口的

低四位逻辑或运算重新

组合暂存到R4

MOVA,R0;读取P2口的低四位给累

加器A

ORLA,R2;P1口的高四位与P2口的

低四位逻辑或运算重新组

合,存在累加器A

SWAPA;累加器A中低四位和高

四位交换

MOVR7,A;P1口的高四位与P2口

的低四位逻辑或运算重

新组合暂存到R7

KEY0:

CJNER2,#0F0H,KEY1;p1口的高四位不全为高电平,

跳转到KEY1

MOVSP,#70H;软件延时子程序,软件

消抖

MOVA,R0

PUSHACC

MOVA,R1

PUSHACC

MOVR0,#64H

MOVR1,#64H

NET:

DJNZR1,NET

DJNZR0,NET

POPACC

MOVR1,A

POPACC

MOVR0,A

CJNER2,#0F0H,KEY_IN1;p1口的高四位不全为高

电平,跳转到KEY_IN1

KEY_IN1:

MOVA,R4;p2低四位与P1低四位组

合给累加器A

MOVB,A;将按键的特征编码暂存

到B

MOVDPTR,#KEY_TABLE1

MOVR6,#0FFH

KEY_IN2:

INCR6;顺序码加1

MOVA,R6;顺序码值给累加器A

MOVCA,@A+DPTR;查表

CJNEA,B,KEY_IN3;比较,若相同则找到按键

的特征编码

MOVA,R6;找到特征编码后,取顺序

MOV30H,A;存入30H单元

MOVB,#0AH;B=0AH

DIVAB;累加器A除以B,商存在A,

余数存在B

SWAPA;高四位与低四位互换

ORLA,B;A中高四位与B低四位取逻

辑或重新组合

MOVP0,A;从P0口输出

LJMPSTART

KEY_IN3:

CJNEA,#00H,KEY_IN2;未完,继续查

RET;00H为结束码

KEY1:

CJNER1,#0FH,START;比较,P1低四位不全为

高电平,跳转到STARTMOVSP,#70H;软件延时子程序,软件消抖

MOVA,R0

PUSHACC

MOVA,R1

PUSHACC

MOVR0,#0AH

MOVR1,#0AH

NET2:

DJNZR1,NET2

DJNZR0,NET2

单片机课程设计POPACCMOVR1,APOPACCMOVR0,AMOVA,R7;P2低四位P1低四位(R7)给累加器AMOVB,A;累加器A暂存到BMOVDPTR,#KEY_TABLE1MOVR6,#0FFHKEY_IN4:

INCR6MOVA,R6MOVCA,@A+DPTRCJNEA,B,KEY_IN5;顺序码加1;顺序码值给累加器A;查表;比较,若相同则找到按键的特征编码MOVA,R6ADDA,#10HMOV30H,AMOVB,#0AHDIVAB;找到特征编码后,取顺序码;累加器A加上16给累加器A;存入30H单元;B=0AH;累加器A除以B,商存在A,余数存在BSWAPAORLA,B;高四位与低四位互换;A中高四位与B低四位取逻16

单片机课程设计辑或重新组合MOVP0,ALJMPSTARTKEY_IN5:

CJNEA,#00H,KEY_IN4RET;未完,继续查;00H为结束码;从P0口输出KEY_TABLE1:

DB0EEH,0DEH,0BEH,07EHDB0EDH,0DDH,0BDH,07DHDB0EBH,0DBH,0BBH,07BHDB0E7H,0D7H,0B7H,077H00HEND;顺序码;顺序码;顺序码;顺序码;结束码17

单片机课程设计附录:

参考文献新编单片机原理及应用(机械工业出版社)74LS48芯片资料18

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高等教育 > 哲学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1