课程设计 制作单片机的4X4矩阵键盘Word文件下载.docx

上传人:b****6 文档编号:19321869 上传时间:2023-01-05 格式:DOCX 页数:17 大小:315.18KB
下载 相关 举报
课程设计 制作单片机的4X4矩阵键盘Word文件下载.docx_第1页
第1页 / 共17页
课程设计 制作单片机的4X4矩阵键盘Word文件下载.docx_第2页
第2页 / 共17页
课程设计 制作单片机的4X4矩阵键盘Word文件下载.docx_第3页
第3页 / 共17页
课程设计 制作单片机的4X4矩阵键盘Word文件下载.docx_第4页
第4页 / 共17页
课程设计 制作单片机的4X4矩阵键盘Word文件下载.docx_第5页
第5页 / 共17页
点击查看更多>>
下载资源
资源描述

课程设计 制作单片机的4X4矩阵键盘Word文件下载.docx

《课程设计 制作单片机的4X4矩阵键盘Word文件下载.docx》由会员分享,可在线阅读,更多相关《课程设计 制作单片机的4X4矩阵键盘Word文件下载.docx(17页珍藏版)》请在冰豆网上搜索。

课程设计 制作单片机的4X4矩阵键盘Word文件下载.docx

特性概述:

AT89C51提供以下标准功能:

4k字节Flash闪速存储器,128字节内部RAM,32个I/O接口,两个16位定时/计数器,一个5向量两级中断结构,一个全双工串行通信口,片内振荡器及时钟电路。

同时,AT89C51可降至0Hz的静态逻辑操作,并支持两种软件可选的节电工作模式。

空闲方式停止CPU的工作,但允许RAM,定时/计数器,串行通信口及中断系统继续工作。

掉电方式保存RAM中的内容,但振荡器停止工作并禁止其它所有部件工作直到下一个硬件复位。

管脚说明:

VCC:

供电电压。

GND:

接地。

P0口:

P0口为一个8位漏级开路双向I/O口,每脚可吸收8TTL门电流。

当P0口的管脚第一次写1时,被定义为高阻输入。

P0能够用于外部程序数据存储器,它可以被定义为数据/地址的低八位。

在FIASH编程时,P0口作为原码输入口,当FIASH进行校验时,P0输出原码,此时P0外部必须接上拉电阻。

P1口:

P1口是一个内部提供上拉电阻的8位双向I/O口,P1口缓冲器能接收输出4TTL门电流。

P1口管脚写入1后,被内部上拉为高,可用作输入,P1口被外部下拉为低电平时,将输出电流,这是由于内部上拉的缘故。

在FLASH编程和校验时,P1口作为低八位地址接收。

P2口:

P2口为一个内部上拉电阻的8位双向I/O口,P2口缓冲器可接收,输出4个TTL门电流,当P2口被写“1”时,其管脚被内部上拉电阻拉高,且作为输入。

并因此作为输入时,P2口的管脚被外部拉低,将输出电流。

这是由于内部上拉的缘故。

P2口当用于外部程序存储器或16位地址外部数据存储器进行存取时,P2口输出地址的高八位。

在给出地址“1”时,它利用内部上拉优势,当对外部八位地址数据存储器进行读写时,P2口输出其特殊功能寄存器的内容。

P2口在FLASH编程和校验时接收高八位地址信号和控制信号。

P3口:

P3口管脚是8个带内部上拉电阻的双向I/O口,可接收输出4个TTL门电流。

当P3口写入“1”后,它们被内部上拉为高电平,并用作输入。

作为输入,由于外部下拉为低电平,P3口将输出电流(ILL)这是由于上拉的缘故。

P3口也可作为AT89C51的一些特殊功能口,如下表所示:

P3.0RXD(串行输入口)

P3.1TXD(串行输出口)

P3.2/INT0(外部中断0)

P3.3/INT1(外部中断1)

P3.4T0(记时器0外部输入)

P3.5T1(记时器1外部输入)

P3.6/WR(外部数据存储器写选通)

P3.7/RD(外部数据存储器读选通)

P3口同时为闪烁编程和编程校验接收一些控制信号。

RST:

复位输入。

当振荡器复位器件时,要保持RST脚两个机器周期的高电平时间。

ALE/PROG:

当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的低位字节。

在FLASH编程期间,此引脚用于输入编程脉冲。

在平时,ALE端以不变的频率周期输出正脉冲信号,此频率为振荡器频率的1/6。

因此它可用作对外部输出的脉冲或用于定时目的。

然而要注意的是:

每当用作外部数据存储器时,将跳过一个ALE脉冲。

如想禁止ALE的输出可在SFR8EH地址上置0。

此时,ALE只有在执行MOVX,MOVC指令是ALE才起作用。

另外,该引脚被略微拉高。

如果微处理器在外部执行状态ALE禁止,置位无效。

/PSEN:

外部程序存储器的选通信号。

在由外部程序存储器取指期间,每个机器周期两次/PSEN有效。

但在访问外部数据存储器时,这两次有效的/PSEN信号将不出现。

/EA/VPP:

当/EA保持低电平时,则在此期间外部程序存储器(0000H-FFFFH),不管是否有内部程序存储器。

注意加密方式1时,/EA将内部锁定为RESET;

当/EA端保持高电平时,此间内部程序存储器。

在FLASH编程期间,此引脚也用于施加12V编程电源(VPP)。

XTAL1:

反向振荡放大器的输入及内部时钟工作电路的输入。

XTAL2:

来自反向振荡器的输出。

振荡器特性:

XTAL1和XTAL2分别为反向放大器的输入和输出。

该反向放大器可以配置为片内振荡器。

石晶振荡和陶瓷振荡均可采用。

如采用外部时钟源驱动器件,XTAL2应不接。

有余输入至内部时钟信号要通过一个二分频触发器,因此对外部时钟信号的脉宽无任何要求,但必须保证脉冲的高低电平要求的宽度。

第二节4*4矩阵式键盘

1.2.1矩阵式键盘介绍

矩阵式键盘(或者叫行列式键盘)常应用在按键数量比较多的系统之中。

这种键盘由行线和列线组成,按键设置在行、列结构的交叉点上,行、列线分别接在按键开关的两端。

行列式键盘可分为非编码键盘和编码键盘两大类。

编码键盘内部设有键盘编码器,被按下键的键号由键盘编码器直接给出,同时具有防抖和解决重键的功能。

非编码键盘通常采用软件的方法,逐行逐列检查键盘状态,当有键按下时,通过计算或查表的方法获取该键的键值,通常,计算机通过程序控制对键盘扫描,从而获取键值,根据计算机扫描的方法可以分为定时扫描法和中断扫描法两种。

本系统中的4*4矩阵式键盘结构简单,按键数较少,采用非编码式键盘,当有键按下时,由单片机通过程序扫描确定键值,并将获得的键值通过LED数码管显示出来,4*4矩阵式键盘结构及键值分布如下图:

1.2.2键盘扫描原理

为了更加贴近实际应用,本系统采用中断式扫描法,这样可以节约单片机开销,提高单片机工作效率,使得单片机在没有键盘输入时可以处理其他工作,其具体工作过程为:

在没有键按下时矩阵键盘行线接高电平,列线接低电平,当某个键被按下时,该按键所在行线电位被拉低,触发单片机的外部中断INT0,进入中断子程序,在中断程序中,单片机对矩阵键盘进行扫描以确定按下的键值,扫描过程如下:

1、检测行线电平,确定是否有按键被按下;

2、延时去抖动;

3、重新确认是否有按键被按下,若有,扫描键值,若没有,返回主程序;

4、扫描键值,首先行线接高电平,列线接低电平,对行线电平进行检测,以确定按下的键所在的行;

5、行线接低电平,列线接高点平,对列线电平进行检测,确定按下的键所在的列;

6、将扫描所得的按键值送入LED数码管显示。

第三节LED数码管

LED(发光二级管)显示器件是计算机控制控制系统中的廉价输出设备,它由多个发光二极管组成,能显示许多种字符。

由于制作材料不同,LED可以发出红、黄、篮、紫等各种单色光,一个发光二级管正常发光时的电流大约为10mA,本系统中使用的是七段共阴极LED数码管。

图4、5所示为七段共阴极LED显示器件的结构及外形图。

七段LED显示器件就是将7个发光二极管按一定的方式组合在一起,如图4所示。

下表给出了共阴极7段LED显示器件所能显示的部分字符与7段控制显示代码的对应关系

表1.共阴极7段LED显示器件所能显示的部分字符与7段控制显示代码的对应关系

显示字符

控制显示代码(十六进制)

1

06

A

77

2

5B

B

7C

3

4F

C

39

4

66

D

5E

5

6D

E

79

6

7D

F

71

7

07

H

76

8

7F

P

73

9

6F

-

40

3F

不显示

00

在本系统中,4*4键盘共有16个键,对其编号0~9,A~F,所以用一个7段数码管静态显示即可满足即时显示按键信息的要求。

所谓静态显示,就是当显示器件显示某个字符时,相应的显示段(发光二级管)恒定地导通或截止,直到显示另一个字符为止。

这种显示方式显示一个字符时,只需要微处理器送一次代码,因此占用机时少,而且显示稳定可靠,其缺点是,使用元器件相对较多,且线路比较复杂,相对而言成本较高,比较适合显示位数较少的情况。

第四节硬件电路连接

1.4.1单片机始终电路

时钟信号用来提供单片机片内各种微操作的时间基准,时钟信号通常用两种电路形式得到:

内部振荡和外部振荡。

单片机内部有一个用于构成振荡器的高增益反向放大器,引脚XTALl和XTAL2分别是此放大电器的输入端和输出端,由于采用内部方式时,电路简单,所得的时钟信号比较稳定,实际使用中常采用这种方式,如图6所示在其外接晶体振荡器(简称晶振)或陶瓷谐振器就构成了内部振荡方式,片内高增益反向放大器与作为反馈元件的片外石英晶体或陶瓷谐振器一起可构成一个自激振荡器并产生振荡时钟脉冲。

图6中外接晶体以及电容C1和C2构成并联谐振电路,它们起稳定振荡频率、快速起振的作用,其值为30pF左右,晶振频率选11.0592MHz。

1.4.2单片机复位电路

为了初始化单片机内部的某些特殊功能寄存器,必须利用复位电路,复位后可使CPU及系统各部件处于确定的初始状态,并从初始状态开始正常工作。

单片机的复位是靠外电路来实现的,在正常运行情况下,只要RST引脚上出现两个机器周期时间以上的高电平,即可引起系统复位,但如果RST引脚上持续为高电平,单片机就处于循环复位状态。

复位后系统将输入/输出(1/0)端口寄存器置为FFH,堆栈指针SP置为07H,SBUF内置为不定值,其余的寄存器全部清0,内部RAM的状态不受复位的影响,在系统上电时RAM的内容是不定的。

复位操作有两种情况,即上电复位和手动(开关)复位。

本系统采用上电复位方式。

图6中R2、R3和C3组成上电复位电路,其值R2、R3取为1KΩ,C3取为10pF。

1.4.3矩阵式键盘电路

4*4矩阵式键盘接于单片机的P2口,P2.0~P2.3接行线,P2.4~P2.7接列线,初始化和无按键按下时,P2.0~P2.3输出高电平,P2.4~P2.7输出低电平,当P2.0~P2.3中某个位为低电平时说明有按键按下,触发单片机中断完成相应功能,键盘与单片机的连接如图5.

1.4.4LED数码管显示电路

LED显示器接在单片机的P1口,其中P1.0~P1.6接LED的控制端,P1.7接COM端,工作时P1.7端始终输出低电平,,P1.0~P1.6根据要显示的字符输出相应的数据。

LED与单片机的连接如图5.。

1.4.5中断触发电路

本系统采用中断处理方式,可以提高单片机的数据处理能力,有利于节能。

由矩阵键盘连接电路可知,无按键按下时,行线始终为高电平,当有按键按下时,相应的行线被拉为低电平,利用这一规律设计按键的中断触发电路:

将四条行线接到74LS21(4输入与门)经过与运算后接到单片机的P3.2(INT0)口,设置INT0为下降沿触发,当行线中任意一条为低电平时,触发INT0中断,单片机调用中断子程序检测键值并输出到LED显示。

电路图如图6.

此外,长时间无按键按下时,为了节能,可以关闭LED显示,单片机关闭LED显示通过外部电路触发INT1中断完成。

如图6所示,其中R1为1K。

复位电路接在P3.3(INT1)口,设置INT1中断为低电平触发方式,当OFF按键按下时P3.3输入低电平,触发INT1中断,单片机调用相应中断程序使P1输出全为低电平,LED不显示字符

图6系统硬件连接图

第二章软件部分

第一节所用软件简介

2.1.1Keil

KeilC51是美国KeilSoftware公司出品的51系列兼容单片机C语言软件开发系统,与汇编相比,C语言在功能上、结构性、可读性、可维护性上有明显的优势,因而易学易用。

用过汇编语言后再使用C来开发,体会更加深刻。

KeilC51软件提供丰富的库函数和功能强大的集成开发调试工具,全Windows界面,并将这些部分组合在一起。

其方便易用的集成环境、强大的软件仿真调试工具也会令你事半功倍。

KeilC51生成的目标代码效率非常之高,多数语句生成的汇编代码很紧凑,容易理解。

在开发大型软件时更能体现高级语言的优势。

1系统概述

KeilC51软件提供丰富的库函数和功能强大的集成开发调试工具,全Windows界面。

另外重要的一点,只要看一下编译后生成的汇编代码,就能体会到KeilC51生成的目标代码效率非常之高,多数语句生成的汇编代码很紧凑,容易理解。

⒉KeilC51单片机软件开发系统的整体结构

C51工具包的整体结构,uVision与Ishell分别是C51forWindows和forDos的集成开发环境(IDE),可以完成编辑、编译、连接、调试、仿真等整个开发流程。

开发人员可用IDE本身或其它编辑器编辑C或汇编源文件。

然后分别由C51及C51编译器编译生成目标文件(.OBJ)。

目标文件可由LIB51创建生成库文件,也可以与库文件一起经L51连接定位生成绝对目标文件(.ABS)。

ABS文件由OH51转换成标准的Hex文件,以供调试器dScope51或tScope51使用进行源代码级调试,也可由仿真器使用直接对目标板进行调试,也可以直接写入程序存贮器如EPROM中。

使用独立的Keil仿真器时,注意事项

仿真器标配11.0592MHz的晶振,但用户可以在仿真器上的晶振插孔中换插其他频率的晶振。

仿真器上的复位按钮只复位仿真芯片,不复位目标系统。

仿真芯片的31脚(/EA)已接至高电平,所以仿真时只能使用片内ROM,不能使用片外ROM;

但仿真器外引插针中的31脚并不与仿真芯片的31脚相连,故该仿真器仍可插入到扩展有外部ROM(其CPU的/EA引脚接至低电平)的目标系统中使用。

2.1.2Proteus

Proteus是世界上著名的EDA工具(仿真软件),从原理图布图、代码调试到单片机与外围电路协同仿真,一键切换到PCB设计,真正实现了从概念到产品的完整设计。

是目前世界上唯一将电路仿真软件、PCB设计软件和虚拟模型仿真软件三合一的设计平台,其处理器模型支持8051、HC11、PIC10/12/16/18/24/30/DsPIC33、AVR、ARM、8086和MSP430等,2010年又增加了Cortex和DSP系列处理器,并持续增加其他系列处理器模型。

在编译方面,它也支持IAR、Keil和MPLAB等多种编译器。

它不仅具有其它EDA工具软件的仿真功能,还能仿真单片机及外围器件。

它是目前最好的仿真单片机及外围器件的工具。

虽然目前国内推广刚起步,但已受到单片机爱好者、从事单片机教学的教师、致力于单片机开发应用的科技工作者的青睐。

广泛应用于各个领域。

Proteus为用户提供了丰富的资源,主要有:

1.Proteus可提供的仿真元器件资源:

仿真数字和模拟、交流和直流等数千种元器件,有30多个元件库。

2.Proteus可提供的仿真仪表资源:

示波器、逻辑分析仪、虚拟终端、SPI调试器、I2C调试器、信号发生器、模式发生器、交直流电压表、交直流电流表。

理论上同一种仪器可以在一个电路中随意的调用。

3.除了现实存在的仪器外,Proteus还提供了一个图形显示功能,可以将线路上变化的信号,以图形的方式实时地显示出来,其作用与示波器相似,但功能更多。

这些虚拟仪器仪表具有理想的参数指标,例如极高的输入阻抗、极低的输出阻抗。

这些都尽可能减少了仪器对测量结果的影响。

4.Proteus可提供的调试手段Proteus提供了比较丰富的测试信号用于电路的测试。

这些测试信号包括模拟信号和数字信号。

在PROTEUS绘制好原理图后,调入已编译好的目标代码文件:

*.HEX,可以在PROTEUS的原理图中看到模拟的实物运行状态和过程。

PROTEUS是单片机课堂教学的先进助手。

PROTEUS不仅可将许多单片机实例功能形象化,也可将许多单片机实例运行过程形象化。

前者可在相当程度上得到实物演示实验的效果,后者则是实物演示实验难以达到的效果。

它的元器件、连接线路等却和传统的单片机实验硬件高度对应。

这在相当程度上替代了传统的单片机实验教学的功能,例:

元器件选择、电路连接、电路检测、电路修改、软件调试、运行结果等。

课程设计、毕业设计是学生走向就业的重要实践环节。

由于PROTEUS提供了实验室无法相比的大量的元器件库,提供了修改电路设计的灵活性、提供了实验室在数量、质量上难以相比的虚拟仪器、仪表,因而也提供了培养学生实践精神、创造精神的平台

随着科技的发展,“计算机仿真技术”已成为许多设计部门重要的前期设计手段。

它具有设计灵活,结果、过程的统一的特点。

可使设计时间大为缩短、耗资大为减少,也可降低工程制造的风险。

相信在单片机开发应用中PROTEUS也能茯得愈来愈广泛的应用。

使用Proteus软件进行单片机系统仿真设计,是虚拟仿真技术和计算机多媒体技术相结合的综合运用,有利于培养学生的电路设计能力及仿真软件的操作能力;

在单片机课程设计和全国大学生电子设计竞赛中,我们使用Proteus开发环境对学生进行培训,在不需要硬件投入的条件下,学生普遍反映,对单片机的学习比单纯学习书本知识更容易接受,更容易提高。

实践证明,在使用Proteus进行系统仿真开发成功之后再进行实际制作,能极大提高单片机系统设计效率。

因此,Proteus有较高的推广利用价值。

第二节程序流程图

第三节程序

#include<

reg51.h>

voidmain()

{

P1=0x00;

//初始化LED数码管

TCON=0x01;

//设置INT0、INT1触发方式

IE=0x85;

//使能INT0、INT1中断

while

(1)

{

P2=0x0f;

//接通矩阵键盘

}

}

voidcounter0(void)interrupt0//INT0中断服务程序

charkey,key_h,key_l,delay;

if(P2!

=0x0f)//确认是否有键按下

for(delay=0;

delay<

100;

delay++);

//延时去抖动

if(P2!

=0x0f)//重新确认是否有键按下

{

P2=0x0f;

key_h=P2^0x0f;

//检测按键所在行

P2=0xf0;

key_l=P2^0xf0;

//检测按键所在列

key=key_h+key_l;

}

switch(key)//确定按键值并送入LED显示

case0x11:

P1=0x06;

break;

case0x21:

P1=0x5b;

case0x41:

P1=0x4f;

case0x81:

P1=0x66;

case0x12:

P1=0x6d;

case0x22:

P1=0x7d;

case0x42:

P1=0x07;

case0x82:

P1=0x7f;

case0x14:

P1=0x6f;

case0x24:

P1=0x3f;

case0x44:

P1=0x77;

case0x84:

P1=0x7c;

case0x18:

P1=0x39;

case0x28:

P1=0x5e;

case0x48:

P1=0x79;

case0x88:

P1=0x71;

default:

voidcounter1(void)interrupt1//INT1中断服务程序

chari;

if(P3^3==0)//确认OFF键是否按下

for(i=0;

i<

i++);

if(P3^3==0)//重新确认复位键是否按下

P1=0x00;

//关闭LED显示

第三章仿真结果

本章举几个方针结果的例子

图91行1列

(1)按下时仿真结果

图10录管2难,比如很多关于单片机的基础知识学的不是很好,2行2列(6)按下时仿真结果

图11录管2难,比如很多关于单片机的基础知识学的不是很好,4行3列(E)按下时仿真结果

图12OFF键按下时仿真结果

心得体会

通过本次单片机课程设计,我不仅加深了对单片机理论知识的理解,学会了学以致用的重要性;

而且还学会了如何去加强锻炼创新精神,同时也提高了自身的动手能力,让我深刻的意识到理论与实际结合的重要性。

在本次设计过程中,虽然设计的题目不是很难,但在实际操作过程当中也遇到了不少困难,通过遇到的困难也让我不断地去查找资料,不断地询问同学,不断地去开动自己的脑子,从而也不断地超越自我,让自己的知识能够得到不断地完善;

同时更重要的是,在这一设计过程当中,让我懂得了在学习的道路上会遇到很多的阻碍,但关键的是能做到坚持不懈,不轻易放弃;

最终达到自己想要的目标。

单片机的学习对于我们专业来说非常的重要,通过本次设计也让我更加清晰了对专业的了解,理论知识再丰富,没有实际的操作经验也是不行的;

本次设计也运用到了proteus仿真软件,由于之前没有学过该仿真软件,所以在操作的过程中遇到了很多困难,但庆幸的是通过不断的学习,对proteus软件也有了很大的了解,也学会了一些简单的操作,所以也让我意识到,如果你想学好,通过自己的努力就一定会学好。

当然在本次设计过程中,也遇到了很多的困难,比如很多关于单片机的基础知识学的不是很好。

当然在设计过程中也少不了同学们的互相帮助,要是没有同学帮助的帮助,我想我一个人也不可能在短时间内完成设计要求;

所以在此也要感谢在设计中给予我帮助的指导老师和同学们。

参考文献

1、《单片机原理及应用技术》国防工业出版社张淑清等编著

2、《计算机控制技术(第二版)》电子工业出版社朱玉玺

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

当前位置:首页 > 初中教育 > 理化生

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

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