毕业设计论文1426副本 2副本.docx

上传人:b****2 文档编号:24414805 上传时间:2023-05-27 格式:DOCX 页数:18 大小:169.42KB
下载 相关 举报
毕业设计论文1426副本 2副本.docx_第1页
第1页 / 共18页
毕业设计论文1426副本 2副本.docx_第2页
第2页 / 共18页
毕业设计论文1426副本 2副本.docx_第3页
第3页 / 共18页
毕业设计论文1426副本 2副本.docx_第4页
第4页 / 共18页
毕业设计论文1426副本 2副本.docx_第5页
第5页 / 共18页
点击查看更多>>
下载资源
资源描述

毕业设计论文1426副本 2副本.docx

《毕业设计论文1426副本 2副本.docx》由会员分享,可在线阅读,更多相关《毕业设计论文1426副本 2副本.docx(18页珍藏版)》请在冰豆网上搜索。

毕业设计论文1426副本 2副本.docx

毕业设计论文1426副本2副本

西南交通大学

本科毕业设计(论文)

基于单片机的多通道数据监测系统

Amulti-channeldatadetectionsystembasedonMCU

年级:

2004级

学号:

20041426

姓名:

刘天豪

专业:

机械电子工程

指导老师:

肖世德

2008年6月

院系机械工程学院专业机械电子工程

年级2004级姓名刘天豪

题目基于单片机的多通道数据监测系统

指导教师

评语

指导教师(签章)

评阅人

评语

评阅人(签章)

 

成绩

答辩委员会主任(签章)

年月日

毕业设计(论文)任务书

班级茅机学生姓名刘天豪学号20041426

发题日期:

2008年3月5日完成日期:

6月10日

题目基于单片机的多通道数据监测系统

1、本论文的目的、意义

温度压力液位流量是工业自动化常见控制参量,实现其监测与控制是基础性工作,也是机械电子工程专业学生必须掌握的基础内容。

本课题要求学生综合利用所学知识,培养动手能力,在前人工作基础上,改进完善,实现多通道模拟工业温度压力液位信号采集和处理显示,实现上下限报警和电磁继电器和开关通断控制。

该课题对于机电测控实验中心完善实验建设具备价值。

2、学生应完成的任务

(1)查阅收集资料、熟悉设计原始资料、完成相关不少于10000个字符的外文资料

翻译。

(2)完成毕业实习调研以及实习报告的撰写。

(3)现有温度压力液位流量监测与控制系统调研和资料搜集。

(4)多路参量监测与控制系统方案设计。

(5)接口电路板制作和加工。

(6)实验程序设计与调试。

(7)完整程序和实物一套。

(8)整理完成不少于24000字的毕业论文。

3、论文各部分内容及时间分配:

(共12周)

第一部分调研准备和资料搜集(2周)

第二部分方案设计和元器件采购(2周)

第三部分硬件制作(3周)

第四部分软件调试(3周)

第五部分系统集成,撰写毕业论文(1周)

评阅及答辩评阅答辩(1周)

备注

指导教师:

年月日

审批人:

年月日

 

摘要

随着电子计算机信息技术的不断发展和完善,采用单片机实现的数据采集系统的应用越来越多。

采用单片机实现的数据采集系统具有自动化和无人值守的特点。

在许多工业测控机械、医疗仪器以及消费电子产品中,都对数据采集系统的实时性与功耗提出了更高的要求:

即在满足微功耗、微型化的总体设计原则基础上,又要能实时反映现场采集数据的变化。

这就对系统的功耗、采样速度、数据存储和传输速度等提出了更高的要求。

然而,随着半导体与微控制器技术的飞速发展,各种微电子器件的性能不断提高,功耗却不断降低。

技术的进步使得高速度、低功耗的数据采集系统得以实现。

本文设计的数据采集与显示、处理系统采用TI公司研制的MSP430系列超低功耗单片机作为核心控制元件,实现了8通道模拟量数据的采集、自动循环显示、用户查询、限位设定及报警、外围驱动能力、时间显示、以及和上位机组态软件的通信功能。

该系统功能齐全,且具有一定的通用性。

主要研究内容如下:

首先,分析了数据采集系统技术领域内国内外的研究现状,以及MSP430系列低功耗单片机的特点和应用情况。

其次,分析了研究数据采集系统的现实意义,在此基础上给出了基于MSP430单片机的数据采集系统的总体设计方案。

比较详细的介绍了实现该系统的硬件电路设计,包括电源电路、按键电路、复位电路、点阵LCD显示电路、LED指示灯和蜂鸣器报警电路、直流电机驱动电路和USART异步串行通信电路等电路的原理图设计。

最后详细的介绍了基于C语言的软件系统实现方案。

其中,软件系统的设计是本设计的工作重点。

设计过程采用了模块化的软件设计思想。

文中第4章前6小节详细介绍了系统中各个模块软件设计过程。

其中和组态王的串口通信程序设计是最有创新性的内容;第7小节介绍了这些模块之间的输入、输出等链接关系,并最终给出了主处理程序的结构框架。

本设计的最终实验结果表明,下位机的数据采集及显示、查询、报警等功能均能顺利实现;与组态王的串口通信程序设计取得了明显的成果。

关键词:

数据采集MSP430串行通信

Abstract

Withdevelopmentofcomputerandinformationtechnology,usingofMCUinadatadetectionsystemisbecomingmoreandmorepopular.DatadetectionsystemwithMCUhascharacterofautomatedandunattended.

Real-timeandlowerpowerconsumptionisdemandedinmanyindustrialmeasurementandcontrolmachinery,medicalequipmentandconsumerelectronicsproducts:

principleofoveralldesignisnotonlymeetmicro-powerconsumptionandminiaturizationbutalsoreflectreal-timedatachangeswhenthescenechanges.Thismakeahigherdemandofthesystem’spowerconsumption,samplingspeed,datastoragespeedandtransmissionspeed.Withtherapiddevelopmentofsemiconductorandmicrocontrollertechnology,performanceofmicroelectronicdevicesisimprovedbutthepowerconsumptionisreduced.Advancesintechnologymakehigh-speed,lower-powerdatadetectionsystemcanberealized.

ThedatadetectionandprocessingsystemdesignedinthispaperuseTI’sMSP430asthecoreelement,whichachievesthefunctionssuchas:

8-channelanalogdatadetection,automaticcycledisplay,userqueries,setthelimitandgivealarm,todrivetheexternaldevices,showtimeandcommunicatewithPC(throughKingView6.51).Thesystemhasenoughfunctionsandiscommonality.Maincontentsareasfollows:

First,analysestheresearchstatusquoofthedatadetectionsystemathomeandabroad.Second,analysesthepracticalsignificanceofdatadetectionsystem,onbasisofthis,wegiveadatadetectionsystemdesignprogrammewhichbasedonMSP430.

Wedetailthesystem’sstructuraldesignandhardwarecircuitdesign,includingpowercircuit,buttoncircuit,resetcircuit,dot-matrixLCDdisplaycircuit,LEDandbuzzeralarmcircuit,motor-drivencircuitandUSARTcommunicationcircuit,Finally,giveadetailintroductiontodesignasoftwaresystembasedonClanguagetorealizethewholefunction.

Thesoftwaredesignisthekeyworkofthisdesign.Thewholedesignprocessingbasedonaconceptcalled“modulardesign”.InChapter4thefirstsixsectionsdetaileverymodule’sdesigningprocess.SerialcommunicationproceduresdesignbetweenKingViewandMSP430isbelievedtobethemostinnovativecontentinthispaper;insection7,inputandoutputrelationsamongallthemodulesisanalysed.Andfinally,Igivethemainprogram’sstructuralframework.

Finaltestresultsshowthatdatadetectionanddisplay,queryandalarmfunctioncanrunssmoothly;serialcommunicationdesignbetweenKingViewandMSP430haveachievedremarkableresults.

keywords:

datadetectionMSP430serialcommunication

目录

第1章绪论1

1.1数据采集系统概述1

1.1.1嵌入式系统概述3

1.1.2嵌入式数据采集系统简介3

1.2数据采集系统发展方向3

1.3本文研究的主要内容及组织结构7

第2章基于MSP430的数据采集系统的系统设计6

2.1基于MSP430的数据采集系统的系统构建6

2.1.1系统功能分析6

2.1.2系统的硬件原理框图7

2.1.3系统的工作过程8

2.2系统主要功能器件的介绍及选择8

2.2.1单片机的选择8

2.2.2传感器简介11

2.2.3AD转换模块结构介绍11

2.2.4LCD显示模块的选择14

2.2.5上位机处理系统软件的选择15

第3章基于MSP430的数据采集系统的硬件设计17

3.1电源电路的设计17

3.2复位电路设计18

3.3模拟量采集电路的设计18

3.4图形点阵LCD显示电路19

3.5按键处理电路20

3.6串行通信电路设计21

3.7报警系统及外围驱动模块电路设计23

3.7.1报警电路设计23

3.7.1电机驱动电路设计24

3.8单片机电路设计24

第4章基于MSP430的数据采集系统的软件设计26

4.1系统时钟模块的初始化设置28

4.2模拟量采集模块软件设计28

4.2.1转换模块的初始化设置28

4.2.2转换数据的读取28

4.2.3转换数据的格式化30

4.2.4ADC12模块的启动31

4.3输入模块的软件设计32

4.3.1输入模块的初始化设置32

4.3.2中断处理程序34

4.4显示模块的软件设计42

4.4.1LCD初始化设计42

4.4.2LCD显示设计43

4.5串行通信模块的软件设计45

4.5.1组态王与单片机的通信协议46

4.5.2单片机通讯程序设计49

4.6报警系统及外围驱动电路模块的软件设计56

4.6.1报警系统的软件设计57

4.6.2外围驱动模块的软件设计58

4.7主处理模块程序设计60

第5章系统的调试及运行63

5.1系统实物电路的搭建63

5.2下位机设计功能调试63

5.1和组态王6.51串口通信的调试63

结论68

致谢69

参考文献70

附录1:

电路原理图71

附录2:

程序72

附录3:

实习报告72

result8=(int)(((2.5*result8)/4096-0.986)/0.0000355);

for(tmp=0;tmp<4;tmp++)

{

results1[iq1]=result1%10;//温度一

iq1=iq1+1;

iq1=iq1%4;

result1=result1/10;

………………

results[iq8]=result8%10;//流量二

iq8=iq8+1;

iq8=iq8%4;

result8=result8/10;

}

}

以上处理程序中,resultx是实际要利用的数据格式(两位整数部分,两位小数部分),数组results[]用来存储转换数据的各位数据。

主要是为了在以后的LCD显示部分能够方便的取出逐位显示。

4.2.4ADC12模块的启动

ADC12模块的启动函数,用以在程序适当位置启动AD转换。

程序如下:

voidstart_ADC12()

{

ADC12CTL0|=ADC12SC;//启动AD转换

adc_Flag=0;//设置标志,表示正在转换中

}

4.3输入模块的软件设计

系统的输入模块主要是指行列矩阵扫描键盘。

在第三章中介绍键盘电路设计时候,已经较详细的说明了键盘的电路设计以及工作原理。

这里再详细说明系统对键盘的功能需求以及软件实现方法。

这里采用定时器B以0.125s的循环速度使行线P1.1和P1.3循环置0,来检查是否有按键按下,若检查到有按键按下,则系统进入端口中断复位程序,根据按下的键值进行对应的中断处理。

程序流程图如下:

图4-3输入模块流程图

该模块主要包括对定时器B和端口中断的处理。

下面具体分析该模块的程序设计。

4.3.1输入模块的初始化设置

该部分主要完成端口的初始化和定时器B的初始化。

下面为初始化部分的代码程序。

1、端口初始化程序:

voidInit_INPUTPort(void)

{

//将管脚在初始化的时候设置为输入方式

P1DIR=0;

P1SEL=0;

P1SEL|=BIT2//除P1.2外(另有所用),所有的管脚设置为一般I/O口

P1DIR&=~(BIT4);

………………

P1DIR&=~(BIT7);//将P1.4---P1.7设置为输入方向,键盘的列线

P1DIR|=BIT1;

P1DIR|=BIT3;//将P1.1和P1.3设置为输出方向

P1IE|=BIT4;//管脚P1.4使能中断

P1IES|=BIT4;//对应的管脚由高到低电平跳变使相应的标志置位

………………

P1IE|=BIT7;//管脚P1.7使能中断

P1IES|=BIT7;//对应的管脚由高到低电平跳变使相应的标志置位

return;

}

程序中,键盘列线被设置为输入方向,只能读该端口的数据;行线被设置成输出方向,该端口可读可写,可用定时器B使其循环输出高低电平,以监测按键事件。

2、定时器B的初始化程序:

voidInit_TimerB(void)

{

TBCTL=TBSSEL0+TBCLR;//选择ACLK=32768HZ,清除TAR

TBCCTL0=CCIE;//TBCCR0中断允许

TBCCR0=4096;//时间间隔为0.125s

TBCTL|=MC0;//增记数模式

}

由以上程序可以看出,通过设置TBCTL可以设置定时器B的时钟源选择,设置TBCCR0来确定时间间隔,用户可以根据自己的需要调整相应寄存器的值以满足自己的要求。

在这里由于选择的时钟源频率为32768KHz,并为增计数模式,所以定时时间为4096/32768=0.125s。

4.3.2中断处理程序

该部分主要是定时器B中断和端口中断处理两个部分。

定时器B中断主要负责设置行线的电平,使系统处于按键输入状态。

端口中断主要是负责判断哪个列线上有按键输入,从而获得数据。

下面给出部分的程序代码。

1、定时器B中断服务程序。

该部分代码主要完成循环将相应的行线设置为低电

平和高电平,使系统处于按键输入状态。

#pragmavector=TIMERB0_VECTOR

__interruptvoidTimerB_ISR(void)

{

switch(PORT_count)

{

case0:

{

PORT_count=1;

P1OUT|=BIT3;//p1.3设置为高电平

P1OUT&=~(BIT1);//p1.1设置为低电平

break;

}

case1:

{

PORT_count=0;

P1OUT|=BIT1;//p1.1设置为高电平

P1OUT&=~(BIT3);//p1.3设置为低电平

break;

}

default:

break;

}

}

上面程序中,PORT_count用来标记按键所按下的行号,与下面的端口中断服务程序配合使用就可以得到按下的键的位置。

2、端口中断服务程序。

该模块主要用来判断哪根列线出现了低电平,从而获得

输入值。

下面为部分程序代码:

#pragmavector=PORT1_VECTOR

__interruptvoidPORT_ISR(void)

{

Delay_ms(50);//消除延时抖动

if(P1IFG&BIT4)//P1.4列线上有按键输入

{

P1IFG&=~(BIT4);//清除中断标志位

Delay_ms

(1);//消除抖动

switch(PORT_count)//获得输入值

{

case0:

PORT_INPUT=10;//FUN_Key键,功能键

/*所需要的处理动作*/

break;

case1:

PORT_INPUT=11;//T_Key键,用以显示"时间"

/*所需要的处理动作*/

break;

default:

break;

}

}

elseif(P1IFG&BIT5)//P1.5列线上有按键输入

{}

elseif(P1IFG&BIT6)//P1.6列线上有按键输入

{}

else//P1.7列线上有按键输入

{}

}//端口中断服务程序结束

由以上程序可以看出,键值判断的具体过程是这样的:

进入端口中断服务程序之后,首先是用if—else语句判断是哪个口产生了中断。

判断出中断入口之后,清除相应的中断标志位P1IFG.x,然后再结合在定时器B中断服务程序中所记录的PORT_count值来选择确定按键所处的位置。

比如:

如果当前的中断入口是P1.4,同时若PORT_count==0,那么由定时器B中断服务程序可以得知,当前P1.3=0,P1.1=1,那么用户按下的键是FUN_Key(参照键盘电路图)。

其它判断以此类推。

限于文章篇幅,以上程序只简单给出了P1.4口产生中断时键值的判断过程。

其余各口P1.5、P1.6、P1.7都与P1.4口的判断方法相同。

然而,对于本系统来说,我们的目的不是简单的判断是哪个键被按下了,然后获取键值,而是要求当有键被按下时,系统要根据被按下的键做出相应的反应(主要是指LCD的显示动作),编写控制这些反应的程序代码是编写端口服务程序的主要工作。

为了比较清楚的了解本系统输入中断服务程序和主程序之间的结构关系,请先参看下图4-4:

图4-4输入模块与主程序结构关系图

如上图所示,主程序是一直处于循环状态的。

当有按键按下,程序进入“有输入分支”并进入中断接受按键输入信息,接收完毕之后,根据新信息更新循环输出内容;若无输入,则程序依据原有信息不断循环。

下面将分别说明各个按键的功能及其程序设计。

1、FUN_Key键:

功能键。

这个键主要是用来设置各个检测通道的上限和下

限的。

当按下1次时,LCD进入限值设定页面;这时,再用Up_Key键和Down_Key键选择所需要设置的通道号;选定完毕之后,按FUN_Key键确认,LCD进入该通道的上下限设置页面,再用Up_Key键和Down_Key键选择所需设置的限位,FUN_Key键确认;最后,用Up_Key键和Down_Key键设置限位数据。

设置完毕后,进入主程序循环。

这个过程可以用下图4-5来描述:

图4-5限值设置流程图

由上图可以看出,FUN_Key键的功能是通过FUN_Key的值来判别的,所以就可以在FUN_Key键动作时,赋以变量FUN_Key不同的值,其它程序则可以根据变量FUN_Key的值的不同来判别需要什么动作。

如上分析,端口服务程序中,FUN_Key键的代码如下:

PORT_INPUT=10;//#键,功能键

FUN_key++;

FUN_key=FUN_key%4;//最大值为3,在0--3之间循环

以上PORT_INPUT为按下改键时的输入值,可以作为该键区别于别的键的标志。

2、Up_Key键和Down_Key键:

增减键。

这两个键用来选择通道号、具体门限

量和设置限值。

但是,具体设置的是以上所述三者中的哪一个,取决于FUN_Key的值。

FUN_Key的值和Up_Key键和Down_Key键的功能对应关系,可以由图4-5很清楚的得到。

由以上分析,Up_Key键和Down_Key键的部分代码如下:

(1)Up_Key键:

switch(FUN_key)

{

case1:

///FUN_key=1选择需要设置的量

stairs=stairs%9;//一共8个通道,故通道号要在1—8之间循环

stairs++;

break;

case2:

///FUN_key=2选择设置上限的门限

line=22;

break;

case3:

//FUN_key=3设置上限、下限值

switch(stairs)

{

case1:

if(line==22){T1up++;}

else{T1down++;};

break;

……………

case8:

if(line==22){Q2u

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 党团工作 > 其它

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1