版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第2章新系列单片机PIC16F8XXPIC单片机的学习比一般编程要困难得多,其设计关键在于完成一个PIC单片机系统,不仅需要掌握编程技术,更为重要的是要知道如何针对实际系统需要选择合理的单片机方案和外围器件,并以此为基础设计硬件电路。可以说硬件电路的设计是PIC单片机设计开发的基础。目前市场上有种类繁多的PIC芯片,本章以其中最典型的PIC16F8系列的单片机为研究对象,从单片机内部结构、主要电路、主要接口等方面做重点阐述。PIC16F8系列的单片机主要有PIC16F84A、PIC16F873、PIC16F877等。2.1PIC16F84A单片机
2.1.1PIC16F84A基本特征
PIC16F8X是一种18引脚、Flash/EEPROM8比特的微单片机系列.PIC16F8X这种系列又有多种型号,如PIC16F83、PIC16F84、PIC16CR83和PIC16CR84,和工作电压范围大的PIC16LF8X,PIC16LCR8X等。
PIC16F84A单片机是PIC16F系列中比较简单的一种。它仅具有18引脚,具有微处理器基本的功能,如输入输出口,定时计数器和外部中断输入。但不具有一些特殊功能。因此该PIC单片适合于要求体积小,要求简单的应用场合。
任何处理器要工作就必须给其提供一个时钟信号,确保单片机按照一定时钟节拍一步一步地执行应用程序。时钟的产生,一般有两种方式。一种是使用外部时钟源,主要通过OSC1/CLKIN引脚引入即可。该外部时钟还可以通过内部4分频后由OSC2/CLKOUT引脚输出,使其可能被其它功能部件使用。时钟产生的另一种方式是使用外部石英晶体或陶瓷谐振器方式,它是单片机产生时钟的经典方式。在PIC16F84A芯片上有再起动输入(inv)引脚,输入低电平L就能使单片机实现再启动。任何单片机应用最多的接口就是输入输出口,PIC16F84A也不例外,具有RA0-RA3;RA4/T0CK1;RB0/INT;RB1-RB7等输入输出接口。其中RA4/TOCK1属于多功能复用引脚,除了作为输入引脚外,还可作为定时计数器信号输入口。RB0除作为输出引脚外,还可作外部中断信号输入口。Vss为接地端。VDD为电源端,其电压范围在+2.0V~+5.5V,在此范围内单片机均可正常工作。PIC16F84A芯片具体引脚分布图如图2.1所示。
图2.1PIC16F84A单片机引脚PIC16F84A芯片采用高性能的精简指令计算机系统(RISCCPU),高性能特点具体表现如下:全部命令都是单字节命令,命令数有35个。除跳转分支命令外(2时钟),均为1时钟命令。工作速度DC~10MHZ时钟输入DC~400ns命令循环。14位宽命令,8位数据。特殊功能寄存器有15个。硬堆栈8级。中断源4种外部RB0/INT引脚输入中断信号TMR0定时器的溢出中断PORTB<7:4>引脚输入信号变化中断数据EEPROM写入完成中断Flash程序存储器写入,可消去1000次。EEPROM随机数据存储器写入,可消去1000次,数据保存>40年。表2.1是PIC16F8X系列单片机的主要性能参数比较。PIC16F8X系列程序存储器(WORDS)数据存储器RAM(BYTE)数据EEPROM(BYTE)最大频率(MHz)PIC16F83512Flash366410PIC16F841KFlash686410PIC16CR83512ROM366410PIC16CR841KROM686410PIC16F84A外部功能特征也很独特,主要集中如下:输入输出口数有13引脚。输入输出电流(LED直接驱动I/O),输入最大电流25mA,输出最大电流20mA。定时器TMR0为8位定时器/计数器。另外PIC16F84A具备特殊功能:开机再初始化功能POR(Power-onreset)、开机定时功能PWRT(PowerupTimer)、时钟开始定时功能OST、看门狗定时功能WDT(WatchDogTimer)等。2.1.2PIC16F84A内部结构PIC16F84A的内部功能框图如图2.2所示。功能框架图主要由程序存储器、随机存储器、可擦除只读存储器、特殊功能存储器、程序计数器、8级堆栈、指令寄存器、指令译码控制、多重控制和算术逻辑单元等组成。以下对具体的功能框进行详细说明如下:1.程序存储器(FlashProgramMemory)PIC16F84A程序存储器使用了Flash存储器。其内部实装1024字节,每1个字节由14位组成。Flash存储器在掉电的情况下其记忆的信息也不会消去。另外存储器内容可通过程序写入器(Writer)进行置换。图2.2PIC16F84A内部功能框图图2.3Flash存储器1)复位(Reset)处理先头存储器(地址1000h)在上电时,由于看门狗定时器WDT溢出和其它原因引起PIC重新置位时,PIC运行都从此程序地址开始执行。2)中断处理先头存储器(地址0004h)定时器(Timer)溢出中断或外部输入中断时程序运行从该地址执行。3)执行状态字节(2007h)该存储器单元存有该PIC运行的基本设置。比如,上电定时器的要否,看门狗定时器的要否,或时钟晶振的选择等设定。该存储器单元地址通常在程序存储器以后,这里不能用程序来设定,必须是用写入器(Writer)写入来设定。图2.42007h程序存储单元(14位)R:只读出不能写入位P:可编程位-n:上电后的逻辑u:无变化位13-4:程序码保护设定位CP1-不保护程序代码0-保护全部程序代码。一但设成该模式,PIC的程序存储器的程序代码不能读出。位3:Powerup定时器指定位(PWRTEinv)1-Powerup定时器不使用0-Powerup定时器使用该定时器在上电后约72ms间PICReset。通常设定为使用位2:WDT看门狗定时器设定位(WDTE)1-WDT定时器使用0-WDT定时器不使用位1-0:时钟类型指定位2.随机存储器RAM(RandomAccessMemory)
RAM是以相同速度高速地、随机地写入和读出数据(写入速度和读出速度可以不同)的一种半导体存储器。RAM的优点是存取速度快、读写方便,缺点是数据不能长久保持,断电后自行消失,因此主要用于计算机主存储器等要求快速存储的系统。随机存储器结构如图2.4所示。随机存储器分为两部分。管理结构是以称为存储块(Bank)方式的结构。每个存储块的最初部分12位(地址00h-0Bh)部分称为特殊功能寄存器区SFR。它包括了PIC的动作状态,I/O输入输出口的状态和其它各类程序动作的状态。13位后的68位(地址0Ch-4Fh)部分称为通用寄存器GPR(GeneralPurposeRegisters)。它们用于寄存程序运行过程中的中间数据、中间状态以及最终结果等。图2.5RAM随机存储器3.可擦除只读存储器EEPROM(ElectricallyErasableProgrammableReadOnlyMemory)
与RAM相比,EEPROM存储器在关电源后,存储器内数据不会丢失。EEPROM存储器可通过程序再写入置换。该存储器容量64字节。使用寿命100万次。它们不能用于存储程序运行途中的数据,通常用于存储常量,变化较少的数据等。虽然100万次不是个小数,但与程序运行速度比较就不算多了。该存储器数据可保持40年。4.特殊功能寄存器SFR(SpecialFunctionRegisters)在存储块切换动作的基础上,SFR特殊寄存器共有16种。详细寄存器分配如图2.3所示。虽通过存储块切换寄存器数可达到160字节,但是带箭头的寄存器在不同的存储块中都是同样的寄存器。另有一部分寄存器在存储块切换时,寄存器是不相同的。灰色部分的寄存器是不存在的。5.程序计数器(ProgramCounter)为读出存于程序存储器中的程序数据而设置的地址计数器。它是13位计数器。通常在执行完一个命令后自动加1使之指向下一执行命令。但是在遇到跳转命令时,该计数器的值被写为跳转目的地址。6.八级硬堆栈被称为堆栈的硬件其实也是存储器。主要用于存储程序因各种原因跳转后且在执行完规定程序后返回地址。比如,同样的处理可能存在于整个程序多个地方,这个处理程序通常用子程序的方式来实现。在子程序最后用返回RETURN命令来返回主程序。这种子程序的做法可以达到节省程序存储器的目的。在主程序中用CALL命令来调用子程序,为了从子程序返回主程序,此刻在堆浅中应该存储好返回地址。程序的这个动作通常叫压栈(PUSH)。在子程序处理完RETURN命令后,程序运行从存储于堆浅中的返回地址开始运行,这个动作通常叫出栈(POP)。在整个程序中,可以有子程序中套子程序,这样需要多级堆栈。在此,八级堆栈就是子程序套子程序最多到八级。编写程序不能超八级堆栈使用,子程序必须以RETURN命令结束。其原理图请见图2.6,跳转命令是不使用堆栈的,也不需返回地址。7.指令寄存器(InstructionRegister)
程序计数器所指向的程序命令(Instruction)被写入该指令寄存器,这个流程通常称为FECTCH。8.指令译码换行控制部对指令存储器的数据(指令)进行解读、分析并对其代表的指令内容进行相应的动作。图2.6八级堆浅程序跳转示意图9.多重控制和算术逻辑单元(MultiplexerandArithmeticLogicUnit)
多重控制和算术逻辑单元就是PIC芯片中进行计算动作的部分。是运算器和控制的核心。几乎所有的算术运算、逻辑运算和移位操作由此单元控制完成。如果CPU芯片中没有该部分,该芯片就不能称之为单片机。
10.工作寄存器
工作寄存器也称为WRegister寄存器。它通常用于存储算术逻辑单元的计算结果。它是计算过程中必须使用的寄存器。该寄存器存储的数据可转存到其他寄存器或通过I/O口输出。11.状态寄存器(StatusRegister)
状态寄存器中各位单元存储有存储算术逻辑单元的计算结果的状态(如结果正或负,零或非零等状态指示),定时计数器状态及存储块寄存器的切换状态等。12.文件选择寄存器FSR(FileSelectRegister)
地址的指定,有间接地址方式和直接地址方式二种。FSR寄存器通常用于RAM寄存器的地址在使用间接地址方式指定时使用。直接地址方式是在命令码中直接指定寄存器的地址。在此情况下,地址指定有7位,指定地址可从0到127。这个指定范围只有一个存储块的范围。要指定另一存储块,使用状态寄存器的RP0位来区分。FSR寄存器是8位寄存器,它能指定各存储块的范围。所以可方便地用它来象表格式的连续指定地址。这样地址的指定、处理就方便简洁。PIC16F84A芯片没有从80(50h)到127(7Fh)范围的存储器。13.地址合成译码器(AddressMultiplexer)
在RAM寄存器的地址指定时,直接地址方式是需用命令的动作码(7位)和状态寄存器的RP0位的组合形成真实地址。间接地址方式是需命令的动作码(7位)和FSR寄存器的组合形成真实地址。这些地址的组合都是在地址合成译码器中完成。14.EEDATA寄存器
EEDATA寄存器是在对EEPROM进行数据写入时或数据读出时使用的寄存器。15.EEADR寄存器EEADR寄存器是EEPROM的地址指定寄存器。它是8位寄存器,可指示从0到255的地址范围。PIC16F84A芯片内部只有64位,只用6位就能指定完整EEPROM范围。
16.定时器(Timer)
PIC16F84A芯片内部有一个8位的定时计数器称为TMR0。8位定时计数器计数范围256。即当输入256脉冲后,定时计数器溢出归零。同时在SFR的INTCON寄存器的TOIF位置1。在定时计数器溢出时也可使用中断处理功能。为激活中断功能,SFR的INTCOM寄存器的GIF位及TOIE位必须先置1。17.I/O输入输出口PIC16F84A芯片输入输出口有13位。每一个输入输出口引脚又可通过程序设置为输入口或输出口,但两者不能同时兼用。13引脚分为5引脚和8引脚两组。5引脚组称为A口,8引脚组称为B口。在控制系统设计中,由于需不同的定时信号,这13引脚都可单独进行设定与控制。18.时钟脉冲速度控制时钟脉冲速度决定PIC单片机的动作速度,PIC内部包含了时钟脉冲速度控制单元。通过石英晶体振荡器或陶瓷振荡器与起振电容连接就能产生时钟脉冲信号。如果系统需要稳定度高的时钟,通常采用水晶振子。另外,振子与发振用电容经常可做成单一部件以方便使用。PIC的动作也可用外部输入时钟来控制。PIC16F84A采用的是串行控制结构,通常执行一个命令(1循环)需4个时钟脉冲。但跳转命令由于需要地址变换需要8时钟(2循环)。以20MHz的时钟为例,脉冲周期是1/20MHz,50ns,通常执行一命令需200ns。PIC在1秒间可执行500万条命令。2.1.3PIC16F84A初始化PIC16F84A初始化,主要指对其内部多种控制电路进行初始设置。其初始化步骤明细如下:定时器上电(Power-on)上电时,为保证PIC正常上电运行所设置的定时器。目的是使电源电压稳定前PIC不动作。开始定时器(OscillatorStart-upTimer):上电时,为保证时钟正常起振所设置的定时器。目的是使时钟稳定正常后PIC才动作。再初始化(Power-onReset):上电时,PIC内部电路进行初始化。看门狗(Watchdog)定时器:该定时器是用于时常监视PIC程序运行状态的定时器。PIC程序需定时对该定时器进行处理设置。如PIC程序未对该定时器进行处理设置,PIC将重新再上电初始化。这就使得在程序运行不正常或动作异常时,PIC能自动进行复原动作。2.2PIC16F873单片机2.2.1PIC16F873硬件结构在上节中介绍了PIC家族中体积小,功能较低的芯片PIC16F84A,但在实际的运用中需要功能更强大,内存容量更大,功能类别更多的芯片。本节所涉及到的PIC16F873芯片就是其中的一种。以下介绍PIC16F873芯片与PIC16F84A功能不同的部分。基本功能部分可参照前节的内容。PIC16F873是一种比PIC16F84A性能更高、功能更全的单片机芯片。它的内部程序存储器容量有4K字节,随机存储器RAM容量有192字节,EEPROM有128字节。另外定时计数器有三种类型以满足不同的需要。也装配有模拟数字(A/D)转换功能及通用通信输入输出口。与PIC16F84A同样采用程序存储器,这使得能方便兼容PIC16F84A程序写入器来进行程序开发写入。图2.7是PIC16F873芯片引脚图,在此先介绍它的引脚功能如下:RA0-5:输入输出口AMCKLR:MasterClear(低电平有效)RB0-7:输入输出口BVpp:程序写入控制RC0-7:输入输出口CTHV:TestMode测试模式控制AN0-4:模拟输入VREF+/‐:基准电压(A/D转换)RX:USART非同步接收口SS:Sleep选扯TX:USART非同步发送口T0CK1:定时计数器0时钟输入SCK:同步串行输入口T1OSO:定时计数器1发振器输出口SCL:SPI,I2Cmode输出T1OSI:定时计数器1发振器输入口DT:同步数据T1CK1:定时计数器1时钟输入CK:同步时钟PGD:编程数据输入SDO:SPI数据输出PGC:编程时钟输入SDI:SPI数据输入PGM:编程低电压输入SDA:数据输入输出(I2Cmode)INT:外部中断输入OSC1/CLKIN:时钟输入VDD:电源OSC2/CLKOUT:时钟输出Vss:接地(Ground)CCP1,2:Capture输入/比较输出/PWM输出1.PIC16F873的特殊功能寄存器SFR(SpecialFunctionRegister)
PIC16F873的RAM寄存器空间分为4存储块(Bank)。每一个存储块拥有128位容量。特殊寄存器SFR分别占用每个存储块的上32位容量。33字节以后的空间均为用户可自由使用空间。每一个存储块中有96位。第2和第3存储块与第0和第1存储块是镜象相同的,所以实际能使用的容量只有2存储块的空间192字节。2.PIC16F873的配置(Configuration)字PIC16F837内部程序存储器中有一特殊区域为配置区域。它的地址为2007h。通常的程序不能对该配置区域进行读写。只能由写入器在进行程序写入时进行读写。配置的设置决定PIC的动作环境。图2.9为配置字的各位功能及设置。图2.9配置字结构及各控制位2.2.2PIC16F873输入输出接口
PIC16F837芯片的输入输出有A、B、C三个口。A口有6个,B口有8个,C口有8个。共有输入输出口22个。作为数字信号的输入输出口,A、B、C口都可以使用。PIC16F873芯片A,B,C各输入输出口不仅可用于数字信号的输入和输出,还兼有其它功能,比如A/D模拟信号输入输出,定时计数器的时钟输入等。以下详细介绍PIC16F873芯片的各输入输出口。1.输入输出A口
输入输出A口由RA0-RA5等6个口构成。该输入输出口可用于输入输出数字信号,模拟信号输入,模拟信号的基准信号输入及定时计数器0的外部时钟输入。具体电路类似于PIC16F84A,但其中增加有模拟信号的处理部分电路。如输入输出信号是数字信号,输入输出模式(Mode)的指定由TRISA寄存器中设定位来指定。在非数字信号输入输出模式时,其设定由ADCON0和ADCON1寄存器指定。既使在模拟信号输入模式下,TRISA寄存器的设置依然有效。如需设定为模拟信号模式时,一定要在TRISA寄存器中对应位设为输入模式(1)。输入输出A口的电原理图如图2.10所示。图2.10输入输出A口逻辑图3.输入输出C口输入输出C口同B口一样由8个输入输出端口构成。C口不仅用作数字信号的输入输出口,还兼用作定时计数器1的时钟输入口,以及各种外部通信用的信号输入输出口。RC0端口可作为定时计数器1的外接振荡器的接续端口和它的外部时钟输入口。两者功能的切换由T1CON寄存器来设定。RC1端口也可作为定时计数器1的外部振荡器的接续端口和CCP2(Capture2input/Compare2output/PulseWidthModulation2(PWM2)output)口兼用。定时计数器1功能的切换由T1CON寄存器来设定。关于CCP2的功能切换将由CCP2CON寄存器来设定。图2.12输入输出C口逻辑图.3PIC16F873定时计数器PIC16F837具有3种定时计数器。各定时计数器的特征、性能不尽相同,下面分别介绍。定时计数器0
PIC16F873的定时计数器0同PIC16F84A的定时计数器0基本功能相同,相比较具有以下特定功能:定时计数器0是8位定时计数器,计数最大可达255。允许对定时计数器进行读写。可做为8位长的程序Pre-scale使用。可使用内部或外部时钟。 定时计数器溢出中断(溢出后定时计数器由FFh清为00h)在使用外部时钟时,对时钟前沿和后沿计数均可。定时计数器1定时计数器1如图2.13所示,是具有16位长的计数器(TMR1H,TMR1L)。可分为2个8位定时计数器使用。各自具有独立的Pre-scale,可设置为1,2,4,8段使用。在TMR1IE寄存器PIE位置1时,定时计数器溢出中断有效。计数器数据由FFFFh清为0000h时由TMR1IF表示溢出,同时产生中断。定时计数器1可作为定时器或计数器使用。两种模式的切换由T1CON寄存器TMR1CS位设置。TMR1CS位置0时,作定时器。置1时作为计数器使用。另外在两种模式下又有不同定时器模式和计数器模式的设置。图2.13定时计数器1电逻辑图定时计数器2定时计数器是一个具有8位长的计数器(TMR2)和周期寄存器构成的定时计数器。它具有独立的4位长的可编程的预分频器和4位长的可编程的后分频器。预分频器有1,4,16三段控制功能。后分频器具有1至16为止16段的分段控制功能。定时计数器电原理逻辑如图2.14所示。定时计数器的计数值与周期寄存器所存值相等时,下一次计数时从00h开始计数。由于有该功能使得定时计数器2能从0到周期寄存器所存值为止反复计数。周期寄存器所存初始值在上电时为FFh。可通过程序改写。在计数器和周期寄存器所存值一致时输出信号到后分频器,再由它进行中断控制。例如后分频器设置为5,计数器和周期寄存器所存值一致5回后,第一外设中断屏蔽寄存器(PIR1)TMR2IF位置1后产生中断。定时计数器2也可通过T2CON寄存器TMR2ON位来控制它的动作或停止。图2.14定时计数器2电逻辑图2.2.4PIC16F873CCP功能
CCP功能是PIC16F873特有的功能。CCP缩写由英文Capture,Compare和PWM(PulseWidthModulation)的开头英文字母组成,分别代表输入捕捉、输出比较和脉冲宽度调制。PIC16F873有二个CCP模块。CCP1CCP2限制条件捕获功能捕获功能共用定时计数器1捕获时点与定时计数器值可以不同,但可同时使用捕获功能比较功能启动比较功能,自动对定时计数器1清零在此状态下,最好不使用CCP1的捕获功能捕获功能PWM因定时计数器1与定时计数器2是独立的,在此情况下无特别的限制条件比较功能捕获功能启动比较功能,自动对定时计数器1清零在此状态下,最好不使用CCP2的捕获功能比较功能比较功能只要启动比较功能,自动对定时计数器1清零所以,不能同时使用比较功能比较功能PWM因定时计数器1与定时计数器2是独立的,在此情况下无特别的限制条件PWM捕获功能因定时计数器1与定时计数器2是独立的,在此情况下无特别的限制条件PWM比较功能因定时计数器1与定时计数器2是独立的,在此情况下无特别的限制条件PWMPWM由于两者共用,定时计数器2只需设定为相同值即可工作表2.3CCP1和CCP2功能及制约条件以下详细介绍CCP三种功能模式1.输入捕捉(Capture)模式在输入捕捉模式下,RC2/CCP1引脚(13引脚)的电平变化时定时计数器的计数值读入CCPR1(CCPR1L和CCPR1H)寄存器中。在TRISC寄存器中必须把RC2/CCP1引脚设为输入模式。详细功能框图见图2.15。关于RC2/CCP1引脚(引脚13)的电平变化检测有多种方式。它的指定由CCP1CON寄存器的CCP1M0位到CCP1M3位共4位来控制。图2.15CCP的输入捕捉功能2.输出比较(Compare)模式
输出比较模式就是CCPR1寄存器的内容和定时计数器1(TMR1)的内容进行比较功能模式。其功能原理框图如图2.16所示。当两者内容一致时,根据CCP1寄存器的CCP1M0位到CCP1M3位的不同设置完成不同的控制功能。其详细的功能表请见表2.5。设置时,必须由TRISC寄存器设置RC2/CCP1端(引脚13)为输出模式。同时定时计数器1必须设置为同步定时器模式。如果设为非同步定时器模式,输入捕捉的功能不动作。图2.16CCP的输出比较功能PWM模式在设置为PWM(PulseWidthModulation)模式时,通过CCP1端口(引脚13)可输出连续的脉冲。其功能框图和脉冲信号见图2.17所示。为使用PWM模式,由CCP1CON寄存器的CCP1M3位和CCP1M2位置1来设定。图2.17PWM模式功能框图及脉冲信号以下着重介绍PWM周期和脉冲Duty时间的计算设置1)PWM周期Pulse脉冲周期是TRM2和PR2的值一致时所需时间,可通过以下公式计算PWM脉冲周期=(PR2的值+1)*4*振荡器周期*定时计数器2的预分频值计算例1(10MHz时的最大周期)条件PR2=255振荡器周期=0.1μs(10MHz时钟)定时计数器2的Prescaler值=16PWM周期=(255+1)*4*0.1*1E-06*16=1.6384ms(610Hz)2)PWM的高电平持续时间高电平持续时间是输出Pulse脉冲高电位时间,可通过以下公式计算计算例3(10MHz时最大Duty时间)条件CCPR1L+CCP1X+CCP1Y=1023振荡器周期=0.1μs(10MHz时钟) 定时计数器2的Prescaler值=16PWM高电平持续时间=1023*0.1*1E-06*16=1.6368ms最后总结以下,PWM模式设置方式及顺序:用PR2寄存器设置PWM周期。用CCPR1L寄存器和CCP1CON寄存器设置PWMDuty值。用TRISC寄存器设置CCP1(引脚13)为输出模式。用T2CON寄存器设置定时计数器设置Prescaler值。用CCP1CON寄存器CCP1M3位和CCP1M2位设置PWM模式(11XX)。2.2.5PIC16F873模数转换(A/D)功能模数转换功能就是能对输入模拟信号进行测量,且测量结果变成数字信号的功能。PIC16F873具有10位长的模数转换功能,测量的最大范围内具有1/1024的测量精度。最大测量范围在0V到+5V之间。如最大为+5V,测量精度可达5/1024V,即0.004883V(约5mV)。1.输入端口设置
虽然PIC16F873芯片最大可指定用5个模拟信号输入端口(AN0-AN4),模数转换功能却只有一种。某一时刻PIC16F873只能对1个端口进行测量。如设计对各端口进行轮流测量程序,可实现对多个端口的模拟信号的测量功能。1次测量需时间约40us,对变化不是很快的模拟信号可进行多端口的轮流测试。但不能测量高频率的信号。哪些端口作为模拟信号输入口由ADCON1寄存器PCFG0位到PCFG3位的4位来设定。PIC对哪个模拟输入端口进行处理由ADCON0寄存器的CHS0位,CHS1位及CHS2位来指定设置。被指定的端口还得由TRISA寄存器的该位置1使之为输入模式。其电原理框图如图2.18所示。2测量档和测量精度调整虽然芯片测量范围在Vss(0V)到VDD(5V)之间,但也可根据VREF-(下限电平)和VREF+(上限电平)来重新设定测量范围。虽如此,VREF-和VREF+必须设置在从Vss到VDD之间。比如,低电平设置在Vss,高电平设置在3V时,测量范围为3V。在此范围里测量精度为它的1/1024,即3/1024=0.002929(约3mV)。VREF-和VREF+的使用,设置由ADCON1寄存器PCFG0位到PCFG3位组合来设定。一旦VREF-和VREF+被设置后,测量范围就为AN2端口和AN3端口输入电压差。如仅设定了VREF+,VREF-自动设置为Vss。如两者均未设定,下限电平为Vss,上限电平为VDD。图2.19测量范围设定及测量精度EEPROM随机数据存储器写入,可消去1000次,数据保存>40年。特殊寄存器SFR分别占用每个存储块的上32位容量。4.特殊功能寄存器SFR(SpecialFunctionRegisters)如PIC程序未对该定时器进行处理设置,PIC将重新再上电初始化。PWM高电平持续时间=1023*0.3CCP1和CCP2功能及制约条件以下介绍PIC16F873芯片与PIC16F84A功能不同的部分。在使用该功能时,B口方向寄存器TRISA是一个4位寄存器,有4个端口,4个端口的设置位设为输入模式。RC0端口可作为定时计数器1的外接振荡器的接续端口和它的外部时钟输入口。24USART通信原理是运算器和控制的核心。PIC在1秒间可执行500万条命令。RC1端口也可作为定时计数器1的外部振荡器的接续端口和CCP2(Capture2input/Compare2output/PulseWidthModulation2(PWM2)output)口兼用。PIC16F84A采用的是串行控制结构,通常执行一个命令(1循环)需4个时钟脉冲。在RAM寄存器的地址指定时,直接地址方式是需用命令的动作码(7位)和状态寄存器的RP0位的组合形成真实地址。3模数转换结果存储模数转换结果存储在ADRESH和ADRESL寄存器中。其存储原理图如图2所示,ADFM为0,存上10位,1时存下10位。图2.20模数转换结果存储模拟电平测量原理如图2.21示,首先在采样开关ON时,在模拟信号输入口ANx输入的模拟电压首先对采样保持电容CHOLD充电,然后开关断开后模数转换功能块才对电容的电压进行测定、数字信号的转换。由于此原因,在由ADCON0寄存器CHS0,CHS1和CHS2位指定输入口后,电容的充电完成需要一定时间,所以模数转换功能块需要等待。该时间也不会自动识别,输入口的指定到模数转换开始的时间的处理要由应用程序控制。这个时间大约20us。充电完成后即可开始模数转换。转换时间长短因变换时钟不同也不同,最短需约20us。转换中,输入口与模数转换功能块是断开的,所以转换过程中输入口电压变动时不影响转换结果。图2.21模拟电平测量输入口电原理图5模数转换的时钟问题模数转换必须在模数转换时钟控制下动作。变换1位需要1.6us(TAD)。模数转换时钟可通过ADCON0寄存器的ADCS0位和ADCS1位来控制选择。2位控制即可有4种时钟选择。虽然可用1.6us以上的转换时间,但模数转换时钟来自于PIC工作时钟,转换时间尽量做到1.6us为好。以上表中,RS选择应采用在SLEEP模式时的模数转换。图2.22模数转换6.模数转换软件处理方法模数转换软件处理方法通长有两种:不使用中断功能和使用中断功能。SLEEP模式下的模数转换为避免PIC动作时产生的干扰信号对模数转换的影响,可采用在SLEEP模式下的模数转换功能。在使用该功能时需使用RC振荡器,也就需设置ADCON0寄存器ADCS0位和ADCS1位置1。1位转换时间需4us。ADCON0寄存器GO位置1后SLEEP命令执行使PIC处于SLEEP模式。SLEEP模式的解除需要中断方式来确认,该方法需使用中断功能。其程序控制流程图如图所示。
图2.23SLEEP模式下的模数转换流程2.2.6PIC16F873串行通信接口USART
PIC16F873装配有两种类型不同的串行通信模块,即通用同步/异步收发器USART(AddressableUniversalSynchronousAsynchronousReceiverTransmitter)模块和主控同步串行端口MSSP(MasterSynchronousSerialPort)模块。USART口可选择以下三种动作模式:非同步通信(全双工通信)、同步通信-主Master(半双工通信)和同步通信-从Slave(半双工通信)。
USART通信通常传输数据是以数据块为单位。通常每个数据块由8位构成。为实现多终端处理,多加一位地址指定位,则每数据块就可由9位构成。1.异步通信数据通信时,数据发送口输出的数据1或0必须在接收口被识别,这样才能正确地进行双向通信。非同步通信原理就是在被传送数据块(8位或9位长)的开头加上开始认知位,在块末加上传送结束位来实现通信。开始识别位采用低电位信号,传送结束位采用高电位信号。在通信线路上,传数据时线路处于H电位。这样线路由H电位变为L低电位(START)时,收信口就能识别数据传送开始,随后,系统根据事先设置好的通信速率开始接收数据。最后检出STOP位(H电位)完成整个数据块的传送。USART通信中,数据传送速率在送信端和收信端由不同的定时计数器控制,如果两者设置等出现误差将不能实现正确有效地通信。另外,非同步通信发送线路Tx和收信线路Rx为独立线路,可实现同时收发功能(全双工通信)。2指定输入输出数据口异步通信使用RC6/TX/CK(17引脚)作为数据输出口,RC7/RX/DT(18引脚)为数据输入口。由于这两端口作为USART通信端口,TX和RX口的输入输出设置由TRISC寄存器设定,即C端口第6位设置为0(输出模式),第7位设置为1(输入模式)。另外RC6和RC7作为USART端口用,接收状态兼控制寄存器(接收状态兼控制寄存器)SPEN位需置位,且清TXSRA寄存器SYNC位。USART通信原理如图2.24所示。图2.24USART通信原理3USART通信速率设置
USART通信速率由波特率发生器BRG(BaudRateGenerator)控制。且非同步通信和同步通信均由BRG控制。控制寄存器有波特率寄存器SPBRG,它是个8位的定时器控制寄存器。在非同步USART模式下,发送状态兼控制寄存器(TXSTA)的BRGH位用来控制设置通信速率。4.USART发送电路工作原理USART异步通信时,接收状态兼控制寄存器SPEB位使RC6端口作为TX端口。在TXREG寄存器设置发送数据后,由硬件读取到TSR(TransmitShiftRegister)寄存器后由TX端口发送。另外通过发送状态兼控制寄存器(TXSTA)的TXEN位置1来实施数据发送。数据由最低位开始逐位发送。图2.25USART非同步通信发送电路原理图2.26单字节USART送信时间示意图图2.27多字节连续USART发送时序示意图5.USART接收电路工作原理图2.28所示为USART异步通信接收电路原理。在设置USART异步通信时,首先需设置接收状态兼控制寄存器的SPEN位为1使端口RC7为USART的接收端口RX。图中所示,从RX端口接收数据通过数据补偿电路后送入RSR寄存器。接收数据的高低电平的判断,对每位接收数据要进行3次采样。接收数据按SPBRG寄存器与发送状态兼控制寄存器(TXSTA)的BRGH位设置的通信速率存入RSR寄存器。存储的格式为RSR寄存器格式。在检测出STOP位后,存入RSR寄存器的数据转存入RCREG寄存器。数据转存入RCREG寄存器后,PIR1中断控制寄存器的RCIF位置1发生中断响应。为产生中断响应,得先使第一外设中断标志寄存器(PIE1)的RCIE位置1开放。如图2.28所示,RCREG寄存器具有2段先入先出FIFO缓冲寄存器结构,其中能存入2块数据。目的是在软件读取数据时如出现迟后时能对数据进行保护。另外请注意,RCIF位为专读取位,在RCREG寄存器数据全部读出后,由硬件自动清0。图2.28USART异步通信接收电路原理
接收数据存入RSR寄存器完成后,如RCREG的2段先入先出FIFO(FirstInFirstOut)缓冲寄存器均存有数据时RCSTA寄存器的OERR位自动置位表示产生了Overlay溢出错误。产生此错误会使得RSR寄存器中的接收数据丢失。此后中断USART数据接收。如要恢复正常接收状态,必须对RCSTA寄存器的CREN位清位,再设置。CREN位设置后OERR位自动清位。另外前些章节中介绍了USART异步通信可使用奇偶校验检测位发送。在接收端自然就需要进行奇偶校验帧检测。如检测出RSR寄存器数据出现帧错误,RCSTA寄存器的FERR位置位以示帧错误。于是RERR位和存入RCSTA寄存器的RX9D位的情况反应了当前接收的1块数据的正确与否。由于此功能,在RCREG寄存器数据读出前需读出RCSTA寄存器的数据并对其FERR位进行检查。2.3PIC16F877单片机众所周知PIC系列单片机是由美国Microchip公司生产的单片机产品,具有较好的抗干扰性能、简洁的指令集,所需硬件配置
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年应急洗消帐篷搭建与洗消液配制问答
- 2026年企业经营管理与战略规划测试题
- 2026年森林防火割灌机安全操作常识测试
- 加强防灾减灾宣传教育
- 2026年社交媒体营销策略与实践案例分析试题
- 2026年心理学考试知识库题集
- 2026年工行私人银行专业资格考试私人银行婚姻财富规划题
- 2026年智慧城市基础设施与智能网联汽车试题
- 《商品学基础》(附微课 第2版)-课程标准 (含思政 )
- 下发版渠道转型提速工程进展及终端销售三步法推广工作
- 小羊羔(2023年江苏苏州中考语文试卷记叙文阅读题及答案)
- 2024年内蒙古呼和浩特中考化学试卷试题真题(含答案详解)
- DL∕T 1631-2016 并网风电场继电保护配置及整定技术规范
- QCT457-2023救护车技术规范
- DZ∕T 0207-2020 矿产地质勘查规范 硅质原料类(正式版)
- JC-T 564-2000 纤维增强硅酸钙板
- 华为信用管理手册
- 酒店财务管理课件:成本控制
- 抑郁症病人护理课件
- 新苏教版四年级下册科学活动手册参考答案
- 扁锭铸造工艺流程-铸造生产工艺流程图课件
评论
0/150
提交评论