南京理工大学TIE2E中文社区.docx
《南京理工大学TIE2E中文社区.docx》由会员分享,可在线阅读,更多相关《南京理工大学TIE2E中文社区.docx(16页珍藏版)》请在冰豆网上搜索。
![南京理工大学TIE2E中文社区.docx](https://file1.bdocx.com/fileroot1/2023-6/15/3382aaae-eb4a-4ea9-9355-55b8f67d4358/3382aaae-eb4a-4ea9-9355-55b8f67d43581.gif)
南京理工大学TIE2E中文社区
南京理工大学
2012年5月
目次
1引言.................................................................1
2系统总体设计.........................................................1
2.1系统组成结构及工作原理.............................................1
2.2系统工作流程.......................................................2
2.3系统核心器件选型...................................................2
3系统硬件设计.........................................................3
3.1LCD显示模块设计...................................................3
3.2按键模块设计.......................................................3
3.3UART模块设计......................................................4
3.4ADC模块设计.......................................................4
3.5三轴加速度模块设计................................................4
4系统软件设计5
4.1系统软件总体结构及总流程图5
4.2定时器模块程序设计................................................7
4.3LCD显示模块程序设计...............................................7
4.4按键模块程序设计..................................................8
4.5UART模块程序设计..................................................8
4.6ADC模块程序设计...................................................8
4.7openGL上位机模块程序设计..........................................8
5系统调试与结果分....................................................8
5.1系统调试步骤......................................................8
5.2遇到的问题及解决方案..............................................8
5.3实验结果...........................................................9
6结论与心得体会.......................................................9
参考文献...............................................................10
附录...................................................................11
1引言
在生活中或是在生产中,越来越多的场合要用到加速度信号的采集以及用采集到的信号控制被控对象。
例如:
基于重力感应的游戏,手持娱乐设备,多媒体教学系统等等。
在航空航天、机器人、机械控制等多个领域也都要用到倾角测量技术,因而意义十分重大。
而其中三轴加速度传感器的应用尤为广泛。
本系统微控制器采用16位超低功耗单片机msp430f149,采用的加速度传感器模块是MMA7361QR3轴小量程加速传感器,它是检测物件运动和方向的传感器,它根据物件运动和方向改变输出信号的电压值。
整个系统基本功能实现为三轴加速度传感器信号(X,Y,Z)的采集,并显示在12864液晶屏上,同时可以控制上位机中的三维模型随传感器模块的运动而旋转。
用到的模块有单片机的IO控制,UART,ADC,定时器,中断模块等等。
2系统总体设计
2.1系统组成结构及工作原理
本系统使用到的模块有:
定时器模块,键盘模块,ADC模块,UART模块,12864液晶显示模块,三轴加速度传感器模块。
整个系统的原理框图如下:
由系统原理框图可以知道,整个系统的模块性很强,从大类分,可以分为单片机以及上位机模块。
而整个单片机模块又分为好几个子模块。
其中,各模块的功能为:
(1)电源模块主要是为整个系统提供可靠的电源;
(2)键盘模块负责功能的切换;
(3)定时器模块产生采样时钟信号;
(4)UART模块用于单片机和PC机的通信;
(5)加速度传感器模块用来采集三轴加速度信号;
(6)12864液晶显示模块用来显示小组成员,三轴加速度信号灯信息;
(7)上位机模块则用来直观的反应三轴加速度信号的改变。
2.2系统工作流程
本系统工作流程如下:
上点后,显示屏显示小组成员名单,当按键2按下,则开始采样并且将结果显示在12864屏上,并且通过上位机中三维飞机模型状态的改变直观的反应三轴加速度传感器加速度信号的变化。
当按键3按下时,液晶屏保持采样值显示不变,采样停止。
当按键4按下后恢复初始界面,显示小组成员信息。
系统具体工作流程图如下:
2.3系统核心器件选型
(1)本系统采用的微处理器型号是MSP430f149。
它的特点是将大量的外围模块整合到片内,特别适合于开发和设计单片系统。
主要具有低电压和超低功耗,12位的模数转换器(ADC12),大容量的存储空间。
两通道串行通信接口等优点。
为了节省成本,我们小组购置了一套最小系统,图片如下:
(2)而另一个主要的其间就是加速度传感器模块,我们采用龙丘MMA7361QR3轴小量程加速传感器,它根据物件运动和方向改变输出信号的电压值。
灵敏度高,使用起来方便。
实物图如下:
3系统硬件设计
3.1LCD显示模块设计
本系统采用的液晶显示模块是128×64点阵的汉字图形型液晶显示模块,可显示汉字及图形,内置8192个中文汉字(16X16点阵)、128个字符(8X16点阵)及64X256点阵显示RAM(GDRAM)。
由于开发板上的LCD接口占用了一个串口资源,所以我们做了个液晶屏转接板,用跳线与最小系统相连接。
3.2按键模块设计
本系统中除复位按键以外我们共用到了三个按键,他们都是用中断的方式来检测的。
这三个按键分别实现了开始采用,结果保持,恢复初始界面的功能。
在按键模块的设计中,尤其要注意清中断标志的问题,否则会导致按键无响应的情况。
按键模块原理图如下:
3.3UART模块设计
本系统的UART模块作用是保证单片机和PC的通信,从而驱动opengl上位机的运动。
我们设计的串口模块波特率是9600bps,1位停止位,无校验位。
UART模块原理图如下:
3.4ADC模块设计
在本系统中,选择AD通道P6.0,P6.1,P6.2来采集三轴加速度传感器的X,Y,Z轴三路信号。
采样模式设置为多通道单次转换模式。
在采样中断函数中,运用算法处理采集的数据,将处理好的数据送给PC机来驱动上位机的运动,同时送给12864液晶显示模块加以显示。
3.5三轴加速度模块设计
本系统采用的加速度传感器模块式龙丘MMA7361QR3轴小量程加速传感器,它根据物件运动和方向改变输出信号的电压值。
后面的图片示出了它们的关系。
各轴的信号在不运动或不被重力作用的状态下(0g),其输出为1.65V。
如果沿着某一个方向活动,或者受到重力作用,输出电压就会根据其运动方向以及设定的传感器灵敏度而改变其输出电压。
用单片机的A/D转换器读取此输出信号,就可以检测其运动和方向。
运动、方向与各轴(1.5g模式下)的输出关系如下:
4系统软件设计
4.1系统软件总体结构及总流程图
对于本系统的软件设计可以根据其硬件模块来单独设计。
下图说明了该系统软件设计的总体结构图:
以上仅为该系统的粗略的总体结构图,可以看出,该系统的软件设计可以大体为定时器,AD采样,键盘输入等几个子模块。
按照一个特定的软件设计流程加以完善修改便可以对每个子模块有较为详细的设计。
以下是该系统软件的总流程图:
以下给出各个子模块的软件设计流程图:
图1:
TimerA定时器流程图图2:
按键模块流程图
图3:
AD模块软件流程图图4:
液晶模块软件流程图图5:
opengl软件流程图
4.2定时器模块程序设计
本系统的定时器模块主要是提供AD采样频率使用。
在程序中,定时器采用增计数模式,我们编写了定时10ms的定时器程序,经计算,写入初值328为定时10ms。
定时器模块的初始化函数为:
int_timer();控制采样频率用到的定时器中断函数是:
#pragmavector=TIMERA1_VECTOR
__interruptvoidTimer_A(void);
4.3LCD显示模块程序设计
LCD显示的原理如下:
LCD为64行128列的像素,分为左右两边,64*64像素,区分方法在控制命令上体现。
先确定LCD上那个位置需要进行改变,再分为左右两边写入不同的控制字,再写入该位置显示目标图样所需的数据。
主要需要我们注意的问题就是读写时序问题。
程序中用到的子函数如下:
voidWrite_Cmd(ucharcmd)//向液晶中写控制命令
voidWrite_Data(uchardat)//向液晶中写显示数据
voidIni_Lcd(void)//初始化液晶模块
voidDisp_HZ(ucharaddr,constuchar*pt,ucharnum)//控制液晶显示汉字
4.4按键模块程序设计
本系统中的三个按键均采用中断的方式来控制。
在主函数中,先配置管脚P2.1,P2.2,P2.3为输入,再使能中断。
关于三个按键的中断函数为:
#pragmavector=PORT2_VECTOR
__interruptvoidP2(void)
在子函数中,读取键值,进而做相应的处理。
在此,需要特别注意的是,中断处理完毕要清中断标志位。
4.5UART模块程序设计
初始化串口的过程就是一个配置串口寄存器的过程。
UART模块用到的子函数如下:
voidint_UART()
在这个函数中,首先将P3.4,5选择为UART收发端口,然后使能USART0收发,配置字符长度,波特率,校验位停止位等信息,最后初始化UART0状态机。
4.6ADC模块程序设计
本系统中比较重要的程序要属ADC模块程序了。
在此模块中,选择AD通道P6.0,P6.1,P6.2来采集三轴加速度传感器的X,Y,Z轴三路信号。
采样模式设置为多通道单次转换模式。
用到的子函数是:
#pragmavector=ADC_VECTOR
__interruptvoidADC12ISR(void)
该中断子函数不仅承担了AD采样的任务,而且还要通过算法将采集到的数据运算后送给12864液晶显示模块显示,送给上位机等等。
4.7openGL上位机模块程序设计
OpenGL(OpenGraphicsLibrary,开放图形库)是一个三维的计算机图形和模型库,他源于SGI公司为其图形工作站开发的IRISGL,在跨平台移植过程中发展为OpenGL。
OpenGL作为一个性能优越的图形应用程序设计界面(API),他独立于硬件和窗口系统,在运行各种操作系统的计算机上都可用,并能在网络环境下以客户/服务器模式工作,是专业图形处理,科学计算等高端领域的标准图形库。
在本系统中,采用现成的各种游戏软件程序,在其基础上修改一些关键地方之后为我们所用。
这里采用的是飞机状态控制游戏。
并使用MScomm控件编程接收串口数据。
其建立步骤如下:
a.建立项目;b.在项目中插入MSComm控件;c.将控件工具栏的电话图标拖进对话框中;d.利用ClassWizard定义CMSComm类控制对象;e.在对话框中添加控件;f.添加串口事件消息处理函数OnComm();h.打开串口和设置串口参数;其中glPushMatrix()和glPopMatrix()函数用于保存原先的各种信息,防止飞机偏移。
主要的实现过程就是这样,此后将OpenGL和MFC进行结合并进行一定的数据处理即可。
5系统调试与结果分析
5.1系统调试步骤
整个系统的调试采用模块化调试的方法,我们将整个系统分为定时器模块,12864液晶显示模块,ADC模块,UART模块,键盘模块以及上位机模块,对不同的模块我们逐个分块调试,待每个模块调试成功之后将其整合到一起进行综合的调试,测试。
5.2遇到的问题及解决方案
问题1:
在整个系统完成之后,发现采样噪声很大,加速度传感器静止在桌面上的时候仍然有不同的三轴信号输出,上位机也会抖动的很厉害。
经分析,采样信号存在较为严重的噪声信号。
由于我们没有加滤波算法,所以我们将采样频率调低到7HZ左右,这样就减小了噪声信号的干扰,同时也使得采样的灵敏度保持在允许的范围内。
问题2:
由于MFC是用C++的类封装的,而opengl是用C语言的函数封装的,C++与C语言虽然互相兼容,但结合起来会遇到了不少困难,关键在于在opengl的函数中不能直接引用C++的成员函数指针,而由于封装性的要求,又必须将各种回调函数,显示函数做为C++的类成员函数
解决办法:
将成员函数作为静态成员函数,这样函数体的旋转,其最基本代码如下:
glPushMatrix();就与C++的类实例本身无关,可以直接引用其指针。
将opengl与MFC结合后,进行一定的数据类型转换以及数据处理即完成了本次编程。
5.3实验结果
系统调试成功,通过三个按键的切换达到不同的功能。
微处理器将三轴加速度传感器采集到的信息送到12864液晶模块显示,并且驱动PC机上的上位机做前后左右四个方向的跟随运动。
6结论与心得体会
经过一个礼拜的紧张调试,本次设计顺利完成。
该设计的思想来源于一个同学所做的科研项目的理念,我们借鉴过来并加以完善,并且加上了新的功能。
应该说,该系统的应用前景十分广泛。
在设计过程中,我们小组的成员互帮互助,互相学习。
我们对课上学习的理论知识又有了更深的了解和体会,将理论联系实际的操作,这样才能学的更扎实。
通过MCU课程的学习以及课程设计的锻炼,我们很好的掌握了msp430这款单片机的原理及开发流程,也为今后能够熟练地操作使用其他类型的微处理器打下了基础。
参考文献
[1]《MSP430系列FLASH型超低功耗16位单片机》胡大可编著北京航空航天大学出版社;
[2]《MSP430单片机基础与实践》谢兴红等编著北京航空航天大学出版社;
[3]《MSP430系列超低功耗单片机原理与系统设计》李智奇等编著西安电子科技大学出版社;
附录: