第5章数字输入输出系统设计
本章习题
5-1为什么要进行逻辑电平变换,有哪些常用逻辑电平?变换的原则(什么情况下需要逻辑变换)是什么?
答:
1、不同逻辑电平之间如果不进行逻辑电平的变换,由于逻辑电平的不一致,使发送的0和1信息到达接收端无法正确识别0和1逻辑信息,即无法进行正确地相互交互,因此对于不同逻辑电平必须进行逻辑电平的转换方能连接。
2、常见逻辑电平转换的方法如下:
(1)限流电阻加钳位二极管方式进行同相逻辑电平转换接口
(2)用电阻与三极管构成的逻辑电平转换接口
(3)仅用两只电阻成的逻辑电平转换接口
(4)用专用逻辑电平转换芯片进行逻辑电平转换
(5)采用光电耦合器实现逻辑电平隔离转换
当需要转换电平的引脚比较多时,可以采用多路逻辑电平转换专用芯片来完成电平的转换,它的特点是转换电平连接简单,使用方便可靠。
嵌入式系统原理及应用(第三版)244
R1
10K
R2
2K
B G1
8050
输出
输入VDD
VCC第5章数字输入输出接口设计到隔离外部干扰脉冲对数据通道的影响,使系统能接收正确的数字信号。
主要隔离方法有:光耦隔离器件以及数字专用隔离器件进行隔离。
5-5为什么要进行数字输入输出接口的扩展?有哪些扩展手段?各自有何特点?
答:一个嵌入式应用系统,需要接各种外围接口或设备,而嵌入式处理器的数字输入输出接口对应的引脚是有限的,因此需要进行扩展。主要包括并行扩展和串行扩展两类。
并行扩展占用处理器引脚多,但速度快,串行扩展占用少量几个处理器引脚,效率偏低,但成本低。目前多用串行扩展技术进行数字输入输出的接口扩展。
5-6输入端为何要进行消抖动处理?如何进行处理?是不是所有嵌入式处理器外部GPIO 输入引脚都需要加硬件消抖电路?
答:输入端在接收来自含有机械触点对应信号时,由于机械接触点固有的特点,必然存在机械抖动,如果不进行消除抖动处理,将引起误触发,严重的造成人身伤害或财产损失。
消除抖动有两种基本手段,一种是硬件消除抖动的方法,另外一种是软件消除抖动的方法。硬件消抖需要外接硬件电路,如触发器,额外需要增加硬件成本,软件消抖通过延时方法避开抖动时间段,再检测输入端状态。
硬件消抖电路如下,采用与非门构建的触发器进行消抖处理。
软件消除抖动是采集某引脚是否为低或高,然后延时10ms~20ms左右,再检测该引脚是否仍然为低或高,如果是表明为有效信号,如果不是,则为干扰,可忽略。
由于机械抖动本身是客观存储的,因此有些处理器厂商把这种机械抖动的检测机制做到芯片内部,只要软件打开和使能消除抖动机制,并可以选择允许延时的时间,即可不用外面电路同样也不同软件处理即可自动完成消除抖动的目的。如新唐科技的MCU就具备这种功能。
5-7在嵌入式系统人机交互接口中,简述常用的接触式键盘有哪几种,特点是什么?常用非接触式按键有哪些?对于简单按键可通过引脚的高低电平获取按键的情况,对于矩阵键盘如何获取按键值?
答:接触式按键包括简易GPIO引脚式的按键,以及矩阵键盘两种。简易按键每只按键占用一个I/O引脚,但由于结构简单,成本低,在许多嵌入式应用系统中由于少量几个按键的应用场合被广泛采纳,矩阵键盘占用少量几个引脚但能构成强大的键盘阵列,如只用4个输入引脚和4个输出引脚即可构成16个按键的矩阵键盘,适用于需要按键比较多的场合。
对于矩阵键盘获取的按键值的方法通常采用行扫描法,即先输出第1行为0,其它行为1,从第1列开始查看有没有列被拉为0,如果有,则记录列的位置,如果没有再输出第2行为0,查有没有列为0,有记录列位置,没有再继续输出第3行,再查看和记录列的情况,最后输出第四行为0查看列的情况,没有继续,有则记录输出的行号和列号,即可得到矩阵键246
嵌入式系统原理及应用(第三版)
盘的具体编码值。不同编码值对应不同按键。
5-8说明利用一个GPIO引脚控制发光二极管闪烁的方法,绘制硬件接口电路。
答:对于MCU,GPIO引脚大都具备推挽输出功能,且一般能驱动电流达20mA以上电流负载,因此点亮简单的LED的发光二极管无需驱动,但需要限流,如图所示。
让发光管闪烁的方法是,如图中LD1闪烁,由可让GPIO引PD2脚先输出0,则电流通过R1流向LD1而发光,延时一段时间后,再让PD2输出1,使LD1上没有电流以流过而灭,延时一段时间,然后反复上述操作,即可实现让发光二极管闪烁的目的。
但一般应用程序通常采用定时器配合GPIO实现闪烁。让定时器定时一段时间如0.2秒或0.5秒,看闪烁时间的要求,当定时时间到时在定时中断服务程序中PD2引脚改变状态(原来1变为0,原来0变为1),这样在LD1上产生闪烁的感觉。
5-9对于LED数码管,有动态显示和静态显示两种方法,对于图5.38所示的动态LED 数码管显示电路以及图5.39所示的静态显示电路,说明让LED1~LED4稳定显示1~4(1,2,3,4)的方法步骤。
答:对于共阳动态LED,采用所有段管共用一个驱动器74HC245,位码分别由4个GPIO 引脚通过电阻和三极管构成的驱动电路分别控制,显示稳定的1,2,3,4的方法如下:(1)通过GPIO1~GPIO8送显示1的段码,然后让GPIO10输出0,通过Q1三极管让BITL1输出接近VCC,使最左边一位显示1,GPIO11=GPIO12=GPIO13=1让右边三位三极管Q2~Q4不得电。从而不显示信息。延时一段时间让眼睛能驻留一段时间。
(2)通过GPIO1~GPIO8送显示2的段码,然后让GPIO11输出0,通过Q2三极管让BITL2输出接近VCC,使左边第二位显示2,GPIO10=GPIO12=GPIO13=1让其它三位三极管Q1Q3~Q4不得电。从而不显示信息。延时一段时间让眼睛能驻留一段时间。
(3)通过GPIO1~GPIO8送显示3的段码,然后让GPIO12输出0,通过Q3三极管让BITL3输出接近VCC,让左边第三位显示3,GPIO10=GPIO11=GPIO13=1让其它三位三极管Q1Q2QQ4不得电。从而不显示信息。延时一段时间让眼睛能驻留一段时间。
(4)通过GPIO1~GPIO8送显示4的段码,然后让GPIO13输出0,通过Q4三极管让BITL4输出接近VCC,让最右边一位显示4,GPIO10=GPIO11=GPIO12=1让其它三位三极管Q1Q2Q3不得电。从而不显示信息。延时一段时间让眼睛能驻留一段时间。
(5)重复(1)到(4)这样就可以动态显示1,2,3,4第5章数字输入输出接口设计
对于图示静态显示器,U1/U2/U3/U4作为串行输入并行输出移位寄存器,分别将1,2,3,4的段码依次送到U1/U2/U3/U4,以稳定静态显示1,2,3,4。
(1)通过串行接口DA TA在CLK作用下CLK时钟,将4个8位段码(4,3,2,1的顺序)依次送到U1/U2/U3/U4
(2)在GPIO3(STORE)产生锁存正脉冲(先低后高再延时后变低)将数据锁存在U1~U4以送到4个LED数码管上。
5-10对于LCD液晶屏,通常有并行接口和串行接口与MCU连接,如何理解图5.41并行接口时序和图5.43串行接口时序,怎样按照该时序进行GPIO的操作实现LCD信息的显示。
答:1、工作在并行接口方式下,图示时序中可以利用11个GPIO引脚(GPIO引脚定义不同处理器不同,名称不一样,这里仅给一个序号)与LCD模块连接,假设GPIO1~GPIO8作为8位并行数据与LCD数据端相连接,GPIO9作为RS、GPIO10作为R/W、GPIO11作为E、按照图5.41所示的时序输出相应逻辑如下:
(1)对于发送指令到LCD屏,让GPIO9(RS)=0
(2)让GPIO10(R/W)=0,准备写操作
(3)让GPIO11(E)=1
(4)把要写入的命令字节通过GPIO1~GPIO8输出到LCD数据线上
(5)让GPIO11(E)=0
(6)让GPIO10(R/W)=1,将数据写入LCD屏相应寄存器,完成写命令操作。
248
嵌入式系统原理及应用(第三版)
对于写数据到LCD屏,则以上(1)改为让GPIO9(RS)=1,其它步骤同上。
2、在串行模式下,LCD模块与嵌入式处理器的连接更为简单,GPIO引脚更少,假设用于传输的主要引脚包括选择信号CS(GPIO1)、串行数据信号STD(GPIO2)和时钟信号SCLK (GPIO3)。按照图示时序操作LCD屏的步骤如下:
(1)GPIO1(CS)=0选择LCD屏
(2)GPIO2(SCLK)=0
(3)让串行数据通过GPIO3(SID)引脚输出第一位
(4)延时一段时间让数据稳定
(5)让GPIO3(SCLK)=1,产生完事时钟,把数据移入LCD串行接口
(6)把下一位数据从GPIO3引脚输出,重新(2),直到8位数据发送完毕,完成一个字节的数据发送。下载本文