dsp温度采集Word文件下载.doc

上传人:wj 文档编号:344651 上传时间:2023-04-28 格式:DOC 页数:20 大小:1.47MB
下载 相关 举报
dsp温度采集Word文件下载.doc_第1页
第1页 / 共20页
dsp温度采集Word文件下载.doc_第2页
第2页 / 共20页
dsp温度采集Word文件下载.doc_第3页
第3页 / 共20页
dsp温度采集Word文件下载.doc_第4页
第4页 / 共20页
dsp温度采集Word文件下载.doc_第5页
第5页 / 共20页
dsp温度采集Word文件下载.doc_第6页
第6页 / 共20页
dsp温度采集Word文件下载.doc_第7页
第7页 / 共20页
dsp温度采集Word文件下载.doc_第8页
第8页 / 共20页
dsp温度采集Word文件下载.doc_第9页
第9页 / 共20页
dsp温度采集Word文件下载.doc_第10页
第10页 / 共20页
dsp温度采集Word文件下载.doc_第11页
第11页 / 共20页
dsp温度采集Word文件下载.doc_第12页
第12页 / 共20页
dsp温度采集Word文件下载.doc_第13页
第13页 / 共20页
dsp温度采集Word文件下载.doc_第14页
第14页 / 共20页
dsp温度采集Word文件下载.doc_第15页
第15页 / 共20页
dsp温度采集Word文件下载.doc_第16页
第16页 / 共20页
dsp温度采集Word文件下载.doc_第17页
第17页 / 共20页
dsp温度采集Word文件下载.doc_第18页
第18页 / 共20页
dsp温度采集Word文件下载.doc_第19页
第19页 / 共20页
dsp温度采集Word文件下载.doc_第20页
第20页 / 共20页
亲,该文档总共20页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

dsp温度采集Word文件下载.doc

《dsp温度采集Word文件下载.doc》由会员分享,可在线阅读,更多相关《dsp温度采集Word文件下载.doc(20页珍藏版)》请在冰点文库上搜索。

dsp温度采集Word文件下载.doc

(3)熟悉并掌握软件设计方面的DSP液晶显示功能

(4)熟悉TMS320F2812的硬件资源和使用方法

2总体方案介绍

2.1设计任务

(1)熟悉MC1403芯片的应用

(2)设计由MC1403和热门电阻组成的温度采集电路

(3)将温度采集电路中热敏电阻的阻值变化转变为输入端的变化,根据电压—温度转换公式,检测温度变化

(4)完成程序流程图的设计

(5)完成软件设计方面的A/D转换和LCD显示程序

(6)软硬件联合调试

(7)最终结果在液晶显示屏上显示相应的文字及温度

2.2设计思路

首先设计由MC1403和热敏电阻组成的温度采集电路,利用热敏电阻输出电压值与温度间的函数关系,检测温度的变化;

然后将采集到的温度送入TMS320F2812中的A/D转换模块,将电压转换为数字信号;

最后通过编写LCD显示函数来控制相应的温度及文字的变化。

系统设计原理框图如下图:

TMS320F2812

温度采集电路

A/D转换模块

LCD显示模块

本设计是基于TMS320F2812的水温控制系统,使用TMS320F2812的片上A/D。

它功能强大,运行速度快,是专门为电动机控制应用优化的控制芯片,在本设计中,它主要完成各种模拟、数字信号的采样及转换。

使用的元件如下:

(1)TMS320F2812主控芯片。

它是一种特殊用途的单片机,其结构如下图所示:

SCI串口

SPI串口

看门狗定时器

7个8位I/O口

线

程序/数据/I/O总线

程序ROM/FLASH

16K字

数据RAM

544字

3个定时器

9个比较单元

12个PWM输出

死区控制器件

4个输入捕获

正交编码脉冲控制

16位寄存器

16位桶式

左移移位16*6乘法器

器32位寄存器

左移移位器

32位ALU

32位累加器

左移移位器

3个辅助寄存器

8层硬件堆栈

重复计数器

2个状态寄存器

8路12位A/D转换器

TMS320F2812芯片的内核概述

TMS320F2812DSP内核采Harvard结构体系,即相互独立的数据总线,提供了片内程序存储器和数据存储器、运算单元、一个32位算术/逻辑单元、一个32位累加器、一个16位乘法器和一个16位桶形移位器组成,体系采取串行结构,运用流水线技术加快程序的运行,可在一个处理周期内完成乘法加法和移位计算,其内核计算速度为20MIPs(一个指令周期为50ns)。

外设有A/D转换大容量存储器,l6位和32位的定时器比较单元、捕获单元、PWM波形发生器、高速异同步串行口和独立可编程复用I/O等组成,其中通过三个通用定时器和九个比较器的结合产生多达l2路的PWM输出结合灵活的波形发生逻辑和死区发生单元能生成对称、不对称以及带有死区时间的空间矢量PWM波形DSP芯片中集成的这些功能大大简化了整个控制系统。

此外,该DSP还具有快速的中断处理能力,及硬件寻址控制、数据指针逆序寻址等多种特有的功能,将有利于TMS320F2812A在电机控制中的作用。

(2)MC1403芯片(图2)

图2

MC1403是低压基准芯片,为模数转换模块提供基准电压。

因为MC1403的输出是固定的,所以只需要用到Vin,Vout,GND三个引脚。

MC1403芯片为模数转换提供基准电压,利用热敏电阻进行温度采集,采集后的输出电压与DSP的引脚相连。

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

为了确保A/D转换精度,这里采用多次取值求平均。

(3)热敏电阻LM35

适当阻值的热敏电阻感应一定范围内的温度变化,提供相对精确的值。

3硬件设计

3.1最小系统设计

最小系统设计:

TMS320F2812芯片包含33个电源引脚,时钟模块,分别有电源复位,复位引脚/RS,软件复位,非法地址,看门狗定时器溢出,欠电压复位这6种信号使DSP控制器复位。

在设计中采用了由PCRESET引脚PCRESET电源复位的方式。

为了可靠复位,高电平的有效时间至少保持6个时钟周期。

DSP平最小系统指的是由F2812芯片组成的电源模块,复位电路和晶振电路组成的无外围设备的系统。

最小系统如图1:

图1DSP最小系统图

3.2温度采集电路

由MC1403和热敏电阻组成温度采集电路。

MC1403的Vin端接入一个5V左右的模拟电压值,并在此端(1脚)接入电容滤除其它频率分量;

在Vout端(2脚)输出一个稳定的电压值,接、TMS320F2812的23引脚;

GND端(3脚)直接接地,接TMS320F2812的33引脚。

原理图如图3:

图3温度采集电路原理图

3.3A/D模数转换模块

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

器ADCTRL2的ADCFIFO1或ADCFIFO2,以确定当前结果寄存器的状态,保证读取的结果是正确的。

并且12位的转换结果放在结果寄存器的高12位上,该12位数据与外部模拟输入电压的关系为:

12位数字结果=4095*(输入电压/基准电压)

3.4LCD液晶显示模块

DSP需要对读写周期较慢的液晶显示模块进行访问,这样就存在DSP与慢速设备之间的输入/输出时序匹配问题。

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

由于慢速外设的读写周期相对DSP较慢,要使两者的时序匹配,还必须进行一些时序方面的控制处理,一种处理方法是软件编程等待状态发生器,将外部总线周期扩展到数个机器周期。

由于受硬件条件的限制,这种扩展通常也是有限的。

另一种处理方法是利用DSP的READY(外部设备准备就绪)引脚,通过硬件扩展实现外部状态自动等待,从而使DSP与慢速设备之间的时序匹配。

虽然可以将总线周期扩展到任意个机器周期,但是需要进行硬件扩展,增加了系统设计的复杂度。

间接访问是用DSP的数字I/O间接控制慢速设备通过软件控制DSP的I/O口来实现与慢速设备的时序匹配。

此种方式无需硬件扩展即可实现与任意时序慢速设备之间的时序匹配。

本设计采用间接访问方式来实现DSP与LCD之间的时序匹配,即在程序中加入大量延时语句。

由于DSP为3.3V设备,而液晶显示模块属于+5V设备,所以在连接控制线、数据线时需要加电平隔离和转换设备。

液晶模块如下图:

4软件设计

4.1软件系统分析

首先要初始化A/D转换模块,然后等待中断,当产生中断后对采集到的模拟信号进行处理,为了确保转换精度应多次取值求平均,将其转换结果放在结果寄存器的高12位上,最后将处理后的温度值送到LCD上显示。

系统设计原理框图如图4:

图4系统设计原理框图

4.2软件系统流程图

开始

初始化DSP时钟

初始化CTR

初始化AD采样时钟

中断采集,数据存入Voltagel中

数据处理后的温度值送到LCD显示

清楚并显示相关文字

启动AD0通道采集

5系统调试

MC1403芯片Vin端输入一个+5V的模拟电压值;

在输入端接一个电容滤除其它频率分量;

在Vout端输出了一个稳定的电压值;

GND端直接接模拟地;

给试验箱供电,打开SetupCCS2(‘C2000),在弹出的对话框中选择ICETEK-5100USBEmulatorforTMS320F2812导入,进行配置设置然后进入CCS2(‘C2000),打开工程文件进行编译生成.out文件下载到硬盘中然后调试,观察液晶显示屏,第一行显示“温度”,第二行显示“显示”,第三行显示“35.91℃”,当用手触摸时,温度显示不断变化,实现了温度的采集与显示。

6设计总结

这次的课程设计,我们小组的设计题目是:

温度采集与显示。

通过这段时间的学习使我对C语言编程方法有了更深入的了解,从中学到了很多编程思想,并且进一步了解了DSP芯片的机制,经过这次课程设计,我不仅对以前所学的知识有了较深刻的理解,而且动手能力、独立解决问题的能力有所提高。

这个课程设计对于以后搞科研项目很有帮助通过我们组成员的共同努力,我们终于完成了设计要求。

主要是通过使用MC1403芯片、电容、热敏电阻等元器件,设计并制作一个硬件电路,通过软件编程得到电压关于温度的函数,经过A/D转换电路把模拟电压信号转换成数字信号,再利用公式,在LCD液晶显示屏上显示出转换后对应的温度变化数值。

在这次课程设计中,我主要负责的是软件编程及调试。

在这里我遇到了很大的困难,虽然有书籍和网络上查找的辅导资料,但是由于软件设计是意见灵活的东西,它不仅需要有过硬的编程知识,还必须有灵活的应用,因此在这方面的调试时花费了大量的时间。

首先,我把编程想的过于简单,以为只是把每个模块的子程序编写成功便可以,却忽视了模块与模块之间的相关性和衔接性,因此总出现参数定义不准确和函数声明不相符的错误。

其次,由于自已的粗心不严谨,导致出现大小写不符,缺少分号或大括号的低级错误。

但是,在这一过程中主要感谢老师的耐心指导和组员的帮助,顺利的完成了任务,实现了软硬件的调试,最终在LCD显示屏幕上显示相应的文字和温度。

通过课程设计,不仅锻炼了我们动手动脑的能力,而且提高了我们分析问题、解决问题的能力,更重要的是提高了我们的团队合作的能力,遇到问题时不要慌张,冷静思考,实在解决不了时应向老师和同学寻求帮助。

最后感谢宋老师在课程设计中给我们的指导。

通过本次设计试验对C语言编程和仿真有了更深一步的了解,为以后的工作打好了基础,也为将来毕业设计报告的完成

做一次实战演习。

7参考文献

[1]吴冬梅,张玉杰DSP技术及应用北京大学出版社,2007

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

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

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

8附件

8.1元件清单

(1)TMS320F2812芯片。

(2)热敏电阻LM35

(3)TPS73HD318

(4)SN74LS08

(5)MC1403

(6)1602液晶.

(7)晶振,电容,电阻等等。

8.2原理图

8.3源程序

(1)等待ADC中断程序

#defineADC_usDELAY8000L

#defineADC_usDELAY220L

interruptvoidadc_isr(void);

Uint16LoopCount;

Uint16ConversionCount;

Uint16Voltage1[1024];

Uint16Voltage2[1024];

floattemp;

Uint16i,j;

voidInitAdc(void);

interruptvoidadc_isr(void)

{

Voltage1[ConversionCount]=AdcRegs.ADCRESULT0>

>

4;

Voltage2[ConversionCount]=AdcRegs.ADCRESULT1>

//If40conversionshavebeenlogged,startover

if(ConversionCount==200)

{

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;

}

//ReinitializefornextADCsequence

AdcRegs.ADCTRL2.bit.RST_SEQ1=1;

//ResetSEQ1

AdcRegs.ADCST.bit.INT_SEQ1_CLR=1;

//ClearINTSEQ1bit

PieCtrlRegs.PIEACK.all=PIEACK_GROUP1;

//AcknowledgeinterrupttoPIE

return;

}

voidInitAdc(void)

externvoidDSP28x_usDelay(Uint32Count);

AdcRegs.ADCTRL3.bit.ADCBGRFDN=0x3;

//Powerupbandgap/referencecircuitry

DELAY_US(ADC_usDELAY);

//DelaybeforepoweringuprestofADC

AdcRegs.ADCTRL3.bit.ADCPWDN=1;

//PoweruprestofADC

DELAY_US(ADC_usDELAY2);

//DelayafterpoweringupADC

}

(2)延时子程序

voidDelay(unsignedintnDelay)

intii,jj,kk=0;

for(ii=0;

ii<

nDelay;

ii++)

{

for(jj=0;

jj<

1024;

jj++)

{

kk++;

}

}

(3)打开显示子程序

voidTurnOnLCD()

*(int*)0x108001=LCDCMDTURNON;

Delay(LCDDELAY);

*(int*)0x108002=0;

Delay(2048);

*(int*)0x108001=LCDCMDSTARTLINE;

(4)清屏程序

voidLCDCLS()

inti,j;

for(i=0;

8;

i++)

*(int*)0x108001=LCDCMDPAGE+i;

Delay(LCDDELAY);

*(int*)0x108002=0;

*(int*)0x108001=LCDCMDVERADDRESS;

for(j=0;

j<

64;

j++)

*(int*)0x108003=0;

Delay(LCDDELAY);

*(int*)0x108002=0;

*(int*)0x108001=LCDCMDPAGE+i;

*(int*)0x108004=0;

(5)显示模块

//汉字模块

voidLCDWrite(unsignedintx,unsignedinty,unsignedintLR,unsignedintn)

unsignedcharlcdkey[5][32]=

{0x10,0x21,0x86,0x70,0x00,0x7E,0x4A,0x4A,0x4A,0x4A,0x4A,0x7E,0x00,0x00,0x00,0x00,

0x02,0xFE,0x01,0x40,0x7F,0x41,0x41,0x7F,0x41,0x41,0x7F,0x41,0x41,0x7F,0x40,0x00},//温

{0x00,0x00,0xFC,0x04,0x24,0x24,0xFC,0xA5,0xA6,0xA4,0xFC,0x24,0x24,0x24,0x04,0x00,

0x80,0x60,0x1F,0x80,0x80,0x42,0x46,0x2A,0x12,0x12,0x2A,0x26,0x42,0xC0,0x40,0x00},//度

{0x00,0x00,0x00,0x3E,0x2A,0xEA,0x2A,0x2A,0x2A,0xEA,0x2A,0x3E,0X00,0X00,0X00,0X00,

0x20,0x21,0x22,0x2C,0x20,0x3F,0x20,0x20,0x20,0x3F,0x28,0x24,0x23,0x20,0x20,0x00},//显

{0x00,0x20,0x20,0x22,0x22,0x22,0x22,0xE2,0x22,0x22,0x22,0x22,0x22,0x20,0x20,0x00,

0x10,0x08,0x04,0x03,0x00,0x40,0x80,0x7F,0x00,0x00,0x01,0x02,0x0C,0x18,0x00,0x00},//示

{0x00,0x02,0x05,0xE2,0x18,0x04,0x02,0x02,0x02,0x02,0x02,0x02,0x04,0x1E,0x00,0x00,

0x00,0x00,0x00,0x07,0x18,0x20,0x40,0x40,0x40,0x40,0x40,0x40,0x20,0x18,0x00,0x00},//℃

};

if(LR==0)

{

intj;

intk=n;

*(int*)0x108001=LCDCMDPAGE+x;

Delay

(1);

*(int*)0x108002=0;

*(int*)0x108001=LCDCMDVERADDRESS+y;

for(j=0;

16;

j++)

{

*(int*)0x108003=lcdkey[k][j];

Delay(10);

*(int*)0x108002=0;

}

x++;

*(int*)0x108001=LCDCMDPAGE+x;

Delay

(1);

*(int*)0x108002=0;

*(int*)0x108001=LCDCMDVERADDRESS+y;

for(j=16;

32;

*(int*)0x108003=lcdkey[k][j];

Delay(100);

*(int*)0x108002=0;

}

else

intj;

*(int*)0x108004=lcdkey[k][j];

x++;

*(int*)0x10

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

当前位置:首页 > 经管营销 > 经济市场

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

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