第4章 外部接口功能及应用_第1页
第4章 外部接口功能及应用_第2页
第4章 外部接口功能及应用_第3页
第4章 外部接口功能及应用_第4页
第4章 外部接口功能及应用_第5页
已阅读5页,还剩88页未读 继续免费阅读

下载本文档

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

文档简介

1、第4章 外部接口功能及应用 4.1 I/O端口4.2 定时器/计数器4.3 输入捕捉/输出比较 / PWM模块4.4 A/D转换器模块 4.5 串行端口模块 PIC单片机原理及应用 4.1 I/O端口o单片机的性能优劣在很大程度上取决于I/O端口功能的强弱。任何单片机都带有用于信号输入和输出的引脚,差别只是多少而已。nPIC18F248/258RA、RB、RCnPIC18F448/458RA、RB、RC、RD、RE6 6根根3 3根根8 8根根8 8根根8 8根根o绝大多数I/O引脚具有复用功能,除具备常规的双向输入/输出功能以外,还有各自第二、第三功能的特殊作用o如果某个I/O端口承担相应功

2、能模块的输入/输出或数据通信接口,就不再担任通用I/O端口的功能 4.1 I/O端口每个端口都对应3个在RAM中统一编址的寄存器:l端口数据寄存器PORTx PORTA、PORTB、PORTC、PORTD、PORTEl端口方向控制寄存器TRISx 1 输入 0 输出l端口输出数据锁存器LATx 从I/O端口输出数据,就是通过PORT端口寄存器 将数据写入数据锁存器 说明:o对端口进行读写操作的含义n端口寄存器读出的是相应I/O引脚的电平状态n写端口寄存器则是写入其输出数据锁存器n所有写I/O端口的操作都是“读入-修改-写入”操作 1、RA端口o是一个6位宽双向I/O端口o在基本I/O功能的基础

3、上,复合了A/D转换器的模拟量输入功能、 A/D转换器所需的外接参考电压输入功能、TMR0的外部时钟输入功能、MSSP的从动选择信号输入功能等 RA对应3个寄存器oPORTA 端口A数据寄存器oLATA 端口A输出数据锁存器oTRISA 端口A方向控制寄存器n1 输入 0 输出 RA应用实例Main() PORTA=0; 清空输出锁存器并初始化 LATA=0; 清空输出锁存器 TRISA=0XCF; 设置输出和输入 PORTA=0X55; 输出数据 while(1) ; 其他代码 2、RB端口o8位双向I/On除用作基本I/O之外,每个引脚内部都有一个可编程弱上拉电路。 若想让弱上拉电路发挥作

4、用,则必须在端口引脚方向设定为输入的情况下,将/RBPU设置为0 2、RB端口n高4位RB7-4引脚具有电平变化中断功能,RB2-0具有外部中断输入功能nRB5-7可用作串行编程的控制时钟和数据引脚,RB2和RB3可用作CAN发送/接收引脚 RB应用实例Main() PORTB=0; 清空输出锁存器并初始化 LATB=0; 清空输出锁存器 TRISB=0XCF; 设置输出和输入 PORTB=0X55; 输出数据 while(1) ; 其他代码 3、RC端口o也是一个8位双向I/O端口,除了具有普通数字I/O功能外,绝大部分的片内外围模块都复用到该端口上来。nCCP1、TMR1、MSSP、USA

5、RTo每条引脚内部都设置了一个施密特触发输入缓冲器,对输入波形起整形作用。 4、RD端口o只有448和458芯片有此端口o8位双向I/O端口,除了用作基本的数字I/O口外,RD还被复用为并行从动端口的数据输入/输出线。oRD端口还可复用为CCP和ECCP模块PIC单片机原理及应用 5、RE端口o仅PIC18F448/458芯片有o只有3条引脚的双向I/O端口,除了基本的数字I/O口应用外,RE端口可以被复用为并行从动端口的控制线和模数转换器的模拟信号输入端 o微芯公司生产的PIC系列各款产品片内全部配备有定时/计数器模块。oPIC18CXXX、PIC18FXXX都配置了4个定时/计数器模块。

6、4.2 定时器/计数器o如果计数脉冲源自于单片机的内部指令周期,就称之为定时器;o若计数脉冲来自于外部引脚的输入信号,则被称之为计数器。 4.2 定时器/计数器各定时/计数器模块功能及配置情况定时/计数器模块位宽分频器普通功能特别功能TMR08或16预分频器定时/计数通用目的TMR116预分频器定时/计数捕捉/输出比较TMR28预/后分频定时器脉宽调制TMR316预分频器定时/计数捕捉/输出比较 1、定时/计数器模块TMR0o定时/计数器TMR0是所有PIC单片机都具备的一个标准定时器资源,可以作为一般功能的定时使用;o同时由于它有一个专用的外部触发信号输入端(T0CKI),也可用于一般功能的

7、计数方式。 TMR0具有以下特性:o是一个8/16位宽的定时/计数器o定时寄存器的当前计数值可读/写o附带一个8位可编程的预分频器o可以选择内部或外部时钟源o具有溢出中断功能o可选择外部时钟信号的触发方式PIC单片机原理及应用 2、定时/计数器TMR1o在中、高档PIC系列单片机中,还专门设计了一个具有较高性能的16位定时/计数器TMR1模块。o它在性能上有效突破了TMR0的局限。通过TMR1模块,可以很容易构成实时时钟、变频输出,以及实现信号捕捉、比较和频率检测等功能。PIC单片机原理及应用 TMR1的功能1)作为通用的定时/计数器2)利用内置的低频时基振荡器,可实现实时时钟RTC(Real

8、 Time Clock)输出等功能,并可在系统休眠模式下照常实现计数工作。3)能够与CCP模块配合使用,实现输入信号边沿的捕捉和输出信号的比较功能,在频率检测和脉冲宽度测量中得到广泛应用。 TMR1的特性1)核心是一个16位宽的循环累加寄存器对TMR1H:TMR1L,采用时钟信号上升沿触发的计数方式。2)可用软件方式直接读出或写入TMR1寄存器对的内容。3)带有一个可编程预分频器,可形成4种分频比(1:1,1:2,1:4,1:8),可达到定时/计数的扩展效果。PIC单片机原理及应用 TMR1的特性4)用于累加计数的信号源可选择内部系统时钟、外部触发信号或自带时基振荡器信号。5)既可工作于定时模

9、式,又可工作于计数模式,还可以用作实时时钟RTC。6)具有溢出中断功能 TMR1的控制寄存器T1CON位7 6543210功能RD16-T1CKPS1T1CKPS1T1OSCENT1SYNCTMR1CSTMR1ONTMR1CS:时钟源选择位1 选择外部时钟源,计数0 选择内部时钟源,定时TMR1ON:TMR1使能控制位 TMR1的控制寄存器T1CON位7 6543210功能RD16-T1CKPS1T1CKPS1T1OSCENT1SYNCTMR1CSTMR1ONRD16:16位读写使能位 (TMR1H :TMR1L) :16读写0 :2个8位读写T1SYNC:外部输入时钟同步控制1:不同步0:

10、同步 TMR1的控制寄存器T1CON位7 6543210功能RD16-T1CKPS1T1CKPS1T1OSCENT1SYNCTMR1CSTMR1ONT1CKPS1-T1CKPS1:前分频选择位11: 1:8 10: 1:401: 1:2 00: 1:1TMR1ON:TMR1使能控制位 TMR1使用实例:利用定时器TMER1产生50HZ的方波,晶振4MHZ思路: 方波周期T=1/50=20ms; 定时10ms取反一次; 1:8前分频; 指令周期=1us; 计数初值=65536-t/(1us x p)=FB1E; TMR1使用实例:# include Main() TRISC=0; 设置输出 PO

11、RTC=0; TICON=0X30; 前分频1:8 ,2次8为读写 TMR1H=0XFB; TMR1L=0X1E; TMR1IE=0; TMR1ON=1; 启动 TMR1使用实例: while(1) if(TMR1IF=1) TMR1IF=0; if(PORTC=0) PORTC=1; else PORTC=0; 取反 TMR1H=0XFB; TMR1L=0X1E; TMR1使用实例:利用TMER1对外部脉冲计数,晶振4MHZ思路: 采用中断方式; 初始值设置为: TMR1H=0XFF TMR1L=0XFF TMR1使用实例:# include Unsigned char count=0;Di

12、splay( unsigned char count);Viod initial();Interrupt HI_ISR(); TMR1使用实例:Void initial() TRISC=1; 设置输入,对外部引脚计数 PORTC=0; TICON=0X0A; 前分频1:1 ,2次8位读写, 计数方式。 TMR1H=0XFF; TMR1L=0XFF; TMR1IE=1; 使能 TMR1IF=0; TMR1使用实例: IPEN=1; 开优先级 TMR11P=1; 定时器设置为高优先级 GIEH=1; 使能高优先级 GIEL=1; TMR1使用实例:Interrupt HI_ISR() GIEH=0

13、; if(TMR1IE=1&TMR1IF=1) TMR1IF=0; count+; 计数 TMR1H=0XFF; TMR1L=0XFF; GIEH=1; TMR1使用实例:Main() initial(); TMR1ON=1; 启动 While(1) Display(count); 显示 . 4.3 捕捉/比较/PWM(CCP)模块oCCP是英文单词Capture、Compare和PWM的缩写。在PIC单片机中,CCP模块可以任意配置为这三种功能之一。o在PIC18F4X8中,同时配置了CCP/ECCP模块。它们各自都有独立的16位特殊功能寄存器CCPR1/ECCPR1。 1、CCP模

14、块基本功能(1)输入捕捉:)输入捕捉: 是指CCP模块可捕捉外部输入时序脉冲 的上升沿或下降沿,从而产生相应的捕捉中断,适用于测量引脚输入的周期性方波信号的周期、频率和占空比等。 1、CCP模块基本功能(2)输出比较:)输出比较:n主要是依据标准时序信号的计数比较从引脚上输出不同宽度的矩形正脉冲、负脉冲和延时启动信号等。 1、CCP模块基本功能(3)PWM功能:功能:n能够从引脚上输出脉冲宽度随时可调的PWM信号,来实现直流电机的变频调速、D/A转换和步进电机的步进控制等。 2、CCP模块寄存器介绍o一个是CCP模块16位可读/写寄存器CCPR1H:CCPR1L主要用于存放数据参考信息或计数比

15、较信息;o另一个是CCP模块控制寄存器CCP1CON,用于设置CCP模块的工作方式。o寄存器CCPR1H:CCPR1L,它在3种工作方式下承担的功能:16位捕捉寄存器/16位比较寄存器,也能通过主/从寄存器的设置定义占空比可变的脉宽调制信号输出。o不管CCP模块工作于哪一种模式,都需要用到CCPR1H:CCPR1L寄存器对。因此,任何时候只能有一种模式。 2、CCP模块寄存器介绍PIC单片机原理及应用oDC1B1:DC1B0 PWM占空因数寄存器的低2位,高8位通过CCPR1L设置。n引入低2位补充数据,其目的是为了提高PWM脉宽调制的精度。n该2位定义仅适用于PWM方式,在捕捉和比较方式中未

16、使用。CCP1CON寄存器寄存器oCCP1M3:CCP1M0 模式选择位o0000 关闭功能o0001 保留o0010 比较模式 ,若匹配输出翻转o0011 捕获模式,CAN总线数据接收触发o0100 捕获模式,下降沿触发o0101 捕获模式,上升沿触发o0110 捕获模式,四个上升沿触发o0111 捕获模式,十六个上升沿触发CCP1CON寄存器寄存器oCCP1M3:CCP1M0 模式选择位o1000 比较模式,CCP1置高o1001 比较模式,CCP1置低o1001 比较模式,CCP1电平不变o1001 比较模式,CCPIF置1 ,计数器复位到0, 并启动一次A/D转换。o11XX PWM模

17、式CCP1CON寄存器寄存器 3、捕捉方式oPIC单片机的输入捕捉功能,就是对外部接口引脚CCP1上输入的脉冲信号上升沿或下降沿进行实时捕捉检测。具 体:o当引脚输入信号发生沿跳变时,CCP的捕捉功能就立即把当时的TMR1/TMR3定时器的16位计数值记录到寄存器CCPR1H:CCPR1L 。 工作原理o当CCP工作于输入捕捉模式,下列事件出现时,TMR1/TMR3中的16位计数值将会立即被复制到CCPR1H:CCPR1L寄存器对中。n出现一个脉冲下降沿n出现一个脉冲上升沿n连续出现4个脉冲上升沿n连续出现16个脉冲上升沿o捕捉类型将由CCP1M3:CCP1M0控制。当捕捉到一次事件时,CCP

18、1IF标志将被自动置1,可产生中断,但必须用软件清0。o如果前一次捕捉的CCPR1H:CCPR1L时间值还没有被读取又发生了一次捕捉,则原先保存其中的时间值将被覆盖而丢失。 工作原理o为配合CCP模块实现输入捕捉功能,TMR1 /TMR3必须工作于定时器模式。o另外,一次事件的捕捉并不会使TMR1的当前计数值复位归0。因此,TMR1还可以作为普通的定时器使用。n在其计数溢出归在其计数溢出归0时依旧可以产生时依旧可以产生TMR1IF中断标志。中断标志。 工作原理 操作过程:1)CCP引脚设定o在捕捉模式下,RC2/CCP1引脚必须由相应的方向控制寄存器TRISC设定为输入方式。2)TMR1/TM

19、R3工作方式设定 必须配置为定时/同步计数方式,在T3CON寄存器中选择与CCP模块一起工作的定时器: T3ECCP1:T3CCP1 1x 选择TMR3 01 选择TMR3为ECCP服务 00 选择TMR1 操作过程:3)改变不同的捕捉模式 运行过程中动态改变输入捕捉模式时,在改变捕捉事件前,应该将CCP1IE清0,以免响应不需要的中断。设定好新的捕捉事件后,将CCP1IF清0复位后再恢复使能中断。 操作过程:方波信号周期的测量 #includeUnsigned char cpl=0;Unsigned char cph=0;Unsigned char flag=0; 应用实例:main() f

20、lag=0;While(1) if(flag=0) TMR1H=0; TMR1L=0; PEIE=1; GIE=1; TRISC=0X04; 设置CCP1为输入 T3ECCP1=0; T3CCP1=0; 选择定时器1 T1CON=0; 1:1 分频 主函数: CCP1CON=0X04; 捕获方式 上升沿触发 CCP1IE=0; CCP1IF=0; While(CCP1IF=0); Flag=1; 捕获到第一个上升沿 TMR1ON=1; 开始定时 CCP1IF=0; CCP1IE=1; 主函数:Void interrupt HI_ISR() 中断函数 if(CCP1IF=1) cpl=CCPR1

21、L; cph=CCPR1H; CCPR1CON=0; 关闭捕获 TMR1ON=0; 关闭定时器1 flag=0; display(cpl,cph); 显示子程序 CCP1IF=0; 应用实例: 4、比较工作方式o预置的特定值与TMR1/TMR3计数器的计数值进行比较,当两者数值一致时将给出匹配信号,触发CCP中断标志位。o一般在CCP中断后可及时调整CCP引脚的输出电平。如果实现CCP的连续比较,将能够从引脚上输出不同宽度的矩形脉冲信号、不同的周期频率脉冲以及非周期信号等。PIC单片机原理及应用 工作原理 当CCP1模块工作在比较方式时: 系统将CCP1寄存器中的设定值CCPRIH:CCPRI

22、L与16位TMR1/TMR3寄存器中的计数值进行实时比较。如果16位比较器检测二者数值相等,将给出匹配信号。匹配输出4种情况:o引脚电平变高 用于驱动外接电路o引脚电平变低 用于驱动外接电路o引脚电平维持原状 内部产生软件中断o引脚电平翻转o引脚电平维持原状 启动A/D究竟是让哪种情况发生,由寄存器CCP1CON的低4位设定。 工作原理PIC单片机原理及应用 在比较模式下,CCP1引脚应该设定为输出,才能在比较相符时从对应引脚上输出特定的电平。 当一次比较匹配发生后,都会由硬件自动将中断标志位CCP1IF置1,表示产生了一次CCP1比较器中断。 CPU响应中断后,CCP1IF位必须用软件清0。

23、 工作原理PIC单片机原理及应用 利用比较输出的功能,产生一方波信号。说明:配置为引脚电平翻转,半个方波信号周 期翻转一次,预置的比较值为半个方波 周期。 比较输出应用实例PIC单片机原理及应用输出方波信号: #includeUnsigned char cpl=xx;Unsigned char cph=xx; 设置比较值 应用实例:main() T3ECCP1=0; T3CCP1=0; 选择定时器1 TMR1H=0; TMR1L=0; TRISC=0X00; 设置CCP1为输出 T1CON=0; 1:1 分频 PEIE=1; GIE=1; 主函数: CCP1L=cpl; CCP1H=cph;

24、设置比较值 CCP1CON=0X02; 比较模式 ,匹配输出翻转 CCP1IE=1; CCP1IF=0; TMR1IE=0; TMR1ON=1; 开始定时While(1) ; 其他代码 主函数:Void interrupt HI_ISR() 中断函数 GIE=0; if(CCP1IF=1) TIMER1L=0; TMER1H=0; CCP1IF=0; GIE=1; 应用实例: 5、PWM工作方式o在CCP模块中,功能最强大、应用最广泛。oPWMPulse Width Modulation功能可以很方便地从CCP引脚上获得脉冲宽度随时可调的PWM信号。直流电机调速、简易DAC、步进电机的变频控制

25、等 脉宽调制模式的工作原理oCCP为PWM模式时,CCP1引脚可以输出占空比10位分辨率可调的方波。o所谓占空比是指在一个周期内高电平的宽度。o必须由TMR2配合实现,在这里PR2寄存器负责控制方波的周期,占空比的调整则主要通过CCPR1H:L寄存器实现。 分析:oPWM模式下TMR2在计数过程中将同步进行两次比较:nTMR2和CCPR1H比较一致将使CCP1引脚输出低电平0;nTMR2和PR2比较一致将使CCP1引脚输出高电平1。PRPR2CCPR1H PWM周期oPWM的周期由PR2寄存器决定,TMR2和PR2的比较只是8位的,故此PWM周期调整的分辨率只有8位oPWM波形的周期计算公式:

26、PWM周期=(PR2+1)4ToscTMR2预分频例如:以4MHz振荡频率工作的单片机需要产生38KHz的方波,取TMR2的预分频为1:1,则有: 26.3s=(PR2+1)40.25s1 可得PR2=25,此时输出方波频率误差为1.2% PWM占空比oPWM占空比的设定通过对寄存器CCPR1L和CCP1CON总共10位数据写入得到。o其中CCPR1L为高8位(DC1B),CCP1CON为低2位(DC1B)。o在很多应用中,如果只需8位分辨率的占空比调制,则只需简单地设定CCPR1L寄存器, CCP1CON两位固定为00即可。 PWM占空比o如果以10位分辨率计算,PWM占空比时间的计算公式为

27、:PWM占空比 =CCPR1L:CCP1CONToscTMR2预分频n程序在运行过程中可以修改占空比,但修改后并不立即起作用;必须等到当前PWM周期结束,才会将10位的占空比值装入CCPR1H寄存器。例1 在某单片机应用中,要在RC2/CCP1引脚输出频率为4100Hz的PWM信号,系统时钟为4MHz,TMR2的预分频比是1:1,脉宽占空比为20%PWM周期=(PR2+1)4ToscTMR2分频比代入数据得 : PR2=244-1=243=0F3HPWM脉宽 = PWM周期1/5=244s/5=48.8s20%20%o脉宽寄存器CCPR1L的定义数值应为48.8s,只能取48或49,从某种意义

28、上说后者更接近48.8s。但如果考虑低2位补充位,情况就不一样了。o因为系统时钟周期为0.25s,可以调整的数值为48.25、48.5和48.75s,所以取48.75为脉宽数值,显然更接近真正的PWM脉宽。20%20% PWM工作模式设定o设定PR2寄存器,决定PWM方波的周期o设定DC1B,决定PWM输出的高电平占空比o将方向控制寄存器TRISC清0,以设定CCP1引脚为输出状态o设定TMR2的预分频系数并通过设定T2CON寄存器启动TMR2工作o配置CCP1模块使其进入PWM工作模式PIC单片机原理及应用 PWM实例: 在某单片机应用中,要在RC2/CCP1引脚输出频率为4KHz的PWM信

29、号,系统时钟为4MHz,TMR2的预分频比是1:1,脉宽占空比为50%分析:PWM周期=(PR2+1)4ToscTMR2分频比 得 : PR2=249; CCPR1L=PR2/2;main() TMR2=0; 八位 PEIE=0; 关外部中断 PR2=249; 设置周期 CCPR1L=PR2/2; 设置占空比 TRISC=0X00; 设置CCP1为输出 CCP1IE=0; T2CON=0; 1:1 分频 PWM实例: CCP1CON=0X2C; 设置为PWM方式 TMR2ON=1; 开始定时 While(1) if(CCP1IF=1) CCP1IF=0; 其他代码; 主函数: 4.4 A/D转

30、换器oA/D转换模块: PIC18F2X8单片机提供5个输入通道 PIC18F2X8单片机提供8个输入通道。o片上A/D转换模块可以将输入的模拟信号转换成相应的10位数字信号。 其包含ADRESH和ADRESL寄存器。 A/D转换模块包含4个寄存器:oADRESH寄存器(A/D结果高位寄存器);oADRESL寄存器(A/D结果低位寄存器);oADCON0寄存器(A/D控制寄存器0);oADCON1寄存器(A/D控制寄存器1); 1.ADCON0寄存器 o ADXS1: ADCS0: A/D转换时钟选择位 与ADCON1的ADCS2 结合,来选择AD转换的时钟。如: 000 fosc/2 001

31、 fosc/8 100 fosc/4位7 6543210功能ADCS1ADCS0CHS2CHS1CHS0GO/DONE-ADON 1.ADCON0寄存器 oCHS2: CHS0: 输入模拟信号通道选择位o 000=通道0 (AN0);o 001=通道1 (AN1);o 010=通道2 (AN2);o 011=通道3 (AN3);o 100=通道4 (AN4);o 101=通道5 (AN5);o 110=通道6 (AN6);o 111=通道7 (AN7); 位7 6543210功能ADCS1ADCS0CHS2CHS1CHS0GO/DONE-ADON 1.ADCON0寄存器 oADON:A/D模块

32、使能位模块使能位 1:A/D转换模块开始工作; 0:A/D转换电路停止工作,并且电路没有消耗。位7 6543210功能ADCS1ADCS0CHS2CHS1CHS0GO/DONE-ADON 1.ADCON0寄存器 oGO/DONE: A/D转换状态位当ADON=1 时: 1:A/D转换正在进行; 0:未进行A/D转换,或转换结束。o注意:当转换完毕之后此位会自动清零,故若要开始A/D转换需要重新设置此位。位7 6543210功能ADCS1ADCS0CHS2CHS1CHS0GO/DONE-ADON 2.ADCON1寄存器 oADFM:A/D转换结果格式选择位 1:证明结果右侧正确,ADRESH寄存器的 高6位重要信息为0; 0:证明结果左侧正确,ADRESL寄存器的 低6位重要信息为0。位7 6543210功能ADFMADCS2-PCFG3PCFG2PCFG1PCFG0 2.ADCON1寄存器 oADCS2:A

温馨提示

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

最新文档

评论

0/150

提交评论