DSP温度采集与显示课程设计Word下载.docx
《DSP温度采集与显示课程设计Word下载.docx》由会员分享,可在线阅读,更多相关《DSP温度采集与显示课程设计Word下载.docx(32页珍藏版)》请在冰豆网上搜索。
本学位论文作者完全了解学校有关保留、使用学位论文的规定,同意学校保留并向国家有关部门或机构送交论文的复印件和电子版,允许论文被查阅和借阅。
本人授权 大学可以将本学位论文的全部或部分内容编入有关数据库进行检索,可以采用影印、缩印或扫描等复制手段保存和汇编本学位论文。
涉密论文按学校规定处理。
日期:
导师签名:
日期:
指导教师评阅书
指导教师评价:
一、撰写(设计)过程
1、学生在论文(设计)过程中的治学态度、工作精神
□优□良□中□及格□不及格
2、学生掌握专业知识、技能的扎实程度
3、学生综合运用所学知识和专业技能分析和解决问题的能力
4、研究方法的科学性;
技术线路的可行性;
设计方案的合理性
5、完成毕业论文(设计)期间的出勤情况
二、论文(设计)质量
1、论文(设计)的整体结构是否符合撰写规范?
2、是否完成指定的论文(设计)任务(包括装订及附件)?
三、论文(设计)水平
1、论文(设计)的理论意义或对解决实际问题的指导意义
2、论文的观念是否有新意?
设计是否有创意?
3、论文(设计说明书)所体现的整体水平
建议成绩:
(在所选等级前的□内画“√”)
指导教师:
(签名)单位:
(盖章)
年月日
评阅教师评阅书
评阅教师评价:
一、论文(设计)质量
二、论文(设计)水平
评阅教师:
教研室(或答辩小组)及教学系意见
教研室(或答辩小组)评价:
一、答辩过程
1、毕业论文(设计)的基本要点和见解的叙述情况
2、对答辩问题的反应、理解、表达情况
3、学生答辩过程中的精神状态
评定成绩:
教研室主任(或答辩小组组长):
(签名)
教学系意见:
系主任:
1课程设计目的
通过我们对DSP控制器及其应用课程的学习和理解,综合运用课本中所学到的理论知识完成一个温度采集与显示的课程设计。
通过这次实践锻炼我们查阅资料、方案比较、团结合作的能力。
在这个过程我们必须掌握温度采集技术的硬件设计、熟悉A/D转换技术和DSP液晶显示功能的软件设计。
学会采用简单电路的实验调试和整机指标测试方法,增强我们的动手能力,为以后学习和工作打下坚实基础
2课程设计正文
2.1系统分析
2.1.1设计的任务及步骤
(1)熟悉MC1403芯片的应用;
(2)根据实验测得热敏电阻和温度的一些数据,设计温度——电阻公式;
(3)设计外部硬件电路;
(4)软件完成程序流程图设计和编程,其中包括A/D转换和液晶显示部分;
(5)编写上位机程序
(6)软硬件联合调试;
(7)书写设计说明书。
2.1.2技术要求
此系统利用热敏电阻测得电阻—温度之间的关系,找到电阻和温度之间的代数关系,从而检测温度,设计硬件外扩电路,同时设计软件程序,包括A/D程序设计,进行软硬件联系调试,能在液晶显示屏上显示温度。
2.1.3设计思路
首先设计温度采集电路,由于考虑到使用的是非线性负温度系数的热敏电阻,因此采用了桥式电路尽量减小因外接不必要因素导致的误差,通过多次试验测得几个点,并拟合出一条合适的线性函数关系。
其次进行软件设计,主要包括AD转换模块、液晶显示模块、算法转换模块、主函数模块以及上位机模块。
最后进行软硬件联系调试,并能在液晶上正常显示温度值。
2.2总体设计
2.2.1硬件设计
TMS320F2812作为本次课设使用的DSP芯片。
它包含33个电源引脚(为使器件正常运行,所有电源引脚必须正确连接且不能悬空)时钟源模块,DSP有六种信号可以使DSP控制器复位,即电源复位、复位引脚~RS、软件复位、非法地址复位、看门狗定时器溢出、欠压复位六种复位信号。
所以在设计的初期,把它分成了五个模块。
其中复位采用电源复位的方式,由引脚PCRESET引起。
为了可靠复位,其中低电平的有效时间至少6个CPU时钟周期。
DSP最小系统组成框图如图1所示。
图1DSP最小系统
其中:
开关SW-PB、电容以及电阻构成一个简单的抚慰电路;
晶振与两个并联电容接在XTAL1与XTAL2为2812提供外部时钟;
HT7133芯片将5V直流电源转换为3.3V直流电源构成电源模块为2812供电。
2.2.2系统框图设计
该系统包括温度采集模块、F2812芯片、AD转换模块以及液晶显示模块,首先通过热敏电阻对外界温度的变化,从而改变其电位的变化,F2812芯片等待中断并接收数据,然后送入AD转换模块,AD对模拟信号进行转换,并将转换结果存放在结果寄存器的高12位,为保证数据精确多次采样求平均值,最后通过算法转换,将结果显示在LCD液晶上。
系统设计流程如图2所示。
图2系统设计流程图
2.3单元电路的设计
2.3.1温度采集电路
考虑到此次使用的是非线性负温度系数的热敏电阻,因此采用桥式电路尽量确保其精度,并使用低压基准芯片MC1403为电路提供基准电压,确保其尽量减少外界不必要因素的影响。
温度采集电路如图4所示。
图3温度采集电路
2.3.2单元模块的分析
(1)MC1403低压基准芯片引脚如图4所示。
图4MC1403低压基准芯片引脚图
Vin端口输入一个4.5~40V的模拟电压值(接P2口的1引脚),在Vout端输出了一个稳定的电压值(接P2口的1引脚,为AD模块提供参考模拟高电平),GND端接模拟地(接P2口的33引脚)为AD提供参考模拟低电平,并与数字地短接。
(2)AD转换模块
当模/数转换完成后,读取结果寄存器前,最好先读取模/数转换控制寄存器ADCRL2的ADCRESULT0或ADCRESULT1,以确定当前结果寄存器的状态,保证读取的结果是正确。
另外,要注意12位的转换结果放在结果寄存器中的高12位上,要进行位移转换,该12位数据与外部模拟输入电压的关系为:
12位数字结果=4095*(输入电压/基准电压)
基准电压:
3V
输入电压:
A/D采集的电压
12位数字结果:
12位的转换结果是放在结果寄存器的高12位上。
(3)LCD液晶显示模块
DSP经常会对读写周期较慢的输入/输出设备(如液晶显示模块、打印机、键盘等)进行访问,通常以下两种方法来解决DSP与这些慢速设备之间的输入/输出时序匹配问题。
直接访问方式是将DSP的读写信号限于慢速设备接口控制板引出的读写信号线直接相连,时序由DSP内部读写逻辑控制。
由于慢速外设的读写周期相对DSP较慢,是两者的时序匹配,还必须进行一些时序方面的控制处理。
一中处理方法是软件编程等待状态发生器,将外部总线周期扩展到数个机器周期。
由于受硬件条件的限制,这种扩展通常也是有限的。
液晶显示为128行和64列的矩阵,它分左右两个平面,而一个字是16行和16列的矩阵,在按页的显示中每一页是一个8行和128列的矩阵,所以每一行字是分两页显示的
系统设计总电路图如图5所示。
图.5系统设计总电路图
(4)单片机与PC机串口通信
DSP有一个全双工的串行通讯口,所以DSP和电脑之间可以方便地进行串口通讯。
进行串行通讯时要满足一定的条件,比如电脑的串口是RS232电平的,而DSP的串口是TTL电平的,两者之间必须有一个电平转换电路,我们采用了专用芯片MAX232进行转换,虽然也可以用几个三极管进行模拟转换,但是还是用专用芯片更简单可靠。
我们采用了三线制连接串口,也就是说和电脑的9针串口只连接其中的3根线:
第5脚的GND、第2脚的RXD、第3脚的TXD。
这是最简单的连接方法,但是对我们来说已经足够使用了,电路如下图所示,
图6异步串行通讯原理图
DSP控制器串行通信接口(SCI)是一个标准的通用异步接收/发送(UART)通信接口。
它的接收器和发送器都是双缓冲的。
DSP控制器串行通信接口(SCI)有自已的使能和中断位,它们可以半双工或全双工方式工作。
为了保证数据的完整性,串行通信接口对接收的数据进行间断检测、奇偶性、超时和帧错误的检查。
位速率(波特率)可通过一个16位的比特率选择寄存器进行编程,因此,可以有超过65000种不同的速率。
SCI模块是一个8位片内外设,通过DSP的16位外部数据总线的低8位与外部设备通信。
SCI的物理描述:
(1)两个I/O引脚。
*SCIRXD(SCI接收数据输入)
*SCITXD(SCI发送数据输出)
(2)通过一个16位波特率选择寄存器的编程,可得到超过65000种不同的可编程位速率。
(3)1~8的可编程数据字长。
(4)长度为1位或2位的可编程停止位。
(5)内部产生的串行时钟。
(6)四个错误检测标志。
*奇偶性错误*超限错误
*帧错误*间断检验
(7)两种唤醒多处理器模式,可与任意通信格式一起使用。
*空闲线路唤醒*位寻址唤醒
(8)半双工或全双工操作。
(9)双缓冲接收和发送功能。
(10)接收和发送操作均可通过中断或查询操作进行,相应的状态标志如下:
发送器:
TXRDY标志(发送器缓冲寄存器准备好接收另一个字符)和TXEMPTY标志(发送移位寄存器空)。
接收器:
RXRDY标志(准备从接收缓冲寄存器中读出一个新字符)、BRKDT标志(间断条件发生)和RXERROR,可用来监视四个中断条件。
(11)发送器和接收器中断的分立的使能位(间断除外)。
(12)SCI数据,不管是接收的、还是发送的,都是NRZ(非归零)格式的。
2.4软件程序设计
2.4.1软件系统流程图
软件系统流程如图6所示。
图7软件系统流程图
2.4.2软件程序设计
程序主要包括主程序、中断、延时、A/D转换、算法转换、液晶显示等子程序,实现温度采集与显示的功能,程序详见附录。
此次课设我主要负责AD转换、算法转换和主程序部分。
AD转换部分我采用单通道采样方式对温度采集电路发送的值进行转换,并使用了第一组的6号中断对电路进行定时采样,由于考虑到热敏电阻比较灵敏,我采用了多次采样求平均值的方法确保数据精确。
算法转换部分主要是对AD采集并转换的值进行进一步的转换,主要是将桥式电路的电压与热敏电阻的关系和拟合的温度与电阻的关系整合在一起,使其转换为我们能看懂的温度,并将其一位一位拆分开来复制到LCD液晶显示子程序,将结果显示字液晶屏上。
(1)NTC热敏电阻原理及应用
NTC热敏电阻器在室温下的变化范围在10O~1000000欧姆,温度系数-2%~-6.5%。
NTC热敏电阻器可广泛应用于温度测量、温度补偿、抑制浪涌电流等场合。
NTC热敏电阻为负温度系数热敏电阻。
零功率电阻值RT(Ω):
RT指在规定温度T时,采用引起电阻值变化相对于总的测量误差来说可以忽略不计的测量功率测得的电阻值。
电阻值和温度变化的关系式为:
RT=RNexpB(1/T–1/TN)
RT:
在温度T(K)时的NTC热敏电阻阻值。
RN:
在额定温度TN(K)时的NTC热敏电阻阻值。
T:
规定温度(K)。
B:
NTC热敏电阻的材料常数,又叫热敏指数。
exp:
以自然数e为底的指数(e=2.71828…)。
该关系式是经验公式,只在额定温度TN或额定电阻阻值RN的有限范围内才具有一定的精确度,因为材料常数B本身也是温度T的函数。
额定零功率电阻值R25(Ω):
根据国标规定,额定零功率电阻值是NTC热敏电阻在基准温度25℃时测得的电阻值R25,这个电阻值就是NTC热敏电阻的标称电阻值。
通常所说NTC热敏电阻多少阻值,亦指该值。
材料常数(热敏指数)B值(K)
RT1:
温度T1(K)时的零功率电阻值。
RT2:
温度T2(K)时的零功率电阻值。
T1,T2:
两个被指定的温度(K)。
对于常用的NTC热敏电阻,B值范围一般在2000K~6000K之间。
已知150Ω时为25℃,即R25=150Ω,120Ω时为45℃,经计算,B约为2121.7K。
代入得:
r=150*exp(2121.7*((1/t)-1/298))
取曲线上的任意几点,再用Matlab进行曲线拟合,得到几条直线,经筛选后得到如图7的图形。
经变换单位后,得到温度与电阻值之间的关系式:
T=125–2/3*R
图8拟合后的直线
其中横坐标为温度,单位为K;
纵坐标为电阻值。
由硬件部分(电桥电路)得到电压与电阻值之间的关系:
V=2.5*R1/(R1+R),其中R1=200Ω,与上式相结合并经调试修改后,得到温度值与电压之间的关系:
T=140.0-0.67*(500.0/V-200.0)
//温度计算子程序
voidWendu(floatc)
{
temperature=140.0-0.67*(500.0/c-200.0);
T_tempe=(int)temperature;
T_tempe1=T_tempe/10;
T_tempe0=T_tempe%10;
D_tempe=(int)(10*(temperature-T_tempe));
}
(2)上位机
SCI波特率的设置:
16位的波特率数值用BRR表示。
SCI使用16位的波特率选择寄存器值来选择64K种不同的串行时钟频率中的一种。
选择可以通过以下方法来确定:
当BRR=1~65535时(BRR=波特率选择寄存器中的16位值):
波特率是按位计算的,而每位需要8个SCICLK周期。
当BRR=0时
串行通信过程:
①在进行串行通信之前,先对SCI通信控制寄存器SCICCR进行设置。
信息块的起始位始终是1位,停止位可选择1位或2位。
数据位的长度是可编程的,可设置1~8位,由SCICCR的SCICHAR2:
0设置。
数据位长度小于8位时,写到发送缓冲寄存器SCITXBUF的数据只有低L位被发送(这些数据位必须右对齐,因为对于少于8位的字符,左边的位是被忽略的)。
校验位可设,由SCICCR的PARITYENABLE(5位)设置。
校验方式有两种,奇、偶校验,由SCICCR的PARITY(6位)设置。
空闲线方式与地址位方式的选择,由SCICCR的ADDR/IDLEMODE(3位)设置。
SCICCR的SCIENA(4位)是一个总开关位。
②在信息块的格式确定后就要确定串行通信的波特率。
串行通信的时钟SCICLK是由时钟源模块的SYSCLK按照SCI波特率寄存器规定的分频系数分频后得到的。
16位的波特率寄存器SCIHBAUD和SCILBAUD分别决定了波特率寄存器的高、低8位,二者共同构成了16位的波特率数值。
③设置好串行通信的波特率后,就要确定接收、发送部分的控制位,这些由SCI控制寄存器SCICTL1、2来完成,
④当数据写入SCITXBUF时,SCICTL2的TXRDY(7位)被清0;
当SCITXBUF的数据全部移出后,则SCICTL2的TXRDY被置1,并且产生发送中断TXINT。
(3)SCI下位机程序
#include”DSP281x_Device.h”
//使用的函数原型声明
voidGpio_select(void);
voidSpeedUpRevA(void);
voidSCI_Init(void);
interruptvoidSCI_TX_isr(void);
interruptvoidSCI_RX_isr(void);
//全局变量
charmessage[]=temperature;
voidmain(void)
InitSystem();
//初始化DSP内核寄存器
Gpio_select();
//配置GPIO复用功能寄存器
InitPieCtrl();
//调用外设中断扩展初始化单元PIE-unit
//(代码:
DSP281x_PieCtrl.c)
InitPieVectTable();
//初始化PIEvector向量表
//(代码:
EALLOW;
//解除寄存器保护
PieVectTable.TXAINT=&
SCI_TX_isr;
PieVectTable.RXAINT=&
SCI_RX_isr;
EDIS;
//使能寄存器保护
//使能PIE中的SCI_A_TX_INT中断
PieCtrlRegs.PIEIER9.bit.INTx2=1;
//使能PIE中的SCI_A_RX_INT中断
PieCtrlRegs.PIEIER9.bit.INTx1=1;
//使能CPUINT9
IER|=ox100;
//全局中断使能和更高优先级的实时调试事件
EINT;
//全局中断使能INTM
ERTM;
//使能实时调试中断DBGM
SCI_Init();
While
(1)
PieCtrlRegs.WDKEY=ox55;
//看门狗控制
PieCtrlRegs.WDKEY=oxAA;
voidGpio_select(void)
GpioMuxRegs.GPAMUX.all=ox0;
//所有GPIO端口配置为I/O
GpioMuxRegs.GPBMUX.all=ox0;
GpioMuxRegs.GPFMUX.all=ox0;
GpioMuxRegs.GPDMUX.all=ox0;
GpioMuxRegs.GPAMUX.bit.SCIRXDA_GPIOF5=1;
//配置SCI_RX
GpioMuxRegs.GPAMUX.bit.SCIXTDA_GPIOF4=1;
//配置SCI_TX
GpioMuxRegs.GPEMUX.all=ox0;
GpioMuxRegs.GPGMUX.all=ox0;
GpioMuxRegs.GPADIR.all=ox0;
//GPIOPORT配置为输入
GpioMuxRegs.GPBDIR.all=ox0;
//GPIOPORT配置为输入
GpioMuxRegs.GPDDIR.all=ox0;
GpioMuxRegs.GPEDIR.all=ox0;
GpioMuxRegs.GPFDIR.all=ox0;
GpioMuxRegs.GPGDIR.all=ox0;
//设置所有GPIO输入的量化值等于0
GpioMuxRegs.GPAQUAL.all=ox0;
GpioMuxRegs.GPBQUAL.all=ox0;
GpioMuxRegs.GPDQUAL.all=ox0;
GpioMuxRegs.GPEQUAL.all=ox0;
voidInitSystem(void)//初始化DSP内核寄存器
SysCtrlRegs.WDCR=ox00AF;
//配置看门狗
//ox00E8禁止看门狗,预定标系数Prescaler=1
//ox00AF不禁止看门狗,预定标系数Prescaler=64
SysCtrlRegs.SCSR=0;
//看门狗产生复位
SysCtrlRegs.PLLCR.bit.DIV=10;
//配置处理器锁相环,倍频系数为5
SysCtrlRegs.HISPCP.all=ox1;
//配置高速外设时钟分频系数为2
SysCtrlRegs.LOSPCP.all=ox2;
//配置低速外设时钟分频系数为4
//设置使用的外