微处理器程序设计技术.ppt

上传人:w****2 文档编号:16589792 上传时间:2020-10-16 格式:PPT 页数:86 大小:1.57MB
返回 下载 相关 举报
微处理器程序设计技术.ppt_第1页
第1页 / 共86页
微处理器程序设计技术.ppt_第2页
第2页 / 共86页
微处理器程序设计技术.ppt_第3页
第3页 / 共86页
点击查看更多>>
资源描述
键盘输入接口与状态机编程 摘自 1、 通用 I/O数字输入接口设计 假如把一个单片机嵌入式系统比做一个人 的话 , 那么单片机就相当于人的心脏和大 脑 , 而输入接口就好似人的感官系统 , 用 于获取外部世界的变化 、 状态等各种信息 , 并把这些信息输送进人的大脑 。 嵌入式系 统的人机交互通道 、 前向通道 、 数据交换 和通信通道的各种功能都是由单片机的输 入接口及相应的外围接口电路实现的 。 对于一个电子系统来讲,外部现实世界各种 类型和形态的变化和状态都需要一个变换器 将其转换成电信号,而且这个电信号有时还 需要经过处理,使其成为能被 MCU容易识别 和处理的数字逻辑信号,这是因为单片机常 用的输入接口通常都是数字接口( A/D接口, 模拟比较器除外,他们属于模拟输入口,而 是在芯片内部将模拟信号转换成数字信号的) 上述的 “ 变换器 ” 和 “ 转换处理 ” 从专业的 角度讲就是 “ 传感器技术 ” 和 “ 信号调理电 路 ” 。 因此 , 一个单片机嵌入式系统的设计 和开发人员要具备这些专业知识和技能 , 不 仅要熟悉一些常用传感器的特性和应用 , 以 及相关的信号调理 、 转换 、 接口电路 , 还要 跟踪国际上新技术的发展 , 将新型传感器器 件和新型电路元器件应用于系统设计中 。 采用新型传感器器件和新型电路元器件 , 可 以大大提高嵌入式系统设计的效率 , 简化系 统的硬件结构和软件设计难度 , 缩短开发周 期 , 提高系统的性能和可靠性 。 根据系统外围电路输入的电信号形式,可以 把输入信号分为以下几种形式: 1.1.1 I/O输入接口硬件设计要点 (1) 模拟信号和数字信号。 传感器将某个外部参数(如温度、转速) 的变化转换成电信号。如果传感器输出电信 号的幅度变化特征代表了外部参数的变化, 如电压的升高下降(电流增大减小)表示温 度高低的变化,那么这个传感器就是模拟传 感器,它产生是模拟信号。由于 MCU是数字 化的,因此模拟信号要转换成数字信号才能 由 MCU处理。转换电路称为模数转换 “ A/D”。 A/D变换是嵌入式系统重要的外围接口电 路之一,用途广泛。在系统硬件设计中可以 选取专用的 A/D变换芯片作为模拟传感器和 单片机之间的接口,也可以选取片内带 A/D 转换功能的单片机以简化硬件电路的设计。 (2) 电压信号和电流信号 单片机 I/O接口的逻辑是数字电平逻辑,既 以电压的高和低电平作为逻辑 “ 1”和 “ 0”, 因此进入单片机的信号要求是电压信号。一 些传感器的输出是电流信号,甚至是微小的 电流,那么在进入单片机前还需要将电流信 号放大、并把电流转换成电压的信号调理电 路。 在一些长远距离的应用中,考虑到电压信号 的抗干扰能力差,长线衰减等因素,往往在 一端把电压信号变成电流信号,在长线中传 送电流,而在另一端再把电流信号再转换成 电压信号,这样大大提高了信号传输的可靠 性,如 RS-485通信等。另外,为了防止外 部强电信号对嵌入式系统的冲击而使用的光 电隔离技术,也采用电流 /电压变换方法。 (3) 单次信号和连续信号 间隔时间较长单次产生的脉冲信号,以及较 长时间保持电平不变化的信号称为单次信号。 常见的单次信号一般是由按键、限位开关等 人为动作或机械器件产生的信号。而连续信 号一般指连续的脉冲信号,如计数脉冲信号, 数据通信传输等。 单次信号要注意信号的纯净和抗干扰,如消 除按键的抖动,外部的干扰等。在图中,外 部状态开关与系统之间采用电流传输方式, 在系统入口串接磁阻线圈。当外部开关闭合 后,回路中有大电流通过,光电器件导通输 出 “ 0”; 而在开关断开后,回路中无电流流通,光电 器件不会导通输出 “ 1”。空间的电磁信号会 在传输线上产生高频的干扰信号,磁阻线圈 则对高频信号起到阻碍作用,使电流不能突 变。 另外空间电磁干扰往往能产生较高的干扰电 压,但不会产生大的干扰电流( “状态 1”-“状态 2”,最后返回到 “ 状态 0”的。并且在整个过程中,按键的 输出信号仅在 “ 状态 1”时给出了唯一的一 次确认按键闭合的信号 “ 1”(其它状态均 输出 “ 0”)。 所以上面状态机所表示的按键系统,不仅克 服了按键抖动的问题,同时也确保在一次按 键整个的过程中,系统只输出一次按键闭合 信号( “ 1”)。换句话讲,不管按键被按下 的时间保持多长,在这个按键的整个过程中 都只给出了一次确认的输出,因此在这个设 计中,按键没有 “ 连发 ” 功能,它是一个最 简单和基本的按键。 一旦有了正确的状态转换图,就可以根据状 态转换图编写软件了。在软件中实现状态机 的方法和程序结构通常使用多分支结构 ( IF-ELSEIF-ELSE、 CASE等)实现。下 面基于状态机方式编写的简单按键接口函数 read_key()。 该简单按键接口函数 read_key()在整个系 统程序中应每隔 10ms调用执行一次,每次 执行时将先读取与按键连接的 I/O的电平到 变量 key_press中,然后进入用 switch结构 构成的状态机。 switch结构中的 case语句分别实现了 3个不 同状态的处理判别过程,在每个状态中将根 据状态的不同,以及 key_press的值(状态 机的输入)确定输出值( key_return), 和确定下一次按键的状态值( key_state)。 函数 read_key()的返回参数提供上层程序使 用。返回值为 0时,表示按键无动作;而返回 1表示有一次按键闭合动作,需要进入按键处 理程序做相应的键处理。 在函数 read_key()中定义了 3个局部变量, 其中 key_press和 key_return为一般普通 的局部变量,每次函数执行时, key_press 中保存着刚检测的按键值。 key_return为 函数的返回值,总是先初始化为 0,只有在 状态 1中重新置 1,作为表示按键确认的标志 返回。 变量 key_state非常重要,它保存着按键的 状态值,该变量的值在函数调用结束后不能 消失,必须保留原值,因此在程序中定义为 “ 局部静态变量 ” ,用 static声明。如果使 用的语言环境不支持 static类型的局部变量, 则应将 key_state定义为全局变量。 单按键的实时时钟秒校时设置设计(一) 1)硬件电路 在前面的章节中曾几次给出了简易实时时钟 的设计例子,但都没有加入按键,不能实现 时钟校时的设置。下面结合上面的按键接口 的设计,实现对时钟的校时设置。在该例子 中,只是实现了秒单元的校时设置,其重点 是让读者体会和实践按键输入接口和处理的 实现。 时钟系统的硬件电路在 I/O口 PD7上连接一 个按键 K1,该按键的功能为秒加 1,既每按 下一次,秒加 1,到 60秒时分加 1,秒回到 为 0。 2) 软件设计 以下是采用一个简单按键实现秒单元的校 时设置系统的程序。程序中,给出了采用一 个简单按键实现时钟校时(仅秒位)设置功 能的基本设计,时钟本身的计时显示方法用 秒闪烁表示(每秒种 LED数码管的小数点段 闪烁一次)。 T/C0的工作于 CTC方式,每 2ms产生中断。 在 T/CO中断服务中增加了 10ms到的标志 变量 key_stime_ok,作为按键状态机的时 间触发序列信号。在主程序中,每隔 10ms 调用 read_key()按键接口程序,当函数返 回值为 1时,说明产生了一次按键操作过程, 秒位加 1,然后进行时间调整。 三、基于状态机分析的简单按键设计(二) 在上面的例子中,对秒的校时设置操作还是 不方便,例如,如果将秒从 00设置为 59, 需要按键 59次。如果将按键设计成一个具有 “ 连发 ” 功能的系统,就能很好的解决这个 问题。 现在考虑这样的一个按键系统:当按键按下 后在 1秒内释放了,此时秒计时加 1,而当按 键按下后在 1秒内没有释放,那么以后每隔 0.5秒,秒计时就会自动加上 10,直到按键 释放为止。这样的按键系统就具备了一种 “ 连发 ” 功能,其中时间也成为系统的一个 输入参数了。 具有 “ 连发 ” 功能的按键系统状态转换 图 在图中,按键系统输出 “ 1”表示按键在 1秒 内释放了,输出 “ 2”表示按键产生一次 “ 连 发 ” 的效果。下面是基于状态机方式编写的 带 “ 连发 ” 功能按键接口函数 read_key_n()。 函数 read_key_n()与前面的 read_key() 结构非常类似,设计为每隔 10ms被调用执 行一次,在构成状态机的 switch结构中使用 了局部静态变量 key_time作为按键时间计 数器,记录按键按下的时间值。 函数 read_key_n()的返回参数提供上层程 序使用。返回值为 0时,表示按键无动作; 返回 1表示一次按键的 “ 单发 ” ( 1s)动 作;返回 2表示一次按键的 “ 连发 ” 动作, 提供按键处理程序做相应的键处理。 单按键的实时时钟秒校时设置设计(二) 主程序中,每隔 10ms调用 read_key_n() 按键接口程序,并根据其返回值对秒位的时 间进行加 1或加 10的处理。
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 图纸专区 > 课件教案


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!