




已阅读5页,还剩39页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
基于PIC单片机SPI接口的数据采集模块设计摘 要 PIC单片机比MCS-51单片机功能更强大,因为其内部集成了A/D转换模块、USART通讯模块及MSSP端口;本文介绍一种基于PIC16F877A单片机的数据采集模块的设计。首先主机的A/D端口接电位器,实现模拟电压向数字信号的转换,然后对转换后得数据通过SPI接口传输给从机,从机通过显示控制芯片HD7279A,最后通过四位数码管把采集的模拟电压显示出来。系统需要两片单片机完成,分为主机和从机,主机完成数据的采集、A/D转换,转换结果的输出,从机主要完成数据的接受,工程量变换功能。程序采用C语言编写,在集成开发环境MPLAB-IDE下完成编译及程序下载,最终实现能通过调节电位器实现变化的电压显示。关键词 PIC单片机 数据采集 A/D转换 SPI接口 DESIGN OF DATA COLLECTION SYSTEM BASED ON THE SPI PORT of PIC MICROCONTROLLERABSTRACTThe function of PIC MCU is more powerful than MCS-51, because it integrate a large number of on-chip peripherals such as AD converter module. USART communication module and MSSP port, This article introduced the design of data collection system based on the SPI port of PIC MCU, first the ADC converter module is connected with the potentiometer, so the analog voltage can be converted to digital signal, and then send them to the master microprocessor by the SPI port, The slave display the analog voltage through multi-point calibration which is controlled by the HD7279A.It needs two pieces of microcontroller to do the job, which is divided into the master and the slave, the former completes data collection, A / D conversion, the conversion results of output, and the later accepts the data transmission as well as the quantity change. C language is used in programming, the MPLAB-IDE integrated development environment completes compiling and downloading. And finally the analog voltage is displayed.KEY WORDS PIC MCU Data Collection AD Conversion SPI Port目 录摘 要IABSTRACTII1 绪论11.1 课题背景及研究意义11.2 本设计方案介绍22 硬件部分设计32.1 PIC单片机介绍32.1.1 PIC单片机的优越之处32.1.2 PIC16F877A最小系统图及主要性能42.2 PIC单片机片内ADC模块及接口实现52.2.1 ADC模块结构和操作原理52.2.2 ADC模块相关的寄存器介绍62.2.3 A/D转换接口电路设计72.3 主控同步串口MSSP介绍92.3.1 I2C总线介绍92.3.2 SPI 简介102.3.3 SPI主模式接口设计132.3.4 SPI从模式接口设计142.4 HD7279A芯片原理介绍及接口实现152.4.1 HD7279A简介152.4.2 HD7279指令介绍162.4.3 HD7279A的接口实现202.5 电源模块233 软件设计程序流程图253.1 C语言编程简介253.2 MPLAB IDE编程环境简介253.3 MPLAB ICD2介绍263.3.1 MPLAB ICD2系统组成263.3.2 MPLAB ICD2的安装和配置273.4 系统程序流程图294结论31致 谢32参考文献33附 录134附 录235附 录3361 绪论1.1 课题背景及研究意义在工业生产和日常生活中,经常要对模拟信号进行测量与控制,例如在有些系统中经常要对模拟电压信号进行采集并显示出来,于是数据采集模块必不可少。数据采集涉及多学科,所研究的对象是物理或生物等各种非电或电信号,如温度、压力、流量、位移等模拟量,根据各种非电或电信号的特征,利用相应的归一化技术,将其转化为可真实反映事物特征的电信号后,经A/D转换器转换为计算机可识别的有限二进制数编码,即数字量,并进行存储、处理、显示或打印。以此二进制数字编码作为研究自然科学和实现工业实施控制的重要依据,实现对宏观和微观自然科学的量化认识3。在当今社会各个领域,包括科研和实验研究,数据采集系统有着不可替代的作用,数据采集和处理进行的越及时,工作效率就越高,取得的经济效益就越大,数据采集系统性能的好坏主要取决于它的精度和速度,在保证精度的条件下,还要尽可能地提高采样速度,以满足实时采集、实时处理和实时控制的要求。数据分析是指用适当的方法对采集的数据进行分析,以求最大化的开发数据资料的功能,发挥数据的作用,并将分析结果显示出来,通过数据采集硬件采集到数据,然后将其传送到CPU中,应用不同的软件,将采集到的数据进行实时分析,并显示出分析结果。其典型的系统组成如图1-1所示1:物理量传感器信号调理数据分析SOFTWARECPU数据采集硬件变换器图1-1 数据采集典型系统框图1.2 本设计方案介绍本设计主要由PIC单片机完成。模拟信号的采集离不开AD转换,通常我们都是采用AD转换器实现由模拟量到数字量的转换,然后将数字信号输入单片机进行数字处理;其特点是工作性能可靠、稳定,但灵活性差、成本也比较高。本文所介绍的技术是利用PIC单片机的特点结合AD转换的技术直接实现AD转换,该方法只需外接少量元件,而且分辨率可编程设置,且可实现多路AD转换,此技术主要用于控制精度要求不是很高、成本要求较低的电子产品中,意义尤为突出1。PIC单片机具有SPI总线,SPI是一种高速的、全双工、同步的通信总线,并且只占用四根线。为了系统功能的扩展,又是一个单片机不能完成整个系统的要求,这时就需要两个单片机,第一片完成数据的采集、AD转换、转换结果的输出,第二片主要完成数据的接受,工程量变换等功能,本设计就是基于这种情况而设计的。数据采集模块构架框图如图1-1所示:PIC16F877A最小系统(从机)PIC16F877A最小系统(主机)数据采集模块HD7279A显示控制芯片四位数码显示模块AD转换转换SPI图1-2 数据采集模块构架框图通过上图可知,要完成本系统设计,一下几个模块必不可少,按照数据流动的先后顺序,依次是:AD采集模块、SPI模块、HD7279显示控制模块,各模块联系紧密,在下面的论文当中,会按照这个顺序一一进行介绍。要想成功完成设计,硬件和软件两者缺一不可。2 硬件部分设计2.1 PIC单片机介绍2.1.1 PIC单片机的优越之处 PIC单片机采用了RISC结构,其高速度、低电压、低功耗、大电流LCD驱动能力和低价位OTP技术等都体现出单片机产业的新趋势。PIC16F877是Microchip公司于1998年底推出的一款特色鲜明的新产品,片内资源丰富,使用方便等诸多优点使其在应用领域中越来越受用户喜爱,这也是本设计为什么要采用它的原因,其主要特点如下所述13:(1)哈弗总线结构:MCS-51单片机的总线结构是冯-诺依曼型,计算机 在同一个存储空间取指令和数据,两者不能同时进行;而PIC单片机的总线结构是哈佛结构,指令和数据空间是完全分开的, 正因如此,PIC单片机程序和数据总线可以采用不同的宽度。数据总线都是8位的,但指令总线位数分别位 12、14、16位。(2)流水线结构:MCS-51单片机的取指和执行采用单指令流水线结构,即取一条指令,执行完后再取下一条指令;而PIC的取指和执行采用双指令流水线结构,当一条指令被执行时,允许下一条指令同时被取出,这样就实现了单周期指令。 (3)寄存器组:PIC单片机的所有寄存器,包括I/O口,定时器和程序计数器等都采用RAM结构形式,而且都只需要一个指令周期就可以完成访问和操作;而MCS-51单片机需要两个或两个以上的周期才能改变寄存器的内容。(4)运行速度高、功耗低(5)驱动能力强、程序保密性强每个I/O引脚吸入和输出电流的最大值可分别达到25mA和20mA,能够直接驱动发光二极管LED、光电耦合器或者轻微继电器等;其内部程序尚无法直接进行拷贝,可最大限度保护用户版权1。2.1.2 PIC16F877A最小系统图及主要性能 由于本系统对速度要求并不是很高,故没必要采用很高的晶振,4M已经可以满足系统需求。由于上电复位不是很可靠,程序一旦跑飞就得重新上电,故本系统采用按键复位电路,上电复位电阻为10K,电容选电解电容10uF,该电路的优点在于降低复位引脚对地的阻抗,可以显著增强单片机复位电路的抗干扰能力,并且有利于程序的调试,PIC16F877A的最小系统如图2.21所示: 图2-1 PIC16F877A最小系统图与本设计相关主要性能参数如下所示6:l 具有高性能的CPUl 除程序分支指令为两个周期外,其余均为单周期指令l 8K * 14个 FLASH程序存储器368 * 8 个数据存储器(RAM)字节256 * 8 EEPRM 数据存储器字节l 提供14个中断源l 10位多通道模数转换器l 内部有主控同步串行通讯端口MSSP,可工作于SPI、I2C两种模式l 功耗低在5V,4MHZ 时钟运行时电流小于 2mA在3V,32KHZ 时钟运行时电流小于20uAl 支持在线串行编程(ICSP)l 运行电压范围广,2.0V到5.5Vl 输入及输出电流可达到25mA2.2 PIC单片机片内ADC模块及接口实现2.2.1 ADC模块结构和操作原理 PIC16F87X内部带有10位ADC,40脚封装的芯片内有8通道ADC,其内部结构包含四部分:8选1选择开关、双刀双掷开关、A/D转换电路和采样/保护电路。PIC16F87X的ADC内部结构示意图如图3.1-1所示。图2-2 ADC模块内部结构图ADC模块各部分功能和组成关系如下:(1)8选1选择开关由控制寄存器ADCON0中的CHS2-CHS0位控制,用于在引脚AN0-AN7中选择将要进行转换的输入模拟通道,选中者与内部采样/保持电路接通。(2)双刀双掷切换开关由控制寄存器ADCON1中的PCFG3-PCFG0位控制用于选择A/D转换器所需要的参考电压源的获取途径。(3)A/D转换电路用于实现将模拟信号转换为数字量。(4)采样/保持电路用于对输入模拟信号电平进行抽样,并且为后续A/D转换电路保持一个平稳的电压样值。2.2.2 ADC模块相关的寄存器介绍1. ADC控制寄存器0-ADCON0 见表3-1。表2-1 ADCON0各位描述符号地址Bit7Bit6Bit5Bit4Bit3Bit2bit1Bit0ADCON01FHADCS1ADCS0CHS2CHS1CHS0GO-ADON功能:l ADCS1-ADCS0:A/D转换时钟及频率选择位l CHS2-CHS0:A/D模拟通道选择位l GO/DONE:A/D转换启动控制位,兼作状态位,在ADON=1的前提下,1=启动A/D转换或转换正在进行中,0=A/D转换已完成。2. ADC控制寄存器1-ADCON1见表2-2。表2-2 ADCON1各位描述符号地址Bit7Bit6Bit5Bit4Bit3Bit2bit1Bit0ADCON19FHADFM-PCFG3PCFG2PCFG1PCFG0功能:l ADFM:A/D转换结果格式选择位。1=结果右对齐,ADRESH寄存器高6位读作0;0=结果左对齐,ADRESL寄存器低6位读作0。l PCFG3-PCFG0:A/D模块引脚配置位。这三个决定了功能复用的引脚那些作为普通数字I/O口,哪些作为A/D转换时的电压信号输入。在8位分辨率的A/D转换模块中其组合控制模式见表3-3。表2-3 位分辨率的A/D模块引脚配置PCFG2-PCFG0AN7AN6AN5AN4AN3AN2AN1AN0000AAAAAAAA001AAAAVrefAAA010DDDAAAAA011DDAAVrefAAA100DDDDADAA101DDDDVrefDAA11xDDDDDDDD3. ADC结果高字节寄存器ADRESHl 当ADMF=0时,用于存放A/D转换结果的高8位;当ADMF=1时,用于存放A/D转换结果的高2位,此时结存器的高6位读作0。4. ADC结果低字节寄存器ADRESLl 当ADMF=1时,用于存放A/D转换结果的低8位;当ADMF=0时,用于存放A/D转换结果的低2位,此时寄存器低6位读作0。2.2.3 A/D转换接口电路设计 A/D转换的外围器件是电位器,电位器与+5V电源相连,通过调节电位器R101即可向单片机ADC模块的AN0通道输入连续变化的模拟电压信号。其硬件电路图如图3.2所示: 图2-3 A/D转换接口电路图ADC模块程序流程图如图2-4所示:开始初始化相关寄存器延时ADGO位置1ADGO位是否为0返回ADRES中的8位转换结果NY图2-4 ADC模块程序流程图如图该部分主要子程序程序如下所示:/*函数功能:ADC端口初始化子程序*/void init_ad()PORTA=0XFF;TRISA=0X01; /设置RA0为输入ADCON0=0X41; /系统时钟f/8,选择RA0通道,允许ADC工作ADCON1=0X0E; /ADRESH用于存放A/D转换结果高八位,RA0做模拟输入口delay();/*函数功能:ADC模块接受子程序*/unsigned char read_ad()ADGO=1;while(ADGO);return(ADRESH); /只返回转换值的高八位/*函数功能:延时子程序*/void delay()int i;for(i=200;i0;i-);2.3 主控同步串口MSSP介绍2.3.1 I2C总线介绍MSSP模块主要用来和带串行接口的外围器件或者带有同类接口的单片机进行通讯的一种串行接口。这些外围器件可以是串行的RAM、EEPROM、Flash、LCD驱动器等。MSSP模块可以工作于一下两种模式:l 芯片间总线(I2C)l 串行外围接口(SPI)I2C总线是Philips Semiconductors在20世纪80年代中期开发的,最初用于音频和视频目的,如今主要在服务器管理中使用,由于只需要微控制器的两个端口引脚就可以传输任意特性的数据,所以I2C总线协议得到了广泛的应用,并促进了大量的I2C外部芯片的开发。I2C总线可用于控制IC卡、数据转换、LCD控制、时钟控制、存贮器控制、多机通信等。其主要的优点是其简单性和有效性,由于接口在组件上,因此I2C总线占用的空间非常小,其另外一优点是,它支持多主控,其中任何能够进行发送和接受的设备都可以成为主总线,一个主控可以控制信号的传输和时钟频率。当然,在任何时间点上只能有一个主控6。I2C总线是由数据线SDA和时钟SCL构成的串行总线,可发送和接受数据,最高传送速率100kbps,各种被控制电路均并联在这条总线上,且每个电路和模块都有唯一的地址,在信息传输过程中,I2C总线上并接的每一模块电路既是主控器,又是发送器,这取决与它所要完成的功能。CPU发出的控制信号分为地址码和控制量两部分,地址码用来选址,即接通需要控制的电路,确定控制的种类;控制量决定该调整的类别及需要调整的量。这样,各控制电路虽然挂在同一条总线上,却彼此独立,互不相关。I2C总线在传送数据过程中共有三种类型信号,它们分别是:开始信号、结束信号和应答信号。开始信号:SCL为高电平时,SDA由高电平向低电平跳变,开始传送数据。结束信号:SCL为低电平时,SDA由低电平想高电平跳变,结束传送数据。应答信号:接受数据的IC在接受到8bit数据后,向发送数据的IC发送特定的低电平脉冲,表示已收到数据。CPU向受控单元发送一个信号后,等待受控单元发送一个应答信号,CPU接收到应答信号后,根据实际情况作出是否继续传递信号的判断。若未收到应答信号,则判断受控单元出现故障。2.3.2 SPI 简介串行外围设备接口SPI(Serial Peripheral Interface)总线技术是Motrola公司推出的一种同步串行接口。SPI总线是一种三线同步总线,因其硬件能力很强,与SPI有关的软件就相当简单,使CPU有更多的时间处理其它事务,因此得到广泛应用。SPI模式允许8位数据同步发送和接收,支持SPI的所有四种方式。SPI模式传输数据需要四根信号线:串行数据输出(SDO)线、串行数据输入(SDI)线、串行时钟(SCK)和从选择(SS)。其中,从选择线只用于从属模式。当主控同步串口工作于SPI接口模式时,其电路结构如图3.3所示7:图2-5 SPI接口电路结构图SPI的核心部分是数据缓冲器SSPBUF和由SSPBUF实现装载与卸载的数据移位寄存器SSPSR,寄存器SSPSR数据移入端与引脚SDI连接,其输出端与SDO连接,移位时钟取自引脚SCK。要让SPI串行端口工作,必须把MSSP模块的使能位SSPEN置1。这样就可以把引脚SDI、SDO、SCK和SS作为SPI接口的专用引脚,并且还得对其方向位进行相应定义:l SDI引脚的I/O方向由SPI接口自动控制,应设TRISC4=1;l SDO引脚定义为输出,即TRISC5=0;l 在主控方式下,SCK引脚为输出,即TRISC3=0;l 在从动方式下,SCK引脚为输入,即TRISC3=1;l 在从动方式下如果用到SS引脚,则定义为输入,即TRISA5=1;针对本设计,主机和从机的SPI模块的初始化程序分别如下所示:/*函数功能:主机SPI端口初始化程序*/void init_spi()TRISC5=0; /SDO引脚定义为输出TRISC3=0; /SCK引脚定义为输出TRISB1=0; /RB1引脚定义为输出SSPCON=0X30; /允许串行口工作,时钟=f/4SSPSTAT=0X80; /在输出数据末端采样输入数据/*函数功能:SPI方式初始化程序如下:*/void init_spi()TRISA5=1; /RA5(片选)引脚定义为输入TRISB=0X00; /B口定义为输出TRISC3=1; /SCK引脚定义为输入TRISC4=1; /SDI引脚定义为输入SSPCON=0X34; /SPI从动工作方式SSPSTAT=0X00;两片PIC单片机直接进行SPI通讯,其典型电路连接如图4.2所示,SPI主要使用4个信号:MOSI、MISO、SCK(串行时钟)和CS(片选)。其中,SCK由主机产生,在双机SPI通讯中,这四个信号线的连接如图4-2所示:主机的SDO与从机的SDI相连,主机的SDI与从机的SDO相连,主机的SCK与从机的SCK相连作为传输的同步时钟,控制所有数据传输;另外在双机SPI通讯中,还必须用到从机的RA5/SS引脚,主机通过控制从机RA5/SS引脚是高电平还是低电平来决定SPI传输是否能够进行,当RA5/SS引脚为低电平时,从机可以进行发送和接受,当RA5/SS引脚为高电平时,即使在发送数据过程中,从机的SDO输出也会变为高阻浮空状态。主机和从机都要用到串行输入缓冲器(SSPBUF);主机通过向自己的SPI串行寄存器写入1个字节来发起1次传输,然后通过SDO信号线将数据传给从机,同时从机也可将将自己移位寄存器中的内容通过SDO信号线返回给主机,如图4.2所示。这样,两个移位寄存器中的内容就交换了。在实际应用中,如果只进行写操作,则主机只需忽略收到的字节即可;如果主机要读外设的数据,必须发送1个字节来引发从机的传输,发送的这个字节可以是任意数据8。串行输入缓冲器(SSPBUF)移位寄存器(SSPSR)串行输入缓冲器(SSPBUF)移位寄存器(SSPSR)主控制器SSPM3:SSPM0=00xxb从SSPM3:SSPM0=010xbSDOSDISCKSCKSDISDORB1SS(RA5)图2-6 双机SPI通讯连接框图2.3.3 SPI主模式接口设计由于控制时钟SCK的输出,主模式可以在任何时候开始传输数据,在主模式中,一旦SSPUF寄存器写入,数据就会发送或接收。在接收数据时,SSPSR寄存器按照时钟速率移位,一旦接收到一个字节,数据就传输到SSPBUF,同时中断标志位和状态标志位置位。时钟的极性可以通过编程改变。在主模式中,时钟SCK的频率可以设置为:fosc/4(即Tcy)、fosc/16(即4Tcy)、fosc/64(即16Tcy)和定时器2(Timer2)输出的二分频等四种。在本设计的主机中,使用的就是SPI主模式,由单片机控制时钟SCK的输出,由RB1引脚控制从机的片选引脚,可以随时向从机发送数据;如果要连续发送数据,那么每次将数据送到SSPBUF寄存器后,都要判断是否已经发送完该数据,即判断PIR1寄存器的SSPIF位是否为1。如果SSPIF位为1,则表明数据已经发送完毕,可以继续发送下一个数据。但此时还不能立即发送下一个数据,因为SSPIF位必须在程序中由软件清零,只有将SSPIF位软件清零后,才能继续发送下一个数据。主机SPI模块主要子程序程序代码如下:/*函数功能:主机SPI端口发送子程序*/void spi_fs(unsigned char byte)SSPBUF=byte; /向SSPBUF中装入待发送的数据while(!SSPIF); /判断数据是否发送完SSPIF=0; /若发送完,清零SSPIF位2.3.4 SPI从模式接口设计在SPI从模式,数据的发送和接收领先SCK引脚上输入的外时钟脉冲,当最后一位被锁存后,中断标志位SSPIF(PIR1的D 3)位。本设计是采用CKE=1控制的从模式,当SS引脚接到VDD时,SPI模式复位,这是一种同步从属工作方式,这时SPI接口必须被定义为从动方式,即SSPCON3:0=0100,同时RA5/SS引脚必须定义为输入功能,即TRISA5=1。此外,当SS引脚输入低电平时,就可以进行接收。/*函数功能:SPI接收子程序如下:*/void spi_js()while(!SSPIF); /等待数据接收完毕SSPIF=0; /软件清零SSPIF位2.4 HD7279A芯片原理介绍及接口实现2.4.1 HD7279A简介HD7279A是一片有串行接口的,可同时驱动8位共阴式数码管的智能显示驱动芯片,该芯片同时还可连接多达64键的键盘矩阵,单片即可完成LED显示、键盘接口的全部功能,其引脚如图2-7所示。HD7279A内部含有译码器,可直接接受BCD码或16进制码,并同时具有2中译码方式,还具有多种控制指令,如消隐、闪烁、左移、右移、段寻址等;HD7279A具有片选信号,可方便地实现多于8位的显示或多于64键的键盘接口。特点如下:l 串行接口,无需外围元件可直接驱动LEDl 各位独立控制译码/不译码及消隐和闪烁属性l (循环)左移/(循环)右移指令l 具有段寻址指令,方便控制独立LEDl 64键盘控制器,内含去抖动电路l 有DIP和SOIC两种封装形式供选择图2-7 HD7279A引脚图引脚说明如表2-4所示:表2-4 HD7279A引脚说明引脚名称说明1,2VDD正电源3,5NC无连接,必须悬空4VSS接地6CS片选输入端,次引脚为低电平时,可向芯片发送指令,及读取键盘数据7CLK同步时钟输入端,向芯片发送数据及读取键盘数据时,此引脚电平上升沿表示数据有效8DATA串行数据输入/输出端,当芯片接受指令时,此引脚为输入端;当读取键盘数据时,此引脚在读指令最后一个时钟的下降沿变为输出端9KEY按键有效输出端,平时为高电平,当检测到有效按键时,此引脚变为低电平10-16SG-SA段g-段a驱动输出17DP小数点驱动输出18-25DIG0-DIG7数字0-7驱动输出26CLK0震荡输出端27RCRC振荡器连接端28RESET复位端2.4.2 HD7279指令介绍l 不带数据的指令1、复位(清除)指令A4H当HD7279A收到该指令后,将所有的显示清除,所有设置的字符消隐、闪烁等属性也被一起清除。执行该指令后,芯片所处的状态与系统上电后所处的状态一样。2、测试指令BFH该指令使所有的LED全部点亮,并处于闪烁状态,主要用于测试3、左移指令A1H/右移指令A0H使所有的显示自右向左(自左向右)移动一位,但对各位所设置的消隐及闪烁属性不变。移动后,最右边(左边)一位为空。4、循环左移指令A3H与左移指令类似,不同之处在于移动后最左边一位内容显示于最右边。5、循环右移指令A2H与循环左移指令类似,但移动方向相反。l 带有数据的指令1、 下载数据且按方式0译码如表2-5所示:表2-5 方式0指令格式D7D6D5D4D3D2D1D0D7D6D5D4D3D2D1D010000a2a1a0DPXXXd3d2d1d0 X=无影响。 命令由两个字节组成,前半部分为指令,其中a2,a1,a0为位地址,具体分配如表2-6所示:表2-6 位地址a2a1a0显示位00010012010301141005101611071118 d0-d3为数据,收到此指令时,HD7279A按一下规则(译码方式0)进行译码,如表2-7所示:表2-7 方式0译码方式d3-d0d3d2d1d07段显示00H0000001H0001102H0010203H0011304H0100405H0101506H0110607H0111708H1000809H100190AH1010-0BH1011E0CH1100H0DH1101L0EH1110P0FH1111空 小数点的显示由DP位控制,DP=1时,小数点显示,DP=0时,小数点不显示。2、 下载数据且按方式1译码格式如表2-8所示:表2-8 方式1指令格式D7D6D5D4D3D2D1D0D7D6D5D4D3D2D1D011001a2a1a0DPXXXd3d2d1d0 X无影响。 此指令与上一条指令基本相同,所不同的是译码方式,该指令的译码方式如表2-9进行:表2-9 方式1译码方式d3-d0d3d2d1d07段显示00H0000001H0001102H0010203H0011304H0100405H0101506H0110607H0111708H1000809H100190AH1010A0BH1011B0CH1100C0DH1101D0EH1110E0FH1111F3、 下载数据但不译码指令格式如表2-10所示:表2-10 下载数据不译码指令格式D7D6D5D4D3D2D1D0D7D6D5D4D3D2D1D010010a2a1a0DPABCDEFG其中:a2,a1,a0为位地址,A-G和DP为显示数据,分别对应7段LED数码管的各段。数码管各段的定义见下图。当相应的数据位为1时,该段点亮,否则不亮。图2-8 数码管各段定义4、 闪烁控制88H,指令格式如表2-11所示:表2-11 闪烁指令指令格式D7D6D5D4D3D2D1D0D7D6D5D4D3D2D1D010001000d8d7d6d5d4d3d2d1此命令控制各个数码管的闪烁属性。d1-d8分别对应数码管1-8,0=闪烁,1=不闪烁。开机后,缺省的状态为各位均不闪烁。5、 消隐控制98H,其指令格式如表2-12所示:表2-12 消隐控制指令格式D7D6D5D4D3D2D1D0D7D6D5D4D3D2D1D010011000d8d7d6d5d4d3d2d1此命令控制各个数码管的消隐属性。d1-d8分别对应数码管1-8,1=显示,0=消隐。当某一位被赋予了消隐属性后,HD7279A在扫描时将跳过该位,因此在这种情况下无论对该位写入何值,均不会被显示,但写入的值将被保留,在该位重新设置为显示状态后,最后一次写入的数据将被显示出来,当无需用到全部8个数码管的时候,将不用到的位设为消隐属性,可以提高显示的亮度。6、 段点亮指令E0H,其指令格式如表2-12所示:表2-12 段点亮指令格式D7D6D5D4D3D2D1D0D7D6D5D4D3D2D1D011000000XXd6d5d4d3d2d1段寻址命令,作用为关闭(熄灭)数码管中的某一段,指令结构与段点亮指令相同。2.4.3 HD7279A的接口实现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应连接共阴式数码管,无需用到的键盘和数码管可以不连接。因为采用循环扫描的工作方式,如果采用普通数码管,亮度有可能不够,采用高亮度的型号,可以解决这个问题,数码管的尺寸亦不宜选的过大。HD7279A的RESET复位端在一般应用情况下,可以直接与正电源连接,在需要较高可靠性的情况下,可以连接一外部复位电路。在上电或RESET端由低电平变为高电平后,HD7279A大约需要经过18-25MS的时间才会进入正常工作状态。程序中,尽可能地减少CPU对HD7279A的访问次数,可以使得程序更有效率。因为芯片直接驱动LED数码管显示,电流较大,且为动态扫描方式,故如果该部分电路电源连线较细较长,肯能会引入较大的电源噪声干扰,将HD7279A的正负电源端上并入去耦电容可以提高电路的抗干扰能力3。其与单片机的接口电路如图2-9所示:图2-9 HD7279A与单片机接口电路图程序如下所示:#include#define uchar unsigned char#define cs RB7#define clk RB6#define data RB5#define key RB4/*函数功能:向HD7279A写入一个字节*/void send_byte(uchar out_byte)uchar i;cs=0;long_delay();for(i=0;i8;i+)if(out_byte&0x80)data=1;elsedata=0;clk=1;short_delay();clk=0;short_delay();out_byte=out_byte*2;data=0;/*函数功能:向HD7279A写入一个字*/void write7279(uchar cmd,uchar dta)send_byte(cmd);send_byte(dta);/*函数功能:实现工程量的变换*/void gc_bh()int ad1,ad2,ad3,ad4;float temp;temp=ADRESH*4*5/1024;ad1=(int)temp;ad2=(int)(temp*10)-ad1*10);ad3=(int)(temp*100)-ad1*100-ad2*10);ad4=(int)(temp*1000)-ad1*1000-ad2*100-ad1*10);由于本设计对精度要求不是很高,故从机在工程量变换时,只需要选取ADRESH中的高8位为数据,把低两位补零,因此实际的10位二进制数为result=ADRESH*4;把10位二进制数1024和电压5V对应,这样可以近似把0-1024分为5份,每份对应1V电压,故10位二进制数与电压间的转换关系为temp=result*5/1024。2.5 电源模块该电源按常规设计,为系统工作提供所需电源,其输入为220V、50Hz交流电,输出电压等级为+5V,稳定直流源设计的一般思路是让输入电压先通过电压变压器,再通过整流网络,然后经过滤波网络最后经过稳压网络。方案1:我们可以采用桥式整理电路实现整流的目的,以大电容作为滤波电路,然后接负载,这样做有以下不足之处,如果负载的影响很大,电压不可调,以及没有保护电路等一系列问题。我们采用某些芯片可以解决以上问题。方案2:以全波整流电路作为整流网络,以极性电容作为滤波网络,采用78系列稳压器,结构简单,调整方便,输出电压纹波小,电路原理图如图3.1所示。当所需电流超过稳压器标定值时,可采用外接功率管的方法来扩大输出电流。市电交流220V经变压器降压为交流12V,经过全桥整流输出直流电流,再经过1000F的电解电容滤波,除去整流后的交流成分,送至各三端稳压器,输出需要的电压。经过各三端稳压器稳压后,在LM7805输出端输出+5V直流电压3。稳压电源一般由变压器、整流器和稳压器三大部分组成,如图2-10所示。电源变压器整流电路滤波电路稳压电路220V50H+5V输出图2-10 直流电源系统方框图各部分功能如下所示:1. 电源变压器:将220V交流电压转换为各种电路设备所的交流电。2. 整流压电路:利用单向导电器件将交流电转换成脉动直流电路。3. 滤波电路:利用储能元件把脉动直流电转换成比较平坦的直流电。4. 稳压电路:利用电路的调整作用使输出电压稳定的过程称为稳压。具体电路如图2-11所示:图2-11 +5V直流稳压电源3 软件设计程序流程图3.1 C语言编程简介用C语言来开发单片机系统最大的好处是编
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025注册验船师资格考试(C级船舶检验专业案例分析)综合能力测试题及答案二
- 2025年篮球线上考试题及答案
- 航空公务员面试题及答案
- 2025年注册验船师资格考试(A级船舶检验专业法律法规)模拟题及答案一
- 国企银行面试题及答案
- 2025年网络工程师认证考试模拟题及详解
- 广西公务员面试题及答案
- 2025年游戏开发专家面试秘籍与模拟题回顾
- 2025年心理咨询师高级职位竞聘面试指南及模拟题解析
- 2025年药品安全员资格认证考试重点题
- 2025秋季开学初班主任会议德育副校长讲话:从‘知责’到‘善育’这4步你做到几步
- 新生儿病房护理安全管理
- 【课件】酷家乐工具操作基础课程-云设计5.0
- GB 1886.232-2016食品安全国家标准食品添加剂羧甲基纤维素钠
- 地理信息系统技术概述课件
- 脑梗死病人-护理查房课件
- 人类行为与社会环境全套课件
- 医院介入手术病人护送交接流程
- 学校家庭教育指导(班主任培训班) 课件
- 骨关节结核教案
- 楼板厚度检测报告
评论
0/150
提交评论