基于PIC单片机SPI接口的数据采集模块设计_第1页
基于PIC单片机SPI接口的数据采集模块设计_第2页
基于PIC单片机SPI接口的数据采集模块设计_第3页
基于PIC单片机SPI接口的数据采集模块设计_第4页
基于PIC单片机SPI接口的数据采集模块设计_第5页
已阅读5页,还剩39页未读 继续免费阅读

付费下载

下载本文档

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

文档简介

基于PIC单片机SPI接口的数据采集模块设计I基于PIC单片机SPI接口的数据采集模块设计摘要PIC单片机比MCS51单片机功能更强大,因为其内部集成了A/D转换模块、USART通讯模块及MSSP端口;本文介绍一种基于PIC16F877A单片机的数据采集模块的设计。首先主机的A/D端口接电位器,实现模拟电压向数字信号的转换,然后对转换后得数据通过SPI接口传输给从机,从机通过显示控制芯片HD7279A,最后通过四位数码管把采集的模拟电压显示出来。系统需要两片单片机完成,分为主机和从机,主机完成数据的采集、A/D转换,转换结果的输出,从机主要完成数据的接受,工程量变换功能。程序采用C语言编写,在集成开发环境MPLABIDE下完成编译及程序下载,最终实现能通过调节电位器实现变化的电压显示。关键词PIC单片机数据采集A/D转换SPI接口基于PIC单片机SPI接口的数据采集模块设计IIDESIGNOFDATACOLLECTIONSYSTEMBASEDONTHESPIPORTOFPICMICROCONTROLLERABSTRACTTHEFUNCTIONOFPICMCUISMOREPOWERFULTHANMCS51,BECAUSEITINTEGRATEALARGENUMBEROFONCHIPPERIPHERALSSUCHASADCONVERTERMODULEUSARTCOMMUNICATIONMODULEANDMSSPPORT,THISARTICLEINTRODUCEDTHEDESIGNOFDATACOLLECTIONSYSTEMBASEDONTHESPIPORTOFPICMCU,FIRSTTHEADCCONVERTERMODULEISCONNECTEDWITHTHEPOTENTIOMETER,SOTHEANALOGVOLTAGECANBECONVERTEDTODIGITALSIGNAL,ANDTHENSENDTHEMTOTHEMASTERMICROPROCESSORBYTHESPIPORT,THESLAVEDISPLAYTHEANALOGVOLTAGETHROUGHMULTIPOINTCALIBRATIONWHICHISCONTROLLEDBYTHEHD7279AITNEEDSTWOPIECESOFMICROCONTROLLERTODOTHEJOB,WHICHISDIVIDEDINTOTHEMASTERANDTHESLAVE,THEFORMERCOMPLETESDATACOLLECTION,A/DCONVERSION,THECONVERSIONRESULTSOFOUTPUT,ANDTHELATERACCEPTSTHEDATATRANSMISSIONASWELLASTHEQUANTITYCHANGECLANGUAGEISUSEDINPROGRAMMING,THEMPLABIDEINTEGRATEDDEVELOPMENTENVIRONMENTCOMPLETESCOMPILINGANDDOWNLOADINGANDFINALLYTHEANALOGVOLTAGEISDISPLAYEDKEYWORDSPICMCUDATACOLLECTIONADCONVERSIONSPIPORT基于PIC单片机SPI接口的数据采集模块设计目录摘要IABSTRACTII1绪论111课题背景及研究意义112本设计方案介绍22硬件部分设计321PIC单片机介绍3211PIC单片机的优越之处3212PIC16F877A最小系统图及主要性能422PIC单片机片内ADC模块及接口实现5221ADC模块结构和操作原理5222ADC模块相关的寄存器介绍6223A/D转换接口电路设计723主控同步串口MSSP介绍9231I2C总线介绍9232SPI简介10233SPI主模式接口设计13234SPI从模式接口设计1424HD7279A芯片原理介绍及接口实现15241HD7279A简介15242HD7279指令介绍16243HD7279A的接口实现2025电源模块233软件设计程序流程图25基于PIC单片机SPI接口的数据采集模块设计31C语言编程简介2532MPLABIDE编程环境简介2533MPLABICD2介绍26331MPLABICD2系统组成26332MPLABICD2的安装和配置2734系统程序流程图294结论31致谢32参考文献33附录134附录235附录336基于PIC单片机SPI接口的数据采集模块设计11绪论11课题背景及研究意义在工业生产和日常生活中,经常要对模拟信号进行测量与控制,例如在有些系统中经常要对模拟电压信号进行采集并显示出来,于是数据采集模块必不可少。数据采集涉及多学科,所研究的对象是物理或生物等各种非电或电信号,如温度、压力、流量、位移等模拟量,根据各种非电或电信号的特征,利用相应的归一化技术,将其转化为可真实反映事物特征的电信号后,经A/D转换器转换为计算机可识别的有限二进制数编码,即数字量,并进行存储、处理、显示或打印。以此二进制数字编码作为研究自然科学和实现工业实施控制的重要依据,实现对宏观和微观自然科学的量化认识3。在当今社会各个领域,包括科研和实验研究,数据采集系统有着不可替代的作用,数据采集和处理进行的越及时,工作效率就越高,取得的经济效益就越大,数据采集系统性能的好坏主要取决于它的精度和速度,在保证精度的条件下,还要尽可能地提高采样速度,以满足实时采集、实时处理和实时控制的要求。数据分析是指用适当的方法对采集的数据进行分析,以求最大化的开发数据资料的功能,发挥数据的作用,并将分析结果显示出来,通过数据采集硬件采集到数据,然后将其传送到CPU中,应用不同的软件,将采集到的数据进行实时分析,并显示出分析结果。其典型的系统组成如图11所示1物理量传感器信号调理数据分析SOFTWARECPU数据采集硬件变换器图11数据采集典型系统框图基于PIC单片机SPI接口的数据采集模块设计212本设计方案介绍本设计主要由PIC单片机完成。模拟信号的采集离不开AD转换,通常我们都是采用AD转换器实现由模拟量到数字量的转换,然后将数字信号输入单片机进行数字处理;其特点是工作性能可靠、稳定,但灵活性差、成本也比较高。本文所介绍的技术是利用PIC单片机的特点结合AD转换的技术直接实现AD转换,该方法只需外接少量元件,而且分辨率可编程设置,且可实现多路AD转换,此技术主要用于控制精度要求不是很高、成本要求较低的电子产品中,意义尤为突出1。PIC单片机具有SPI总线,SPI是一种高速的、全双工、同步的通信总线,并且只占用四根线。为了系统功能的扩展,又是一个单片机不能完成整个系统的要求,这时就需要两个单片机,第一片完成数据的采集、AD转换、转换结果的输出,第二片主要完成数据的接受,工程量变换等功能,本设计就是基于这种情况而设计的。数据采集模块构架框图如图11所示PIC16F877A最小系统(从机)PIC16F877A最小系统(主机)数据采集模块HD7279A显示控制芯片四位数码显示模块AD转换转换SPI图12数据采集模块构架框图通过上图可知,要完成本系统设计,一下几个模块必不可少,按照数据流动的先后顺序,依次是AD采集模块、SPI模块、HD7279显示控制模块,各模块联系紧密,在下面的论文当中,会按照这个顺序一一进行介绍。要想成功完成设计,硬件和软件两者缺一不可。基于PIC单片机SPI接口的数据采集模块设计32硬件部分设计21PIC单片机介绍211PIC单片机的优越之处PIC单片机采用了RISC结构,其高速度、低电压、低功耗、大电流LCD驱动能力和低价位OTP技术等都体现出单片机产业的新趋势。PIC16F877是MICROCHIP公司于1998年底推出的一款特色鲜明的新产品,片内资源丰富,使用方便等诸多优点使其在应用领域中越来越受用户喜爱,这也是本设计为什么要采用它的原因,其主要特点如下所述13(1)哈弗总线结构MCS51单片机的总线结构是冯诺依曼型,计算机在同一个存储空间取指令和数据,两者不能同时进行而PIC单片机的总线结构是哈佛结构,指令和数据空间是完全分开的,正因如此,PIC单片机程序和数据总线可以采用不同的宽度。数据总线都是8位的,但指令总线位数分别位12、14、16位。(2)流水线结构MCS51单片机的取指和执行采用单指令流水线结构,即取一条指令,执行完后再取下一条指令而PIC的取指和执行采用双指令流水线结构,当一条指令被执行时,允许下一条指令同时被取出,这样就实现了单周期指令。(3)寄存器组PIC单片机的所有寄存器,包括I/O口,定时器和程序计数器等都采用RAM结构形式,而且都只需要一个指令周期就可以完成访问和操作而MCS51单片机需要两个或两个以上的周期才能改变寄存器的内容。(4)运行速度高、功耗低(5)驱动能力强、程序保密性强每个I/O引脚吸入和输出电流的最大值可分别达到25MA和20MA,能够直接驱动发光二极管LED、光电耦合器或者轻微继电器等;其内部程序尚无法直接进行拷贝,可最大限度保护用户版权1。基于PIC单片机SPI接口的数据采集模块设计4212PIC16F877A最小系统图及主要性能由于本系统对速度要求并不是很高,故没必要采用很高的晶振,4M已经可以满足系统需求。由于上电复位不是很可靠,程序一旦跑飞就得重新上电,故本系统采用按键复位电路,上电复位电阻为10K,电容选电解电容10UF,该电路的优点在于降低复位引脚对地的阻抗,可以显著增强单片机复位电路的抗干扰能力,并且有利于程序的调试,PIC16F877A的最小系统如图221所示RD09C3/SK82765OLUTINVAPBXUPFFGS图21PIC16F877A最小系统图与本设计相关主要性能参数如下所示6具有高性能的CPU除程序分支指令为两个周期外,其余均为单周期指令8K14个FLASH程序存储器3688个数据存储器(RAM)字节2568EEPRM数据存储器字节提供14个中断源10位多通道模数转换器基于PIC单片机SPI接口的数据采集模块设计5内部有主控同步串行通讯端口MSSP,可工作于SPI、I2C两种模式功耗低在5V,4MHZ时钟运行时电流小于2MA在3V,32KHZ时钟运行时电流小于20UA支持在线串行编程(ICSP)运行电压范围广,20V到55V输入及输出电流可达到25MA22PIC单片机片内ADC模块及接口实现221ADC模块结构和操作原理PIC16F87X内部带有10位ADC,40脚封装的芯片内有8通道ADC,其内部结构包含四部分8选1选择开关、双刀双掷开关、A/D转换电路和采样/保护电路。PIC16F87X的ADC内部结构示意图如图311所示。图22ADC模块内部结构图ADC模块各部分功能和组成关系如下(1)8选1选择开关由控制寄存器ADCON0中的CHS2CHS0位控制,用于在引脚AN0AN7中选择将要进行转换的输入模拟通道,选中者与内部采样/保持电路接通。基于PIC单片机SPI接口的数据采集模块设计6(2)双刀双掷切换开关由控制寄存器ADCON1中的PCFG3PCFG0位控制用于选择A/D转换器所需要的参考电压源的获取途径。(3)A/D转换电路用于实现将模拟信号转换为数字量。(4)采样/保持电路用于对输入模拟信号电平进行抽样,并且为后续A/D转换电路保持一个平稳的电压样值。222ADC模块相关的寄存器介绍1ADC控制寄存器0ADCON0见表31。表21ADCON0各位描述符号地址BIT7BIT6BIT5BIT4BIT3BIT2BIT1BIT0ADCON01FHADCS1ADCS0CHS2CHS1CHS0GOADON功能ADCS1ADCS0A/D转换时钟及频率选择位CHS2CHS0A/D模拟通道选择位GO/DONEA/D转换启动控制位,兼作状态位,在ADON1的前提下,1启动A/D转换或转换正在进行中,0A/D转换已完成。2ADC控制寄存器1ADCON1见表22。表22ADCON1各位描述符号地址BIT7BIT6BIT5BIT4BIT3BIT2BIT1BIT0ADCON19FHADFMPCFG3PCFG2PCFG1PCFG0功能ADFMA/D转换结果格式选择位。1结果右对齐,ADRESH寄存器高6位读作0;0结果左对齐,ADRESL寄存器低6位读作0。PCFG3PCFG0A/D模块引脚配置位。这三个决定了功能复用的引脚那些作为普通数字I/O口,哪些作为A/D转换时的电压信号输入。在8位分辨率的A/D转换模块中其组合控制模式见表33。基于PIC单片机SPI接口的数据采集模块设计7表23位分辨率的A/D模块引脚配置PCFG2PCFG0AN7AN6AN5AN4AN3AN2AN1AN0000AAAAAAAA001AAAAVREFAAA010DDDAAAAA011DDAAVREFAAA100DDDDADAA101DDDDVREFDAA11XDDDDDDDD3ADC结果高字节寄存器ADRESH当ADMF0时,用于存放A/D转换结果的高8位;当ADMF1时,用于存放A/D转换结果的高2位,此时结存器的高6位读作0。4ADC结果低字节寄存器ADRESL当ADMF1时,用于存放A/D转换结果的低8位;当ADMF0时,用于存放A/D转换结果的低2位,此时寄存器低6位读作0。223A/D转换接口电路设计A/D转换的外围器件是电位器,电位器与5V电源相连,通过调节电位器R101即可向单片机ADC模块的AN0通道输入连续变化的模拟电压信号。其硬件电路图如图32所示1KRVCUF4GN图23A/D转换接口电路图基于PIC单片机SPI接口的数据采集模块设计8ADC模块程序流程图如图24所示开始初始化相关寄存器延时ADGO位置1ADGO位是否为0返回ADRES中的8位转换结果NY图24ADC模块程序流程图如图该部分主要子程序程序如下所示/函数功能ADC端口初始化子程序/VOIDINIT_ADPORTA0XFFTRISA0X01/设置RA0为输入ADCON00X41/系统时钟F/8,选择RA0通道,允许ADC工作ADCON10X0E/ADRESH用于存放A/D转换结果高八位,RA0做模拟输入基于PIC单片机SPI接口的数据采集模块设计9口DELAY/函数功能ADC模块接受子程序/UNSIGNEDCHARREAD_ADADGO1WHILEADGORETURNADRESH/只返回转换值的高八位/函数功能延时子程序/VOIDDELAYINTIFORI200I0I23主控同步串口MSSP介绍231I2C总线介绍MSSP模块主要用来和带串行接口的外围器件或者带有同类接口的单片机进行通讯的一种串行接口。这些外围器件可以是串行的RAM、EEPROM、FLASH、LCD驱动器等。MSSP模块可以工作于一下两种模式芯片间总线(I2C)串行外围接口(SPI)I2C总线是PHILIPSSEMICONDUCTORS在20世纪80年代中期开发的,最初用于音频和视频目的,如今主要在服务器管理中使用,由于只需要微控制器的两个端口引脚基于PIC单片机SPI接口的数据采集模块设计10就可以传输任意特性的数据,所以I2C总线协议得到了广泛的应用,并促进了大量的I2C外部芯片的开发。I2C总线可用于控制IC卡、数据转换、LCD控制、时钟控制、存贮器控制、多机通信等。其主要的优点是其简单性和有效性,由于接口在组件上,因此I2C总线占用的空间非常小,其另外一优点是,它支持多主控,其中任何能够进行发送和接受的设备都可以成为主总线,一个主控可以控制信号的传输和时钟频率。当然,在任何时间点上只能有一个主控6。I2C总线是由数据线SDA和时钟SCL构成的串行总线,可发送和接受数据,最高传送速率100KBPS,各种被控制电路均并联在这条总线上,且每个电路和模块都有唯一的地址,在信息传输过程中,I2C总线上并接的每一模块电路既是主控器,又是发送器,这取决与它所要完成的功能。CPU发出的控制信号分为地址码和控制量两部分,地址码用来选址,即接通需要控制的电路,确定控制的种类;控制量决定该调整的类别及需要调整的量。这样,各控制电路虽然挂在同一条总线上,却彼此独立,互不相关。I2C总线在传送数据过程中共有三种类型信号,它们分别是开始信号、结束信号和应答信号。开始信号SCL为高电平时,SDA由高电平向低电平跳变,开始传送数据。结束信号SCL为低电平时,SDA由低电平想高电平跳变,结束传送数据。应答信号接受数据的IC在接受到8BIT数据后,向发送数据的IC发送特定的低电平脉冲,表示已收到数据。CPU向受控单元发送一个信号后,等待受控单元发送一个应答信号,CPU接收到应答信号后,根据实际情况作出是否继续传递信号的判断。若未收到应答信号,则判断受控单元出现故障。232SPI简介串行外围设备接口SPI(SERIALPERIPHERALINTERFACE)总线技术是MOTROLA公司推出的一种同步串行接口。SPI总线是一种三线同步总线,因其硬件能力很强,与SPI有关的软件就相当简单,使CPU有更多的时间处理其它事务,因此得到广泛应用。SPI模式允许8位数据同步发送和接收,支持SPI的所有四种方式。SPI模式传输数据需要四根信号线串行数据输出(SDO)线、串行数据输入(SDI)线、串行时钟(SCK)和从选择(SS)。其中,从选择线只用于从属模式。当主控同步串口工作于SPI接口模式时,其电路结构如图33所示7基于PIC单片机SPI接口的数据采集模块设计11图25SPI接口电路结构图SPI的核心部分是数据缓冲器SSPBUF和由SSPBUF实现装载与卸载的数据移位寄存器SSPSR,寄存器SSPSR数据移入端与引脚SDI连接,其输出端与SDO连接,移位时钟取自引脚SCK。要让SPI串行端口工作,必须把MSSP模块的使能位SSPEN置1。这样就可以把引脚SDI、SDO、SCK和SS作为SPI接口的专用引脚,并且还得对其方向位进行相应定义SDI引脚的I/O方向由SPI接口自动控制,应设TRISC41SDO引脚定义为输出,即TRISC50在主控方式下,SCK引脚为输出,即TRISC30在从动方式下,SCK引脚为输入,即TRISC31在从动方式下如果用到SS引脚,则定义为输入,即TRISA51针对本设计,主机和从机的SPI模块的初始化程序分别如下所示基于PIC单片机SPI接口的数据采集模块设计12/函数功能主机SPI端口初始化程序/VOIDINIT_SPITRISC50/SDO引脚定义为输出TRISC30/SCK引脚定义为输出TRISB10/RB1引脚定义为输出SSPCON0X30/允许串行口工作,时钟F/4SSPSTAT0X80/在输出数据末端采样输入数据/函数功能SPI方式初始化程序如下/VOIDINIT_SPITRISA51/RA5片选引脚定义为输入TRISB0X00/B口定义为输出TRISC31/SCK引脚定义为输入TRISC41/SDI引脚定义为输入SSPCON0X34/SPI从动工作方式SSPSTAT0X00两片PIC单片机直接进行SPI通讯,其典型电路连接如图42所示,SPI主要使用4个信号MOSI、MISO、SCK串行时钟和CS片选。其中,SCK由主机产生,在双机SPI通讯中,这四个信号线的连接如图42所示主机的SDO与从机的SDI相连,主机的SDI与从机的SDO相连,主机的SCK与从机的SCK相连作为传输的同步时钟,控制所有数据传输;另外在双机SPI通讯中,还必须用到从机的RA5/SS引脚,主机通过控制从机RA5/SS引脚是高电平还是低电平来决定SPI传输是否能够进行,当RA5/SS引脚为低电平时,从机可以进行发送和接受,当RA5/SS引脚为基于PIC单片机SPI接口的数据采集模块设计13高电平时,即使在发送数据过程中,从机的SDO输出也会变为高阻浮空状态。主机和从机都要用到串行输入缓冲器(SSPBUF)主机通过向自己的SPI串行寄存器写入1个字节来发起1次传输,然后通过SDO信号线将数据传给从机,同时从机也可将将自己移位寄存器中的内容通过SDO信号线返回给主机,如图42所示。这样,两个移位寄存器中的内容就交换了。在实际应用中,如果只进行写操作,则主机只需忽略收到的字节即可;如果主机要读外设的数据,必须发送1个字节来引发从机的传输,发送的这个字节可以是任意数据8。串行输入缓冲器(SSPBUF)移位寄存器(SSPSR)串行输入缓冲器(SSPBUF)移位寄存器(SSPSR)主控制器SSPM3SSPM000XXB从SSPM3SSPM0010XBSDOSDISCKSCKSDISDORB1SSRA5图26双机SPI通讯连接框图233SPI主模式接口设计由于控制时钟SCK的输出,主模式可以在任何时候开始传输数据,在主模式中,一旦SSPUF寄存器写入,数据就会发送或接收。在接收数据时,SSPSR寄存器按照时钟速率移位,一旦接收到一个字节,数据就传输到SSPBUF,同时中断标志位和状态标志位置位。时钟的极性可以通过编程改变。在主模式中,时钟SCK的频率可以设置为FOSC/4即TCY、FOSC/16即4TCY、FOSC/64即16TCY和定时器2(TIMER2)输出的二分频等四种。在本设计的主机中,使用的就是SPI主模式,由单片机控制时钟SCK的输出,基于PIC单片机SPI接口的数据采集模块设计14由RB1引脚控制从机的片选引脚,可以随时向从机发送数据;如果要连续发送数据,那么每次将数据送到SSPBUF寄存器后,都要判断是否已经发送完该数据,即判断PIR1寄存器的SSPIF位是否为1。如果SSPIF位为1,则表明数据已经发送完毕,可以继续发送下一个数据。但此时还不能立即发送下一个数据,因为SSPIF位必须在程序中由软件清零,只有将SSPIF位软件清零后,才能继续发送下一个数据。主机SPI模块主要子程序程序代码如下/函数功能主机SPI端口发送子程序/VOIDSPI_FSUNSIGNEDCHARBYTESSPBUFBYTE/向SSPBUF中装入待发送的数据WHILESSPIF/判断数据是否发送完SSPIF0/若发送完,清零SSPIF位234SPI从模式接口设计在SPI从模式,数据的发送和接收领先SCK引脚上输入的外时钟脉冲,当最后一位被锁存后,中断标志位SSPIF(PIR1的D3)位。本设计是采用CKE1控制的从模式,当SS引脚接到VDD时,SPI模式复位,这是一种同步从属工作方式,这时SPI接口必须被定义为从动方式,即SSPCON300100,同时RA5/SS引脚必须定义为输入功能,即TRISA51。此外,当SS引脚输入低电平时,就可以进行接收。/函数功能SPI接收子程序如下/VOIDSPI_JSWHILESSPIF/等待数据接收完毕SSPIF0/软件清零SSPIF位基于PIC单片机SPI接口的数据采集模块设计1524HD7279A芯片原理介绍及接口实现241HD7279A简介HD7279A是一片有串行接口的,可同时驱动8位共阴式数码管的智能显示驱动芯片,该芯片同时还可连接多达64键的键盘矩阵,单片即可完成LED显示、键盘接口的全部功能,其引脚如图27所示。HD7279A内部含有译码器,可直接接受BCD码或16进制码,并同时具有2中译码方式,还具有多种控制指令,如消隐、闪烁、左移、右移、段寻址等;HD7279A具有片选信号,可方便地实现多于8位的显示或多于64键的键盘接口。特点如下串行接口,无需外围元件可直接驱动LED各位独立控制译码/不译码及消隐和闪烁属性(循环)左移/(循环)右移指令具有段寻址指令,方便控制独立LED64键盘控制器,内含去抖动电路有DIP和SOIC两种封装形式供选择VD1NC3S456LK7ATEY9G0FBPOIRUH图27HD7279A引脚图引脚说明如表24所示基于PIC单片机SPI接口的数据采集模块设计16表24HD7279A引脚说明引脚名称说明1,2VDD正电源3,5NC无连接,必须悬空4VSS接地6CS片选输入端,次引脚为低电平时,可向芯片发送指令,及读取键盘数据7CLK同步时钟输入端,向芯片发送数据及读取键盘数据时,此引脚电平上升沿表示数据有效8DATA串行数据输入/输出端,当芯片接受指令时,此引脚为输入端;当读取键盘数据时,此引脚在读指令最后一个时钟的下降沿变为输出端9KEY按键有效输出端,平时为高电平,当检测到有效按键时,此引脚变为低电平1016SGSA段G段A驱动输出17DP小数点驱动输出1825DIG0DIG7数字07驱动输出26CLK0震荡输出端27RCRC振荡器连接端28RESET复位端242HD7279指令介绍不带数据的指令1、复位(清除)指令A4H当HD7279A收到该指令后,将所有的显示清除,所有设置的字符消隐、闪烁等属性也被一起清除。执行该指令后,芯片所处的状态与系统上电后所处的状态一样。2、测试指令BFH该指令使所有的LED全部点亮,并处于闪烁状态,主要用于测试3、左移指令A1H/右移指令A0H基于PIC单片机SPI接口的数据采集模块设计17使所有的显示自右向左(自左向右)移动一位,但对各位所设置的消隐及闪烁属性不变。移动后,最右边(左边)一位为空。4、循环左移指令A3H与左移指令类似,不同之处在于移动后最左边一位内容显示于最右边。5、循环右移指令A2H与循环左移指令类似,但移动方向相反。带有数据的指令1、下载数据且按方式0译码如表25所示表25方式0指令格式D7D6D5D4D3D2D1D0D7D6D5D4D3D2D1D010000A2A1A0DPXXXD3D2D1D0X无影响。命令由两个字节组成,前半部分为指令,其中A2,A1,A0为位地址,具体分配如表26所示表26位地址A2A1A0显示位00010012010301141005101611071118D0D3为数据,收到此指令时,HD7279A按一下规则(译码方式0)进行译码,如表27所示表27方式0译码方式D3D0D3D2D1D07段显示00H00000基于PIC单片机SPI接口的数据采集模块设计1801H0001102H0010203H0011304H0100405H0101506H0110607H0111708H1000809H100190AH10100BH1011E0CH1100H0DH1101L0EH1110P0FH1111空小数点的显示由DP位控制,DP1时,小数点显示,DP0时,小数点不显示。2、下载数据且按方式1译码格式如表28所示表28方式1指令格式D7D6D5D4D3D2D1D0D7D6D5D4D3D2D1D011001A2A1A0DPXXXD3D2D1D0X无影响。此指令与上一条指令基本相同,所不同的是译码方式,该指令的译码方式如表29进行表29方式1译码方式D3D0D3D2D1D07段显示00H0000001H0001102H0010203H00113基于PIC单片机SPI接口的数据采集模块设计1904H0100405H0101506H0110607H0111708H1000809H100190AH1010A0BH1011B0CH1100C0DH1101D0EH1110E0FH1111F3、下载数据但不译码指令格式如表210所示表210下载数据不译码指令格式D7D6D5D4D3D2D1D0D7D6D5D4D3D2D1D010010A2A1A0DPABCDEFG其中A2,A1,A0为位地址,AG和DP为显示数据,分别对应7段LED数码管的各段。数码管各段的定义见下图。当相应的数据位为1时,该段点亮,否则不亮。图28数码管各段定义4、闪烁控制88H,指令格式如表211所示表211闪烁指令指令格式D7D6D5D4D3D2D1D0D7D6D5D4D3D2D1D010001000D8D7D6D5D4D3D2D1基于PIC单片机SPI接口的数据采集模块设计20此命令控制各个数码管的闪烁属性。D1D8分别对应数码管18,0闪烁,1不闪烁。开机后,缺省的状态为各位均不闪烁。5、消隐控制98H,其指令格式如表212所示表212消隐控制指令格式D7D6D5D4D3D2D1D0D7D6D5D4D3D2D1D010011000D8D7D6D5D4D3D2D1此命令控制各个数码管的消隐属性。D1D8分别对应数码管18,1显示,0消隐。当某一位被赋予了消隐属性后,HD7279A在扫描时将跳过该位,因此在这种情况下无论对该位写入何值,均不会被显示,但写入的值将被保留,在该位重新设置为显示状态后,最后一次写入的数据将被显示出来,当无需用到全部8个数码管的时候,将不用到的位设为消隐属性,可以提高显示的亮度。6、段点亮指令E0H,其指令格式如表212所示表212段点亮指令格式D7D6D5D4D3D2D1D0D7D6D5D4D3D2D1D011000000XXD6D5D4D3D2D1段寻址命令,作用为关闭(熄灭)数码管中的某一段,指令结构与段点亮指令相同。243HD7279A的接口实现HD7279A采用串行方式与未处理器通讯,串行数据从DATA引脚送入芯片,并由CLK端同步。当片选信号变为低电平后,DATA引脚上的数据在CLK引脚的上升沿被写入HD7279A的缓冲寄存器。HD7279A的指令结构有三种类型1、不带数据的纯指令,指令的宽带为8个BIT,即微处理器需发送8个CLK脉冲。2、带有数据的指令,宽度为16个BIT,即微处理器需发送16个CLK脉冲。3、读取键盘数据指令,宽度为16个BIT,前8个为微处理器发送到HD7279A的指令,后8个BIT为HD7279A返回的键盘代码。执行此指令时,HD7279A的DATA端在第9个CLK脉冲的上升沿变为输出状态,并与第16个脉冲的下降沿恢复为输入状态,等待接收下一个指令。HD7279A应连接共阴式数码管,无需用到的键盘和数码管可以不连接。因为采用循环扫描的工作方式,如果采用普通数码管,亮度有可能不够,采用高亮度的型基于PIC单片机SPI接口的数据采集模块设计21号,可以解决这个问题,数码管的尺寸亦不宜选的过大。HD7279A的RESET复位端在一般应用情况下,可以直接与正电源连接,在需要较高可靠性的情况下,可以连接一外部复位电路。在上电或RESET端由低电平变为高电平后,HD7279A大约需要经过1825MS的时间才会进入正常工作状态。程序中,尽可能地减少CPU对HD7279A的访问次数,可以使得程序更有效率。因为芯片直接驱动LED数码管显示,电流较大,且为动态扫描方式,故如果该部分电路电源连线较细较长,肯能会引入较大的电源噪声干扰,将HD7279A的正负电源端上并入去耦电容可以提高电路的抗干扰能力3。其与单片机的接口电路如图29所示VD12NC3S456LK7AT8EY9G0FBPOIRUHPABFCGDE图29HD7279A与单片机接口电路图程序如下所示INCLUDEDEFINEUCHARUNSIGNEDCHARDEFINECSRB7DEFINECLKRB6DEFINEDATARB5基于PIC单片机SPI接口的数据采集模块设计22DEFINEKEYRB4/函数功能向HD7279A写入一个字节/VOIDSEND_BYTEUCHAROUT_BYTEUCHARICS0LONG_DELAYFORI0IBUILDALL来建立应用,这将创建这个应用的目标代码,用于MPLABICD2给目标板编程,系统调试如图33所示,图图33系统调试图基于PIC单片机SPI接口的数据采集模块设计2934系统程序流程图主机部分开始初始化AD模块及SPI模块相关寄存器片选输出RB1置0,ADGO置1,开始AD转换ADGO位是否是0是否收到从机数据装载SSPBUF,开始SPI发送SSPIF是否为1SSPIF位清零NYYN图34主机部分程序流程图基于PIC单片机SPI接口的数据采集模块设计30从机部分开始初始化SPI发送模块及B口相关寄存器通过SPI接口向主机发送一信号SSPIF是否是1清零SSPIF并对接受的数据进行工程量变换N初始化并开始SPI接受模块将数据送入HD7279A从而显示出来图35从机部分程序流程图基于PIC单片机SPI接口的数据采集模块设计314结论本文就PIC单片机实现模拟电压的采集并显示进行了研究,通过硬件设计和软件调试满足了基本功能的需要。PIC单片机内部集成的ADC模块,从而使硬件变得更加简单,通过两片PIC单片机之间的SPI通讯,从而使系统具备了强大的扩展能力,由于PIC16F87A的内部ADC只有10位,故其只能满足一般精度要求的数据采集,若系统对A/D转换的精度要求比较高的话,可以考虑外接专门的A/D转换芯片,或换用其他的微处理器。总体来说,本系统可以完成模拟电压的采集和显示。在硬件设计,软件调试的过程中,也记录下了一些遇到的问题,为以后的学习工作提供参考。总结本设计,可归纳为以下几点1HD7279A是显示模块的重要组成部分,其功能非常强大,无需外围元件可直接驱动LED,且最多可扩展64键盘接口,但本设计主要运用的是其显示功能,没有外扩键盘接口,因此并没有完全发挥其功能,在以后的系统设计中,若用到键盘控制、数码管显示,可选择用此芯片。2在软件方面,在网上下载的MPLABIDE软件只支持汇编语言,没有C语言编译器,若要用C语言,还必须下载第三方软件HITECH软件,然后安装HITECHC编译器,在使用MPLABICD2在线调试器时,必须要设置好调试选项里面的配置位,选择CONFIGURECONFIGURATIONBITS正确设置后,才能正常下载程序。3在显示效果方面,要想数码管有比较好的显示效果,在软件方面,必须设置好延时程序,需要反复调试才行,由于时间紧迫,本设计数码管的显示效果一般,这点需要改进。4电源模块虽然已经设计好,但由于时间关系,没有做出实物,而是采用USB线跟电脑相连给系统板子供电,实践证明USB线提供的5V电压很稳定。总之,虽然本系统再设计方面还存在一些不足之处,回顾半年来,自己从中获得了很大的收获,要完成一项任务,就要学习、阅读大量书籍和参考资料,加强自己的理论基础知识及认识,多培养自己的设计能力、调试技巧,增加实践能力,用实践来验证所学的基本理论。这学期以来,自己的理论水平和动手能力都得到了一定的提高,自己的独立分析和解决问题的能力也得得到了很大的提高。由于本人的时间和能力有限,文中难免有不足之处,恳请各位老师批评指正。基于PIC单片机SPI接口的数据采集模块设计32致谢在此次毕业设计中,首先参考文献1李学海PIC单片机实用教程M北京航空航天大学出版社,20072李海涛PIC单片机应用开发典型模块M人民邮电出版社20053康华光电子技术基础(数字部分)M高等教育出版社,20044李学海PIC单片机实用教程提高篇,北京航空航天大学出版社,2002201655范逸之,利用VISUALBASIC实现串并行通信技术,清华大学出版社,20016陈雪丽单片机原理及接口技术化学工业出版社,20057赵学军基于多机SPI协议的多机通信J单片机与嵌入式系统应用,2006200308基于PIC单片机SPI接口的数据采集模块设计338左东广,魏瑞轩SPI接口技术及应用J工业控制计算机,2001871069易志明,林凌,郝丽宏,李树靖SPI串行总线接口及其实现J自动化与仪器仪表,2002,0610邓素萍,吴方SPI串行总线与单片机系统的优化设计J南京师范大学学报工程技术版,2002,0311潘天红,和卫星SPI串行总线与单片机系统的优化设计J测控技术,200113017612李振军ATMELAVR单片机SPI接口的应用研究J湖南广播电视大学学报,2003,0413施庆隆PIC16F87X单片机原理与专题应用,200314WANG,J;C

温馨提示

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

评论

0/150

提交评论