单片机第5章S12输入-输出端口模块及其应用实例_第1页
单片机第5章S12输入-输出端口模块及其应用实例_第2页
单片机第5章S12输入-输出端口模块及其应用实例_第3页
单片机第5章S12输入-输出端口模块及其应用实例_第4页
单片机第5章S12输入-输出端口模块及其应用实例_第5页
已阅读5页,还剩47页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

基于HCS12的嵌入式系统设计

第5章S12输入/输出端口模块及其应用实例合肥工业大学机械与汽车工程学院滕勤2014.4第5章S12输入/输出端口模块及其应用实例本章内容

5.1并行I/O接口简介

5.2输入/输出端口寄存器及设置

5.3输入/输出端口基础应用实例

5.4智能车系统中输入/输出端口的应用基于HCS12的嵌入式系统设计》第5章S12输入/输出端口模块及其应用实例5.1并行I/O接口简介【I/O接口(Input/OutputInterface)】MCU与外界进行交互的重要通道。【常见I/O接口】人机交互接口,如开关、键盘、指示灯、显示器(LED、LCD)等,或者外接其它输入、输出设备。I/O接口电路的主要作用:(1)协调高速CPU与低速外设之间的速度匹配(2)提供输入、输出过程中的状态信号基于HCS12的嵌入式系统设计》第5章S12输入/输出端口模块及其应用实例5.1并行I/O接口简介【并行I/O接口组成】【端口】接口电路中用以完成信息传送、并可通过地址读/写的寄存器。【并行I/O接口】由若干个端口(Port)组成:一个接口在物理上有若干个端口,即不同的寄存器,规定这些端口分别是数据口、状态口和命令口。

一个接口分配有若干个地址,即每一个端口分配一个地址。CPU将不同的信息写到不同的端口地址,也从不同的端口地址读取不同的信息。

基于HCS12的嵌入式系统设计》第5章S12输入/输出端口模块及其应用实例5.1并行I/O接口简介MC9S12DG128单片机的I/O接口包括PORTA、PORTB、PORTE、PORTK、PORTT、PORTS、PORTM、PORTP、PORTH、PORTJ以及PORTAD端口模块。PORTA、PORTB、PORTE和PORTK属于复用扩展总线接口(MEBI),当MC9S12DG128在扩展方式下工作时,作为总线信号;在单片模式下工作时,PORTA、PORTB、PORTE和PORTK可用作通用I/O口。基于HCS12的嵌入式系统设计》第5章S12输入/输出端口模块及其应用实例5.1并行I/O接口简介PORTT、PORTS、PORTM、PORTP、PORTH和PORTJ属于端口集成模块PIM,与片内其他功能模块的引脚复用。每个功能模块按照优先级的高低使用引脚。

基于HCS12的嵌入式系统设计》第5章S12输入/输出端口模块及其应用实例5.1并行I/O接口简介【GPIO简化功能逻辑图】仅考虑两个寄存器:数据寄存器PORT和数据方向寄存器DDR。RD_DDR和WR_DDR分别控制各自的三态双向门闩电路,该电路具有双向传输和高阻三态功能(图中只给出了单向传输和门控功能),可分别读取PORT引脚状态、数据锁存器状态和方向寄存器DDR的状态。基于HCS12的嵌入式系统设计》第5章S12输入/输出端口模块及其应用实例5.1并行I/O接口简介9S12单片机的每个I/O接口均内置拉电阻,可以通过编程设置是否使用上拉、下拉功能及其极性。【拉电阻的主要作用】当电路驱动器关闭时,保持线路(节点)为固定电平,提高抗干扰能力。标准端口的最小特性:输入/输出选择两个可选择驱动强度的5V输出驱动5V数字或模拟输入可选择上拉或下拉器件的输入选择特性:线或连接的开漏输出虚假信号滤波的中断输入基于HCS12的嵌入式系统设计》第5章S12输入/输出端口模块及其应用实例5.1并行I/O接口简介通用I/O口可以设置输入/输出、驱动能力、内部上拉/下拉电阻、中断输入等功能。用户可以通过设置DDR、I/O、RDR、PER、PPS和IE等寄存器,选择I/O口的工作方式。其中:★

方向寄存器DDR用于设定I/O口的数据方向。★

I/O寄存器用于设定端口输出电平的高低。★

驱动控制寄存器RDR用于选择I/O的输出驱动能力。★当I/O口为输入时,上拉/下拉使能寄存器PER用于选择内部上拉或下拉功能。★上拉/下拉选择寄存器PPS有两个用途:(1)当中断允许位置位时,用于选择上升沿触发或下降沿触发中断。(2)当使能内部上拉/下拉器件时,用于选择上拉或下拉。★中断使能寄存器IE用于允许或禁止I/O口上的中断。基于HCS12的嵌入式系统设计》第5章S12输入/输出端口模块及其应用实例引脚配置汇总

基于HCS12的嵌入式系统设计》第5章S12输入/输出端口模块及其应用实例5.2输入/输出端口寄存器及设置5.2.1PORTT、PORTS、PORTM、PORTP、PORTH和PORTJ基于HCS12的嵌入式系统设计》第5章S12输入/输出端口模块及其应用实例5.2.1PORTT、PORTS、PORTM、PORTP、PORTH和PORTJ基于HCS12的嵌入式系统设计》第5章S12输入/输出端口模块及其应用实例5.2.1PORTT、PORTS、PORTM、PORTP、PORTH和PORTJ基于HCS12的嵌入式系统设计》第5章S12输入/输出端口模块及其应用实例5.2输入/输出端口寄存器及设置5.2.1PORTT、PORTS、PORTM、PORTP、PORTH和PORTJ1.数据方向寄存器DDRx【作用】决定对应的引脚为输出还是输入,任何时候可读写。DDRx[7:0]—端口x数据方向位1=对应引脚设置为输出。0=对应引脚设置为输入。复位后,数据方向寄存器值为0x00,引脚默认为输入。基于HCS12的嵌入式系统设计》第5章S12输入/输出端口模块及其应用实例5.2输入/输出端口寄存器及设置5.2.1PORTT、PORTS、PORTM、PORTP、PORTH和PORTJ1.数据方向寄存器DDRx如果外设模块控制引脚,数据方向寄存器的内容被忽略。基于HCS12的嵌入式系统设计》第5章S12输入/输出端口模块及其应用实例5.2.1PORTT、PORTS、PORTM、PORTP、PORTH和PORTJ2.I/O寄存器PTx任何时候可读写。如果数据方向寄存器DDRx对应位的数值为“1”(输出)时,I/O寄存器的值与引脚电平一致:PTx=1,对应的引脚输出为高电平。PTx=0,对应的引脚输出为低电平。读取该寄存器返回I/O寄存器的内容。如果数据方向寄存器DDRx对应位的数值为“0”,即将对应引脚定义为输入时:读取该寄存器返回引脚值。写该寄存器不改变引脚状态,但当DDRx对应位的数值变为“1”时,寄存器中的数值将反映在引脚上。基于HCS12的嵌入式系统设计》第5章S12输入/输出端口模块及其应用实例5.2.1PORTT、PORTS、PORTM、PORTP、PORTH和PORTJ3.输入寄存器PTIx输入寄存器是一个只读寄存器。任何时候可读,写无效。如果数据方向寄存器DDRx对应位的数值为“0”,即将对应引脚定义为输入时,读取该寄存器总是返回引脚值。☻读出的值为“0”,表示对应引脚上为低电平;☻读出的值为“1”,表示对应引脚上为高电平。如果数据方向寄存器DDRx对应位的数值为“1”,即将对应引脚定义为输出时,利用读该寄存器可以监视对应引脚是否过载或短路。如果过载或短路,则该寄存器对应位为1,否则,为0。基于HCS12的嵌入式系统设计》第5章S12输入/输出端口模块及其应用实例5.2输入/输出端口寄存器及设置5.2.1PORTT、PORTS、PORTM、PORTP、PORTH和PORTJ4.驱动控制寄存器RDRx【作用】定义每个输出端口引脚的驱动能力,任何时候可读写。RDRx[7:0]—端口x降功率驱动控制位1=对应引脚输出驱动能力为正常值的1/6。0=对应引脚为输出全功率驱动。如果端口用作输入,该位被忽略。复位后,RDRx寄存器值为$00,引脚默认以满功率驱动输出。基于HCS12的嵌入式系统设计》第5章S12输入/输出端口模块及其应用实例5.2.1PORTT、PORTS、PORTM、PORTP、PORTH和PORTJ5.上拉/下拉使能寄存器PERx【作用】如果端口用作输入或为“线或”模式时,该寄存器设置是否激活内置上拉/下拉器件。任何时候可读写。PERx[7:0]—端口上拉/下拉器件使能位1=对应引脚允许内置上拉或下拉器件。0=对应引脚禁用内置上拉/下拉器件。如果端口用作输出,该位无效。复位后,PERx=$00,禁止上拉/下拉功能。基于HCS12的嵌入式系统设计》第5章S12输入/输出端口模块及其应用实例5.2.1PORTT、PORTS、PORTM、PORTP、PORTH和PORTJ【补充】上/下拉电阻的作用当TTL电路驱动COMS电路时,由于TTL电路输出的高电平低于COMS电路的高电平阈值,需要在TTL的输出端接上拉电阻,以提高输出高电平的值。OC(集电极开路)或OD(漏极开路)门电路必须加上拉电阻,才能使用。为加大输出引脚的驱动能力,有的单片机管脚上也常使用上拉电阻。管脚悬空容易受外界的电磁干扰。不用的管脚不能悬空,一般接上拉电阻,提高总线的抗电磁干扰能力,防止静电造成COMS芯片损坏。芯片的管脚加上拉电阻来提高输出电平,从而提高芯片输入信号的噪声容限,增强抗干扰能力。长线传输中,电阻不匹配容易引起反射波干扰,加下拉电阻进行电阻匹配,有效抑制反射波干扰。基于HCS12的嵌入式系统设计》第5章S12输入/输出端口模块及其应用实例5.2.1PORTT、PORTS、PORTM、PORTP、PORTH和PORTJ6.上拉/下拉选择寄存器PPSx【作用】选择上拉或下拉器件是否与引脚相连。任何时候可读写。PPSx[7:0]—端口上拉/下拉选择位1=如果端口用作输入、且PERx寄存器相关位设置为允许时,对应的端口引脚与下拉器件相连。0=如果端口用作输入、且PERx寄存器相关位设置为允许时,对应的端口引脚与上拉器件相连。基于HCS12的嵌入式系统设计》第5章S12输入/输出端口模块及其应用实例5.2输入/输出端口寄存器及设置5.2.1PORTT、PORTS、PORTM、PORTP、PORTH和PORTJ6.上拉/下拉选择寄存器PPSx【注意】PORTP、PORTH和PORTJ三个端口具有中断功能,当这三个端口允许中断时,上拉/下拉选择寄存器还具有第二个作用,用于选择引脚上触发中断的形式。PPSx[7:0]—触发中断选择位1=当某个引脚使能中断时,上升沿触发中断。0=当某个引脚使能中断时,下降沿触发中断。基于HCS12的嵌入式系统设计》第5章S12输入/输出端口模块及其应用实例5.2.1PORTT、PORTS、PORTM、PORTP、PORTH和PORTJ7.端口线或模式寄存器WOMx端口M和端口S各具有一个线或模式寄存器,用来将输出引脚设置成“线或”方式。任何时候可读写。如果使能,输出驱动仅仅低电平有效,逻辑“1”电平不驱动。也适用于SPI和SCI输出,允许几个串行模块的多点连接。该位对用作输入的引脚没有影响。WOMx[7:0]—线或模式选择位1=输出缓冲器工作在开漏输出(open-drainoutput)状态。0=输出缓冲器工作在推挽输出(push-pulloutput)状态。基于HCS12的嵌入式系统设计》第5章S12输入/输出端口模块及其应用实例【复习】单片机开漏输出和推挽输出的区别驱动能力不同推挽输出(1)两个参数相同的MOSFET分别受两互补信号的控制,一个管子导通时另一个截止。(2)输出电阻小,导通损耗小,效率高,能够驱动大的负载。单片机管脚可以直接驱动发光二极管、蜂鸣器、甚至更小阻抗的负载。(3)可以输出高、低电平,连接数字器件。输出既可以向负载灌电流,也可以从负载抽取电流。开漏输出(1)漏极开路,只能输出低电平,需接上拉电阻才能得到高电平状态。(2)适合于吸收型弱电流驱动,接上拉电阻后吸收电流的能力比输出电流的能力强。基于HCS12的嵌入式系统设计》第5章S12输入/输出端口模块及其应用实例5.2.1PORTT、PORTS、PORTM、PORTP、PORTH和PORTJ8.中断使能寄存器PIExPORTP、PORTH和PORTJ三个端口具有中断功能,且各有一个中断使能寄存器,允许或禁止相应端口对有效边沿的中断。任何时候可读写。PIEx[7:0]—中断使能位1=允许中断。0=禁止中断(中断被屏蔽)。复位后,中断使能寄存器值为$00,所有端口中断关闭。基于HCS12的嵌入式系统设计》第5章S12输入/输出端口模块及其应用实例5.2.1PORTT、PORTS、PORTM、PORTP、PORTH和PORTJ9.中断标志寄存器PIFxPORTP、PORTH和PORTJ三个端口各有一个中断标志寄存器PIFx(x=P、H、J)。基于PPSx寄存器设置的有效边沿,当相应引脚上出现上升沿或下降沿时,中断标志寄存器中的对应位被置位。任何时候可读写PIFx寄存器。为了清除中断标志,需要向该寄存器中的相应位写“1”。写“0”无效。PIFx[7:0]—中断标志位1=相应引脚上出现有效边沿(如果相应的使能位置位,将产生中断)。0=相应引脚上未出现有效边沿。基于HCS12的嵌入式系统设计》第5章S12输入/输出端口模块及其应用实例5.2输入/输出端口寄存器及设置5.2.1PORTT、PORTS、PORTM、PORTP、PORTH和PORTJPORTP、PORTH和PORTJ三个端口的中断向量地址及相关标志位、控制位。基于HCS12的嵌入式系统设计》第5章S12输入/输出端口模块及其应用实例5.2输入/输出端口寄存器及设置5.2.2PORTA、PORTB、PORTE和PORTK基于HCS12的嵌入式系统设计》第5章S12输入/输出端口模块及其应用实例5.2.2PORTA、PORTB、PORTE和PORTK1.数据方向寄存器DDRx【作用】决定端口引脚为输出还是输入。DDRx[7-0]—数据方向位1=设置相应的I/O引脚为输出。0=设置相应的I/O引脚为输入。DDRx各位的数值影响相应PORTx寄存器读取的数据源。如果DDRx寄存器某位为“0”(输入),读取的是缓冲的引脚输入状态;如果DDRx寄存器某位为“1”(输出),读取的是相应端口数据寄存器对应位的状态。复位后,数据方向寄存器的值为0x00,引脚默认为输入。【注意】端口E是一个特例,其最低两位只能为输入口,端口E的数据方向寄存器DDRE最低两位是只读位,读这两位始终返回“0”。基于HCS12的嵌入式系统设计》第5章S12输入/输出端口模块及其应用实例5.2.2PORTA、PORTB、PORTE和PORTK2.I/O寄存器PORTx

I/O寄存器中8位对应每个端口中的相应引脚,当PORTx寄存器处于内存分配表中时,任何时候可读写。如果某端口的引脚被定义为输出,写入I/O寄存器中的数值会从对应引脚输出;如果某端口的引脚被定义为输入,读取I/O寄存器获得对应的引脚电平。为了确保读到PORTx引脚的当前值,写DDRx寄存器后至少等待一个周期,再读PORTx寄存器。【注意】端口E是一个特例,其最低两位只能为输入,端口E的I/O寄存器PORTE最低两位是只读位。基于HCS12的嵌入式系统设计》第5章S12输入/输出端口模块及其应用实例5.2.2PORTA、PORTB、PORTE和PORTK3.上拉电阻控制寄存器PUCRPORTA、PORTB、PORTE和PORTK都有内置上拉电阻,共用一个控制寄存器PUCR。【作用】选择端口引脚的上拉电阻,第7、4、1和0位分别对应端口K、E、B和A。当PUCR寄存器处于内存分配表中时,任何时候可读写。上拉根据每个端口来分配,适用于当前配置为输入的相应端口的任何引脚。当相应引脚为输出时,这些位无效(上拉设置不起作用)。单片机复位后,端口K和端口E的上拉电阻使能,端口B和端口A的上拉电阻禁止。在扩展和外设模式下,PUCR寄存器不在片内映射区内。基于HCS12的嵌入式系统设计》第5章S12输入/输出端口模块及其应用实例5.2.2PORTA、PORTB、PORTE和PORTK3.上拉电阻控制寄存器PUCRPUPKE—端口K上拉使能位1=端口K输入引脚上拉允许。0=端口K输入引脚上拉禁止。PUPEE—端口E上拉使能位1=端口E输入引脚7,4-0上拉允许。0=端口E输入引脚7,4-0上拉禁止。PUPBE—端口B上拉使能位1=端口B所有输入引脚上拉允许。0=端口B上拉禁止。PUPAE—端口A上拉使能位1=端口A所有输入引脚上拉允许。0=端口A上拉禁止。基于HCS12的嵌入式系统设计》第5章S12输入/输出端口模块及其应用实例5.2.2PORTA、PORTB、PORTE和PORTK4.驱动控制寄存器RDRIVPORTA、PORTB、PORTE和PORTK都可以设置端口输出驱动能力,共用一个控制寄存器RDRIV。【作用】选择相关端口引脚的降功率驱动,第7、4、1和0位分别对应端口K、E、B和A。当RDRIV寄存器处于内存分配表中时,任何时候可读写。如果某个控制位为“1”,对应端口输出驱动能力降低;如果某个控制位为“0”,对应端口为正常驱动输出方式。在扩展和外设模式下,RDRIV寄存器不在片内映射区内。基于HCS12的嵌入式系统设计》第5章S12输入/输出端口模块及其应用实例5.2.2PORTA、PORTB、PORTE和PORTK4.驱动控制寄存器RDRIVRDPK-端口K降功率驱动控制位1=允许所有端口K输出引脚低功耗驱动。0=允许所有端口K输出引脚全功率驱动。RDPE-端口E降功率驱动控制位1=允许所有端口E输出引脚低功耗驱动。0=允许所有端口E输出引脚全功率驱动。RDPB-端口B降功率驱动控制位1=允许所有端口B输出引脚低功耗驱动。0=允许所有端口B输出引脚全功率驱动。RDPA-端口A降功率驱动控制位1=允许所有端口A输出引脚低功耗驱动。0=允许所有端口A输出引脚全功率驱动。基于HCS12的嵌入式系统设计》第5章S12输入/输出端口模块及其应用实例5.3输入/输出端口基础应用实例

5.3.1输出设备LED控制实例PORTB连接8只LED,编程实现明灯流水操作。点亮LED灯,并使蜂鸣器发声。基于HCS12的嵌入式系统设计》第5章S12输入/输出端口模块及其应用实例5.3输入/输出端口基础应用实例5.3.2输入设备拨码开关读取实例使用PORTA读取8位拨码开关状态。根据拨位开关的状态,点亮或熄灭对应的LED灯。基于HCS12的嵌入式系统设计》第5章S12输入/输出端口模块及其应用实例5.4智能车系统中输入/输出端口的应用5.4.1键盘接口设计键盘多由多个按键组成,排列成阵列。当无键按下时,行和列线之间不相连,若第N行第M列的键被按下,则第N行与第M列的线被接通。如果在列线上加上信号,根据行线的状态,便可得知是否有键按下。如果在列线上逐行加上一个扫描信号,就可以判断按键的位置。基于HCS12的嵌入式系统设计》第5章S12输入/输出端口模块及其应用实例5.4.1键盘接口设计用PORTA扩展的4×4键盘:低4位作为行线,高4位作为列线。将端口A的低4位设置为输入、高4位设置为输出(即DDRA=0xF0)。使PORTA的高4位逐列输出低电平,并逐行读取PORTA的低4位,将高4位的输出状态与读取的低4位的状态相“与”,然后查询RAM中的表格便可判断被按下键的位置。【键盘扫描方法】逐行/逐列扫描法反转法【去抖动方法】硬件法——采用斯密特触发器软件法——利用软件延时基于HCS12的嵌入式系统设计》第5章S12输入/输出端口模块及其应用实例5.4.1键盘接口设计【硬件去抖动处理】利用两级带斯密特触发电路的反相器。【软件去抖动处理】当判断有键按下后,软件延时20ms,再次扫描确认。基于HCS12的嵌入式系统设计》第5章S12输入/输出端口模块及其应用实例5.4智能车系统中输入/输出端口的应用5.4.1键盘接口设计基于HCS12的嵌入式系统设计》第5章S12输入/输出端口模块及其应用实例5.4.1键盘接口设计采用数码管显示驱动及键盘扫描管理芯片ZLG7289B扩展4×4键盘。【芯片特点】可直接驱动8位共阴式数码管(或64只独立LED)。可扫描管理多达64只按键。内部含有译码器,可直接接收BCD码或16进制码,并具有两种译码方式。具有多种控制指令,如消隐、闪烁、左移、右移、段寻址等。采用SPI串行总线与微控制器接口。利用片选信号,ZLG7289B可以并接在一起使用,实现多于8位的显示或多于64只按键的应用。

基于HCS12的嵌入式系统设计》第5章S12输入/输出端口模块及其应用实例5.4.1键盘接口设计通过IRQ中断来检测是否有按键被按下。基于HCS12的嵌入式系统设计》第5章S12输入/输出端口模块及其应用实例5.4.2LED显示接口设计【LED(LightEmittingDiode)】数码管,用发光二极管显示字段的显示器。【LED显示器类型】共阴极、共阳极。共阴极——将8个发光二极管阴极连在一起作为公共端。共阳极——将8个发光二极管的阳极连在一起作为公共端。

(a)外形结构与引脚(共阴)(b)共阴极(C)共阳极基于HCS12的嵌入式系统设计》第5章S12输入/输出端口模块及其应用实例5.4.2LED显示接口设计数码管的公共端相当于一个位选开关,一般称为位码开关。当该位处于高电平时,数码管全灭;当该位处于低电平时,根据二极管阳极(一般称为段码或字形码)的电平状态,确定段码是否点亮。段码高电平时,该段码亮;段码低电平时,该段码不亮。输出相应的段码值得到LED显示器的字形。基于HCS12的嵌入式系统设计》第5章S12输入/输出端口模块及其应用实例5.4智能车系统中输入/输出端口的应用5.4.2LED显示接口设计LED显示接口一般采用静态驱动和动态扫描两种驱动方式。静态驱动方式——每

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论