Upload
igor-jacobson
View
191
Download
16
Embed Size (px)
DESCRIPTION
第 10 章 基于单片机的 嵌入式接口设计. 10.1 键盘接口设计 10.2 数码管( LED )显示器 10.3 液晶显示( LCD )接口设计 10.4 模数( ADC )、数模( DAC )接口设计 10.5 单片机常用总线接口设计及实例. 10.1 键盘接口设计. 键盘接口电路是嵌入式系统设计非常重要的一环,是人机交互的重要界面。键盘能实现向单片机输入命令等功能. 10.1.1 键盘的工作原理. - PowerPoint PPT Presentation
Citation preview
第 10 章 基于单片机的嵌入式接口设计
10.1 键盘接口设计10.2 数码管( LED )显示器10.3 液晶显示( LCD )接口设计10.4 模数( ADC )、数模( DAC )接口设
计10.5 单片机常用总线接口设计及实例
10.1.1 键盘的工作原理 键盘由一组常开的按键开关组成。每个按键都被赋予一个代码,称为键码。常用的键盘按译码方法分为两种类型:编码式键盘和非编码式键盘。由于编码键盘硬件电路复杂,目前小型的嵌入式系统常采用非编码键盘。对非编码式键盘按连接方式分为独立式和矩阵式两种
按键抖动 目前,按键绝大部分是利用了机械触点的合、断作用。机械触点由于机械弹性作用的影响在闭合和断开瞬间均有抖动过程,而使电压信号出现抖动,如图 10-1 所示。抖动时间的长短与开关的机械特性有关,一般为 5ms~10 ms
在扫描键盘过程中,必须想办法消除按键抖动,否则将会引起按键被误读。消除抖动一般有硬件和软件两种方法
软件去抖动 如果按键较多,则常用软件方法去抖动,即检测到有键按下时,则调用一个 5ms~10ms 的延迟子程序,然后再次判断按键是否被按下,若此时判断键盘仍被按下,则认为键盘真正被按下,若此时判断键盘没有被按下,说明为键盘抖动或干扰
10.1.3 矩阵式按键 矩阵式键盘适用于按键数量较多的场合,它由行线和列线组成,按键位于行列交叉点上,由于 51 单片机输入输出口( P0 ~ P3 )都是 8 根引脚,一般情况下,单片机键盘接口电路都是利用其中一个输入输出口,故大多数情况下都是按照 4×4 构成一个 16 个按键的矩阵键盘电路。
矩阵式键盘矩阵式按键表 以 4×4 矩阵键盘为例详细说明矩阵式键盘的设计方法和技巧,在实际应用中, 4×4 键盘主要由数字 0 ~ 9 和功能键组成。这里给出一个比较常用的键盘排列方式,如下表所示。
按键表
如何判断按键的是否被按下
采用非编码键盘, 51 单片机的 CPU 必须对所有按键进行监视,一旦发现按键按下, CPU 应通过程序加以识别,并转入相应键的处理程序,实现该键功能。 矩阵键盘按键的识别方法:让所有列线均置为低电平,检查各行电平是否有变化,如果有变化,则说明有键被按下,如果没有变化,则说明无键被按下
获得行信号JugeKeyPressed:
CLR AMOV P1,#0FFH
ANL P1,#00001111B MOV A,P1 ORL A,#11110000B CPL A RET ;A 为 0, 表明没有按键
检测有无按键JugeKeyBoard:
LCALL JugeKeyPressedJZ JugeKeyEnd
LCALL Delay10ms LCALL JugeKeyPressed JZ JugeKeyEnd SETB KeyPressed; 按键标志位JugeKeyEnd: RET
按键识别 , 获得键盘码JugeWhichKey:
MOV ScanTimes,#4MOV A,#11101111B
ScanLoop: ORL P1,#11111111BANL P1,AMOV WhichCol, A; WhichCol 高四位放列信号MOV A,P1MOV InputKey, A; InputKey 低四位放行信号 , 高四位保
留 ;锁存器内容 ,还是原来的列信号
ORL A,#11110000BCPL AJZ ScanNextRowLJMP FindKey
ScanNextRow:MOV A, WhichColRL AMOV WhichCol, ADJNZ ScanTimes,ScanLoopCLR KeyPressedLJMP JugeKeyOver
10.2.2 LED 显示驱动技术 LED 的驱动问题其实是一个非常重要的问题,如果驱动器驱动能力差,显示亮度就降低。而且动态和静态显示方式对驱动电路要求是不一样的。 如果是静态显示,不需要考虑 LED驱动,一般情况下只要将单片机 I/O 口与数码管的段代码连接,如图 10-6 所示电路即可。 但是动态显示就需要考虑 LED驱动,因为动态显示是由段和位选信号共同配合完成的,因此必须同时考虑段和位的驱动能力,并且段的驱动能力决定位的驱动能力。 常用的驱动电路有两种,采用集成电路芯片如 SN7407或采用简单的三极管放大电路
三极管放大驱动电路
1 2 3 4 5 6
A
B
C
D
654321
D
C
B
A
Title
Number RevisionSize
B
Date: 2-Jan-2006 Sheet of File: E:\ÕÅËÉ·¢±íÎÄÕÂ\Êé¸å\ǶÈëʽÉè¼ÆÊé¸å\ÕÅËÉÊé¸å\example.ddbDrawn By:
a
bf
c
g
de
dp
a
bf
c
g
de
dp
a
bf
c
g
de
dp
a
bf
c
g
de
dpCR1CR2CR3CR4
abcdefgdp
SQ29015
SQ19015
SQ39015
SQ49015
4.7K
4.7K4.7K
4.7K
CR
1
CR
2
CR
3
CR
4
CR
1C
R2
CR
3
CR
4
P10
P11
P12
P13
P14
P15
P16
P17
P20
P21P22
P23
非门驱动电路
1 2 3 4 5 6
A
B
C
D
654321
D
C
B
A
Title
Number RevisionSize
B
Date: 2-Jan-2006 Sheet of File: E:\ÕÅËÉ·¢±íÎÄÕÂ\Êé¸å\ǶÈëʽÉè¼ÆÊé¸å\ÕÅËÉÊé¸å\example.ddbDrawn By:
a
bf
c
g
de
dp
a
bf
c
g
de
dp
a
bf
c
g
de
dp
a
bf
c
g
de
dpCR1CR2CR3CR4
abcdefgdp
P1
0
P11
P1
2
P1
3
P1
4
P1
5
P1
6
P1
7
P2
0
P2
1
P2
2
P2
3
10.3 液晶显示( LCD )接口设计 10.3.1 点阵式液晶显示器的基本原理10.3.2 液晶显示器引脚10.3.3 时序波形10.3.4 显示模块控制字10.3.5 单片机和液晶模块硬件接口设计10.3.6 单片机和液晶模块的软件设计
10.3.4 显示模块控制字列地址( Y Address )设置指令
读状态指令
该指令用来查询液晶显示模块内部控制器的状态,各参量含义如下:BUSY : 1-内部在工作 0- 正常状态ON/OFF : 1-显示关闭 0-显示打开RESET : 1- 复位状态 0- 正常状态 在 BUSY 和 RESET状态时,除读状态指令外,其它指令均不对液晶显示模块产生作用。在对液晶显示模块操作之前要查询 BUSY状态,以确定是否可以对液晶显示模块进行操作
10.3.5 单片机和液晶模块硬件接口设计
通过单片机对 LCD显示器的显示 RAM 进行写操作就可以在液晶模块上显示相应的字符,单片机对液晶显示可以采用两种不同的访问方式,直接访问和间接访问两种,针对不同的访问方式有不同电路设计和软件设计,现分别介绍
10.4 模数( ADC )、数模( DAC )接口设计
10.4.1 ADC0809芯片结构
10.4.2 ADC0809 的工作原理
10.4.3 A/D 转换器的接口设计实例
10.4.4 D/A 转换器 DAC0832结构
10.4.5 D/A 转换器 DAC0832 与单片机的接口技术
10.4.3 A/D 转换器的接口设计实例 由于 ADC0809 片内无时钟信号,时钟信号由 CLOCK端送入,最佳的时钟频率为 640KHZ ,在 ADC0809 与单片机的接口中,时钟信号通常由单片机的 ALE 信号 4分频得到,由于单片机的 ALE 是晶振频率的 6 分频,若单片机的晶振频率为 12MHz ,则 ALE 的 4 分频为 500KHz左右,满足 ADC0809 的 CLOCK端的频率要求,一般采用两级 D 触发器来完成,如使用芯片 74LS74 实现四分频电路。 ADC0809 与单片机的接口电路有三种形式:查询方式、中断方式和等待延时方式。这三种方式各有千秋,用户可以根据实际需要来选择
查询方式和中断方式电路ALE
START
Vref0-
Vref0+
或非门
或非门 OE
WR
RD
P2.3
VCC
CLOCK四分频ALE
D0~D7
A、B、C
P0
P2.0~2.2
IN0
IN1
IN2
IN3
IN4
IN5
IN6
IN7
非门P3.3 EOC
图 10-19 ADC0809 与单片机地连接图
等待延时方式ALE
START
Vref0-
Vref0+
或非门
或非门 OE
WR
RD
P2.3
VCC
CLOCK四分频ALE
D0~D7
A、B、C
P0
P2.0~2.2
IN0
IN1
IN2
IN3
IN4
IN5
IN6
IN7
图 10-20 等待延时方式 A/D 转换原理图
10.5 单片机常用总线接口设计及实例
10.5.1 概述
10.5.2 I2C总线的基本特征
10.5.3 I2C总线的数据传输格式
10.5.4 单片机模拟 I2C总线
10.5.5 I2C总线接口设计实例
10.5.6 单片机对 24LC256 的写操作
10.5.1 概述 在单片机应用中,单片机中的数据需要与外部器件进行通信,即单片机对外部器件进行读写操作。对外部器件读写操作一定要按照一定的数据传输接口规范来进行,数据传输接口是数据传输的硬件基础,也是数据通信、计算机网络的重要组成部分。目前的数据通信方式主要有并行和串行两种方式,并行通信基本上是按照三总线(地址总线、数据总线、控制总线)方式去实现,串行方式目前有很多种,主要有 232串行接口、SPI 接口、 I2C总线接口、 USB 接口等。 MCS-51 单片机片内集成了 4 个并行 I/O 口和一个串口,随着电子技术的快速发展,新的数据传输接口标准和协议不断涌现, 51 单片机片内并没有集成这些接口,而面临的现实问题是必须完成与这些新的接口芯片进行数据传输。为了解决这个问题必须对单片机的数据传输接口进行扩展。
10.5.2 I2C 总线的基本特征
AD、DA MCU LCD EEPROM
SCL
SDA
图 10-26 I2C 总线结构图
I2C总线是由 Philips公司开发的一种简单、双向、二线制、同步串行总线。它只需两根信号线(串行数据线和串行时钟线)来实现连接于总线上的器件之间的通信。由于 I2C总线连线少、结构简单。因此被广泛应用于消费类电子产品、通信产品、仪器仪表及工业控制系统中
◆ 仅需两根信号线:串行数据线 SDA 和串行时钟线 SCL 。◆ 每个连接到总线的器件都对应一个特定的地址,采用软件寻址方式,同时总线上的每个器件确定主从关系。主控制器可用作主控发送器或主控接收器。
◆ I2C总线是一种真正的多主机总线,含有错误检测和总线仲裁功能 , 可以防止 2 个或更多主控制器同时启动数据传输而造成数据被破坏。◆ 串行 8 位双向数据传输的数据传送速率可由标准 I2C 模式下的 100Kbit/s ,快速模式下的 400Kbit/s ,直至高速模式可高达 3.4Mbit/s 。◆ 片上的滤波器可滤除总线数据线上的毛刺,保证数据可靠传输。◆ 连接到同一总线上的 IC 数目只受到总线的最大电容 400PF限制
I2C 总线特性
10.5.5 I2C 总线接口设计实例 I2C总线实际上已经成为一个国际标准 , 在超过 100 种不同的 IC 上实现,而且得到超过 50家公司的许可。如今利用 I2C总线接口的芯片很多,例如时钟芯片、 EEPROM芯片, IC卡等。对于所有采用 I2C总线接口的芯片其使用基本类似,基本思路都是对具有 I2C总线的芯片进行读写操作。本节以 24C256芯片为例,详细介绍 51 单片机如何实现对 I2C总线接口芯片的读写操作。