《STC系列单片机项目实践》课件-02 项目二 简易计算器设计_第1页
《STC系列单片机项目实践》课件-02 项目二 简易计算器设计_第2页
《STC系列单片机项目实践》课件-02 项目二 简易计算器设计_第3页
《STC系列单片机项目实践》课件-02 项目二 简易计算器设计_第4页
《STC系列单片机项目实践》课件-02 项目二 简易计算器设计_第5页
已阅读5页,还剩10页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

项目2简易计算器设计副标题2.1学习目标[知识目标]

掌握GPIO口的配置方法;

掌握键盘的硬件设计原理;

掌握行列式键盘的驱动原理;

掌握数码管的硬件设计方法及其驱动原理。

[能力目标]

能够熟练使用查询方式识别按键;

能够熟练使用复用引脚驱动数码管的显示;

能够CCITSTC单片机综合实验仪Keil编辑环境下编写和在线调试简易计算器程序。

2.2项目分析选用简易计算器设计项目,主要目的是通过该项目简要介绍键盘、数码管的驱动原理和编程方法,具体包括:GPIO口的配置、行列式键盘的识别、多位数码管的显示驱动、GPIO

口的复用方法和简易计算器的综合调试。简易计算器项目主要是设计两个子任务:行列式键盘扫描和多位数码管显示。通过这两

个子任务的整合设计实现简易计算器的加、减、乘、除功能。通过该项目的训练,使读者可以灵活运用键盘和数码管这两个常用输入和输出模块,同时进一步熟悉STC单片机的基本资源,为后续项目的学习奠定基础。

2.4支撑知识2.4.1行列式键盘1键盘模型及接口

键盘是由若干个按键组成的开关矩阵,它是嵌入式系统中最简单的数字量输入设备,操作员通过键盘输入数据或命令,实现简单的人-机通信。

(1)键盘模型

键盘的基本电路是一个接触开关,通、断两种状态分别表示0和1,微处理器可以容易地检测到开关的闭合。当开关打开时,提供逻辑“1”;当开关

闭合时,提供逻辑“0”。键盘接口1)独立方式。独立方式是指将每个独立按键按一对一的方式直接接到I/O输入线上,读键值时直接读I/O口,每一个键的状态通过读入键值来反映,所以也称这种方式为一维直读方式(按习惯称为独立式)。这种方式查键实现简单,但占用I/O资源较多,一般在键的数量较少时采用。

键盘接口2)矩阵方式。矩阵方式是用n条I/O线组成行输入口,m条I/O线组成列输出口,在

行列线的每一个交点上设置一个按键。读键值方法一般采用扫描方式,即输出口按位轮换输出低电平,再从输入口读入键信息,最后获得键码。这种方式占用I/O线较少,在实际应用系统中采用较多。

键盘的基本问题

为了能实现对键盘的编程,应该了解下面几个问题:第一,如何识别键盘上的按键?第二,如何区分按键是被真正地按下,还是抖动?第三,如何处理重键问题?了解这些问题有助于键盘编程。

(1)键盘识别

如何知道键盘上哪个键被按下就是键的识别问题。若键盘上闭合键的识别由专用硬件实现,称为编码键盘;而靠软件实现的称为未编码键盘。在这里,主要讨论未编码键盘的接口技术和键输入程序的设计。识别是否有键被按下,主要用查询法。而要识别键盘上哪个键被按下,主要有行扫描法。

(2)抖动问题

当手按下一个键时,会出现所按的键在闭合位置和断开位置之间跳几下才稳定到闭合状态的情况,当释放一个按键时也会出现类似的情况,这就是抖动问题。抖动持续的时间因操作者而异,一般为5~10ms之间,稳定闭合时间一般为十分之几秒至几秒,由操作者的按键动作所确定。在软件上,解决抖动的方法通常是延迟等待抖动的消失或多次识别判定。4×4行列式键盘驱动设计分析

行列式键盘扫描驱动的步骤:

1)判断有无键闭合。

使行线P3.0~P3.3都输出0,检测列线P3.4、P3.5、P4.2、P4.4是否全为1。如果有键被按下,就会有某一根列线变为0,从而使P3.4、P3.5、P4.2、P4.4不为全1;如果P3.4、P3.5、P4.2、P4.4为全1,说明无键闭合。

2)消除键抖动。

在检测到有键闭合后,需延时10~20ms,避开抖动阶段,然后再检测P3.4、P3.5、P4.2、P4.4是否为全1。如果为全1,作无键闭合处理,否则,则进一步检测闭合键键号。

3)确定闭合键键号。

如果有键按下,再逐行逐列地扫描,以检测出所按键的键号。先使行线P3.0~P3.3=0111,分别检测P3.4、P3.5、P4.2、P4.4。如果P3.4为0,则为1号键按下了;如果P3.5为0,则为2号键按下了。如果P3.4、P3.5、P4.2、P4.4都为1,说明P3.4、P3.5、P4.2、P4.4这一行上没有键被按下,再使P3.0~P3.3=1011,并逐列检查。这样依次地逐行逐列地扫描,直至找到闭合键为止。

键盘通用函数编程2.4.2数码管驱动4位数码管驱动设计分析

关于数码管的硬件接线,使用宏定义描述硬件接线,且每个接线单独宏定义,更具普适性,这样,若数码管SEG接在MCU的不同引脚,只需修改SEG的硬件接线宏定义即可。关于位选问题,设置静态变量bsel(初值为0x01)作为数码管片选端的位选信号,每隔10ms左右,循环左移1次,由于人眼的“视觉暂留”,可稳定地在2个4位数码管上稳定显示8个字节的数据。

2.5项目实施

通过行列式键盘扫描,在两个4位数码管上动态显示相应的键值和计算结果值。定义三个字符a、b、c作为操作数、被操作数以及结果,利用显示缓存来存放键盘输入的数值,主循环中不断调用显示函数及键盘扫描函数,确保稳定显示以及按键能得到及时响应。如果有键被按下,就将显示缓存现有的内容右移一位,将按键的键值填入显示缓存的最高位,同时在LED显示器上显示出来,当按下“+、-、"、/”任意符号键时,先将显示缓存中已输入的数值保存到字符a中作为被操作数,然后把后续的按键值再逐次放到显示缓存中,当按下“=”键时,再将显示缓存中已输入的数值保存到字符b中作为操作数,同时运算得出结果,并保存在字符c中,将c的数值显示在数码管上;当下“C”键时,表示清零。

2.6项目小结程序中,可利用显示缓存来存放输入的键值,主循环中应不断调用显示函数keycount()函数和segdisp(dbuf)函数,实现计算器功能,按键扫描函数和数码管显示函数均通过构建通用函数实现构建化编程。本实验通过IAP15F2K61S2与74HC138连接,对7

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论