键盘扫描实验设计报告.docx

上传人:b****4 文档编号:27012319 上传时间:2023-06-25 格式:DOCX 页数:22 大小:573.68KB
下载 相关 举报
键盘扫描实验设计报告.docx_第1页
第1页 / 共22页
键盘扫描实验设计报告.docx_第2页
第2页 / 共22页
键盘扫描实验设计报告.docx_第3页
第3页 / 共22页
键盘扫描实验设计报告.docx_第4页
第4页 / 共22页
键盘扫描实验设计报告.docx_第5页
第5页 / 共22页
点击查看更多>>
下载资源
资源描述

键盘扫描实验设计报告.docx

《键盘扫描实验设计报告.docx》由会员分享,可在线阅读,更多相关《键盘扫描实验设计报告.docx(22页珍藏版)》请在冰豆网上搜索。

键盘扫描实验设计报告.docx

键盘扫描实验设计报告

 

ARM创新实验设计报告

 

题目:

键盘扫描实验

 

学院:

机电工程学院

专业:

自动化

班级:

学生:

学号:

指导教师:

职称:

指导教师:

职称:

 

 

致谢...............................................18

参考文献...........................................18

附录...............................................19

第一章引言

1.1键盘及LED扩展电路概述

键盘及LED扩展电路主要是由74HC164移位寄存器、数码显示管、按键、电阻、电容、导线等构成的。

将8个按键用总线分别与两个74HC164移位寄存器、数码显示管联接起来,两个74HC164移位寄存器联接起来。

一个用来存段码,一个用来存位码。

在没有按键动作时,74HC164移位寄存器的数据输入端AB(A和B作为一个2个输入端的与门为74HC164提供数据,在此电路里并联)的输入电平为1,供电路产生移位逻辑时钟脉冲信号的输入端CP也为1电平。

此时按下键就给了CP端一个低电平,当键松开后CP端即恢复高电平,于是CP端就得到了一个输入翻转兼移位的低电平脉冲信号.当74HC164得到了一个0数据的同时输出端Q7~Q0的数据将全部左移一位。

通过DATA端持续给其传送数据,当装满寄存器后开始循环,而寄存器与数码显示管是相通的,寄存器把对应位的高、低电平传给数码管,使符合条件(段码、位码)的0-9在数码管上显示出来。

1.2系统的主要功能

该系统使用前后台的程序编写方法,完成三个基本的功能。

1.任意按下键盘,能在数码显示管上将按下的键对应的十六进制数显示出来图1.1.1

2.使数码显示管动态显示

3.键盘扫描的流程图如右:

系统的硬件设计

1.3系统的硬件构成及功能

2.1.174HC164移位寄存器

在计算机系统中为了高效地实现计算机系统之间的远距离通信,且要使通信电路简单、可靠,则采用串行输入、输出的方式,例如串行口、I2C和SPI通信等,甚至当今广泛应用的互联网通信,都采用了这种方式来实现,移位寄存器的作用就是实现并行输入、串行输出或串行输入、并行输出。

图2.1.1

 

74HC164是一种常用的八位串入并出移位寄存器,它的电路原理图及逻辑符号见图2.1.1所示。

在电路原理图中,8个D触发器首尾相接,数据输入端A和B通过与门G接到F1的输入端作为整个移位寄存器的串行输入,触发器F1~F8的输出分别为芯片的并行输出Q0~Q7,8个触发器的时钟输入端连接在一起形成芯片的时钟输入端CP,这样在时钟上升沿的作用下,串行输入数据A·B逐位从左向右移动。

它的特性表如表4.19所示,从表中可以看出若要将八位数据D7~D0传送到输出Q7~Q0,必须在8个CP脉冲的作用下,从D7到D0逐位送到输入D。

例如将二进制数(11010110)B串行传送到74HC164并行输出(Q7为高位,Q0为低位),时序图如图2.1.2所示。

图中横坐标表示时间,纵坐标表示高、低电平,因此波形中串行数据从左至右、由高位Q7(本例为1)至低位Q0(本例为0)输入,在时钟脉冲的作用下,逐位从左至右移位,8个时钟脉冲过后,二进制数(11010110)B在Q7~Q0并行输出。

图中纵向虚线表示相位对准每个CP脉冲的上升沿;阴影部分表示不必关心这时的状态;方向指向右下方的8个箭头表示最早输入的1经过8次移位到达Q7。

 

图2.1.2移位寄存器时序图

图中纵向虚线表示相位对准每个CP脉冲的上升沿;阴影部分表示不必关心这时的状态;方向指向右下方的8个箭头表示最早输入的1经过8次移位到达Q7。

1.4主控模板硬件设计

1.EasyARM2103开发板

2.74LS164芯片

3.8位数码显示管

4.引脚芯片

5.四脚按键、电阻、电容、发光二极管、跳线若干

1.5ARM芯片及引脚说明

2.LPC2103芯片

(1)引脚

 

图2.3.1LPC2103引脚

(2)元件布局图

EasyARM2103开发板的底板与PACK板的元件布局如图2.8、图2.9所示。

图2.3.2底板元件布局图

图2.3.3PACK板元件布局图

1.6LED数码显示管

LED数码管分共阳极与共阴极两种,其工作特点是,当笔段电极接低电平,公共阳极接高电平时,相应笔段可以发光。

共阴极LED数码管则与之相反,它是将发光二极管的阴极(负极)短接后作为公共阴极。

当驱动信号为高电平、控制端接低电平时,才能发光。

1.LED封装图

图2.4.1LED封装图

2.数码管结构

数码管由8个发光二极管(以下简称字段)构成,通过不同的合可用来显示数字0~9,字符A~F、H、L、P、R、U、Y等符号及小数点“.”。

数码管又分为共阴极和共阳极两种类型。

3.数码管工作原理

共阳极数码管中8个发光二极管的阳极(二极管正端)连接一起,即为共阳极接法,简称共阳数码管。

通常,公共阳极接高电平(一般接电源),其它管脚接段驱动电路输出端。

当某段驱动电路的输入端为低电平时,该端所连接的字段导通并点亮。

根据发光字段的不同组合可显示出各种数字或字符。

此时,要求段驱动电路能吸收额定的段导通电流,还需根据外接电源及额定段导通电流来确定相应的限流电阻。

共阴极数码管中8个发光二极管的阴极(二极管负端)连接在一起,即为共阴极接法,简称共阴数码管。

通常,共阴极接低电平(一般接地),其它管脚接段驱动电路输出端。

当某段驱动电路的输出端为高电平时,该端所连接的字符导通并点亮,根据发光字段的不同组合可显示出各种数字或字符。

同样,要求段驱动电路能提供额定的段导通电流,还需根据外接电源及额定段导通电流来确定相应的限流电阻。

4.单片机LED断码表

单片机LED共阳极段码表【0-F】

DB         0c0H,0f9H,0a4H,0b0H,99H,92H,82H,0f8H            [0-7]

DB         80H,90H,88H,83H,0c6H,0a1H,86H,8eH                [8-F]

单片机LED共阴极段码表【0-F】

DB        3FH,06H,5BH,4FH,66H,6DH,7DH,07H                   [0-7]

DB        7FH,6FH,77H,7CH,39H,5EH,79H,71H,76H             [8-F]

为了满足某些特殊用户需要有时也会用到以下特别字符的段码表

单片机LED共阳极段码表【HLPRUY-.熄灭】

DB     89H,0C7H,8CH,0CEH,0C1H,91H,0BFH,7FH,0FFH    [HLPRUY-.熄灭]

单片机LED共阴极段码表【HLPRUY-.熄灭】

DB      76H,38H,73H,31H,3EH,6EH,40H,80H,00H     [HLPRUY-.熄灭]

其中[HLPRUY-,熄灭],这些特殊字符中有些看起来不是很形象,但有时不可避免的会用到.

 

1.7键盘设计

图2.5.1独立式按键原理图图2.5.2矩阵式按键原理图

无论是单片机控制系统还是单片机测量系统,都需要一个人机对话装置,这种人机对话装置通常采用键盘和显示器。

键盘是单片机应用系统中人机对话常用的输入装置,而显示器是单片机应用系统人机对话中的常用输出装置。

键盘是由若干个按键开关组成,键的多少根据单片机应用系统的用途而定。

键盘由许多键组成,而每个键相当于一个机械开关触点,当键按下时,触点闭合,当键松开时,触点断开。

单片机接收到按键的触点信号后作相应的功能处理。

因此对于单片机系统来说键盘接口信号是输入信号。

单片机的键盘接口分为独立式和矩阵式。

独立式键盘的每个按键都有一个信号线与单片机电路相连,所有按键有一个公共地或公共正端,每个键相互独立互不影响。

如图2.5.1所示,当按下键1时,无论其它键是否按下,键1的信号线就由1变0;当松开键1时,无论其它键是否按下,键1的信号线就由0变1。

矩阵式键盘的按键触点接于由行、列母线构成的矩阵电路的交叉处,每当一个按键按下时通过该键将相应的行、列母线连通。

若在行、列母线中把行母线逐行置0(一种扫描方式),那么列母线就用来作信号输入线。

矩阵式键盘原理图如图2.5.2所示。

针对以上两大类键盘工作方式,单片机又有三种键盘扫描方式:

查询方式;定时扫描方式和中断扫描方式。

查询方式是指在程序中用一段专门的扫描和读按键程序不停查询有无按键按下,确定键值。

这种方式电路简单,但需要占用单片机的机器时间。

定时扫描方式是指利用单片机内的定时器来产生定时中断,然后在定时中断的服务程序中扫描,检查有无按键按下,确定键值。

这种方式的电路也比较简单,不占用单片机的机器时间,但需要占用一个定时器,同时定时的时间不能过长,否则可能检测不到相应得按键。

中断扫描方式是指当有键按下时由相应的硬件电路产生中断信号,单片机在中断服务程序中扫描,检查有无按键按下,确定键值。

这种方式硬件电路上必须要产生中断线,需要与门和非门来产生。

但中断方式不占用单片机的机器时间,也不会出现定时方式时的检测不到键盘的情况。

系统的软件设计

1.8软件总体功能设计

/********************************************************************************************************

**程序名称:

SPI驱动键盘板(按键显示键的编号)

**所用芯片:

ARM2103

**引脚设置:

P0.4为SPI的CLK(时钟线);P0.5为GPIO输入;P0.6为SPI的MOSI(数据传输线)

**功能描述:

按下键盘板上的一个键,就在8个数码管上都显示它的编号

**程序作者:

张会

**编写日期:

2010年11月16日

********************************************************************************************************/

#definekey(1<<5)

#include"config.h"

uint8data[8]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07};//段码表

uint8bit[]={0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe};//位码表

uint32Flags=FALSE;

chari=0;//位码循环变量

charwhichkeydown=8;//标志哪一个键按下了,0~7号键。

/****************************************************************************

**delay延时函数delay(1000000)防抖效果最好

****************************************************************************/

voiddelay(uint32time)

{

while(time>0)

{time--;}

}

/********************************************************************************/

void__irqTimer0ISR(void)

{

Flags=TRUE;

T0IR=0x01;

VICVectAddr=0x00;

}

/******************************************************************************/

voidTimer0Init(void)

{

T0TCR=0x02;//TC复位

T0PR=0x00;//不分频

T0MCR=0x03;//MR0匹配时,发生中断和TC复位

T0MR0=Fpclk/400;//25ms

T0IR=0x01;

//中断设置

VICIntSelect&=~(1<<4);

VICVectCntl0=0x20|4;

VICVectAddr0=(uint32)Timer0ISR;

VICIntEnable=1<<4;

T0TCR=0x01;//启动timer0

}

/****************************************************************************

**

****************************************************************************/

voidSPIInit(void)

{

SPI_SPCCR=0x08;//设置传输速率,此处设为最大速率Fpclk/8

SPI_SPCR=SPI_SPCR&(0<<2)//每次传送的数据由8~11位设置

|(1<<3)//起始和结束:

数据在SCK第二个时钟沿采样

|(1<<4)//时钟极性控制:

SCK低有效

|(1<<5)//选择为主模式

&(~(1<<6))//设置为数据传送时高位在先【高位在先是键盘板使用模式,由74HC164移位寄存器特点决定的】

|(0<<7);//SPI中断使能

}

/****************************************************************************

**

****************************************************************************/

voidSendData(uint8number)

{

SPI_SPDR=number;//传送的数据A内容(段码)

IOCLR=1<<7;

while((SPI_SPSR&(1<<7))==0);//等待传送结束(SPI_SPSR第七位置1时表示传送结束)

IOSET=1<<7;

}

/****************************************************************************

**main函数*********************************/

intmain(void)

{

PINSEL0=PINSEL0&(~(0x03<<8))|(1<<8)//设置P0.4为SPI的CLK(时钟线)

&(~(1<<10))//设置P0.5为GPIO

&(~(0x03<<12))|(1<<12);//设置P0.6为SPI的MOSI(数据传输线)

PINSEL0&=~(0x03<<14);

IODIR|=1<<7;

PINSEL1&=~(0x03<<2);

IODIR|=1<<17;

IOSET=1<<17;

Timer0Init();

IRQEnable();

while

(1)

{

if(TRUE==Flags)

{

Flags=FALSE;//清零

SendData(data[i]);

SendData(bit[i]);

if((IO0PIN&(1<<5))==0)

{

whichkeydown=i;

}

else

{

if(whichkeydown==6)//按下6号键,点亮灯

{

whichkeydown=8;

IOCLR=1<<17;

}

}

i=(i+1)%8;

}

}

return0;

}

/**************************文件结束********************************/

 

1.9各功能模块软件设计

1.delay延时函数

功能:

用来防止键盘抖动[delay(1000000)键盘防抖效果最好]

相关知识:

如果不处理键抖动,则有可能引起一次按键被误读成多次,所以为了确保能够正确地读到按键,必须去除键抖动,确保在按键的稳定闭合和稳定断开的时候来判断按键状态,判断后再做处理。

按键在去抖动,可用硬件或软件两种方法消除。

由于使用硬件方法消除键抖动,一般会给系统的成本带来提高,所以通常情况下都是使用软件方法去除键抖动。

2.中断子程序设置

3.定时子程序设置

功能:

设置为不分频,没隔25毫秒产生一次中断

4.SPI子程序设置

功能:

对SPI的控制寄存器相应位进行设置,使其最大传输速率为8分频;每次传送的数据由8~11位设置;起始和结束:

数据在SCK第二个时钟沿采样;时钟极性控制:

SCK低有效;选择为主模式;设置为数据传送时高位在先【高位在先是键盘板使用模式,由74HC164移位寄存器特点决定的】

5.发送数据子程序设置

功能:

把数据的位码、段码传送给74HC164移位寄存器,使数据能在数码管上显示出来

6.主函数设置

功能:

对用到的引脚、子程序等进行相应的设置。

其中:

(1)引脚设置:

P0.4为SPI的CLK(时钟线)

P0.5为GPIO输入(按键)

P0.6为SPI的MOSI(数据传输线)

P0.7为SPI的RCK(片选)

P0.17为GPIO输出(灯)

(2)程序功能:

按下键盘板上的一个键,就在8个数码管上都显示它的编号,当按下6号键的时候点亮灯LED。

结束语

1.首先先回答有关键盘扫描实验的思考题

(1).说明查询方式工作原理

答:

查询方式是指在程序中用一段专门的扫描和读按键程序不停查询有无按键按下,确定键值。

这种方式电路简单,但需要占用单片机的机器时间。

(2).说明中断方式和查询方式的优缺点

答:

中断扫描方式是指当有键按下时由相应的硬件电路产生中断信号,单片机在中断服务程序中扫描,检查有无按键按下,确定键值。

中断方式的优、缺点:

优点:

不占用单片机的机器时间,也不会出现定时方式时的检测不到键盘的情况

缺点:

其硬件电路上必须要产生中断线,需要与门和非门来产生

查询方式的优、缺点:

优点:

电路简单

缺点:

需要占用单片机的机器时间

2.对比其他的键盘扫描实验电路

电路原理图

使用SH69P25为控制芯片,利用PB口和PC口来扫描一个4×4=16个按键的行列式键盘的电路原理图如图4.1所示。

图4.1

电路中单片机SH69P25作用4MHz的晶振Y1作为主振荡器,使用PB口连接

到行列式键盘的行线,使用PC口连接到行列式键盘的列线,由于SH69P25有内

部上拉电阻和内部下拉电阻,所以外部不需再接上拉电阻了。

16个按键的键值从左到右、从上到下,分别为0,1,2,3,4,5,6,…,A,B,C,D,E,F。

3.LPC2103简介

LPC2103是一个基于支持实时仿真的16/32位ARM7TDMI-SCPU的微控制器,并带有32kB的嵌入高速Flash存储器,128位宽度的存储器接口和独特的加速结构使32位代码能够在最大时钟速率下运行。

较小的封装和极低的功耗使LPC2103适用于访问控制器和POS机等小型应用系统中;由于内置了宽范围的串行通信接口(2个UART、SPI、SSP和2个I2C)和8KB的片内SRAM,LPC2103也适合用在通信网关和协议转换器中。

32/16位定时器、增强型10位ADC、定时器输出匹配PWM特性、多达13个边沿、电平触发的外部中断、32条高速GPIO,使得LPC2103微控制器特别适用于工业控制和医疗系统中。

LPC2103特性

●16/32位ARM7TDMI-S微控制器,超小LQFP48封装;

●8KB的片内静态RAM和32KB的片内Flash程序存储器。

128位宽度接口/加速器可实现高达70MHz工作频率;

●通过片内boot装载程序实现在系统/在应用编程(ISP/IAP)。

单个Flash扇区或整片擦除时间为100ms,256字节编程时间为1ms;

●嵌入式ICERT通过片内RealMonitor软件提供实时调试;

●10位A/D转换器提供8路模拟输入(每个通道的转换时间低至2.44us),以及特定的结果寄存器来最大限度地减少中断开销;

●2个32位定时器/外部事件计数器(带7路捕获和7路比较通道);

●2个16位定时器/外部事件计数器(带3路捕获和7路比较通道);

●低功耗实时时钟(RTC)具有独立的电源和特定的32KHz时钟输入;

●多个串行接口,包括2个UART(16C550协议标准)、2个高速I2C总线(400Kbit/s)、SPI和具有缓冲作用和数据长度可变功能的SSP;

●向量中断控制器(VIC),可配置优先级和向量地址;

●多达32个通用I/O口(可承受5V电压);

●多达13个边沿、电平触发的外部中断管脚;

●通过一个可编程的片内PLL(100us的设置时间)可实现最大为70MHz的CPU操作频率,其具有10MHz~25MHz的输入频率;

●片内集成振荡器与外部晶体的操作频率范围为1~25MHz;

●低功耗模式包括空闲模式、带RTC的睡眠模式和掉电模式;

●可通过个别使能/禁止外围功能和外围时钟分频来优化额外功耗;

●通过外部中断或RTC将处理器从掉电模式中唤醒。

4.EasyARM2103硬件说明

EasyARM2103开发板是广州周立功单片机发展有限公司设计的EasyARM系列开发套件之一,它采用了NXP公司基于ARM7TDMI-S核、LQFP48封装的LPC2103芯片,具有JTAG仿真调试和ISP编程功能。

EasyARM2103开发板上提供了按键、发光二极管等常用的功能器件,具有RS-232接口电路和I2C存储器电路。

用户可以更换兼容的CPU进行仿真调试,如LPC2101和LPC2102芯片等。

开发板上所有的I/O口全部引出,灵活的跳线组合,极大的方便用户进行32位ARM嵌入式系统的开发实验。

功能特点

EasyARM2103开发板的功能特点如下:

◆采用“底板+PACK板”的形式构成EasyARM2103开发套件,PACK板的主芯片为LPC2103;

◆板上所有的功能器件与LPC2103的引脚可通过跳线来连接;

◆配套有详细的开发板实验教程;

◆I/O口全部引出,方便用户连接外部电路进行开发;

◆可进行GPIO的输入输出实验,如按键输入、发光二极管输出等;

◆按键、发光二极管分别可用于外部中断、GPIO输出等;

◆具有RS-232转换电路,可与

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

当前位置:首页 > 医药卫生 > 中医中药

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

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