




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
某电容式燃油液位传感器的软件设计综述目录TOC\o"1-2"\h\u3581某电容式燃油液位传感器的软件设计综述 146701.1编程环境与编程语言 1128831.2总体设计 1151641.3主要功能程序设计 2220101.3.1初始化定时器 2211231.3.2初始化函数 5284311.3.3采集、输出信号 5147601.3.4软件修正信号输出 7135841.3.5软件去抖应用 81.1编程环境与编程语言单片机是整个液位测量系统的核心,振荡电路数据使用单片机进行处理,并控制输出,因此软件设计主要是单片机的程序设计。由于要实现单片机采集脉冲信号,然后通过单片机内部通过数据处理转换成相应的频率信号;数据处理思想是两点之间确定一条直线,根据用户需要将输出分成多段直线,每一段线性输出。目前PIC单片机程序开发使用的语言主要有汇编语言、C语言。C语言具有功能强大、运用灵活、代码小、运行速度快等先天性的优点,同时C语言可以很容易地实现系统移植,并加快软件的开发周期。支持单片机的C语言编译器主要有PICC、MPLAB等。PICC是一种符合ANSI标准的C语言开发工具,功能合适、使用方便、技术支持好。是综合了编辑器和工程管理器的集成工作环境(IDE),源文件全部被组织到工程之中,文件的编辑和工程的构筑也在这个环境中完成,工程管理器还能直接生成可以直接使用的HEX格式文件,可以直接使用下载器将文件下载到单片机中运行。因此整个系统开发使用PICC作为编程环境,使用C语言作为编程语言。1.2总体设计在进行软件总体设计时,应该采用结构化设计方法,即模块化自顶向下的设计方法。根据需求分析的要求,明确所要解决的问题,将一个总的问题,明确为若干个部分,对每个部分给出软件解决方案,模块化设计有利于程序设计任务的划分,各独立模块允许被任意调用,使得整个程序结构清晰,组合灵活,维护调试方便。单片机完成了以下功能:(1)整个系统的初始化:包括单片机I/O端口的初始化,整个中断系统的初始化,定时器初始化,看门狗初始化,EEPROM设定值读取。(2)通过捕获端口,采集振荡电路频率信号,定时器计数。(3)修正数据,控制输出。1.3主要功能程序设计主程序的主要运行流程如图1.1所示。首先对单片机进行上电复位操作,运行初始化程序,然后通过CCP1模块检测引脚状态,开中断进行计数,对采集到的数据进行处理,通过PWM控制输出。上电复位上电复位初始化定时器初始化函数采集信号脉冲调制,去抖动输出图1.1软件控制流程图1.3.1初始化定时器定时器选取外部12MHz晶振作为时钟源,选择增加计数模式,即增加到某一初值后溢出。若要实现该功能,就需要首先设定定时器的初始值,经过程序指令的不断运行,增加计数达到累计溢出后执行中断程序,输出高电平或者低电平。以TMR0定时器为例,TMR0是一个8位的定时器,所能代表的数值位0~255,也就是说定时器可以从0开始一直加到255,到255后再加一就又变成0。此时TMR0定时器中断标志位(TMR0IF)变成1。下面以两个流程图的形式,分别以频率和周期的方式来说明从时钟频率一直到定时器中断溢出之间的关系。假设时钟频率是4MHz,定时器预分频值为2,定时器初始值为0。图1.2时钟频率到定时器溢出中断流程图从图1.2可以看出,整个流程期间经历了三个步骤:首先4MHz的时钟频率4分频后变成1MHz的指令频率;然后预分频器2分频后变成0.5MHz的频率供给定时器;定时器经过256分频后变成约1952Hz的频率溢出中断。图1.3时钟周期到定时器溢出中断流程图同图1.2一样,整个流程期间也经历了三个步骤:首先0.25μs时钟周期4分频后变成1us指令周期;然后预分频器2分频后变成2μs周期供给定时器;定时器每隔2μs加一,加到256次,256×2μs=512μs溢出中断。结合上述内容,以时钟晶振4MHz为例,要求每间隔50ms输出一个高电平,50ms输出一个低电平,即要得到周期为100ms的方波信号,需要经过的过程则有:(1)首先得到指令周期tt=1F/4(5式中,t为指令周期;F为晶振时钟的振荡频率,4MHz。由式5-1可以计算得出,指令周期t=1μs。(2)得到预分频定时器定时的最大时间要超过这50mS,所以预分频器要选择256,那么可以得到的最大的定时时间就是256倍的预分频,大约61.536ms,才能满足大于50ms的要求。(3)定时器初始化值
从上述分析中,可以推算出,定时器的初始化值设为T0,应是定时器最大值加一后,与定时时间经过预分频后的差值,即T0=定时器最大值+1−经过计算可得,定时器的初始化值T0为60.6875,四舍五入后应为61。(4)设置相关的寄存器OPTION_REG寄存器中我们一般需要设置三处,PS<2:0>设置用来设置预分频预分频范围从2~256,PSA设置成0,是将预分频器分配给Timer0模块,TMR0CS设置成0,内部指令周期时钟。代码如下例:voidInitT0(void){ PSA=0; PS2=0; PS1=0; PS0=0;INTCON|=0x20;TMR0=0x00;}1.3.2初始化函数主程序调用函数前,函数初始化,进行标志位配置。延时函数的作用,就是为了能够控制数据采集速度,在完成一次采集之后需要延时一定的时间,但是如果使用传统的软件延时,不但降低了单片机的效率,占用单片机资源,而且及时精确度不高。因此采用单片机自带的定时器,定时时间到后产生中断,置位标志位,这种方式可以方便的实现系统定时访问或处理事务,并且能够获得较为精确的延时。1.3.3采集、输出信号PIC单片机配置有CCP(捕捉/比较/脉宽调制)模块,即CCP1,有独立的16位寄存器CCP1。CCP模块的功能包括外部信号捕捉、内部比较输出以及PWM输出,与定时器/计数器配合使用。
CCP模块可工作在3种模式下:捕捉方式、比较方式和脉宽调制方式。
(1)捕捉方式:是指检测引脚上输入信号的状态,当信号的状态符合设定的条件时(信号上升沿或下降沿出现时)产生中断,并记录当时的定时器/计数器值,当CCP模块工作在捕捉方式时,TMR1控制寄存器必须工作在定时器或同步计数方式下。例如,在t1时刻之前把CCP1设置为捕捉脉冲上升沿。当信号上升沿到来时,产生CCP中断,在中断服务程序中捕捉该时刻TMR1寄存器中16位的值time1,将CCP1设置为捕捉脉冲的下降沿。当该信号下降沿到来时,产生CPP中断,在中断服务程序中捕捉该时刻TMR1寄存器中16位的值time2,而后再把CCP1设置为捕捉脉冲的上升沿。当信号的下一个上升沿来到时,又产生CCP中断,在中断服务程序中捕捉此刻TMR1寄存器中的16位的值time3,则信号的周期T=(time3-time1)μS,信号频率f=1/T,脉冲宽度P=(time2-time1)μS,占空比D=P/T×100%。考虑到CCP捕捉方式可能发生的最大误差为±1μs,为满足误差要求,可把上述过程多进行几次,将各次测试的平均值作为最后的测量值。图1.2捕捉模式原理示意图如果需要测量的最高频率为1000Hz,周期只有1000μs,且占空比的变化范围为10%~90%,则高低电平持续的最短时间都为100μs,可以有充分的时间执行中断服务程序。实际应用中发现两次捕捉中断的时间间隔小于1次中断服务时间,通过适当设置寄存器CCP1CON的值,使CCP模块每4个脉冲上升沿捕捉1次,这样两次中断的时间间隔就可以满足要求。(2)比较方式:是指将事先设定好的值与定时器方式或同步计数方式下的值相互比较,当两个值相等时,产生中断并驱动事先设定好的动作。(3)脉宽调制方式:适用于从引脚上输出脉冲宽度随时可调的PWM信号,来实现方波信号的控制输出。PWM输出是使用定时器1(Timer1)和定时器2(Timer2)作为他们的时基,Timer1和Timer2是两个8位加法定时器,每个定时器都有一个周期寄存器,分别是PR1和PR2,并具有溢出中断标志位,它们不仅分别作为两个8位定时器/计数器使用,而且也可以作为一个16位定时器使用,但是当有PWM输出时,它们不能再作为16位定时器使用。若使PWM输出信号,需要通过将P1M<1:0>和CCP1M<3:0>位(分别为CCP1CON<7:6>和CCP1CON<3:0>)置1来选择合适的PWM模式。相应的TRISC位也必须设置为输出。PWM1输出周期是由Timer1和周期寄存器(PR1)决定,PWM2输出周期能通过软件设定,并用Timer1和Timer2作为时基。当TM2PWM2位(PW2DCL〈5〉)被清零,时基是由Timer1和PR1决定,当TM2PWM2被置1,时基是由Timer2和PR2决定。当两个PWM同时输出时,两个定时器可以产生两个不同的PWM周期。在脉宽调制信号中,信号周期通常是保持不变的,而脉宽是可变的。如何选择他们的输出频率和分辨力呢?以PWM1输出为例,且Timer1用于时基,采用内部时钟,则:PWM1输出周期=[(PR1)+1]×4tosc(5-1)式中,tosc为振荡周期。对于12MHz的振荡频率,振荡周期tosc=1/(12×106)=83.3ns,如果PR1=24,则PWM的输出周期为:25×4×83.3×10-9=8.33μs,频率为1/(8.33×10-6)=120kHz,改变时基的周期值(PR1)可以控制PWM的输出频率。脉宽寄存器是双缓冲的,当对这两个寄存器进行写操作时,他们首先被存储在主存储器中,当Timer1(或Timer2)溢出和一个新的PWM周期开始,主存储器值被传送到从存储器中,防止当新的脉宽写入时而引起的误操作,PWM模块利用TMR1或TMR2作为中断,当TMR1或TMR2等于它的周期寄存器值,定时器产生中断并被清零,开始下一个PWM周期,定时器重新运行之前,可以写入新的脉宽值。定时器
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 二零二五年度物业费减免及社区公共设施维护合同
- 2025年度社区活动中心场地无偿使用合同
- 二零二五年度影视制作资金筹措个人民间借贷合同
- 2025年度转租协议:甲乙丙三方自用住宅租赁合同
- 二零二五年度个人与公司间代收代付证券交易合同范本
- 2025年度荒山承包养殖合作项目合同
- 2025年度集体劳动合同与职工权益保障法律援助合同
- 高压线路带电检修工模拟习题与答案
- 改革开放之教育
- 销售人员年终总结及规划
- 2025年度人力资源服务外包项目验收与交付合同范本
- 加气站气瓶充装质量保证体系手册2024版
- 2025年浙江经济职业技术学院高职单招高职单招英语2016-2024历年频考点试题含答案解析
- 2025年山西药科职业学院高职单招职业技能测试近5年常考版参考题库含答案解析
- GB/T 18109-2024冻鱼
- 《榜样9》观后感心得体会二
- 《西安交通大学》课件
- 管道天然气泄漏事故案例分析研究报告
- 护理的内涵和精髓
- 西门子S7-1200 PLC应用技术项目教程(第3版) 课件 窄屏 9.触摸屏控制的液体混合系统-LAD
- 铁路劳动安全 课件 第一章 防暑降温
评论
0/150
提交评论