1 / 54

第 10 章 基于单片机的 嵌入式接口设计

第 10 章 基于单片机的 嵌入式接口设计. 10.1 键盘接口设计 10.2 数码管( LED )显示器 10.3 液晶显示( LCD )接口设计 10.4 模数( ADC )、数模( DAC )接口设计 10.5 单片机常用总线接口设计及实例. 10.1 键盘接口设计. 键盘接口电路是嵌入式系统设计非常重要的一环,是人机交互的重要界面。键盘能实现向单片机输入命令等功能. 10.1.1 键盘的工作原理.

Download Presentation

第 10 章 基于单片机的 嵌入式接口设计

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 第10章基于单片机的嵌入式接口设计 10.1 键盘接口设计 10.2 数码管(LED)显示器 10.3 液晶显示(LCD)接口设计 10.4 模数(ADC)、数模(DAC)接口设计 10.5 单片机常用总线接口设计及实例

  2. 10.1 键盘接口设计 键盘接口电路是嵌入式系统设计非常重要的一环,是人机交互的重要界面。键盘能实现向单片机输入命令等功能

  3. 10.1.1 键盘的工作原理 键盘由一组常开的按键开关组成。每个按键都被赋予一个代码,称为键码。常用的键盘按译码方法分为两种类型:编码式键盘和非编码式键盘。由于编码键盘硬件电路复杂,目前小型的嵌入式系统常采用非编码键盘。对非编码式键盘按连接方式分为独立式和矩阵式两种

  4. 按键抖动 目前,按键绝大部分是利用了机械触点的合、断作用。机械触点由于机械弹性作用的影响在闭合和断开瞬间均有抖动过程,而使电压信号出现抖动,如图10-1所示。抖动时间的长短与开关的机械特性有关,一般为5ms~10 ms 在扫描键盘过程中,必须想办法消除按键抖动,否则将会引起按键被误读。消除抖动一般有硬件和软件两种方法

  5. 硬件去抖动 RC去抖动电路

  6. Vcc Vcc 硬件去抖动 双稳电路去抖动

  7. 软件去抖动 如果按键较多,则常用软件方法去抖动,即检测到有键按下时,则调用一个5ms~10ms的延迟子程序,然后再次判断按键是否被按下,若此时判断键盘仍被按下,则认为键盘真正被按下,若此时判断键盘没有被按下,说明为键盘抖动或干扰

  8. 10.1.2 独立式按键

  9. 10.1.3 矩阵式按键 矩阵式键盘适用于按键数量较多的场合,它由行线和列线组成,按键位于行列交叉点上,由于51单片机输入输出口(P0~P3)都是8根引脚,一般情况下,单片机键盘接口电路都是利用其中一个输入输出口,故大多数情况下都是按照4×4构成一个16个按键的矩阵键盘电路。

  10. 矩阵式键盘矩阵式按键表 以4×4矩阵键盘为例详细说明矩阵式键盘的设计方法和技巧,在实际应用中,4×4键盘主要由数字0~9和功能键组成。这里给出一个比较常用的键盘排列方式,如下表所示。 按键表

  11. 矩阵式键盘接口电路

  12. 如何判断按键的是否被按下 采用非编码键盘,51单片机的CPU必须对所有按键进行监视,一旦发现按键按下,CPU应通过程序加以识别,并转入相应键的处理程序,实现该键功能。 矩阵键盘按键的识别方法:让所有列线均置为低电平,检查各行电平是否有变化,如果有变化,则说明有键被按下,如果没有变化,则说明无键被按下

  13. 如何判断具体那个键被按下 识别具体按键的方法时:逐列置低电平,其余各列置高电平,检查各行电平的变化,如果某行电平由高电平变为低电平,则可以确定此行此列交叉点的按键被按下。

  14. 键盘的编码

  15. 获得行信号 JugeKeyPressed: CLR A MOV P1,#0FFH ANL P1,#00001111B MOV A,P1 ORL A,#11110000B CPL A RET ;A为0,表明没有按键

  16. 检测有无按键 JugeKeyBoard: LCALL JugeKeyPressed JZ JugeKeyEnd LCALL Delay10ms LCALL JugeKeyPressed JZ JugeKeyEnd SETB KeyPressed;按键标志位 JugeKeyEnd: RET

  17. 按键识别,获得键盘码 JugeWhichKey: MOV ScanTimes,#4 MOV A,#11101111B ScanLoop: ORL P1,#11111111B ANL P1,A MOV WhichCol, A; WhichCol高四位放列信号 MOV A,P1 MOV InputKey, A; InputKey低四位放行信号,高四位保留 ;锁存器内容,还是原来的列信号 ORL A,#11110000B CPL A JZ ScanNextRow LJMP FindKey ScanNextRow:MOV A, WhichCol RL A MOV WhichCol, A DJNZ ScanTimes,ScanLoop CLR KeyPressed LJMP JugeKeyOver

  18. 10.2 数码管(LED)显示器 (a) 数码管外形图(b)共阴数码管 (c)共阳数码管

  19. 静态显示电路 图10-6 四位静态显示电路

  20. 动态显示电路 图10-7 四位动态显示的电路

  21. 10.2.2 LED显示驱动技术 LED的驱动问题其实是一个非常重要的问题,如果驱动器驱动能力差,显示亮度就降低。而且动态和静态显示方式对驱动电路要求是不一样的。 如果是静态显示,不需要考虑LED驱动,一般情况下只要将单片机I/O口与数码管的段代码连接,如图10-6所示电路即可。 但是动态显示就需要考虑LED驱动,因为动态显示是由段和位选信号共同配合完成的,因此必须同时考虑段和位的驱动能力,并且段的驱动能力决定位的驱动能力。 常用的驱动电路有两种,采用集成电路芯片如SN7407或采用简单的三极管放大电路

  22. 三极管放大驱动电路

  23. 非门驱动电路

  24. 10.3 液晶显示(LCD)接口设计 • 10.3.1 点阵式液晶显示器的基本原理 • 10.3.2 液晶显示器引脚 • 10.3.3 时序波形 • 10.3.4 显示模块控制字 • 10.3.5 单片机和液晶模块硬件接口设计 • 10.3.6 单片机和液晶模块的软件设计

  25. 10.3.1 点阵式液晶显示器的基本原理 图10-11 “单”的点阵显示软件界面

  26. 10.3.2 液晶显示器引脚 图10-12 液晶显示器的外围引脚图

  27. 10.3.3 时序波形 图10-13 写操作时序

  28. 10.3.3 时序波形 图10-14 读操作时序

  29. 10.3.4 显示模块控制字 显示开/关指令 当DB0=1时,LCD显示RAM中的内容;DB0=0时关闭显示 显示起始行(ROW)设置指令 页(PAGE)设置指令

  30. 10.3.4 显示模块控制字 列地址(Y Address)设置指令 读状态指令 该指令用来查询液晶显示模块内部控制器的状态,各参量含义如下: BUSY:1-内部在工作 0-正常状态 ON/OFF:1-显示关闭 0-显示打开 RESET: 1-复位状态 0-正常状态 在BUSY和RESET状态时,除读状态指令外,其它指令均不对液晶显示模块产生作用。在对液晶显示模块操作之前要查询BUSY状态,以确定是否可以对液晶显示模块进行操作

  31. 10.3.4 显示模块控制字 写数据指令 读数据指令 读、写数据指令每执行一次读、写操作,列地址就自动增一。必须注意的是,进行读操作之前,必须有一次空操作,紧接着再读才会读出所要读的单元中的数据

  32. 10.3.5 单片机和液晶模块硬件接口设计 通过单片机对LCD显示器的显示RAM进行写操作就可以在液晶模块上显示相应的字符,单片机对液晶显示可以采用两种不同的访问方式,直接访问和间接访问两种,针对不同的访问方式有不同电路设计和软件设计,现分别介绍

  33. 直接访问方式 图10-15 直接访问方式

  34. 间接访问方式 图10-16 间接访问方式

  35. 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与单片机的接口技术

  36. 10.4.1 ADC0809芯片结构 图10-17ADC0809的引脚图

  37. 10.4.2ADC0809的工作原理 图10-18ADC0809工作时序图

  38. 10.4.3A/D转换器的接口设计实例 由于ADC0809片内无时钟信号,时钟信号由CLOCK端送入,最佳的时钟频率为640KHZ,在ADC0809与单片机的接口中,时钟信号通常由单片机的ALE信号4分频得到,由于单片机的ALE是晶振频率的6分频,若单片机的晶振频率为12MHz,则ALE的4分频为500KHz左右,满足ADC0809的CLOCK端的频率要求,一般采用两级D触发器来完成,如使用芯片74LS74实现四分频电路。 ADC0809与单片机的接口电路有三种形式:查询方式、中断方式和等待延时方式。这三种方式各有千秋,用户可以根据实际需要来选择

  39. 查询方式和中断方式电路 图10-19ADC0809与单片机地连接图

  40. 等待延时方式 图10-20 等待延时方式A/D转换原理图

  41. 10.4.4D/A转换器DAC0832结构 图10-21DAC0832的引脚图

  42. 10.4.5 D/A转换器DAC0832与单片机的接口技术 常用DAC0832与单片机有三种基本的接口方法:即直通方式、单级缓冲器连接方式和双级缓冲器连接方式

  43. 直通方式 图10-23 直通方式接口电路

  44. 单缓冲器连接方式 图10-24 DAC0832单级缓冲器方式

  45. 双级缓冲器连接方式 图10-25 双级缓冲器连接方式

  46. 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的写操作

  47. 10.5.1 概述 在单片机应用中,单片机中的数据需要与外部器件进行通信,即单片机对外部器件进行读写操作。对外部器件读写操作一定要按照一定的数据传输接口规范来进行,数据传输接口是数据传输的硬件基础,也是数据通信、计算机网络的重要组成部分。目前的数据通信方式主要有并行和串行两种方式,并行通信基本上是按照三总线(地址总线、数据总线、控制总线)方式去实现,串行方式目前有很多种,主要有232串行接口、SPI接口、I2C总线接口、USB接口等。 MCS-51单片机片内集成了4个并行I/O口和一个串口,随着电子技术的快速发展,新的数据传输接口标准和协议不断涌现,51单片机片内并没有集成这些接口,而面临的现实问题是必须完成与这些新的接口芯片进行数据传输。为了解决这个问题必须对单片机的数据传输接口进行扩展。

  48. 10.5.2 I2C总线的基本特征 I2C总线是由Philips公司开发的一种简单、双向、二线制、同步串行总线。它只需两根信号线(串行数据线和串行时钟线)来实现连接于总线上的器件之间的通信。由于I2C总线连线少、结构简单。因此被广泛应用于消费类电子产品、通信产品、仪器仪表及工业控制系统中 图10-26I2C总线结构图

  49. I2C总线特性 ◆ 仅需两根信号线:串行数据线SDA 和串行时钟线SCL。 ◆ 每个连接到总线的器件都对应一个特定的地址,采用软件寻址方式,同时总线上的每个器件确定主从关系。主控制器可用作主控发送器或主控接收器。 ◆ I2C总线是一种真正的多主机总线,含有错误检测和总线仲裁功能,可以防止2个或更多主控制器同时启动数据传输而造成数据被破坏。 ◆ 串行8 位双向数据传输的数据传送速率可由标准I2C 模式下的100Kbit/s,快速模式下的400Kbit/s,直至高速模式可高达3.4Mbit/s。 ◆ 片上的滤波器可滤除总线数据线上的毛刺,保证数据可靠传输。 ◆ 连接到同一总线上的IC 数目只受到总线的最大电容400PF限制

  50. 10.5.3 I2C总线的数据传输格式 图10-29I2C的四个阶段

More Related