基于DSP的温度采集与显示.docx

上传人:b****0 文档编号:9179562 上传时间:2023-05-17 格式:DOCX 页数:25 大小:287.03KB
下载 相关 举报
基于DSP的温度采集与显示.docx_第1页
第1页 / 共25页
基于DSP的温度采集与显示.docx_第2页
第2页 / 共25页
基于DSP的温度采集与显示.docx_第3页
第3页 / 共25页
基于DSP的温度采集与显示.docx_第4页
第4页 / 共25页
基于DSP的温度采集与显示.docx_第5页
第5页 / 共25页
基于DSP的温度采集与显示.docx_第6页
第6页 / 共25页
基于DSP的温度采集与显示.docx_第7页
第7页 / 共25页
基于DSP的温度采集与显示.docx_第8页
第8页 / 共25页
基于DSP的温度采集与显示.docx_第9页
第9页 / 共25页
基于DSP的温度采集与显示.docx_第10页
第10页 / 共25页
基于DSP的温度采集与显示.docx_第11页
第11页 / 共25页
基于DSP的温度采集与显示.docx_第12页
第12页 / 共25页
基于DSP的温度采集与显示.docx_第13页
第13页 / 共25页
基于DSP的温度采集与显示.docx_第14页
第14页 / 共25页
基于DSP的温度采集与显示.docx_第15页
第15页 / 共25页
基于DSP的温度采集与显示.docx_第16页
第16页 / 共25页
基于DSP的温度采集与显示.docx_第17页
第17页 / 共25页
基于DSP的温度采集与显示.docx_第18页
第18页 / 共25页
基于DSP的温度采集与显示.docx_第19页
第19页 / 共25页
基于DSP的温度采集与显示.docx_第20页
第20页 / 共25页
亲,该文档总共25页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

基于DSP的温度采集与显示.docx

《基于DSP的温度采集与显示.docx》由会员分享,可在线阅读,更多相关《基于DSP的温度采集与显示.docx(25页珍藏版)》请在冰点文库上搜索。

基于DSP的温度采集与显示.docx

基于DSP的温度采集与显示

摘要

随着时代的进步和发展,单片机技术已经普及到我们生活,工作,科研,各个

领域,已经成为一种比较成熟的技术,给出了一个基于DSP技术实现高速度、宽范围、

高精度的温度采集系统方案。

系统以DSP为控制核心,通过测温电路采集温度数据,

经AD转换后给DSP控制器。

重点给出叠代法计算方法,DSP与AD转换接口电路以及系统控制软件的设计。

关键词:

温度采集;DSP;叠代法;AD

摘要I

第1章引言1

第2章系统分析2

2.1设计要求2

2.2设计思路2

第3章总体设计3

3.1系统框图设计3

3.2硬件设计3

第4章程序流程图与源程序8

4.1软件系统流程图8

4.2软件程序设计8

第5章运行结果9

5.1运行描述9

5.2系统调试9

5.3调试结果9

第6章总结10

参考文献12

致谢12

附录12

第1章引言

在国民经济各部门,如电力、石油、化工、机械、冶金、农业、医学以及人们的

日常生活中,通常需要对温度进行采集和显示。

传统的以单片机为核心的温度采集和

显示系统,由于收到处理器自身硬件资源和速度的限制,硬件电路设计复杂,数据实

时处理能力差。

随着计算机技术尤其是超大规模集成电路技术的发展,具有更强处理

能力的DSP芯片,以其运算速度块、实时性强、功耗低、抗干扰能力强等特点愈来愈多地被应用。

本文设计了一种以TMS320VC33DSP作为温度采集和显示的核心,应用TMS320240EFGW型液晶显示模块实时显示信息,并配以RS232通用串行接口与PC机进行通信的系统。

该系统具有电路结构简单、功耗低、实时性强、数据传输方便等优点。

第2章系统分析

2.1设计要求

此系统利用热敏电阻测得电阻一温度之间的关系,找到电阻和温度之间的代数关系,从而检测温度,设计硬件外扩电路,同时设计软件程序,包括A/D程序设计,进行软硬件联系调试,能在液晶显示屏上显示温度。

2.2设计思路

系统首先设计温度采集硬件电路,在多次实验运算拟合出热敏电阻输出电压值与

温度之间的函数关系,热敏电阻的输出的电压值随温度的上升而下降,呈现出负系数,

从而运用于实验中检测温度;然后将采集的温度送入DSPTMS320F2812模数转换模

块将电压信号变为数字信号,再编写函数来控制LCD来显示相应的温度及相关文字。

第3章总体设计

3.1系统框图设计

该系统包括温度采集电路模块、DSPF2812芯片、A/D转换部分和LCD液晶显示,首先要初始化A/D转换模块,然后等待中断,当产生中断后对采集到的模拟信号进行处理,为确保转换精度要进行多次取值求平均,转换结果放在结果寄存器的高12位上,通过编程将处理后的温度值送到LCD上进行显示。

温度采集电路JDSPF2812A/D转换电路液晶显示模块

图1系统设计流程图

3.2硬件设计

3.2.1控制芯片

控制芯片32位TMS320F2812芯片,该DSP芯片专门用于控制领域,最高可在150MHz主频下工作,可进行双16X16乘加和32X32乘加操作,运算与控制速度快,并带有18KX16位片上SRAM和128KX16位片上FLASH;并带有两个事件管理模块,可以同时产生多路PWM信号;16路12位片上ADC,可以同时进行16路转换。

另外,该器件还有3个独立的32位CPU定时器以及多达56个独立编程的GP10引脚和19根外部扩展地址总线。

TMS320F2812采用哈佛总线结构,具有密码保护机制,保护程序和数据不被盗取。

因此,该芯片片上资源丰富,功能多、性价比高,利于简化软硬件设计,非常适用于温度采集与显示系统化的设计。

在设计的初期,把它分成了五个模块。

其中复位采用电源复位的方式,由引脚PCRESET引起。

为了可靠复位,其中低电平的有效时间至少6个CPU时钟周期。

DSP最小系统组成框图如图1所示。

图2DSP最小系统

其中:

开关SW-PB、电容C1、两个反相器及其电阻电源构成了复位电路,晶振与两个并联电容接XTAL1与XTAL2构成振荡电路,PWM1与PWM7构成了调制信号的输入与输出,旁路引脚接地,请求控制信号MP/MC与GND接地。

3.2.2A/D转换模块

当模/数转换完成后,读取结果寄存器前,最好先读取模/数转换控制寄存器

ADCRL2的ADCFIF01或ADCFIF02,以确定当前结果寄存器的状态,保证读取的结果是正确。

另外,要注意12位的转换结果放在结果寄存器中的高12位上,该12位

数据与外部模拟输入电压的关系为:

12位数字结果=4095*(输入电压/基准电压)数模转换部分采用TMS320F2812内部的PWM功能结合外部滤波电路完成转换,电路如图5所示。

TMS320F2812将内部计算的控制信号转换成占空比可变PWM信号输出,为保证TMS320F2812不受后级返回来的信号干扰,故经光电隔离,送入RC组成的滤波网络变换成平滑电压信号再送往后级信号转换电路,将信号转换成4〜20mA标准信号输出。

323LCD液晶显示模块

DSP经常会对读写周期较慢的输入/输出设备(如液晶显示模块、打印机、键盘等)进行访问,通常以下两种方法来解决DSP与这些慢速设备之间的输入/输出时序匹配问题。

直接访问方式是将DSP的读写信号限于慢速设备接口控制板引出的读写信号线直接相连,时序由DSP内部读写逻辑控制。

由于慢速外设的读写周期相对DSP较慢,是两者的时序匹配,还必须进行一些时序方面的控制处理。

一中处理方法是软件编程等待状态发生器,将外部总线周期扩展到数个机器周期。

由于受硬件条件的限

制,这种扩展通常也是有限的。

此系统中显示器采用液晶显示方式,一款基于SED1335控制器的图形液晶显示模块。

LCM320240,320X240点阵,点大小为0134X0134mm2,点间距为0102mm,内含7602个简体中文字型。

SED1335有较强功能的1/0缓冲器,可以随时准备接收TMS320F2812的访问,并可在内部时序下及时地把TMS320F2812发来的指令和数据传输到位。

TMS320F2812与LCM3202401的连接方式如图4

示,LCM3202401芯片的XA13:

18及XZCS0/1经过译码确定LCM3202401的

片选信号,其地址范围为0x003A00〜0X003AFF,数据端口地址为:

0X002A00,命令端口地址为:

0x002A01,这些地址映射被到TMS320F2812的外部区域0中,1DIR与读信号线连接用于控制数据的传输方向,通过调节电位器可以调整液晶的显示对比度。

图4显示电路

3.2.4电源电压模块

(1)设计方案

MC1403芯片为模数转换提供基准电压,且输入端接+5V电源后再并联一个去噪声的电容,利用热敏电阻进行温度采集,采集后的输出电压(不得大于3.3v)与

DSP的P2端口23引脚相连。

(2)模块分析

MC1403芯片的引脚结构如下图所示

Vin-

1

-NC

Vout-

2

7

-NC

GND-

3

6

-NC

NC-

4

5

-NC

图5MC1403芯片

Vin端口输入一个4.5~5.0V的模拟电压值(接P2口的1引脚),在输入端接一个电容滤除其他频率分量,在Vout端输出了一个稳定的电压值(接P2口的23引脚),该电

压值不得大于3.3V,GND端接模拟地(接P2口的33引脚)

•3.2.5外扩电路设计图

图6温度采集电路原理图

第4章程序流程图与源程序

4.1软件系统流程图

软件系统流程图如图5所示

图5程序流程图

4.2软件程序设计

该程序主要包括主程序、延时、A/D转换,液晶屏相应汉字显示、温度计算与显示等子程序实现温度采集与显示的功能,程序详见附录。

第5章运行结果

•5.1运行描述

M1403芯片作为模数转换提供基准电压,利用热敏电阻进行采集,采集后的输

出电压与DSP的P2口23引脚相连。

将采集到的电压送入A/D转换模块,编写程序实现A/D转换,转换结果放在结果寄存器的高12位上,编写函数获取A/D转换结果,将处理的温度值的各个对应显示到LCD上。

•5.2系统调试

MC1403芯片Vin端输入一个+5V的模拟电压值;在输入端接一个电容滤除其它频率分量;在Vout端输出了一个稳定的电压值;GND端直接接模拟地;给试验箱供电,打开SetupCCS2(C2000),在弹出的对话框中选择ICETEK-5100USBEmulatorforTMS320F2812导入,进行配置设置然后进入CCS2(C2000),打开工程文件进行编译生成.out文件下载到硬盘中然后调试,观察液晶显示屏,第一行显示“温度显示”,第二行显示“温度值C”,当用手触摸时,温度显示不断变化,实现了温度的采集与现实。

-5.3调试结果

将程序烧到实验箱中,得到运行结果如下图6所示

图6调试结果

回顾起此次单片机课程设计,我感慨颇多,从理论到实践,在两周的日子里,可以说得是苦多于甜,但是可以学到很多的的东西,不仅是学习上的,而且是关于做人做事方面的感悟,也让我知道了温度采集与显示这一技术在社会上的作用。

通过学习DSP课程我们都知道,DSP实际上也是一种单片机,它同样是将中央处理单元、控制单元和外围设备集成到一块芯片上。

但DSP有别于普通的单片机,

它采用了多组总线技术实现并行运行机制,从而极大地提高了运算速度,也提供了非

常灵活的指令系统。

此次的课程设计我们组做的设计是一温度采集与显示,在此次过程中我遇到的第一个比较难的问题就是编程序,因为之前没学的好,很多指令都不熟悉,通过几天的努力,从网上下载的资料和同学的帮助下还是完成了,设计的一开始我们就着手准备

设计资料,上网、图书馆查阅资料,我们分工明确,每个同学都有自己的任务,因此工作进行得有条不紊,大家都很有责任感,认真做好自己的工作。

在这次课程设计中由于另外两位组员分别负责来了硬件设计和软件设计部分,因

此他们就让我画好流程图,以前每次课程设计基本上都是我画的,因此对我来说难度不大,所以我就先辅助了一下硬件设计部分,硬件设计中我们采用的是TMS320F2812芯片作为控制芯片,虽然老师在上实验课的时候已经简单的介绍过该芯片的特性与使用,但是在用它就出现了很多问题,在这里我遇到了很大的困难,虽然有书籍和网络上查找的辅导资料,但是由于硬件设计是灵活的东西,它不仅需要有过硬的理论知识,还必须有灵活的应用,因此在这方面的调试时花费了大量的时间。

首先,我们把系统想的过于简单,以为只是把每个模块的电路设计成功便可以,却忽视了模块与模块之

间的相关性和衔接性,因此总出现错误。

其次,与组员沟通不够,硬件设计的参数与组员编程所用的不相符,导致出现硬件测试没问题,软件调试没问题,两者导入,就不行的状况,更由于各执己见坚持自己是对的一直没有发现问题所在,最后通过请教

老师才得以解决。

最后说说自己对这门课程的感受,课堂教学考虑到大多数同学的需求,主要强调

“基本”基本知识,基本理论,基本方法,基本技能。

而这次设计正是为我们提

供了一个深入学习,探索的机会,成为课堂教学的有益补充。

课程设计诚然是一门专业课,给我许多专业知识以及专业技能的提升,同时又是一门讲道理,一门辨思课,给了我莫大的空间。

同时,设计让我感触很深,使我对抽象的理论有了具体的认识。

虽然此前我对DSP并不熟悉,学到的东西应用不是很好,理论联系不了实际。

正好这次机会让我好好的锻炼了自己,让自己的能力得到了一定的提升。

过这次课程设计使我懂得了理论与实际相结合是很重要的,只有理论知识是远远

不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正为社会服务,从而提高自己的实际动手能力和独立思考的能力。

我在设计的过程中遇到了许多问题,同时也发现了自己的不足之处,对以前所学过的知识理解得不够深刻,掌握得不够牢固,在此后的日子里,我会学别人之所长,去自己之所短。

最后衷心的感谢始终支持我们的老师与同学,你们辛苦了!

参考文献

[1]万山明•TMS320F281XDSP原理及应用实例•北京航空航天大学出版社,2007

[2]郑红,王鹏,董云凤,吴冠.DSP应用系统设计实践.北京航空航天大学出版社,

2006

[3]徐科军,张瀚,陈智渊.TMS320F281XDSP原理与应用.北京航空航天大学出版社,2006

[4]乔瑞萍,张芳娟.TMS320C54XDSP原理及应用[M].西安电子科技大学出版社,2005年

[5]张雄伟.DSP芯片的原理与开发应用(第三版)[M].电子工业出版社,2003年

致谢

本设计是在刘伟春老师的悉心指导下完成的,老师渊博的知识,严谨的治学态度,一丝不苟的工作作风,平易近人的性格都是我学习的楷模。

在设计的开始及整理期间,老师都给了我很大的支持和鼓励,才使得课程设计论文得以顺利的完成,在此谨向导师表示忠心的感谢和崇高的敬意。

最后我要感谢我的同学们,在电路设计与仿真过程中遇到困难时,正是由于同学们的帮助,我才能顺利的克服困难,我课程设计的完成离不开同学们的帮助!

附录

#inelude"DSP281x_Device.h"//DSP281xHeaderfileIneludeFile

#include"DSP281x_Examples.h"//DSP281xExamplesIncludeFile

//Prototypestatementsforfunctionsfoundwithinthisfile.

interruptvoidadc_isr(void);

//Globalvariablesusedinthisexample:

#defineLCDDELAY1

#defineLCDCMDTURNON0x3f

#defineLCDCMDTURNOFF0x3e

#defineLCDCMDSTARTLINE0xc0

#defineLCDCMDPAGE0xb8

#defineLCDCMDVERADDRESS0x40

#defineADC_usDELAY8000L

#defineADC_usDELAY220L

Uint16ZhengshuT,XiaoshuT,Zhongjian1,Zhongjian2;

floattemp1=0;

unsignedcharlcdkey[5][32];

unsignedcharledkey[12][8];

Uint16LoopCount;

Uint16ConversionCount;

floattemp;

Uint16i,j;

Uint16Voltage1[1024];

Uint16Voltage2[1024];

voidDelay(intnDelay);

voidTurnOnLCD();

voidLCDCLS();

voidLCDWrite(unsignedintx,unsignedinty,unsignedintLR,unsignedintn);

voidWriteNb(unsignedintx,unsignedinty,unsignedchar*No,unsignedf,unsignedint

LR);

voidWendu(floatc);

voiddelay_loop();

voiddelay_loop1();

voiderror(void);

〃数字模块

unsignedcharledkey[12][8]=〃半角

{

{0x00,0x00,0x7C,0x82,0x82,0x82,0x7C,0x00},〃0

{0x00,0x00,0x00,0x84,0xFE,0x80,0x00,0x00},〃1

{0x00,0x00,0x84,0xC2,0xA2,0x92,0x8C,0x00},〃2

{0x00,0x00,0x44,0x92,0x92,0x92,0x6C,0x00},〃3

{0x00,0x00,0x30,0x28,0x24,0xFE,0x20,0x00},〃4

{0x00,0x00,0x4E,0x92,0x92,0x92,0x62,0x00},〃5

{0x00,0x00,0x7C,0x92,0x92,0x92,0x64,0x00},〃6

{0x00,0x00,0x02,0xC2,0x32,0x0A,0x06,0x00},〃7

{0x00,0x00,0x6C,0x92,0x92,0x92,0x6C,0x00},〃8

{0x00,0x00,0x4C,0x92,0x92,0x92,0x7C,0x00},〃9

{0x00,0x00,0x00,0x66,0x66,0x00,0x00,0x00},//:

{0x00,0x60,0x60,0x00,0x00,0x00,0x00,0x00},//.

};

voidmain(void)

{

InitSysCtrl();

EALLOW;

GpioMuxRegs.GPFMUX.all=0x0000;〃I/O:

0特殊功能:

1

GpioMuxRegs.GPFDIR.all=0x000f;//output

EDIS;

DINT;

InitPieCtrl();

IER=0x0000;//CPU中断允许寄存器

IFR=0x0000;//CPU中断标志寄存器

InitPieVectTable();

EALLOW;

SysCtrlRegs.HISPCP.all=0x3;//HSPCLK=SYSCLKOUT/6给AD转换时钟提供个6分频

EDIS;

EALLOW;//ThisisneededtowritetoEALLOWprotectedregister

PieVectTable.ADCINT=&adc_isr;

EDIS;//ThisisneededtodisablewritetoEALLOWprotectedregisters

InitAdc();//初始化AD

PieCtrlRegs.PIEIER1.bit.lNTx6=1;

IER|=M_INT1;//EnableCPUInterrupt1

EINT;//EnableGlobalinterruptINTM

ERTM;//EnableGlobalrealtimeinterruptDBGM

LoopCount=0;

ConversionCount=0;

//ConfigureADC

AdcRegs.ADCMAXCONV.all=0x0001;//Setup2conv'sonSEQ1

AdcRegs.ADCCHSELSEQ1.bit.CONV00=0x0;//SetupADCINA3as1stSEQ1conv.

AdcRegs.ADCCHSELSEQ1.bit.CONV01=0x1;//SetupADCINA2as2ndSEQ1conv.

AdcRegs.ADCTRL2.bit.EVA_SOC_SEQ1=1;//EnableEVASOCtostartSEQ1AdcRegs.ADCTRL2.bit.INT_ENA_SEQ1=1;//EnableSEQ1interrupt(every

EOS)

//ConfigureEVA

//AssumesE\AClockisalreadyenabledinInitSysCtrl();

EvaRegs.TICMPR=0x0080;

EvaRegs.TIPR=0x0fff;

//SetupT1comparevalue//Setupperiodregister

//EnableEVASOCinEVA

EvaRegs.GPTCONA.bit.T仃OADC=1;

EvaRegs.T1CON.all=0x1042;TurnOnLCD();//打开显示

LCDCLS();〃清除显示内存

//Enabletimer1compare(up

*(int*)0x108000=0x80;

//初始化ICETEK-CTR

Delay(LCDDELAY);

*(int*)0x108000=0x0;

Delay(LCDDELAY);

*(int*)0x108000=0x80;

Delay(LCDDELAY);

*(int*)0x108001=LCDCMDSTARTLINE;//设置显示起始行

Delay(LCDDELAY);

*(int*)0x108002=0;Delay(LCDDELAY);

for(;;)

{

Wendu(temp);

LCDWrite(2,0,0,0);

LCDWrite(2,16,0,1);

LCDWrite(2,32,1,2);

LCDWrite(2,48,1,3);

LCDWrite(6,48,1,4);〃在液晶屏上显示相应的汉字及符号WriteNb(6,6,ledkey[ZhengshuT&0x000f],0,0);WriteNb(6,5,ledkey[(ZhengshuT&0x00f0)>>4],0,0);

WriteNb(6,2,ledkey[XiaoshuT&0x000f],0,1);WriteNb(6,1,ledkey[(XiaoshuT&0x00f0)>>4],0,1);

WriteNb(6,7,ledkey[11],0,0);〃在液晶屏上显示温度值}}

interruptvoidadc_isr(void)

{_

Voltage1[ConversionCount]=AdcRegs.ADCRESULT0>>4;

Voltage2[ConversionCount]=AdcRegs.ADCRESULT1>>4;if(ConversionCount==1023)

{

ConversionCount=0;

}

elseConversionCount++;

if(ConversionCount==0)

{temp=0;for(i=0;i<200;i++)temp=temp+Voltage1[i];temp=temp/200.0;〃求平均值

temp=temp*3.0/4095.0;

}

//ResetSEQ1

//ClearINTSEQ1bit

//AcknowledgeinterrupttoPIE

//ReinitializefornextADCseque

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

当前位置:首页 > 人文社科 > 文学研究

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2