目录
数码管显示4x4矩阵键盘的键号 2
摘要 2
关键词 2
第一章 硬件 2
AT89C51 2
4*4键盘 6
第二章 软件 9
KEIL4 9
汇编程序 10
Proteus 15
仿真电路图 17
第三章 实物 17
材料 17
实物展示 18
课程设计心得 19
参考文献 20
摘要:1、设计要求:单片机的p1口的p1.0-p1.7连接4x4矩阵键盘,p0口控制一只数码管,当4x4矩阵键盘中的某一按键按下时,数码管上显示对应的键号。例如,1号键按下时,数码管显示“1”;九号键按下时,数码管显示“9”,等等。原理说明:本设计的关键点是如何进行键盘扫描,并计算出键号,然后把键号送数码管显示。
4*4矩阵式键盘 矩阵式键盘(或者叫行列式键盘)常应用在按键数量比较多的系统之中。这种键盘由行线和列线组成,按键设置在行、列结构的交叉点上,行、列线分别接在按键开关的两端。行列式键盘可分为非编码键盘和编码键盘两大类。编码键盘内部设有键盘编码器,被按下键的键号由键盘编码器直接给出,同时具有防抖和解决重键的功能。非编码键盘通常采用软件的方法,逐行逐列检查键盘状态,当有键按下时,通过计算或查表的方法获取该键的键值,通常,计算机通过程序控制对键盘扫描,从而获取键值,根据计算机扫描的方法可以分为定时扫描法和中断扫描法两种。 本系统中的4*4矩阵式键盘结构简单,按键数较少,采用非编码式键盘,当有键按下时,由单片机通过程序扫描确定键值,并将获得的键值通过LED数码管显示出来。键盘扫描原理 :本设计采用中断式扫描法,这样可以节约单片机开销,提高单片机工作效率,使得单片机在没有键盘输入时可以处理其他工作,其具体工作过程为: 在没有键按下时矩阵键盘行线接高电平,列线接低电平,当某个键被按下时,该按键所在行线电位被拉低,触发单片机的外部中断INT0,进入中断子程序,在中断程序中,单片机对矩阵键盘进行扫描以确定按下的键值,扫描过程如下:1、检测行线电平,确定是否有按键被按下;2、延时去抖动; [7]3、重新确认是否有按键被按下,若有,扫描键值,若没有,返回主程序;4、扫描键值,首先行线接高电平,列线接低电平,对行线电平进行检测, 以确定按下的键所在的行; 5、行线接低电平,列线接高点平,对列线电平进行检测,确定按下的键所 在的列; 6、将扫描所得的按键值送入LED数码管显示。LED数码管 本设计中使用的是七段共阴极LED数码管。 如下图所示为七段共阴极LED显示器件的结构及外形图。七段LED显示器件就是将7个发光二极管按一定的方式组合在一起,如下图所示。 下表给出了共阳极7段LED显示器件所能显示的部分字符与7段控制显示代码的对应关系 下表给出了共阳段LED显示器件所能显示的部分字符与7段控制显示代码的对应关系显示字符 | 控制显示代码(十[8]六进制) | 显示字符 | 控制显示代码(十六进制) | 1 | F9H | A | 88H | 2 | A4H | B | 83H | 3 | B0H | C | C6H | 4 | 99H | D | A1H | 5 | 92H | E | 86H | 6 | 82H | F | 8EH | 7 | F8H | 不显示 | FFH | 8 | 80H |
|
| 9 | 90H |
|
| 0 | C0H |
|
| 在本设计中,4*4键盘共有16个键,对其编号0~9,A~F,所以用一个7段数码管静态显示即可满足即时显示按键信息的要求。所谓静态显示,就是当显示器件显示某个字符时,相[9]应的显示段(发光二级管)恒定地导通或截止,直到显示另一个字符为止。这种显示方式显示一个字符时,只需要微处理器送一次代码,因此占用机时少,而且显示稳定可靠,其缺点是,使用元器件相对较多,且线路比较复杂,相对而言成本较高,比较适合显示位数较少的情况。第二章 软件部分KeilKeil C51是美国Keil Software公司出品的51系列兼容单片机C语言软件开发系统,与汇编相比,C语言在功能上、结构性、可读性、可维护性上有明显的优势,因而易学易用。用过汇编语言后再使用C来开发,体会更加深刻。Keil C51软件提供丰富的库函数和功能强大的集成开发调试工具,全Windows界面,并将这些部分组合在一起。其方便易用的集成环境、强大的软件仿真调试工具也会令你事半功倍。Keil C51生成的目标代码效率非常之高,多数语句生成的汇编代码很紧凑,容易理解。在开发大型软件时更能体现高级语言的优势。 系统概述 :Keil C51软件提供丰富的库函数和功能强大的集成开发调试工具,全Windows界面。另外重要的一点,只要看一下编译后生成的汇编代码,就能体会到Keil C51生成的目标代码效率非常之高,多数语句生成的汇编代码很紧凑,容易理解。在开发大型软件时更能体现高级语言的优势。 Keil C51单片机软件开发系统的整体结构 C51工具包的整体结构,uVision与Ishell分别是C51 for Windows和for Dos的集成开发环境(IDE),可以完成编辑、编译、连接、调试、仿真等整个开发流程。开发人员可用IDE本身或其它编辑器编辑C或汇编源文件。然后分别由C51及C51编译器编译生成目[10]标文件(.OBJ)。目标文件可由LIB51创建生成库文件,也可以与库文件一起经L51连接定位生成绝对目标文件(.ABS)。ABS文件由OH51转换成标准的Hex文件,以供调试器dScope51或tScope51使用进行源代码级调试,也可由仿真器使用直接对目标板进行调试,也可以直接写入程序存贮器如EPROM中。使用独立的Keil仿真器时,注意事项 仿真器标配11.0592MHz的晶振,但用户可以在仿真器上的晶振插孔中换插其他频率的晶振。仿真器上的复位按钮只复位仿真芯片,不复位目标系统。 仿真芯片的31脚(/EA)已接至高电平,所以仿真时只能使用片内ROM,不能使用片外ROM;但仿真器外引插针中的31脚并不与仿真芯片的31脚相连,故该仿真器仍可插入到扩展有外部ROM(其CPU的/EA引脚接至低电平)的目标系统中使用。
汇编程序如下:
scan_code EQU 30H
ORG 0000H
JMP start
ORG 0030H
start:
MOV P0,#0FFH ;初始化p0口,使输出无显示
loop: ; 循环调用read—key获取键盘信息,若键盘按下,
CALL read_[11]key ; 则用R7返回键值信息
CJNE R7,#0FFH,next ; 若R7返回值不为0xff,则调用显示函数
JMP loop
next: ;显示程序
MOV A,R7
MOV DPTR,#disp_code
MOVC A,@A+DPTR
MOV P0,A
JMP loop
read_key:
MOV scan_code,#7FH
MOV P1,#0FH
MOV A,P1
MOV R7,#0FFH
CJNE A,#0FH,wait_key ;键盘按下则p1的值会改变
JMP end_key
wait_key:[12]
CALL delay_10ms ;延时10ms,若p1口仍右键按下,则跳到scan—key
MOV A,P1
MOV R7,#0FFH
MOV R6,#4
CJNE A,#0FH,scan_key
JMP end_key
scan_key:
MOV P1,scan_code ;将0x7f循环右移并赋给P1
MOV A,P1
CJNE A,scan_code,get_key;p1的值改变则确定出其行数
RR A
MOV scan_code,A
DJNZ R6,scan_key
JMP end_key
get_key:
; MOV P1,#0FH
; MOV R1,P1
; CJNE R1,#0FH,$[13]
MOV R7,#4
get_key0:
JNB ACC.0,add_r6;移位循环判断最低位,为0则确定其列数
RR A
DJNZ R7,get_key0
MOV R7,#0FFH
JMP end_key
add_r6:
DEC R6 ;从第0个键盘数起,数满(R6-1)*4个键盘,再加上第R6行
MOV A,R6 ;的列数R7-1,便得第几个键盘按下
MOV B,#4
MUL AB
DEC R7
ADD A,R7
MOV R7,A
end_key:
RET[14]
delay_10ms:
MOV R7,#10
delay0:
MOV R6,#0FAH
delay1:
NOP ; 1us
NOP ; 1us
DJNZ R6,delay1 ; 2us+R6循环250次,延时250*4us
DJNZ R7,delay0 ;2us+R7循环10次,延时10*250*4us=10ms
RET
disp_code:
DB 40H,79H,24H,30H
DB 19H,12H,02H,78H
DB 00H,18H,08H,03H
DB 46H,21H,06H,0EH
END
使用Proteus 软件进行单片机系统仿真设计,是虚拟仿真技术和计算机多媒体技术相结合的综合运用,有利于培养学生的电路设计能力及仿真软件的操作能力;在单片机课程设计和全国大学生电子设计竞赛中,我们使用 Proteus 开发环境对学生进行培训,在不需要硬件投入的条件下,学生普遍反映,对单片机的学习比单纯学习书本知识更容易接受,更容易提高。实践证明,在使用 Proteus 进行系统仿真开发成功之后再进行实际制作,能极大提高单片机系统设计效率。因此,Proteus 有较高的推广利用价值。仿真电路图如下: 第三章 实物材料:材料名称 | 晶振 | 22pf电容 | 10uf电容 | 按键 | C51芯片 | 芯片卡槽 | 数码管 | USB接口 | 杜邦线 | 数量 | 1 | 2[18] | 1 | 17 | 1 | 1 | 1 | 1 | 若干 | 实物展示:第四章 心得体会通过本次单片机课程设计,我不仅加深了对单片机理论知识的理解,学会了学以致用的重要性;而且还学会了如何去加强锻炼创新精神,同时也提高了自身的动手能力,让我深刻的意识到理论与实际结合的重要性。 在本次设计过程中,虽然设计的题目不是很难,但在实际操作过程当中也遇到了不少困难,通过遇到的困难[19]也让我不断地去查找资料,不断地询问同学,不断地去开动自己的脑子,从而也不断地超越自我,让自己的知识能够得到不断地完善;同时更重要的是,在这一设计过程当中,让我懂得了在学习的道路上会遇到很多的阻碍,但关键的是能做到坚持不懈,不轻易放弃;最终达到自己想要的目标。 单片机的学习对于我们专业来说非常的重要,通过本次设计也让我更加清晰了对专业的了解,理论知识再丰富,没有实际的操作经验也是不行的;本次设计也运用到了proteus仿真软件,由于之前没有学过该仿真软件,所以在操作的过程中遇到了很多困难,但庆幸的是通过不断的学习,对proteus软件也有了很大的了解,也学会了一些简单的操作,所以也让我意识到,如果你想学好,通过自己的努力就一定会学好。 当然在本次设计过程中,也遇到了很多的困难,比如很多关于单片机的基础知识学的不是很好。当然在设计过程中也少不了同学们的互相帮助,要是没有同学帮助的帮助,我想我一个人也不可能在短时间内完成设计要求;所以在此也要感谢在设计中给予我帮助的指导老师和同学们。
全部资料51hei下载地址:
数码管显示4x4矩阵键盘的键号.zip
(149.2 KB, 下载次数: 122)
课设数码管显示4x4矩阵键盘的键号.doc
(103 KB, 下载次数: 32)
|