第 9 章 键盘输入接口与状态机编程在前面的章节中,已经详细介绍了 AVR 单片机通用数字 I/O 口的特性以及应用于输出方式的基本使用方法,并给出了一些与中断、定时计数器相结合的输出控制应用和应用实例。本章将进一步讨论 AVR 通用 I/O 口用于按键和键盘输入接口,以及基于状态机的软件设计思想和实现。9.1通用 I/O 数字输入接口设计假如把一个单片机嵌入式系统比做一个人的话,那么单片机就相当于人的心脏和大脑,而输入接口就好似人的感官系统,用于猎取外部世界的变化、状态等各种信息,并把这些信息输送进人的大脑。嵌入式系统的人机交互通道、前向通道、数据交换和通信通道的各种功能都是由单片机的输入接口及相应的外围接口电路实现的。对于一个电子系统来讲,外部现实世界各种类型和形态的变化和状态都需要一个变换器将其转换成电信号,而且这个电信号有时还需要经过处理,使其成为能被 MCU 容易识别和处理的数字逻辑信号,这是因为单片机常用的输入接口通常都是数字接口(A/D 接口,模拟比较器除外,他们属于模拟输入口,而是在芯片内部将模拟信号转换成数字信号的)。上述的所为“变换器”和“转换处理”从专业的角度讲就是“传感器技术”和“信号调理电路”。因此,一个单片机嵌入式系统的设计和开发人员要具备这些专业知识和技能,不仅要熟悉一些常用传感器的特性和应用,以及相关的信号调理、转换、接口电路,还要跟踪国际上新技术的进展,将新型传感器器件和新型电路元器件应用于系统设计中。采纳新型传感器器件和新型电路元器件,可以大大提高嵌入式系统设计的效率,简化系统的硬件结构和软件设计难度,缩短开发周期,提高系统的性能和可靠型。9.1.1 I/O 输入接口硬件设计要点根据系统外围电路输入的电信号形式,可以把输入信号分为以下几种形式:(1) 模拟信号和数字信号。传感器将某个外部参数(如温度、转速)的变化转换成电信号(电压或电流)。假如传感器输出电信号的幅度变化特征代表了外部参数的变化,如电压的升高下降(电流增大减小)表示温度高低的变化,那么这个传感器就是模拟传感器,它产生是模拟信号。由于MCU 是数字化的,因此模拟信号要转换成数字信号才能由 MCU 处理。这个转换电路称为摸数转换“A/D”。A/D 变换是嵌入式系统重要的外围接口电路之一,用途广泛。在系统硬件设计中可以选取专用的 A/D 变换芯片作为模拟传感器和单片机之间的接口,也可以选取片内带 A/D 转换功能的单片机...