中北大学2009届毕业设计说明书
可使程序直观、易懂,便于程序维护。不同型号的微控制器,这些标志性地址不尽相同。对于 MC68HC908RF2 的所有寄存器,已在 rk2regs.inc 文件中进行了初始化定义,只需将此文件用 Include 汇编指令包含进来,就可在源程序中使用这些寄存器的字符常量。
(2) RAM 区变量定义
对于程序中使用到的临时数据、表格等,可以用定义 RAM 区变量的伪指令 DS(8 位)、DB(16 位)、DW(32 位)进行定义,以便在程序中方便地对它们进行访问、更新和保存。
(3) Flash 程序存储区操作指令代码
一个源程序的主体部分是实现相应功能的指令操作代码。操作指令存放在微控制器的 Flash 存储器内,起始地址用伪指令 ORG RomStart 进行定位。由于累加器 A 和 8 位变址寄存器 X 在微控制器复位后是未被初始化的不确定值,若程序中又有中断服务子程序,很可能因响应中断而在A、X入栈时产生A、X未初始化的错误,故在执行操作指令时先对 A、X 进行初始化。
(4) 复位/中断矢量分配
源程序的最后部分,也就是微控制器的资源地址的最后空间是 Flash 矢量区,放置中断向量表和复位矢量。微控制器在上电复位后,将把复位向量区$FFFE~$FFFF 的一个 16 位地址值装入程序计数器PC中,则程序将从该地址处开始执行。因此,为了让微控制器在上电复位后从主程序 MAIN 开始执行,只需将主程序的入口地址定义到复位矢量区$FFFE~$FFFF 即可。
对于有中断服务子程序的源程序,为了在发生中断时能够使程序响应中断并进入相应的中断服务子程序,同样只需将中断服务子程序的入口地址定义到对应的中断服务矢量区即可。 4.3 轮胎模块的软件设计
轮胎模块软件的整体算法是基于保持较长时间的电池供电负荷的。虽然轮胎模块需要独立地持续工作很长一段时间,但其重量也是有限制的,所以不能选择太大容量电池。虽然本文选用的轮胎模块内各个器件功耗均较小,但为减少工作能耗,仍然要选择合适的测量频率和发射频率[19]。同时,受到微控制器 MC68HC908RF2 的 Flash 程序存储器空间限制(2K 字节),轮胎模块的数据处理
第 29 页 共 43 页
中北大学2009届毕业设计说明书
算法既不能过于复杂,又要保证对轮胎状态的监控效果。 4.3.1 轮胎模块的监控软件及其中断子程序
轮胎模块监控程序的主要工作是系统初始化、测量控制、测量数据的简单处理以及发射控制,其主程序流程图如图 4.2 所示,与之相关的中断服务子程序流程图如图4.3所示。
上电复位 系统初始化 进入停止(STOP)模式 等待中断
图 4.2 轮胎模块主程序流程图
微控制器绝大多数时间处于停止(STOP)模式下,这是因为处于此状态下的微控制器系统功耗最小。通常是传感器 MPXY8020A 进入空闲模式时,由其内部低频振荡器定时,每隔几秒钟向微控制器发出一个唤醒脉冲。这个唤醒脉冲与 MC68HC908RF2 的键盘中断引脚取得联系,使微控制器脱离低功耗的停止(STOP)模式,并在每次唤醒后立即开始测量压力。
轮胎模块对测量数据的分析处理主要是对实时测得的轮胎压力数据进行判别,对温度和压力的综合处理是在主机模块软件中实现的。如果压力值低于标准轮胎压力下限或者超过标准轮胎压力上限,意味着轮胎工作状态不正常;如果短时间内出现大的压力值改变,则意味着轮胎的快速泄漏。当程序检测出这些异常情况时,就通过发射器把状态信息无线发送到主机模块。
轮胎模块的发射控制程序有两个模式:一是正常工作时的标准发射模式,如果轮胎的压力状况正常,则根据定时每隔几分钟向主机模块发送一次状态信息,报告轮胎模块工作状态正常。二是紧急情况下的快速发射模式,程序检测出轮胎出现异常情况时,轮胎模块将立即清除定时,进入快速发射模式向主机报警。在快速发射模式下,MC68HC908RF2 的发射器会在 800ms~900ms 时间内发射 255
第 30 页 共 43 页
中北大学2009届毕业设计说明书
个数据帧。
进入键盘中断 禁止键盘中断 调测量程序 读轮胎压力值 轮胎压力是否正常? 是 对定时计算器递加 否 否 开键盘中断 是否到发射时间? 是 进入发射程序 等待中断
图4.3轮胎模块键盘中断子程序流程图
进入停止(STOP)模式 这样可以大大提高主机模块接收器接收到数据的可能性,使驾驶员得到警告并有充分的时间安全地停车。
除了以上各主要功能外,轮胎模块的监控软件还具有电池电压监控子程序,通过微控制器的低电压禁止(LVI)模式来监控模块电源电压,及时提醒更换电池。 4.3.2 传感器测量程序及算法
传感器测量程序主要完成轮胎的压力和温度状态数据的测量,以及对测量结果的模数转换。传感器 MPXY8020A 具有四种工作模式:既不进行测量,也不需读取测量数据的空闲模式;测量压力时的压力测量模式;测量温度时的温度测量模
第 31 页 共 43 页
中北大学2009届毕业设计说明书
式;进行模数转换操作和数据读出的数据输出模式。在数据输出模式下,通过其引脚DATA将表示比较电平的8位数据伴随引脚CLK的同步脉冲串行输入 MPXY8020A 内部移位寄存器,再由其内部 D/A 寄存器将这 8 位数据转换为模拟电平,通过引脚 OUT 输出状态得到该模拟电平与存储测量结果电平的采样电容器间的比较结果,根据检测引脚 OUT 状态得到的比较结果连续调整输入的串行数据,逐步逼近测量真值,可以得到数字化的测量数据。
传感器测量程序由测量主程序、发送数据的串行接口子程序和模数转换的逐级逼近算法程序组成。
(1)测量主程序
微控制器先置 MPXY8020A 进入压力测量模式或者温度测量模式,延时等待传感器的测量信号在采样电容器中得到完整存储,压力测量模式为 500μs,温度测量模式为 500μs。延时后置 MPXY8020A 进入数据输出模式,以完成测量数据的模数转换和读取。
2)模数转换的逐级逼近算法
该算法是为了实现 8 位精度的模数转换而编写的。在 8 位精度的 256 个可能结果中,采用两分法从数据高位开始,通过逐位比较、逐级逼近测量结果真值,以得到轮胎压力或温度的 8 位数据。
该 8 位数据是与实际压力和温度值相对应的,对应关系可参考数据手册,但最好通过实验测量来标定。如常温(25℃)下的温度测量值约为$68。
当输入数据的模拟电平大于或者等于传感器的采样电容器电压,也就是输入 8 位数值大于或者等于测量数据时,OUT 引脚电平为高。反之,OUT 引脚电平为低。根据模数转换的逐级逼近算法编写的程序流程图如图4.4所示。
程序执行后,得到的测量结果数据被存为 RAM 区内事先定义好的的结果变量 ADR。传感器的 8 位压力数据输出结果的测量误差在大多数情况下小于或等于 10kPa,满足系统的压力测量精度要求。 4.4 数据无线收发模块的软件设计
要想实现数据的无线收发功能,除了正确的硬件设计和连接外,对无线收发芯片的初始化配置以及无线传输的数据速率控制功能,都必须要有系统软件的支持。而更为重要的是要结合芯片特性和硬件电路,建立无线发射/接收双方间的通
第 32 页 共 43 页
中北大学2009届毕业设计说明书
信协议。
开始 直MPX8020A为数据读出模式 初始化,权变量(SH2)=80H,终变量(ADR)=00H,C=0 SH2逻辑加ADR,结果发送子程序缓存 调用发送子程序 读OUT引脚电平 OUT是否是高电平 是 ADR=ADR+SH2 否 SH2循环右移一位 否 是否C=1? 是 结束返回
图4.4 模数转换的逐级逼近程序流程图
4.4.1 数据无线收发的通信协议
为了保证轮胎模块与主机模块间通信的可靠畅通,基于 UHF 发射器和接收器这两端编写的无线发射/接收软件必须要有一个简单合理的通信协议。在本文设计
第 33 页 共 43 页