第三章 系统软件设计 3.1软件开发平台简介
IAR的Embedded Workbench是一个适应各种不同CPU的目标系统开发的集成环境。它提供方便且功能丰富的窗口界面,使开发和调试的效率大大提高。
Embedded Workbench包含的实用工具有:具有语法表现能力的文本编辑器;编辑器;汇编器;连接器;函数库管理器;实现操作自动化的Make工具;内嵌C语言和汇编级的调试器C—SPY。
EW430是针对专门MSP430的开发平台,其功能非常强大,而且以很快的的速度更新版本,它的基本特性为:
◇代码长度和速度有多级优化; ◇支持32位和64位浮点数; ◇支持硬件乘法器;
◇内部函数支持低功耗模式; ◇支持C和汇编语言编程。 3.2程序流程图
本系统的软件设计采用模块化设计的方法,整个程序包括主程序、A/D转换程序、数据处理程序、串行通讯程序、键盘模块程序、LED显示程序。所有的程序均采用C语言编写,可以很方便地调试和下载程序代码。 3.2.1 系统主程序
系统的主程序主要完成MSP430F149单片机系统的初始化、设置系统时钟,调用键盘处理程序,根据不同的按键转入相应的服务程序,完成不同的功能,如数据的采集与处理、串行通信以及历史记录的查询。其中串行通讯子程序不仅可以将单片机存储的数据传送到PC机进行处理分析,用户也可以根据情况从PC机上设置待测数据多少以及测试时间的长短等。其基本流程图如下:
3.2.2 A/D转换模块
该模块主要是单片机通过A/D通道采集来自外部的电压信号,将信号进行处理。MSP430F149的A/D转换有四种模式:单通道单次转换,序列通道单次转换,单通道多次转换,序列通道多次转换。考虑到系统只有一路采集,故本系统采用单通道多次转换,关于转换模块的选择主要通过设置相应的A/D转换的寄存器来实现。信号采集的时间间隔通过定时器A来完成,就是在每次定时器中断到来时读取模数转换采集到的数据,在读数据前先停止转换,在读取数据完毕后启动模数转换,如果得到数据,则设置一个标志位来通知主程序,告诉主程序已经得到新的数据。整个程序采用中断服务程序的结构完成。下面为该模块的程序流程图。
3.2.3串口通信模块
串口通信模块主要完成单片机与上位机的通信,从而将采集到的数据送到上位机进行处理。由于MSP430F149单片机具有片内的UART,因此实现串口通信相当容易,只需要设置适当的寄存器就可以使串口工作起来。串口通信采用中断机制,发送数据和接收数据都采用中断
方式。当接收到数据时,设置一个标志来通知主程序有数据到来,当主程序有数据要发送时,设置一个中断标
志来进入中断发送数据。串口通信模块的程序流程图如下:
3.2.4键盘模块
独立式键盘是指使用按键与单片机的I/O口直接连接的方法构成的单个按键电路。当某一按键KEYn闭合时,该端口输入低电平,释放时输入高电平。由于机械按键的弹簧片存在着轻微的弹跳现象,故闭合或释放过程都将存在一个抖动期。为了确保CPU对按键的一次闭合仅作一次处理,必须去掉抖动。键盘扫描控制有定时查询和中断控制查询,因为该单片机的P0、P1、P2等3个8位端口都有中断能力,故在此采用中断方式。该模块的流程图和经典代码如下:
#include
x=(P1IN&0Xf0); // P1.5—P1.7 接有按键 return(x);;// 有按键返回非全1 }
unsigned char keycode() // 找哪个按键被按下,查键值子程序 {
unsigned char x;
if((P1IN&0xf0)= = 0x40) // 是否第一个按键 then x=1; else
if((P1IN&0xf0)= = 0x20) // 是否第二个按键