基于tms320vc5402的多路温度控制系统设计论文大学论文.docx
《基于tms320vc5402的多路温度控制系统设计论文大学论文.docx》由会员分享,可在线阅读,更多相关《基于tms320vc5402的多路温度控制系统设计论文大学论文.docx(22页珍藏版)》请在冰豆网上搜索。
基于tms320vc5402的多路温度控制系统设计论文大学论文
基于TMS320VC5402的多路温度控制系统设计
1概述
根据题目要求设计基于TMS320VC5402的的多路温度控制系统设计。
以数字信号处理器TMS320VC5402为开发平台,利用温度传感器的特性与工作原理,设计温控开关系统。
通过选择TMS320VC5402,传感器和外围电路,实现对信号的采集,信号处理及温度的控制。
经过实验测试,结果表明系统设计方案正确可行,设计方法合理,系统各模块工作正常,测量结果准确。
2系统设计
本章主要论述设计的总体设计思路,初步确定硬件电路所需要的模块电路以及软件设计的基本步骤。
2.1系统的设计思路
2.1.1DSP系统简述
通常,一个典型的DSP系统应包括抗混叠滤波、数据采集A/D转换器、数字信号处理器DSP、D/A转换器和低通滤波器等,其组成框图如图1所示
图1DSP系统框图
本系统设计以模块电路为基础,整个系统设计的大致步骤如图2所示。
图2系统设计步骤
整个系统设计的大致步骤如图1所示,设计过程包括软件设计、硬件设计和集成测试等阶段。
其中,软件部分的设计步骤为:
1)根据设计任务和设计目标,确定系统性能指标;
2)根据需要用C语言编写程序;
3)将程序转化成DSP汇编,并送到编译器进行编译,生成目标文件;
4)将目标文件送链接器进行链接,得到可执行文件;
5)将可执行文件调入调试器进行调试,检查运行结果是否正确。
如果正确继续,否则返回修改。
2.2系统硬件结构
这次的设计任务是设计一款基于DSP微处理器的对温度进行实时监控,显示的系统。
本次设计采用TMS320VC5402DSP作为系统的主控芯片,用C语言对系统进行开发设计。
系统主要的功能有温度测量以及液晶显示等。
系统的硬件结构主要有DSP微处理器及其外围基本电路、温度采集电路、液晶显示模块等。
其设计结构框图如图3所示。
1)温度信号采集电路
温度信号是这个系统的检测量。
这部分的电路设计显得尤为重要,因为其直接影响系统的整体性能。
选择合适的电子器件和电路线路设计是这部分设计的关键。
在这次设计中,该部分采用DS18B20传感器,是整个系统数据采集的核心部分。
2)DSP系统的基本电路
TMS320VC5402作为系统的主控芯片,设计其工作的基本电路显得十分重要。
一个完整的DSP系统通常是由DSP芯片和其他相应的外围器件构成。
而外围器件中有使DSP能够正常工作的基本电路,包括电源电路、复位电路、时钟电路等。
3)温度显示电路
确定显示器件的型号,搭建显示器件与处理器之间的外围电路。
本次设计中所选用的是LCD显示屏。
尺寸是128*32,可分两行显示32英文字符或者16个汉字。
相对于数码管来说,LCD显示显得更加精致。
图3系统硬件设计框架图
2.3系统软件结构
系统软件部分设计主要包括各个模块的程序代码编写、调试。
系统程序开发用到的工具是DSP集成开发环境CCS。
DSP集成开发环境CCS可用来编写、调试程序代码,也是硬件软件综合调试的平台。
系统程序代码在CCS2.0开发平台上用C语言编写,主要包括以下内容。
1)主程序初始化:
主要完成系统上电后进行DSP配置初始化、I/O初始化、LCD初始化。
初始化完成后,系统将正常工作,接下来就能进行温度检测等操作。
2)温度测量:
温度测量模块的程序是整个系统的核心,主要完成DSP芯片从温度传感器中正确地读取温度测量值,并且计算和修正温度数据。
2.4A/D与D/A转换电路图
图4
图5
3硬件设计
3.1JTAG标准仿真接口设计
DSP目标系统与仿真器的距离小于152-4mm(6英寸),故用无缓冲的简单连接。
其中,EMU0和EMU1必须接1只上拉电阻器(一般为4.7kΩ),使信号上升时间小于10μs。
仿真器只参与数据的传输,JTAG标准仿真接口是仿真器与DSP目标系统之间必须的通信接口,为DSP目标系统的仿真和调试带来了方便。
在系统调试阶段,可以通过此仿真接口将编译后的程序代码下载到外部扩展的程序存储器,在线调试用户程序,查看内存、CPU寄存器、各种图表等内容。
系统调试成功后可以利用烧写程序通过此仿真接口将调试好的程序烧到DSP的Flash中,使DSP目标系统成为可以独立运行的系统,使DSP的开发更为方便。
3.2电源电路设计
1)TMS320VC5402电源电压结构及要求
TMS320VC5402采用了双电源供电机制,外部接口引脚仍然采用3.3V电压,便于直接与外部低压器件接口,而无需额外的电平转换电路。
理想情况下,DSP芯片上的两个电源应同时加电。
如果不能做到同时加电,应先对CVDD加电,然后对DVDD加电。
2)TMS320VC5402的电源设计的方法
考虑到大部分数字系统工作于5V和3.3V,TPS73HD318、TPS73HD325。
其中TPS73HD318的输出电压为一路1.8V、一路3.3V,每路电源的最大输出电流为750mA。
同时芯片还提供两个宽度为200ms的低电平复位脉冲。
根据TMS320VC5402的设计要求。
我们选用TPS73HD318芯片提供所需电压,具体设计应用电路如图6所示。
其中VD1为DL4148,VD3为DL5817。
图6电源电路
3.3振荡电路及复位电路设计
时钟电路用来为TMS320VC5402芯片提供时钟信号,由一个内部振荡器和一个锁相环PLL组成,可通过晶振或者外部时钟驱动。
一般TMS320VC54x芯片的时钟电路有两种。
一种是利用芯片内部的振荡器电路与X1、X2/CLK引脚之间连接的一个晶体和两个电容组成并联谐振电路,它可以产生与外加晶体同频率的时钟信号。
电容一般在0~30pf之间选择,它们可以对时钟频率起到微调的作用。
另一种方法是采用封装好的晶体振荡器,将外部时钟源直接输入X2/CLK引脚,而将X1引脚悬空,由于这种方法简单,一般系统设计都采用这种方案。
在这次设计中,我们运用了第一种方法。
其设计原理图如图7所示。
图7振荡电路
复位输入引脚RS为C54X型DSP提供了硬件初始化的方法。
这个引脚上电平的变化可以使程序从指定的存储地址FF80H开始运行。
只有当此引脚变为高电平后,芯片内的程序才可以从FF80H地址开始运行。
对于一个DSP系统而言,上电复位电路虽然只占很小的一部分,但它的好坏将直接影响系统的稳定性。
本设计要求不高,所以只采用RC复位电路,如图8所示。
图8复位电路
3.4温度测量电路设计
3.4.1温度传感器DS18B20
DS18B20传感器芯片十分轻巧。
该芯片只有三个引脚,即VDD、DQ、GND。
VD接电源,3V—5V;GND为地;DQ为数据的输入输出。
DQ作为输出时为漏极开路,必须加一4.7K的上拉电阻。
引脚图如图9所示。
图9DS18B20引脚图
DS18B20内集成了一个温度传感器、64位ROM、9个字节RAM、三个字节EERAM(掉电可保存),可将温度信号转换为数字信号直接输出。
DS18B20与外部的接口为单总线方式,即数据的输入、输出及同步均由同一根线完成。
其温度测量范围为-55℃~125℃,在-10℃~80℃范围内精度为±0.5℃,输出的温度值可编程为9~12位。
DS18B20的核心功能是它是直接输出数字信号的温度传感器。
该温度传感器的分辨率为用户配置至9,10,11或12位,相当于0.5℃,0.25℃,0.125℃和0.0625℃的增量。
其中传感器默认为12位。
该DS18B20在低功耗空闲状态;启动温度测量和模数转换,主机必须发出一个转换命令。
转换后,所产生的数据存储在内存中的2比特温度寄存器中,DS18B20返回其空闲状态。
DS18B20的输出温度数据为标准摄氏度;对于华氏温度的应用,必须通过查表或运用转换方法。
缺省状态下,数据的输出为16位,低8位D0~D7在前,高8位D8~D15在后。
其中D12~D15为符号位。
所存储的寄存器各位与温度的关系如表1所示。
表1温度存储器各位与温度的对应值
另一方面,64位ROM在器件出厂时已被设定,包含了每个器件的唯一识别码。
它们分别是:
ReadROM(33H)、MatchROM(55H)、SkipROM(CCH)、SearchROM(F0H)、AlarmSearch(ECH)。
ReadROM:
用于读出64位ROM数据,适用于仅有1个DS18B20的场合。
MatchROM:
查找与给定64位ROM数据相匹配的DS18B20。
SkipROM:
适用于仅有1个DS18B20的场合,无需给出64位码就能快速选定器件。
SearchROM:
适用于多个DS18B20的场合,该指令可识别出每个器件的ID号。
AlarmSearch:
用于温度报警查询,此处不作介绍。
9个字节RAM中,字节1、2用来存放当前测量的温度值,1为低8位,2为高8位;字节3、4用来存放预设报警温度的上下限值,3为上限,4为下限;字节5用于配置寄存器,用于确定温度数据的位数,如下表2、表3所示:
表2配置寄存器
相关位为D5、D6,其余均为无关位。
表3温度精确度配置
字节6、7、8均为保留字节,一般不用。
字节9存放前8个字节循环冗余校验码(CRC码)。
三字节的EERAM分别对应于RAM区的字节3、4、5,用于备份系统设置。
对RAM的操作指令有6条,分别为:
Write(4EH)、Read(BEH)、Copy(48H)、Convert(44H)、Recall(B8H)、ReadPower(B4H)。
Write:
用于写RAM存储器,随后的三个字节分别写入RAM字节3、4、5。
该指令必须在复位操作前完成。
Read:
读出RAM中所有9个字节的数据。
该指令可随时被复位操作所终止。
Copy:
将RAM区的3、4、5字节备份至EERAM。
Recall:
将EERAM中的数据装入RAM。
Convert:
温度转换开始指令。
3.4.2DS18B20的应用
DS18B20有三个引脚。
其与TMS320VC5402的接线图如下。
VDD管脚接5V电压给传感器供电。
DQ管脚为数据线,与TMS320VC5402的IO口连接的同时,还要接一个4.7K的上拉电阻,并接到5V的电源上,使数据线在空闲状态下能自动上拉为高电平。
GND管脚接地。
本次所采用的温度采集电路,如图10所示。
图10温度采集电路
3.5液晶显示设计
3.5.1液晶显示模块
液晶显示器件(LCD)是一种高新技术的基础元器件。
它利用液晶的各种电光效应,把液晶对电场、磁场、光线和温度等外界条件的变化在一定条件下转换为可视信号而制成的显示器。
液晶显示器具有低电压、低功耗的特点,与CMOS集成电路相匹配.电池作为电源,适合于便携式显示[17]。
为了用户使用方便,需将液晶显示器件与控制、驱动集成电路装在一起,形成一个功能部件。
本次设计所使用的LCD显示器的规格是128*32。
他是属于点阵图形型液晶。
它的特点是点阵像素连续排列,行和列排布中均没有空隔。
因此可以显示连续、完整的图形。
由于它是由X-Y矩阵像素构成的,所以除显示图形外,也可以显示字符,包括数字、英文字符以及汉字。
128*32点阵图形液晶模块,表示横向有128点,纵向有32点,如果以汉字16x16点而言,每行可显示8个中文字,2行共计16个中文字。
本次设计中所使用的液晶驱动芯片为HD61202。
如图11所示。
其中R6的作用的调节LCD的亮度。
图11LCD显示模块
其中,VDD接+5V电源;D0~D7为数据输入输出并行口,接TMS320VC5402的数据总线;R/W为读写信号线,D/I为数据、指令选择信号端。
3.5.2液晶显示指令系统
HD61202的指令系统比较简单,总共有七条指令。
1)显示开/关指令
端口状态如表4所示。
表4显示指令的端口状态
当D0=0时,关闭显示功能;当D0=1时,显示RAM中内容。
2)显示起始行设置命令
端口状态如表5所示。
表5起始行指令的端口状态
该指令设置了对应最上一行显示的RAM的行号。
有规律的改变起始行,可以使得LCD显示取得滚动的效果。
3)设置X地址指令
端口状态如表6所示。
表6设置X地址指令的端口状态
4)设置Y地址指令
端口状态如表7所示。
表7设置Y地址指令的端口状态
设置了X、Y地址,就确定了显示RAM中的某单元,CPU可写或读一个字节数据。
5)读状态指令
当R/W=1,D/I=0时,为读状态指令。
其中D7为BUSY标志位,D5为显示开关标志位,D4为复位标志位。
6)读、写指令
当R/W=0,D/I=1,为读指令;当R/W=1,A0=1时,为写指令。
读写指令没执行完一次操作,列地址自动加1。
3.5.3模块工作的基本过程
处理器访问HD61202,首先读取状态字寄存器的内容,主要是要判别状态字中的“Busy”标志。
在写操作时,他在计算机写操作信号的作用下将计算机发来的数据锁存进输入寄存器内,同时将I/O缓冲器封锁,置“Busy”标志位为1,向计算机提供HD61202正在处理计算机发来的数据的信息。
根据计算机在写数据时提供的D/I状态输入寄存器的内容送入指令寄存器处理或显示存储器相应的单元,处理完成后,HD61202撤消对I/O缓冲器的封锁,同时“Busy”标志位清零,向计算机表示传感器已准备好接收下一个操作。
在读显示数据时,计算机要有一个操作周期的延时,即“空读”的过程。
在计算机设置所要读取的显示存储器地址后,第一次的读操作实际上是要求HD61202将所需的显示存储器单元的数据写入输出寄存器中,供计算机读取。
只有从下一次计算机的读操作起,计算机才能读取所需的显示数据。
4软件设计
本章设计出主程序以及相关子程序代码,并画出流程图。
子程序中包括温度测量子程序和LCD显示子程序。
系统程序是在DSP集成开发环境CodeComposerStudio中用C语言编写的。
4.1主程序设计
系统软件部分设计主要包括各个模块的程序代码编写、调试。
主程序的设计主要是为了衔接各模块子程序,使程序易读,易修改。
主程序的工作流程包括以下几个过程。
1)DSP和外设初始化:
主要完成系统上电后进行DSP配置初始化、I/O初始化、LCD初始化、DS18B20初始化。
初始化完成后,系统将正常工作,接下来就能进行温度检测等操作。
2)LCD显示固定字样:
最终显示的结果格式为“TemperatureisXX.XXX℃”,其中“Temperatureis”、“℃”为固定的,所以在温度检测之前就显示,提高程序的运行效率。
3)温度测量:
温度测量模块的程序是整个系统的核心,主要完成DSP芯片从温度传感器中正确地读取温度测量值,并且计算和修正温度数据。
4)LCD显示子程序:
用于人机信息交换,LCD模块的程序主要用于显示当前温度值以及温度的状态。
其系统主程序流程图,如图12所示。
图12主程序流程图
4.2温度测量程序设计
DS18B20的每一次运行均由四个步骤组成:
初始化(复位操作)、对ROM操作指令(识别器件)、对RAM操作指令(读、写、转换)、收发数据。
初始化过程如下:
1)主控器将信号线拉低,持续时间t1(480us2)主控器等待时间t2(15us3)主控器检测信号线,若为低,进行下一步,否则重新初始化;
4)主控器在240us内等待信号线变高,如变高表示初始化完成,否则重新初始化;主控器延时至少480us,确保应答正确。
在本小节设计中,主程序首先对DS18B20进行初始化,然后向DS18B20的配置寄存器写入数据,设置温度测量的精度,最后获取温度数据,以及进行DS18B20的复位。
其程序流程图如图13所示。
图13温度测量主程序流程图
TMS320VC54X型DSP提供两种编程语言:
汇编语言和C语言。
对于完成一般功能的代码,这两种语言都可以使用。
使用汇编语言程序虽然具有速度快的优点,但用汇编语言编写程序比较费时费力,使用C语言编程可以提高程序开发的效率,同时使阅读程序变得容易一些。
本程序代码采用C语言编写,关键代码代码如下。
doubleRead_Temper()
{
charget[10];
doubletmp;
intk;
k=DS18B20_reset();
DS18B20_write_byte(0xCC);
DS18B20_write_byte(0xBE);
for(k=0;k<9;k++)
{
get[k]=DS18B20_read_byte();
}
DS18B20_nus
(1);
if(get[1]>=0x80)
{
get[0]=~get[0];
get[1]=~get[1];
tmp=(-1)*(get[1]*256+get[0]+1);
}
else
{
tmp=(get[1]*256+get[0]);
}
tmp=tmp/16.0;
k=DS18B20_reset();
DS18B20_write_byte(0xCC);
DS18B20_write_byte(0x44);
return(tmp);
}
4.3显示程序设计
4.3.1显示内容设计与字模库设计
LCD显示子程序的主要功能是用于人机信息交换。
LCD模块的程序主要用于显示当前温度值以及温度的状态。
本次设计所使用的LCD显示器的规格是128*32。
如表8所示,是对显示内容的位置的设计。
表8显示内容设计
LCD的最终显示的结果格式为“TemperatureisXX.XXX℃”,其中“Temperatureis”、“°C”为固定的,所以在温度检测之前就显示,提高程序的运行效率。
在设计LCD现实程序之前,必须设计分析该液晶模块显示所用的点阵数据存储格式,制作出带显的字模库。
经过实验,所制作的字模库以结构体的形式存储在“HZ_ASC.h”头文件中。
例如,“T”的字模大小总共16个字节,128位信息。
每一位信息就代表着某一点的亮与灭。
其字模为:
{
/*--文字:
T宋体;此字体下对应的点阵为:
宽x高=8x16--*/
0x18,0x08,0x08,0xF8,0x08,0x08,0x18,0x00,0x00,0x00,0x20,0x3F,0x20,0x00,0x00,0x00
}。
4.3.2显示程序软件流程图及代码
显示程序用于实现人机信息交换,使用LCD模块来显示当前温度值。
其显示主程序工作过程主要分三个步骤:
第一,接收温度采集电路获得的温度数值;
第二,根据数值,读取字模库中的点阵数据;
第三,DSP控制液晶模块显示所需要的内容。
主程序的软件流程图如图14所示。
显示子程序的主要功能是根据所设置的X、Y的值确定字符显示的方位。
DSP芯片再根据获取的字模数据对液晶模块写入数据。
在显示一个字符时,分两个步骤。
第一步,先显示16*8显示单位的上半部分,进行列扫描显示;第二部再显示显示单位的下半部分,进行第二次列扫描显示。
其软件流程图如图15所示。
图14显示主程序流程图
图15显示子程序流程图
明确程序设计流程后,在CCS集成开发环境中编写运行代码。
程序中有个关键函数,即是Disp_ASC(intx,inty,unsignedchar*s,intNum)。
该函数完成一个英文字符的显示。
其代码如下:
Disp_ASC(intx,inty,unsignedchar*s,intNum)
{
intxx,yy,i;
xx=((x/8)*4+y*2)%8;
yy=(x%8)*8;
Check_Busy();
LCD_CMD0=0x003F;
Check_Busy();
LCD_CMD0=0x00C0;
Check_Busy();
LCD_CMD0=0x00B8+xx;
Check_Busy();
LCD_CMD0=0x0040+yy;
for(i=0;i{
Check_Busy();
LCD_DAT0=*(s+i);
}
Check_Busy();
LCD_CMD0=0x00B9+xx;
Check_Busy();
LCD_CMD0=0x0040+yy;
for(i=Num;i{
Check_Busy();
LCD_DAT0=*(s+i);
}
}
4.4PCB图
图16
5实验结果
本次设计的硬件电路,主要包括DSP微处理器及其外围基本电路、DS18B20传感器和LCD显示电路。
主要的硬件开发平台是以TMS320VC5402为处理器的开发板,其硬件实物图如图17所示。
图17硬件电路
应用CCS对程序进行编写、编译、链接、加载之后,点击“Debug”菜单下的“RUN”就可以观察设计结果了,所得到的温度显示结果如图18所示。
下一步,用手轻轻触摸温度传感器,观测显示结果。
观察结果如图19所示。
通过观察数据的变化速度判断系统的反应速度,通过观察数据变化的大小来简单检测系统的灵敏度。
图18触摸前的温度显示图19触摸后的温度显示
通过对比两次温度显示的结果,我们发现:
第一,系统的反应速度非常快,在手触摸后LCD显示的温度值就立刻发生变化;第二,温度变化的值非常小。
由此可见,本次设计的温度系统,不仅反应速度很快,而且灵敏度很高,同时也表明系统设计方案正确可行,设计方法合理,系统各模块工作正常,测量结果准确。
6总结
本课题描述了基于DSP芯片的温度测量系统的设计步骤和实现方法,设计了一个具有温度测量、显示等基本功能的温度测量系统。
该系统的硬件部分用DSP芯片TMS320VC5402作为主控芯片,用DS18B20传感器采集温度数据,用LCD显示器进行温度显示。
在软件方面,在CCS2.0开发平台上利用C语言进行系统程序设计。
本此设计中完成了各模块程序的编写、调试和仿真工作,把程序下载到DSP芯片后,程序能够稳定的运行,每个模块工作正常。
DSP芯片能够正确的读取传感器采集到的数据,并把测量结果显示到LCD上。
本次设计的系统性能优良,反应迅速,精度高,可以广泛应用于生产实践中。
国际上先进的测控技术、自动化技术、PLC技术、现场总线技术、传感器技术以及数字信息技术和DSP处理器的高速发展都为温度测控系统的研制和开发提供了条件,使温度的设定、显示更加直观,精度进一步提高,智能化程度越来越高,温度检测的功能集成化大幅提高。
人们开发这么多的温度测量系统都是为了满足不同的市场的需求。
温度测量系统在纺织工业、化工、温室控制、仓库储存、汽车内部以及气象预报和科研实验室等诸多领域都有广泛的应用,而这些领域对温度测量系统的要求也各不相同。
因此,基于DSP的温度测量有着广阔的市场前景。
参考文献
[1]邹彦《DSP原理与应用》电子工业出版社2012.
[2]江思敏《TMS320LF240xDSP硬件开发教程》机械工业出版社2003.
[3]唐俊英《DSP原理与应用——TMS320LF240x》电子工业出版社2008.
[4]程佩青《数字信号处理》清华大学出版社2004.
[5]潘松《EDA技术与VHDL》清华大学出版社2007.