基于MSP430的自动控制升降旗系统毕业设计论文带程序.docx
《基于MSP430的自动控制升降旗系统毕业设计论文带程序.docx》由会员分享,可在线阅读,更多相关《基于MSP430的自动控制升降旗系统毕业设计论文带程序.docx(61页珍藏版)》请在冰豆网上搜索。
基于MSP430的自动控制升降旗系统毕业设计论文带程序
自动控制升降旗系统
设计报告摘要
本设计是利用德州仪器公司生产的功能强大的MSP系列单片MSP430F449单片机控制步进电机来实现国旗升降的自动控制系统,主要有控制电路、步进电机、诺基亚5110显示屏及其lcd显示屏、语音模块。
该自动升降旗系统利用步进电机驱动,通过无线控制按键来控制旗帜的升、降。
并且通过单面机控制步进电机转换模块来转换控制步进角,来实现国旗上升或下降的不同速度,可由BCD拨码盘选取升旗模式,无线遥控升降旗及调速等功能。
关键字:
MSP430F449、诺基亚5110、语言模块
1.系统设计目的
1.1、在升旗模式下,显示屏显示升旗模式。
按上升键后,国旗匀速上升,同时演奏国歌,上升到最高端自动停止,国歌停奏。
按下降键后,国旗匀速下降,下降到最低端自动停止。
升降旗的时间均是43s。
1.2、可以避免误动作,国旗无论是在最高端按上升键,在最低端按下降键,还是在升降过程中按上生活下降键,都不起作用。
避免了在升降旗过程中的误操作。
1.3、在升半旗模式下,显示屏显示升旗模式(半),同时一红色发光二极管发光显示。
按上升键后,国旗匀速上升,同时演奏国歌。
上升到最高端是国歌停奏,暂停3s,国旗自动下降到2/3处停止。
按下降键,国旗先由2/3处上升到最高端,再自动从最高端下降到最低端后自动停止。
1.4、在高度升降模式下,可设定升高高度,按上升键升高到设定高度,按下降键可下降到最低端。
1.5、在调速升降旗模式下,升降旗的升降时间在30-120s内可调,步进一秒,匀速升降。
1.6、在自由升降旗模式下,按住上升键国旗上升,按住下降键国旗下降,不按键是国旗停止。
1.7、旗帜的高度和升降旗的模式可以在显示屏上显示。
具有无线遥控升降旗功能。
1.8、断电保存功能,不论旗帜是在顶端还是在底端,关断电源之后重新合上电
源,旗帜所在的高度数据显示不变。
并且接通电源之后在原来的模式下继续工作。
2.方案比较及设计论证
2.1主控单元的比较与论证
2.1.1方案一:
采用MCS-51系列单片机。
经典的MCS-51单片机功能和速度有限;而高档的MCS-51系衍生产品价格昂贵、冗余资源较多、使用范围较窄。
2.1.2方案二:
采用FPGA(现场可编辑门列阵)作为系统控制器。
FPGA可以实现各种复杂的逻辑功能,规模大,集成度高,体积小,稳定性好,并且可利用EDA软件进行仿真和调试。
FPGA采用并行工作方式,提高了系统的处理速度,常用于大规模实时性要求较高的系统。
在本设计中,FPGA的高速处理能力得不到充分发挥。
2.2电机的比较与论证
2.2.1方案一:
直接采用直流电机,电机运转平稳,但不能记录运行高度。
2.2.2方案二:
采用带旋转编码器控制直流电机,电机运转平稳,精度可以得到保
证。
但其驱动电路复杂,在短时间内难以实现。
2.2.3方案三:
采用步进电机。
步进电机是一种脉冲控制电机,它是一种能将脉冲信
号转换为角位移的数模转换器,可广泛用于无需反馈控制但要求有精确位置的场合。
所以,综合考虑控制要求、成本等多方面的因素,我们选用步进电机。
3.系统总体框图
系统总体框图如图3-1所示:
图3-1电路总体设计图
4系统硬件组成
4.1MSP430F449小系统
图4-1MSPF449小系统图
此系统包括单片机的供电、复位系统、BCD拨码盘系统、高度显示以及升降旗模式显示等。
通过电源供电,单片机开始工作。
按下复位电路开关,单片机复位,重新开始工作。
通过调节BCD拨码盘的数值,选择升降旗模式,使单片机控制步进电机运行在不同的工作模式下,同时点阵显示屏显示升降器模式。
在升降旗系统工作过程中,段码显示屏同步显示旗帜所在高度,精度可精确到一厘米以内。
4.2无线收发系统(2262、2272)
图4-2无线收发系统
PT2262/2272是台湾普城公司生产的一种CMOS工艺制造的低功耗低价位通用编解码电路,PT2262/2272最多可有12位(A0-A11)三态地址端管脚(悬空,接高电平,接低电平),任意组合可提供531441地址码,PT2262最多可有6位(D0-D5)数据端管脚,设定的地址码和数据码从17脚串行输出,可用于无线遥控发射电路。
编码芯片PT2262发出的编码信号由:
地址码、数据码、同步码组成一个完整的码字,解码芯片PT2272接收到信号后,其地址码经过两次比较核对后,VT脚才输出高电平,与此同时相应的数据脚也输出高电平,如果发送端一直按住按键,编码芯片也会连续发射。
当发射机没有按键按下时,PT2262不接通电源,其17脚为低电平,所以315MHz的高频发射电路不工作,当有按键按下时,PT2262得电工作,其第17脚输出经调制的串行数据信号,当17脚为高电平期间315MHz的高频发射电路起振并发射等幅高频信号,当17脚为低平期间315MHz的高频发射电路停止振荡,所以高频发射电路完全收控于PT2262的17脚输出的数字信号,从而对高频电路完成幅度键控(ASK调制)相当于调制度为100%的调幅。
4.3语音模块系统(WTV020-SD)
图4-3语音模块系统
WTV020-SD模块是一款可重复擦写语音内容的大容量存储类型的语音模块,可外挂最大容量为1GB的SD卡存储器。
能加载WAV格式语音和AD4格式语音。
WTV020-SD模块以WTV020SD-20S语音芯片为主控核心,具有MP3控制模式,按键一对一控制模式(3段语音跟5段语音两种),上电循环播放控制模式以及二线串口控制模式。
控制模式是在芯片制样时设置的,在操作过程中亦能切换各种控制模式。
MP3控制模式:
具有播放/停止,下一曲,上一曲,音量+,音量-等功能。
按键一对一控制模式(3段语音):
一个挄键对应触发一个语音,具备播放3段语音及调节音量加减的功能,所有按键被默认为脉冲亦可重复触发。
按键一对一控制模式(5段语音):
具有三种控制方式,⑴、所有按键均为脉冲可重复触发;⑵、所有按键均为播放/停止触发(单曲亦循环);⑶、所有按键均为播放/停止(单曲可循环)。
上电循环播放控制模式:
上电后,亦需要触发任何I/O口,直接播放SD卡存储器内的所有语音,并拥有断电记忆点播放功能,当断电后再上电,从上次的断电处继续播放语音。
具有两种控制方式,⑴、P04拥有脉冲播放/暂停功能;⑵、P05拥有电平播放/暂停功能。
二线串口控制模式:
由单片机通过CLK时钟和DI数据线发送数据对WTV020-SD模块迚行控制。
可随意播放任何一个地址的语音。
此状态下,能迚行语音组合播放。
语音内容更新直接通过SD卡读卡器在PC上更换。
该模块支持FAT文件系统。
支持6KHz~32KHz、36KHz采样率的AD4语音和6KHz~16KHz采样率的WAV音频,能识别语音采样率以及语音文件格式。
电路解析:
WTV020-SD-16P跟WTV020-SD-20S在PWM输出时,音频信号选择从SPK+、SPK-端输出到扬声器。
关于音乐芯片控制:
选择按键一对一控制模式(3段语音),脉冲触发,由挄键对地产生信号对I/O口进行控制。
I/O口P02、P03、P04、P05、P07分别为第一段语音、第二段语音、音量+、音量-、第三段语音。
在此系统中,单片机发出高电平通过继电器的控制,使悬空的PO2拉低,并触发第一段语音播放。
4.4步进电机及其驱动系统
图4-4步进电机驱动电路图
本作品采用二相四线步进电机及其驱动芯片L293D。
本系统采用光电耦合器将步进电机电源与单片机供电电源隔开,使其工作在两个不同的供电系统中,从而保护了单片机,使其不会被步进电机的高电压损坏。
步进电机的输出信号通过光电耦合器的隔离送给L293D并驱动步进电机工作。
步进电机的选用计算方法:
步进电机是一种能将数字输入脉冲转换成旋转或直线增量运动的电磁执行元件。
每输入一个脉冲电机转轴步进一个步距角增量。
步进电机是一种能将数字输入脉冲转换成旋转或直线增量运动的电磁执行元件。
每输入一个脉冲电机转轴步进一个步距角增量。
电机总的回转角与输入脉冲数成正比例,相应的转速取决于输入脉冲频率。
步进电机是机电一体化产品中关键部件之一,通常被用作定位控制和定速控制。
步进电机惯量低、定位精度高、无累积误差、控制简单等特点。
本系统是通过程序控制输出口产生数字脉冲,作为电脉冲来控制步进电机转动。
步进电机的绕组的通电顺序为A-B-C-D,反转为D-C-B-A,A、B、C、D。
4.5E2PROM存储系统及功能概述
图4-5
CAT24WC01/02/04/08/16是一个1K/2K/4K/8K/16K位串行CMOSE2PROM内部含有
128/256/512/1024/2048个8位字节CATALYST公司的先进CMOS技术实质上减少了器件的功耗CAT24WC01有一个8字节页写缓冲器CAT24WC02/04/08/16有一个16字节页写缓冲器该器件通过I2C总线接口进行操作有一个专门的写保护功能。
CAT24WC01/02/04/08/16支持I2C总线数据传送协议I2C总线协议规定任何将数据传送到总线的器件作为发送器任何从总线接收数据的器件为接收器数据传送是由产生串行时钟和所有起始停止信号的主器件控制的主器件和从器件都可以作为发送器或接收器但由主器件控制传送数据发送或接收的模式通过器件地址输入端A0A1和A2可以实现将最多8个24WC01和24WC02器件4个242C04器件,2个24WC08器件和1个24WC16器件连接到总线上。
5系统程序设计
下图为此升旗系统的程序流程图:
图5-1系统程序流程图
6系统测试程序
6.1升降旗和升降半旗模式
测试要求制作180cm的旗杆,控制国旗升、降、停和半旗状态,控制国旗在指定位置停及改变国旗的速度。
观察显示及测量数据,反复调试。
6.2测试数据图表及简单的分析
指定位置测试数据表6-1
设置值(cm)
液晶显示(cm)
实际值(cm)
误差(cm)
30
30
30.3
0.3
50
50
49.5
0.5
80
80
79.7
0.3
120
120
120.0
0.0
140
140
140.3
0.3
160
160
160.5
0.5
180
180
180.0
0.0
指定时间测试数据表6-2
设置时间(s)
液晶显示(s)
测量时间(s)
绝对误差(s)
30
30
30.3
0.3
50
50
50.4
0.4
80
80
80.4
0.4
100
100
100.1
0.1
120
120
120.5
0.5
7结论与感悟
经过反复实验,我们MSP430F449单片机使国旗基本上完成了题目所要求实现的运动:
自动控制升降旗,实现半旗状态,可在指定位置停止。
速度可调,实时显示出时间和高度。
本运动控制系统存在以下几个突出优点:
1利用了MSP430F449的集成性,极大的简化了外围电路。
2增加了手动调节高度的方法,可以手动调节到理想高度。
在设计过程当中,我们碰到许多问题,使我们认识到处理问题可以用多方法、多角度地处理。
使我们不仅增强了实践能力和协作精神,而且懂得了联系实际的重要性,这对我们今后的学习和工作是不无裨益。
当然,我们的设计受到时间、地域和价格的限制,还有可以改进的地方如驱动器上采用细分技术等,希望能在将来设计中进一步功能扩充。
在此恳请各位老师批评指正。
附录1
系统总体电路图
附录2
源程序代码:
#include
unsignedintm,h,n,k,s1,s2,c,w,cont,t,x1,x2,x3,x4,x5,j1,j2,chu,yu,time1,time2,del;//m记录所走的步数,h输入的高度,n记录p2的输入值(遥控),k记录选择方式,
//s1升旗高度,s2升半旗高度,c为选择升旗方式(P6输入值拨码盘),w为半旗暂停时间,t为设定的时间值,x1时间设定时的过度数。
#defines1180
#defines2124
#defineLCD_5110_DIRP3DIR
#defineLCD_5110_OUTP3OUT
#defineLCD_IN_USE6
voiddelay_6us(void)//1us延时函数
{
unsignedinti;
for(i=0;i<1000;i++);
}
voiddelay_5us(void)//1us延时函数
{
unsignedinti;
for(i=0;i<1400;i++);
}
voiddelay_nus(void)//1us延时函数
{
unsignedinti;
for(i=0;i}
constunsignedcharfont6x8[][6]=
{
{0x00,0x00,0x00,0x00,0x00,0x00},//sp
{0x00,0x00,0x00,0x2f,0x00,0x00},//!
{0x00,0x00,0x07,0x00,0x07,0x00},//"
{0x00,0x14,0x7f,0x14,0x7f,0x14},//#
{0x00,0x24,0x2a,0x7f,0x2a,0x12},//$
{0x00,0x62,0x64,0x08,0x13,0x23},//%
{0x00,0x36,0x49,0x55,0x22,0x50},//&
{0x00,0x00,0x05,0x03,0x00,0x00},//'
{0x00,0x00,0x1c,0x22,0x41,0x00},//(
{0x00,0x00,0x41,0x22,0x1c,0x00},//)
{0x00,0x14,0x08,0x3E,0x08,0x14},//*
{0x00,0x08,0x08,0x3E,0x08,0x08},//+
{0x00,0x00,0x00,0xA0,0x60,0x00},//,
{0x00,0x08,0x08,0x08,0x08,0x08},//-
{0x00,0x00,0x60,0x60,0x00,0x00},//.
{0x00,0x20,0x10,0x08,0x04,0x02},///
{0x00,0x3E,0x51,0x49,0x45,0x3E},//0
{0x00,0x00,0x42,0x7F,0x40,0x00},//1
{0x00,0x42,0x61,0x51,0x49,0x46},//2
{0x00,0x21,0x41,0x45,0x4B,0x31},//3
{0x00,0x18,0x14,0x12,0x7F,0x10},//4
{0x00,0x27,0x45,0x45,0x45,0x39},//5
{0x00,0x3C,0x4A,0x49,0x49,0x30},//6
{0x00,0x01,0x71,0x09,0x05,0x03},//7
{0x00,0x36,0x49,0x49,0x49,0x36},//8
{0x00,0x06,0x49,0x49,0x29,0x1E},//9
{0x00,0x00,0x36,0x36,0x00,0x00},//:
{0x00,0x00,0x56,0x36,0x00,0x00},//;
{0x00,0x08,0x14,0x22,0x41,0x00},//<
{0x00,0x14,0x14,0x14,0x14,0x14},//=
{0x00,0x00,0x41,0x22,0x14,0x08},//>
{0x00,0x02,0x01,0x51,0x09,0x06},//?
{0x00,0x32,0x49,0x59,0x51,0x3E},//@
{0x00,0x7C,0x12,0x11,0x12,0x7C},//A
{0x00,0x7F,0x49,0x49,0x49,0x36},//B
{0x00,0x3E,0x41,0x41,0x41,0x22},//C
{0x00,0x7F,0x41,0x41,0x22,0x1C},//D
{0x00,0x7F,0x49,0x49,0x49,0x41},//E
{0x00,0x7F,0x09,0x09,0x09,0x01},//F
{0x00,0x3E,0x41,0x49,0x49,0x7A},//G
{0x00,0x7F,0x08,0x08,0x08,0x7F},//H
{0x00,0x00,0x41,0x7F,0x41,0x00},//I
{0x00,0x20,0x40,0x41,0x3F,0x01},//J
{0x00,0x7F,0x08,0x14,0x22,0x41},//K
{0x00,0x7F,0x40,0x40,0x40,0x40},//L
{0x00,0x7F,0x02,0x0C,0x02,0x7F},//M
{0x00,0x7F,0x04,0x08,0x10,0x7F},//N
{0x00,0x3E,0x41,0x41,0x41,0x3E},//O
{0x00,0x7F,0x09,0x09,0x09,0x06},//P
{0x00,0x3E,0x41,0x51,0x21,0x5E},//Q
{0x00,0x7F,0x09,0x19,0x29,0x46},//R
{0x00,0x46,0x49,0x49,0x49,0x31},//S
{0x00,0x01,0x01,0x7F,0x01,0x01},//T
{0x00,0x3F,0x40,0x40,0x40,0x3F},//U
{0x00,0x1F,0x20,0x40,0x20,0x1F},//V
{0x00,0x3F,0x40,0x38,0x40,0x3F},//W
{0x00,0x63,0x14,0x08,0x14,0x63},//X
{0x00,0x07,0x08,0x70,0x08,0x07},//Y
{0x00,0x61,0x51,0x49,0x45,0x43},//Z
{0x00,0x00,0x7F,0x41,0x41,0x00},//[
{0x00,0x55,0x2A,0x55,0x2A,0x55},//55
{0x00,0x00,0x41,0x41,0x7F,0x00},//]
{0x00,0x04,0x02,0x01,0x02,0x04},//^
{0x00,0x40,0x40,0x40,0x40,0x40},//_
{0x00,0x00,0x01,0x02,0x04,0x00},//'
{0x00,0x20,0x54,0x54,0x54,0x78},//a
{0x00,0x7F,0x48,0x44,0x44,0x38},//b
{0x00,0x38,0x44,0x44,0x44,0x20},//c
{0x00,0x38,0x44,0x44,0x48,0x7F},//d
{0x00,0x38,0x54,0x54,0x54,0x18},//e
{0x00,0x08,0x7E,0x09,0x01,0x02},//f
{0x00,0x18,0xA4,0xA4,0xA4,0x7C},//g
{0x00,0x7F,0x08,0x04,0x04,0x78},//h
{0x00,0x00,0x44,0x7D,0x40,0x00},//i
{0x00,0x40,0x80,0x84,0x7D,0x00},//j
{0x00,0x7F,0x10,0x28,0x44,0x00},//k
{0x00,0x00,0x41,0x7F,0x40,0x00},//l
{0x00,0x7C,0x04,0x18,0x04,0x78},//m
{0x00,0x7C,0x08,0x04,0x04,0x78},//n
{0x00,0x38,0x44,0x44,0x44,0x38},//o
{0x00,0xFC,0x24,0x24,0x24,0x18},//p
{0x00,0x18,0x24,0x24,0x18,0xFC},//q
{0x00,0x7C,0x08,0x04,0x04,0x08},//r
{0x00,0x48,0x54,0x54,0x54,0x20},//s
{0x00,0x04,0x3F,0x44,0x40,0x20},//t
{0x00,0x3C,0x40,0x40,0x20,0x7C},//u
{0x00,0x1C,0x20,0x40,0x20,0x1C},//v
{0x00,0x3C,0x40,0x30,0x40,0x3C},//w
{0x00,0x44,0x28,0x10,0x28,0x44},//x
{0x00,0x1C,0xA0,0xA0,0xA0,0x7C},//y
{0x00,0x44,0x64,0x54,0x4C,0x44},//z
{0x14,0x14,0x14,0x14,0x14,0x14}//horizlines
};
charwrite_chinese[][