收藏 分享(赏)

第5章--mc9s12xs输入输出端口模块及其应用实例.ppt

上传人:天天快乐 文档编号:588952 上传时间:2018-04-13 格式:PPT 页数:49 大小:1.02MB
下载 相关 举报
第5章--mc9s12xs输入输出端口模块及其应用实例.ppt_第1页
第1页 / 共49页
第5章--mc9s12xs输入输出端口模块及其应用实例.ppt_第2页
第2页 / 共49页
第5章--mc9s12xs输入输出端口模块及其应用实例.ppt_第3页
第3页 / 共49页
第5章--mc9s12xs输入输出端口模块及其应用实例.ppt_第4页
第4页 / 共49页
第5章--mc9s12xs输入输出端口模块及其应用实例.ppt_第5页
第5页 / 共49页
点击查看更多>>
资源描述

1、MC9S12XS单片机原理及嵌入式系统开发,MC9S12XS单片机原理及嵌入式系统开发,MC9S12XS单片机原理及嵌入式系统开发,合肥工业大学张 阳,吴 晔,滕 勤 Email:,, TEL:13966717615,13505612773,第5章 MC9S12XS输入/输出端口模块及其应用实例,输入/输出端口简介 输入/输出端口寄存器及设置 输入/输出端口应用实例 智能车系统中输入/输出端口的应用,MC9S12XS单片机原理及嵌入式系统开发,5.1 输入/输出端口简介,MC9S12XS系列内部有非常丰富的输入/输出端口资源,同时也集成了多种功能模块,其输入/输出引脚大多为复用引脚。MC9S1

2、2XS128通用I/O口包括PORTA、PORTB、PORTE、PORTK、PORTT、PORTS、PORTM、PORTP、PORTH、PORTJ以及PORTAD。,MC9S12XS单片机原理及嵌入式系统开发,5.2 输入/输出端口寄存器及设置,通用I/O口通过配置相应寄存器位,可以设置输入/输出端口、驱动能力、内置上拉/下拉电阻使用、中断输入方式等多种功能。通过对DDR、I/O、RDR、PE、PS和IE等寄存器的设置,用户可以获得通用I/O口的不同工作方式。其中,DDR(数据方向寄存器)设定I/O口为输入/输出端口。数据寄存器(I/O寄存器)用于设定I/O口的高低电平。RDR(驱动控制寄存器

3、)用于设定I/O口的输出驱动能力。PE(上拉/下拉使能寄存器)用于当I/O口为输入口时使能内置上拉电阻或下拉电阻的使用。PS(上拉/下拉选择寄存器)当中断允许位置位时,用于选择上升沿触发或下降沿触发中断;当使能内置上拉/下拉电阻时,用于选择使用上拉电阻或下拉电阻。IE(中断使能寄存器)用于使能I/O口的中断功能。,MC9S12XS单片机原理及嵌入式系统开发,5.2 输入/输出端口寄存器及设置,5.2.1 PORTA、PORTB、PORTE和PORTK,1数据寄存器(Px),数据寄存器Px中的8位对应每个端口中的相应引脚,如果某端口的引脚被定义为输出时,写入数据寄存器Px中的数值,则从对应引脚输

4、出;如果某端口的引脚被定义为输入时,可以读取数据寄存器Px对应引脚的电平值。 需要注意PORTE端口是一个特例,它的最低两位只能为输入口,所以PORTE端口的数据寄存器最低两位是只读位。,MC9S12XS单片机原理及嵌入式系统开发,5.2 输入/输出端口寄存器及设置,5.2.1 PORTA、PORTB、PORTE和PORTK,2数据方向寄存器(DDRx),DDRx决定对应引脚配置为输出口还是输入口,如果某位为“0”,则对应引脚设定为输入口;如果某位为“1”,则对应引脚设定为输出口。MCU复位后,DDRx值为0x00,引脚默认为输入口。 需要注意的是,PORTE端口是一个特例,它的最低两位只能为

5、输入口,所以PORTE端口的数据方向寄存器最低两位是只读位,读取这两位始终返回“0”。,MC9S12XS单片机原理及嵌入式系统开发,5.2 输入/输出端口寄存器及设置,5.2.1 PORTA、PORTB、PORTE和PORTK,3上拉电阻控制寄存器(PUCR),PORTA、PORTB、PORTE和PORTK端口都有内置上拉电阻,PUCR有4位分别配置4个端口选择使用内置上拉电阻,即第7、4、1和0位分别设置K、E、B和A端口。当控制位为“1”时,设定对应端口使用上拉电阻;当控制位为“0”时,禁止对应端口使用上拉电阻。MCU复位后,设定PORTK和PORTE端口使用上拉电阻,PORTB和PORT

6、A端口禁用上拉电阻。 PUCR第6位设置BKGD引脚使用上拉电阻。当该位为“1”时,设定该端口使用上拉电阻;当控制位为“0”时,禁止该端口使用上拉电阻。MCU复位后,该位为“1”, 引脚默认为使用内置上拉电阻。,MC9S12XS单片机原理及嵌入式系统开发,5.2 输入/输出端口寄存器及设置,5.2.1 PORTA、PORTB、PORTE和PORTK,4驱动控制寄存器(RDR),如果PORTA、PORTB、PORTE和PORTK端口为输出口时,每个端口都可以设置其输出驱动能力,RDR有4位分别设定4个端口输出驱动能力,即第7、4、1和0位分别设置K、E、B和A端口。如果某个控制位为“1” 时,设

7、定对应端口输出驱动能力降低;如果某个控制位为“0”时,设定对应端口为正常驱动输出方式。,MC9S12XS单片机原理及嵌入式系统开发,5.2 输入/输出端口寄存器及设置,5.2.2 PORTT、PORTS、PORTM、PORTP、PORTH和PORTJ,1数据寄存器(PTx),如果数据方向寄存器DDRx的对应位为“0”,即对应引脚定义为输入时,读取数据寄存器PTx的对应位,则为对应引脚的输入电平值;如果DDRx的对应位为“1”,即对应引脚定义为输出时,写入PTx寄存器的对应位,则为对应引脚的输出电平值。,MC9S12XS单片机原理及嵌入式系统开发,5.2 输入/输出端口寄存器及设置,5.2.2

8、PORTT、PORTS、PORTM、PORTP、PORTH和PORTJ,2输入寄存器(PTIx),输入寄存器PTIx是一个只读寄存器,如果DDRx的对应位为“0”,即对应引脚定义为输入时,读取PTIx总是返回引脚电平值;如果DDRx的对应位为“1”,即对应引脚定义为输出时,利用PTIx可以监视对应引脚是否过载或短路。,MC9S12XS单片机原理及嵌入式系统开发,5.2 输入/输出端口寄存器及设置,5.2.2 PORTT、PORTS、PORTM、PORTP、PORTH和PORTJ,3数据方向寄存器(DDRx),DDRx决定对应引脚配置为输出口还是输入口,如果某位为“0”,则对应引脚设定为输入;如

9、果某位为“1”,则对应引脚设定为输出。复位后,DDRx值为0x00,即MCU复位后引脚默认为输入口。,MC9S12XS单片机原理及嵌入式系统开发,5.2 输入/输出端口寄存器及设置,5.2.2 PORTT、PORTS、PORTM、PORTP、PORTH和PORTJ,4驱动控制寄存器(RDRx),如果端口为输出口时,RDRx可以设置端口对应引脚的输出驱动能力。如果RDRx某位为“1”,则对应引脚的输出驱动能力为正常时的1/5;如果某位为“0”,则对应引脚输出为正常驱动能力。复位后,驱动控制寄存器值为0x00,即MCU复位后引脚默认为满功率驱动输出。,MC9S12XS单片机原理及嵌入式系统开发,5

10、.2 输入/输出端口寄存器及设置,5.2.2 PORTT、PORTS、PORTM、PORTP、PORTH和PORTJ,5上拉/下拉使能寄存器(PERx),如果端口为输入口或者“线或”模式时,可以通过上拉/下拉使能寄存器PERx使能选择使用内置上拉/下拉电阻。如果PERx某位为“1” 时,则对应引脚允许使用内置上拉/下拉电阻;如果某位为“0” 时,则对应引脚禁用内置上拉/下拉电阻。,MC9S12XS单片机原理及嵌入式系统开发,5.2 输入/输出端口寄存器及设置,5.2.2 PORTT、PORTS、PORTM、PORTP、PORTH和PORTJ,6上拉/下拉选择寄存器(PPSx),当某引脚被定义为

11、输入且使能内置上拉/下拉电阻时,上拉/下拉选择寄存器PPSx用于选择使用内置上拉或者下拉电阻。如果PPSx某位为“0”,则对应引脚使用上拉电阻;如果某位为“1”,则对应引脚使用下拉电阻。 PORTP、PORTH和PORTJ三个端口都具有中断功能,当某端口允许中断时,PPSx还具有第二个作用,用于选择该端口中的引脚中断为上升沿触发或下降沿触发。当端口某引脚使能中断时,当PPSx对应位为“0” 时,则该引脚中断为下降沿触发;当PPSx对应位为“1”,则该引脚中断为上升沿触发。,MC9S12XS单片机原理及嵌入式系统开发,5.2 输入/输出端口寄存器及设置,5.2.2 PORTT、PORTS、POR

12、TM、PORTP、PORTH和PORTJ,7中断使能寄存器(PIEx),PORTP、PORTH和PORTJ三个端口具有中断功能,且都有中断使能寄存器PIEx,PIEx允许或者禁止相应端口的中断请求。如果PIEx某位为“1”,则对应引脚允许中断;如果某位为“0”,则对应引脚禁止中断。复位后,中断使能寄存器值为0x00,MCU复位后关闭所有端口中断请求。,MC9S12XS单片机原理及嵌入式系统开发,5.2 输入/输出端口寄存器及设置,5.2.2 PORTT、PORTS、PORTM、PORTP、PORTH和PORTJ,8中断标志寄存器(PIFx),PORTP、PORTH和PORTJ三个端口具有中断功

13、能,且都有中断标志寄存器PIFx。基于PPSx寄存器设置的边沿触发中断方式,当端口相应引脚发生中断,并产生有效电平时,则PIFx中的中断引脚对应位被置位。为了清除PIFx中的中断标志位,需要向该位进行写“1”操作。,MC9S12XS单片机原理及嵌入式系统开发,5.2 输入/输出端口寄存器及设置,5.2.2 PORTT、PORTS、PORTM、PORTP、PORTH和PORTJ,PORTP、PORTH和PORTJ三个端口的中断向量地址及相关标志位、控制位如表5-2所示。,MC9S12XS单片机原理及嵌入式系统开发,5.2 输入/输出端口寄存器及设置,5.2.3 PORTT、PORTS、PORTM

14、、PORTP、PORTH和PORTJ,1AD0数据寄存器0(PT0AD0),当不使用AD功能时,如果AD0端口数据方向寄存器0DDR0AD0的对应位为“0”,即对应引脚定义为输入时,读取PT0AD0的对应位,则为对应引脚的输入电平值;如果DDR0AD0的对应位为“1”,即对应引脚定义为输出时,写入PT0AD0寄存器的对应位,则为对应引脚的输出电平值。,MC9S12XS单片机原理及嵌入式系统开发,5.2 输入/输出端口寄存器及设置,5.2.3 PORTT、PORTS、PORTM、PORTP、PORTH和PORTJ,2AD0数据寄存器1( PT1AD0),当不使用AD功能时,如果AD0端口数据方向

15、寄存器1DDR1AD0的对应位为“0”,即对应引脚定义为输入时,读取PT1AD0的对应位,则为对应引脚的输入电平值;如果DDR1AD0的对应位为“1”,即对应引脚定义为输出时,写入PT1AD0寄存器的对应位,则为对应引脚的输出电平值。,MC9S12XS单片机原理及嵌入式系统开发,5.2 输入/输出端口寄存器及设置,5.2.3 PORTT、PORTS、PORTM、PORTP、PORTH和PORTJ,3AD0数据方向寄存器0(DDR0AD0),DDR0AD0决定AN00AN07对应引脚为输出口还是输入口,如果某位为“0”,则对应引脚设定为输入口;如果某位为“1”,则对应引脚设定为输出口。如果希望设

16、置AD0端口为通用I/O口功能,ATD0DIEN(数字输入使能)寄存器必须设置为“1”,关于ATD0DIEN寄存器的详细介绍,请参阅第8章。,MC9S12XS单片机原理及嵌入式系统开发,5.2 输入/输出端口寄存器及设置,5.2.3 PORTT、PORTS、PORTM、PORTP、PORTH和PORTJ,4AD0数据方向寄存器1(DDR1AD0),DDR1AD0决定AN08AN15对应引脚为输出口还是输入口,如果某位为“0”,则对应引脚设定为输入口;如果某位为“1”,则对应引脚设定为输出口。如果希望设置AD0端口为通用I/O口功能,ATD0DIEN寄存器必须设置为“1”,关于ATD0DIEN寄

17、存器的详细介绍,请参阅第8章。,MC9S12XS单片机原理及嵌入式系统开发,5.2 输入/输出端口寄存器及设置,5.2.3 PORTT、PORTS、PORTM、PORTP、PORTH和PORTJ,5AD0驱动控制寄存器0(RDR0AD0),如果端口为输出口时,RDR0AD0可以设置端口对应引脚的输出驱动能力。如果RDR0AD0某位为“1”,则对应引脚的输出驱动能力为正常时的1/5;如果某位为“0”,则对应引脚输出为正常驱动能力。,MC9S12XS单片机原理及嵌入式系统开发,5.2 输入/输出端口寄存器及设置,5.2.3 PORTT、PORTS、PORTM、PORTP、PORTH和PORTJ,6

18、AD0驱动控制寄存器1(RDR1AD0),如果端口为输出口时,RDR1AD0可以设置端口对应引脚的输出驱动能力。如果RDR1AD0某位为“1”,则对应引脚的输出驱动能力为正常时的1/5;如果某位为“0”,则对应引脚输出为正常驱动能力。,MC9S12XS单片机原理及嵌入式系统开发,5.2 输入/输出端口寄存器及设置,5.2.3 PORTT、PORTS、PORTM、PORTP、PORTH和PORTJ,7AD0上拉使能寄存器0(PER0AD0),如果端口为输入口时,可以通过PER0AD0使能选择使用内置上拉电阻。如果PER0AD0某位为“1” 时,则对应引脚允许使用内置上拉电阻;如果某位为“0” 时

19、,则对应引脚禁用内置上拉电阻。,MC9S12XS单片机原理及嵌入式系统开发,5.2 输入/输出端口寄存器及设置,5.2.3 PORTT、PORTS、PORTM、PORTP、PORTH和PORTJ,8AD0上拉使能寄存器1(PER1AD0),如果端口为输入口时,可以通过PER1AD0使能选择使用内置上拉电阻。如果PER1AD0某位为“1”时,则对应引脚允许使用内置上拉电阻;如果某位为“0” 时,则对应引脚禁用内置上拉电阻。,MC9S12XS单片机原理及嵌入式系统开发,5.3 输入/输出端口应用实例,5.3.1 控制输出设备LED实例,典型LED有阳极和阴极两个引脚,LED在正向偏置的状态下能够发

20、光,通过通用I/O口控制LED一个引脚,LED另外一个引脚接固定电平,即可实现LED的点亮控制。 本应用实例硬件连接如图5.21所示,PORTB端口连接8只LED,通过编程实现LED流水灯操作。,MC9S12XS单片机原理及嵌入式系统开发,5.3 输入/输出端口应用实例,5.3.1 控制输出设备LED实例,由电路图可知,使用MC9S12XS128的PORTB端口控制8只LED,PORTB端口输出低电平点亮相应LED。本例中流水灯的流动速度没有实现精确控制,即延时时间没有精确计算,本书后面章节会论述如何实现精确定时。,MC9S12XS单片机原理及嵌入式系统开发,5.3 输入/输出端口应用实例,5

21、.3.1 控制输出设备LED实例,流水灯应用实例程序清单如下所示。,MC9S12XS单片机原理及嵌入式系统开发,5.3 输入/输出端口应用实例,5.3.1 控制输出设备LED实例,MC9S12XS单片机原理及嵌入式系统开发,5.3 输入/输出端口应用实例,5.3.2 读取输入设备拨码开关状态实例,通过读取通用I/O口引脚的输入电平值,可以获悉输入设备拨码开关的状态。本应用实例硬件连接如图5.22所示。,MC9S12XS单片机原理及嵌入式系统开发,5.3 输入/输出端口应用实例,5.3.2 读取输入设备拨码开关状态实例,由电路图可知,通过MC9S12XS128的PORTA端口可以读取8位拨码开关

22、状态。本例依然使用图5.21所示的控制LED电路,使用MC9S12XS128的PORTB端口控制8只LED灯,考虑通过8只LED灯的亮灭反映8位拨码开关状态的设置情况。,MC9S12XS单片机原理及嵌入式系统开发,5.3 输入/输出端口应用实例,5.3.2 读取输入设备拨码开关状态实例,实例程序清单如下所示。,MC9S12XS单片机原理及嵌入式系统开发,5.4 智能车系统中输入/输出端口的应用,5.4.1 键盘接口设计,键盘多由多个按键组成,一般将其排列成阵列式,如图5.23所示。,MC9S12XS单片机原理及嵌入式系统开发,5.4 智能车系统中输入/输出端口的应用,5.4.1 键盘接口设计,

23、当没有键按下时,行和列线之间是不相连的,若第N行第M列的键被按下,那么第N行与第M列的线就被接通。如果在列线上加上信号,根据行线的状态,便可得知是否有键按下。如果在列线上逐行加上一个扫描信号,就可以判断按键的位置。 根据上述原理,利用MC9S12XS128的一个或两个端口就能方便地实现扩展键盘接口。图5.24给出了用MC9S12XS128的PORTA端口扩展44的键盘。PORTA端口的低4位作为行线,高4位作为列线。,MC9S12XS单片机原理及嵌入式系统开发,5.4 智能车系统中输入/输出端口的应用,5.4.1 键盘接口设计,MC9S12XS单片机原理及嵌入式系统开发,5.4 智能车系统中输

24、入/输出端口的应用,5.4.1 键盘接口设计,PORTA端口的低4位设置为输入、高4位设置为输出(即DDRA=0xF0)。通过PORTA的高4位逐列输出低电平,同时读取PORTA的低4位,将高4位的输出状态与读取的低4位的状态相“与”,然后查询保存在RAM中的表就能判断被按下键的位置。,MC9S12XS单片机原理及嵌入式系统开发,5.4 智能车系统中输入/输出端口的应用,5.4.1 键盘接口设计,当然如果系统中的I/O端口资源紧张,也可以采用专用芯片来扩展键盘。在此介绍一款数码管显示驱动及键盘扫描管理芯片ZLG7289B。 ZLG7289B是广州周立功单片机发展有限公司自行设计的数码管显示驱动

25、及键盘扫描管理芯片,可直接驱动8位共阴式数码管(或64只独立LED),同时还可以扫描管理多达64只按键。ZLG7289B内部含有译码器,可直接接收BCD码或16进制码,并同时具有两种译码方式。此外,还具有多种控制指令,如消隐、闪烁、左移、右移、段寻址等。 ZLG7289B采用SPI串行总线与微控制器接口,仅占用少数几根I/O口线。利用片选信号,ZLG7289B还可以并接在一起使用,能够方便地实现多于8位的显示或多于64只按键的应用。ZLG7289B的引脚如图5.25所示。,MC9S12XS单片机原理及嵌入式系统开发,5.4 智能车系统中输入/输出端口的应用,5.4.1 键盘接口设计,本节仅叙述

26、使用ZLG7289B实现键盘扩展,将在5.4.2节介绍如何采用ZLG7289B扩展显示功能。用ZLG7289B扩展44键盘的方案如图5.26所示。,MC9S12XS单片机原理及嵌入式系统开发,5.4 智能车系统中输入/输出端口的应用,5.4.2 键盘接口设计,本节仅叙述使用ZLG7289B实现键盘扩展,将在5.4.2节介绍如何采用ZLG7289B扩展显示功能。用ZLG7289B扩展44键盘的方案如图5.26所示。,MC9S12XS单片机原理及嵌入式系统开发,5.4 智能车系统中输入/输出端口的应用,5.4.2 LED显示接口设计,LED(Light Emitting Diode)显示是用发光二

27、极管显示字段的显示器,也称为数码管,其外形结构如图5.27所示,它由8个发光二极管构成,通过不同的组合可用来显示09、AF及小数点。,MC9S12XS单片机原理及嵌入式系统开发,5.4 智能车系统中输入/输出端口的应用,5.4.2 LED显示接口设计,LED显示器一般分为共阴极和共阳极两种,共阴极是将8个发光二极管阴极连接在一起作为公共端,而共阳极则是将8个发光二极管的阳极连接在一起作为公共端。以下叙述都以共阴极为例。数码管的公共端相当于一个位选开关,一般称为位码开关。当该位处于高电平时,数码管全灭;当该位处于低电平时,根据二极管阳极(一般称为段码或字形码)的电平状态,确定段码是否点亮。段码高

28、电平时,该段码亮;段码低电平时,该段码不亮。输出相应的段码值就可以控制LED显示器的字形,表5-3中给出了段码与字形的关系,假定段码a、b、c、d、e、f、g、dp分别对应8位数字位D0、D1、D2、D3、D4、D5、D6、D7。,MC9S12XS单片机原理及嵌入式系统开发,5.4 智能车系统中输入/输出端口的应用,5.4.2 LED显示接口设计,MC9S12XS单片机原理及嵌入式系统开发,5.4 智能车系统中输入/输出端口的应用,5.4.2 LED显示接口设计,LED显示接口一般采用静态驱动和动态扫描两种驱动方式。静态驱动方式工作原理是每个LED显示器用一个I/O端口驱动,亮度较高,功耗也较

29、大,占用I/O端口多,显示位数多时很少采用;动态扫描驱动方式工作原理是将多个显示器的段码同名端连接在一起,位码分别控制,利用眼睛的余辉暂留效应实现显示。只要保证一定的显示刷新频率,其显示效果与静态显示相当。在电路上使用一个I/O端口驱动段码,用一个I/O端口实现位码控制,占用I/O端口少,功耗也小,简化了电路,降低了成本,显示位数多时,多采用这种方式。ZLG7289B便是采用的动态扫描驱动方式,图5.28给出了在智能车系统中采用ZLG7289B扩展4位LED显示的方案。,MC9S12XS单片机原理及嵌入式系统开发,5.4 智能车系统中输入/输出端口的应用,5.4.2 LED显示接口设计,MC9

30、S12XS单片机原理及嵌入式系统开发,5.4 智能车系统中输入/输出端口的应用,5.4.3 LCD显示接口设计,LCD液晶显示器由于具有体积小、重量轻、电压低、功耗低等特点,在大量便携式产品中得到了广泛的应用。在智能车系统中,LCD显示也提供了比LED显示更为灵活方便的一种显示解决方案。 LCD可分为段位式LCD、字符式LCD和点阵式LCD,其中段位式LCD和字符式LCD只能用于字符和数字的简单显示,不能满足图形、曲线和汉字显示的要求;而点阵式LCD不仅可以显示字符、数字、还可以显示各种图形、曲线以及汉字,并且可以实现屏幕上下左右滚动、动画、分区开窗口、反转、闪烁等多种功能。,MC9S12XS

31、单片机原理及嵌入式系统开发,5.4 智能车系统中输入/输出端口的应用,5.4.3 LCD显示接口设计,本书以YM-0802B系列字符式LCD模块为例,叙述LCD显示在智能车系统中的应用。YM-0802B实物如图5.29所示,是28字符式LCD模块(可显示2行,每行8个字符)。,MC9S12XS单片机原理及嵌入式系统开发,5.4 智能车系统中输入/输出端口的应用,5.4.3 LCD显示接口设计,YM-0802B的引脚说明如表5-4所示。,MC9S12XS单片机原理及嵌入式系统开发,5.4 智能车系统中输入/输出端口的应用,5.4.3 LCD显示接口设计,YM-0802B可以工作在全字或半字模式下。在此采用了半字模式,以节省MC9S12XS128的I/O口线。采用PORA口的高4位作为数据线,与YM-0802B的DB4DB7连接,用PORTB的低3位作为控制线,分别与YM-0802B的RS、R/W、E连接,应用原理图如图5.30所示。,YM-0802B详细资料和完整代码请参阅本书网上的资料。,The End,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 经济财会 > 贸易

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报