第八章 单片机接口的 c 语言编程

27
第第第 第第第第第第 C 第第第第

Upload: josh

Post on 19-Jan-2016

121 views

Category:

Documents


5 download

DESCRIPTION

第八章 单片机接口的 C 语言编程. 单片机应用系统常常需要配接键盘、显示器、模 / 数转换器、数 / 模转换器等外设,其中,接口技术就是解决计算机与外设之间相互联系的问题。. 一 LED 数码管. 常用的 LED 显示器有 LED 状态显示器(俗称发光二极管)、 LED 七段显示器(俗称数码管)和 LED 十六段显示器。发光二极管可显示两种状态,用于系统状态显示;数码管用于数字显示; LED 十六段显示器用于字符显示。. 1. 多位静态显示接口应用 - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: 第八章  单片机接口的 C 语言编程

第八章 单片机接口的 C 语言编程

Page 2: 第八章  单片机接口的 C 语言编程

单片机应用系统常常需要配接键盘、显示器、模 /数转换器、数 / 模转换器等外设,其中,接口技术就是解决计算机与外设之间相互联系的问题。

Page 3: 第八章  单片机接口的 C 语言编程

一 LED 数码管 常用的 LED 显示器有 LED 状态显示器(俗称发光

二极管)、 LED 七段显示器(俗称数码管)和 LED 十六段显示器。发光二极管可显示两种状态,用于系统状态显示;数码管用于数字显示; LED十六段显示器用于字符显示。

Page 4: 第八章  单片机接口的 C 语言编程

1. 多位静态显示接口应用 例 1 是数码管静态显示方式的一种典型应用,其

硬件及软件都非常简单,但其只能显示一位,如要用 P1 口显示多位,则每位数码管都应有各自的锁存、译码与驱动器,还需有相应的位选通电路。位选通电路输出位码。

Page 5: 第八章  单片机接口的 C 语言编程

2 .动态显示接口 1) 动态显示概念 动态显示是一位一位地轮流点亮各位数码管,这种逐位

点亮显示器的方式称为位扫描。通常,各位数码管的段选线相应并联在一起,由一个 8 位的 I/O 口控制;各位的位选线(公共阴极或阳极)由另外的 I/O 口线控制。动态方式显示时,各数码管分时轮流选通,要使其稳定显示,必须采用扫描方式,即在某一时刻只选通一位数码管,并送出相应的段码,在另一时刻选通另一位数码管,并送出相应的段码。依此规律循环,即可使各位数码管显示将要显示的字符。虽然这些字符是在不同的时刻分别显示,但由于人眼存在视觉暂留效应,只要每位显示间隔足够短就可以给人以同时显示的感觉。

Page 6: 第八章  单片机接口的 C 语言编程

采用动态显示方式比较节省 I/O 口,硬件电路也较静态显示方式简单,但其亮度不如静态显示方式,而且在显示位数较多时, CPU 要依次扫描,占用 CPU 较多的时间。

用 8051 系列单片机构建数码管动态显示系统时,常采用 8155 可编程 I/O 扩展接口,其典型应用如图所示。

图中,数码管采用共阴极 LED , 8155 的 A 口线经过 8路驱动电路后接至数码管的各段。当 A 口线输出“ 1” 时,驱动数码管发光。 8155 的 C 口线经过 6 路驱动电路后接至数码管的公共端。当 C 口线输出“ 0” 时,选通相应位的数码管发光。

Page 7: 第八章  单片机接口的 C 语言编程
Page 8: 第八章  单片机接口的 C 语言编程

二 键盘键盘工作原理1 .按键的分类 按键按照结构原理可分为两类,一类是触点式

开关按键,如机械式开关、导电橡胶式开关等;另一类是无触点式开关按键,如电气式按键,磁感应按键等。前者造价低,后者寿命长。目前,微机系统中最常见的是触点式开关按键。

Page 9: 第八章  单片机接口的 C 语言编程

按键按照接口原理可分为编码键盘与非编码键盘两类,这两类键盘的主要区别是识别键符及给出相应键码的方法。编码键盘主要是用硬件来实现对键的识别,非编码键盘主要是由软件来实现键盘的定义与识别。

全编码键盘能够由硬件逻辑自动提供与键对应的编码,此外,一般还具有去抖动和多键、窜键保护电路。这种键盘使用方便,但需要较多的硬件,价格较贵,一般的单片机应用系统较少采用。非编码键盘只简单地提供行和列的矩阵,其它工作均由软件完成。由于其经济实用,较多地应用于单片机系统中。下面将重点介绍非编码键盘接口。

Page 10: 第八章  单片机接口的 C 语言编程

2.键输入原理

在单片机应用系统中,除了复位按键有专门的复位电路及专一的复位功能外,其它按键都是以开关状态来设置控制功能或输入数据的。当所设置的功能键或数字键按下时,计算机应用系统应完成该按键所设定的功能,键信息输入是与软件结构密切相关的过程。

对于一组键或一个键盘,总有一个接口电路与 CPU 相连。 CPU 可以采用查询或中断方式了解有无将键输入,并检查是哪一个键按下,将该键号送入累加器 ACC ,然后通过跳转指令转入执行该键的功能程序,执行完后再返回主程序。

Page 11: 第八章  单片机接口的 C 语言编程

二 编制键盘程序一个完善的键盘控制程序应具备以下功能: (1) 检测有无按键按下,并采取硬件或软件措施,消除键盘按键机械触点抖动的影响。

(2) 有可靠的逻辑处理办法。每次只处理一个按键,其间对任何按键的操作对系统不产生影响,且无论一次按键时间有多长,系统仅执行一次按键功能程序。

(3) 准确输出按键值(或键号),以满足跳转指令要求。

Page 12: 第八章  单片机接口的 C 语言编程
Page 13: 第八章  单片机接口的 C 语言编程

将每个按键的一端接到单片机的 I/O 口,另一端接地,这是最简单、常用的一种方法。

例:实现键控流水灯功能。本程序实现按键控制的流水灯功能。 4个键定义如下:

P3.2 :开始,按此键则灯开始流动(有上而下) P3.3 :停止,按此键则停止流动,所有灯为暗。 P3.4 :上,按此键则灯由上向下流动。 P3.5:下,按此键则灯由下向上流动。

Page 14: 第八章  单片机接口的 C 语言编程

三 模 / 数转换器 在单片机应用中,常常需要测量温度、湿度、流量、速度、液位、压力等多种模拟量,并通过输入接口传送给单片机CPU ,需要输出模拟量去控制被控对象或用于显示。模拟量信号是连续变化的电压、电流信号,与数字量有本质上的区别,模拟量信号需要放大、滤波、线性化、信号变换等一系列的电路处理,把检测到的模拟量电压、电流信息变换成 0-5V的电压信号,通过 A/V转换电路转换成相应的数字量才能输入单片机处理。同样,单片机输出的数字量控制值,也往往要通过 D/A 转换电路变换成模拟量才能去控制被控对象或用于数据的显示。因此,模拟量的输入输出接口技术是单片机应用中的一个重要环节。

Page 15: 第八章  单片机接口的 C 语言编程

1 模拟量输入输出接口技术 在单片机应用中,需要测量温度,湿度,流量,速度,液体,压力等大量模拟量,需要输出模拟量去控制被控对象或进行显示,模拟量的输入输出也是单片机的接口是一个重要的环节。模拟量信号是连续变化的电压,电流信号,与数字量有本质一的区别,需要对模拟量信号时放大,滤波,线性化,信号变换等电路处理,把测量的模拟量电压,电流信号变换成 0-5V的电压信号,通过 A/D 转换电路,转换成相应的数字量才能输入单片机处理。同样,单片机的控制值,测量数据也往往要通过 D/A 转换电路变换成模拟量才能进行控制或显示。因此,模拟量的输入输出是单片机应用中的一个重要环节。

Page 16: 第八章  单片机接口的 C 语言编程

MC14433与 8031 单片机的接口设计 由于MC14433的 A/D 转换结果是动态分时输出

的 BCD 码。 Q0~Q3和 DS1~DS4可以通过并行口 P1 或通过扩展 I/O 电路与其相连。下面介绍的电路是将MC14433与 P1 口相连的电路 见图。

Page 17: 第八章  单片机接口的 C 语言编程
Page 18: 第八章  单片机接口的 C 语言编程

该电路采用中断方式管理MC14433的操作。由于引脚 E0C 与 DU连接在一起,所以MC14433能自动连续转换。 E0C 经与非门接外中断 INT1 端,当 EOC 发出中断申请,转入中断服务程序处理转换结果

Page 19: 第八章  单片机接口的 C 语言编程

四 I2C总线 I2C 总线是一双线串行总线,它提供一小型网络系

统,为总线上的电路共享公共的总线。总线上的器件有单片机、 LCD 驱动器以及上 E2PROM 器等等。自从菲利普公司提出 I2C总线规范以来, I2C 器件得到了广泛的应用。 I2C 器件的应用大大减少了电路间连线,减小了电路板尺寸,降低了硬件成本,并提高了系统可靠性。

Page 20: 第八章  单片机接口的 C 语言编程

介绍 I2C 总线规范

对于面向 8 位的数字控制应用譬如那些要求用微控制器的要建立一些设计标准:

一个完整的系统通常由至少一个微控制器和其他外围器件例如存储器和 I/O 扩展

器组成。 系统中不同器件的连接成本必须最小。 执行控制功能的系统不要求高速的数据传输。 总的效益由选择的器件和互连总线结构的种类决定 产生一个满足这些标准的系统需要一个串行的总线结构尽

管串行总线没有并行总线的数据吞吐能力,但它们只要很少的配线和 IC 连接管脚然而总线不仅仅是互连的线还包含系统通讯的所有格式和过程。

Page 21: 第八章  单片机接口的 C 语言编程

I2C 总线的概念 I2C 总线支持任何 IC 生产过程 NMOS CMOS 双

极性两线――串行数据SDA 和串行时钟SCL 线在连接到总线的器件间传递信息每个器件都有一个唯一的地址识别无论是微控制器 LCD 驱动器存储器或键盘接口而且都可以作为一个发送器或接收器由器件的功能决定很明显 LCD

驱动器只是一个接收器而存储器则既可以接收又可以发送数据除了发送器和接收器外器件在执行数据传输时也可以被看作是主机或从机。 主机是初始化总线的数据传输并产生允许传输的时钟信号的器件此时任何被寻址的器件都被认为是从机

Page 22: 第八章  单片机接口的 C 语言编程

I2C总线时序定义: 起始位: SCL= 1 时,在 SDA上有下降延 停止位: SCL= 1 时,在 SDA上有上升延 *主器件发停止信号给从器件,作用在于使从器件处为准备状态 (或是已知的状态 ) 从应答: SDA= 0 * 写数据时 ,应答的器件在第九个时钟周期将 SDA 线拉低,表示已收到一个 8 位数据 ,并表示可继续接收。主机在向从机写一字节后接收从应答,再进行后续操作 (一般不考虑从应答位的具体值,仅在应答检测时用于判断从器件是否完成其内部写周期 ) 主应答: SDA= 0(用 )

Page 23: 第八章  单片机接口的 C 语言编程

读数据时 ,主机每接收从机一个字节数据 (不是最后一个 ),返回主应答 ACK(SDA=0) 是最后一个字节时返回无需应答NO_ACK( SDA= 1 ) 当从机工作于读模式时,在向主机发送一个 8 位数据后释放 SDA 线并监视一个应答信号,一旦接收到主机的应答信号,从机继续发送数据;如主器件没有发送应答信号,从机停止传送数据并等待一个停止信号,主器件必须发一个停止信号给从机使其进入备用电源模式并使器件处于已知的状态

应答检测:采用应答检测读命令测试从机是否 <页写 >结束 (通过从应答来识别 ) *当从器件完成内部写周期后将发送一个应答信号 (从应答 )给主器件,以便可以继续进行下一次读操作

Page 24: 第八章  单片机接口的 C 语言编程

起始和停止条件 在 I2C 总线中唯一出现的是被定义为起始 S 和停止 P 条件 的情况。

其中一种情况是在 SCL 线是高电平时 SDA 线从高电平向低电平切换这个情况表示起始条件;当 SCL 是高电平时 SDA 线由低电平向高电平切换表示停止条件;起始和停止条件一般由主机产生总线在起始条件后被认为处于忙的状态在停止条件的某段时间后总线被认为再次处于空闲状态

如果产生重复起始 Sr 条件而不产生停止条件总线会一直处于忙的状态此时的起始条件 S和重复起始 Sr 条件在功能上是一样的。因此在本文档的剩余部分符号 S 将作为一个通用的术语既表示起始条件又表示重复起始条件除非有特别声明的 Sr如果连接到总线的器件合并了必要的接口硬件那么用它们检测起始和停止条件十分简便但是没有这种接口的微控制器在每个时钟周期至少要采样 SDA 线两次来判别有没有发生电平切换

Page 25: 第八章  单片机接口的 C 语言编程

EEPROM芯片介绍 目前 ,通用存储器芯片多为 EEPTOM,其常用的协议

主要有两线串行连接协议 (ⅡC)和三线串行连接协议。

带Ⅱ C总线接口的 EEPROM有许多型号 ,其中 AT24Cxx系列使用十分普遍 , 产品包括 AT2401/02/04/08/16 等 ,其容量 (字节数×页 )分别为 128×8/256×8/512×8/1024×8/2048×8 ,适用于 2~5V的低电压操作,具有低功耗和高可靠性等优点。

Page 26: 第八章  单片机接口的 C 语言编程

EEPTOM读 /写操作 1. AT24C04 结构与应用简述 AT24C04由输入缓冲器和 EEPROM阵列组成。 由于 EEPROM的半导体工艺特性写入时间为 5~ 10 ms,如果从外部直接写入 EEPROM,则每写一个字节都要等候 5~10ms,成批数据写入时就要等候更长时间。具有 SRAM输入缓冲器的 EEPROM器件,其写入操作变成对 SRAM缓冲器的装载。装载完后启动一个自动写入逻辑将缓冲器中的全部数据一次写入 EEPROM阵

Page 27: 第八章  单片机接口的 C 语言编程

对缓冲器的输人称为页写,缓冲器的容量 称为页写字节数。 AT24C04的页写字节数为 8 ,占用最低 3位地址。当写入不超过页写字节数时,对 EEPROM器件的写入操作与对 SRAM的写入操作相同;当超过页写字节数时,应等候 5~10 ms后再启动一次写操作。 由于 EEPROM器件缓冲区容量较小 (只占据最低 3位 ),且不具备溢出进位检测功能,所以,从非零地址写入 8 个字节数或从零地址写入超过 8 个字节数会形成地址翻卷,导致写入出错。