DSP课设 温度采集.docx

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

DSP课设 温度采集.docx

《DSP课设 温度采集.docx》由会员分享,可在线阅读,更多相关《DSP课设 温度采集.docx(23页珍藏版)》请在冰点文库上搜索。

DSP课设 温度采集.docx

DSP课设温度采集

信电学院

课程设计说明书

(2009/2010学年第二学期)

 

课程名称:

DSP控制器及其应用

题目:

温度采集与显示

专业班级:

学生姓名:

学号:

\

指导教师:

设计周数:

2周

设计成绩:

2010年6月23日

目录

1课程设计目的…………………………………………………………………………………1

2课程设计正文…………………………………………………………………………………1

2.1设计任务…………………………………………………………………………………1

2.2设计思路…………………………………………………………………………………1

2.3硬件设计……………………………………………………………………………………1

2.3.1方案设计……………………………………………………………………………1

2.3.2元器件选择……………………………………………………………………………2

2.3.3单元电路设计…………………………………………………………………………2

2.4软件设计…………………………………………………………………………………4

2.4.1软件系统分析…………………………………………………………………………4

2.4.2软件设计模块…………………………………………………………………………5

2.5运行描述…………………………………………………………………………………17

2.6系统调试…………………………………………………………………………………17

3课程设计总结………………………………………………………………………………18

4参考文献……………………………………………………………………………………18

 

1课程设计目的

(1)熟悉并掌握硬件设计方面的温度采集技术

(2)熟悉并掌握软件设计方面的A/D转换技术

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

2课程设计正文

2.1设计任务

(1)熟悉MC1403芯片的应用

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

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

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

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

(6)软硬件联合调试

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

2.2设计思路

首先设计由MC1403和热敏电阻组成的温度采集电路,利用热敏电阻输出电压值与温度间的函数关系,检测温度的变化;然后将采集到的温度送入TMS320F2812中的A/D转换模块,将电压转换为数字信号;最后通过编写LCD显示函数来控制相应的温度及文字的变化。

2.3硬件设计

2.3.1方案设计

最小系统设计:

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

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

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

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

最小系统如图1:

 

图1DSP最小系统图

2.3.2元器件选择

(1)MC1403芯片(图2)

图2

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

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

(2)热敏电阻

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

2.3.3单元电路设计

(1)温度采集电路

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

MC1403的Vin端接入一个5V左右的模拟电压值,并在此端(1脚)接入电容滤除其它频率分量;在Vout端(2脚)输出一个稳定的电压值,接P2口的23引脚;GND端(3脚)直接接地,接P2口的33引脚。

原理图如图3:

图3温度采集电路原理图

(2)A/D模数转换模块

当模/数转换完成后,读取结果寄存器前,最好先读取模/数转换控制寄存器ADCTRL2的ADCFIFO1或ADCFIFO2,以确定当前结果寄存器的状态,保证读取的结果是正确的。

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

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

(3)LCD液晶显示模块

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

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

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

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

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

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

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

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

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

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

2.4软件设计

2.4.1软件系统分析

(1)系统设计原理

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

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

TMS320F2812

图4系统设计原理框图

(2)软件系统流程图

 

2.4.2软件模块设计

(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>>4;

//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

{

for(jj=0;jj<1024;jj++)

{

kk++;

}

}

}

(3)打开显示子程序

voidTurnOnLCD()

{

*(int*)0x108001=LCDCMDTURNON;

Delay(LCDDELAY);

*(int*)0x108002=0;

Delay(2048);

*(int*)0x108001=LCDCMDSTARTLINE;

Delay(LCDDELAY);

*(int*)0x108002=0;

Delay(LCDDELAY);

}

(4)清屏程序

voidLCDCLS()

{

inti,j;

*(int*)0x108001=LCDCMDSTARTLINE;

Delay(LCDDELAY);

*(int*)0x108002=0;

Delay(LCDDELAY);

for(i=0;i<8;i++)

{

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

Delay(LCDDELAY);

*(int*)0x108002=0;

Delay(LCDDELAY);

*(int*)0x108001=LCDCMDVERADDRESS;

Delay(LCDDELAY);

*(int*)0x108002=0;

Delay(LCDDELAY);

for(j=0;j<64;j++)

{

*(int*)0x108003=0;

Delay(LCDDELAY);

*(int*)0x108002=0;

Delay(LCDDELAY);

}

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

Delay(LCDDELAY);

*(int*)0x108002=0;

Delay(LCDDELAY);

*(int*)0x108001=LCDCMDVERADDRESS;

Delay(LCDDELAY);

*(int*)0x108002=0;

Delay(LCDDELAY);

for(j=0;j<64;j++)

{

*(int*)0x108004=0;

Delay(LCDDELAY);

*(int*)0x108002=0;

Delay(LCDDELAY);

}

}

}

(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;

Delay

(1);

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

Delay

(1);

*(int*)0x108002=0;

Delay

(1);

for(j=0;j<16;j++)

{

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

Delay(10);

*(int*)0x108002=0;

Delay(10);

}

x++;

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

Delay

(1);

*(int*)0x108002=0;

Delay

(1);

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

Delay

(1);

*(int*)0x108002=0;

Delay

(1);

for(j=16;j<32;j++)

{

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

Delay(100);

*(int*)0x108002=0;

Delay(100);

}

}

else

{

intj;

intk=n;

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

Delay

(1);

*(int*)0x108002=0;

Delay

(1);

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

Delay

(1);

*(int*)0x108002=0;

Delay

(1);

for(j=0;j<16;j++)

{

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

Delay(100);

*(int*)0x108002=0;

Delay(100);

}

x++;

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

Delay

(1);

*(int*)0x108002=0;

Delay

(1);

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

Delay

(1);

*(int*)0x108002=0;

Delay

(1);

for(j=16;j<32;j++)

{

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

Delay(100);

*(int*)0x108002=0;

Delay(100);

}

}

}

//数字模块

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},//.

};

voidWriteNb(unsignedintx,unsignedinty,unsignedchar*No,unsignedf,unsignedintLR)

{

inti;

y*=8;

*(int*)0x108001=LCDCMDPAGE+x;//设置操作页=1

Delay(LCDDELAY);

*(int*)0x108002=0;

Delay(LCDDELAY);

*(int*)0x108001=LCDCMDVERADDRESS+y;//起始列=8

Delay(LCDDELAY);

*(int*)0x108002=0;

Delay(LCDDELAY);

if(LR==1)

for(i=0;i<8;i++)

{

if(f==1)

*(int*)0x108004=~No[i];

else

*(int*)0x108004=No[i];

Delay(LCDDELAY);

*(int*)0x108002=0;

Delay(LCDDELAY);

}

else

for(i=0;i<8;i++)

{

if(f==1)

*(int*)0x108003=~No[i];

else

*(int*)0x108003=No[i];

Delay(LCDDELAY);

*(int*)0x108002=0;

Delay(LCDDELAY);

}

}

(6)温度计算子程序

voidWendu(floatc)

{

temp1=35.91-246.7*c;

ZhengshuT=(int)temp1;

XiaoshuT=(int)((temp1-ZhengshuT)*100);

Zhongjian1=ZhengshuT/10;

Zhongjian2=ZhengshuT%10;

ZhengshuT=(Zhongjian1<<4)|Zhongjian2;

Zhongjian1=XiaoshuT/10;

Zhongjian2=XiaoshuT%10;

XiaoshuT=(Zhongjian1<<4)|Zhongjian2;

}

(7)主函数

#include"DSP281x_Device.h"//DSP281xHeaderfileIncludeFile

#include"DSP281x_Examples.h"//DSP281xExamplesIncludeFile

#include"lcd.h"

#include"ad.h"

Uint16ZhengshuT,XiaoshuT,Zhongjian1,Zhongjian2;

floattemp1=0;

unsignedcharlcdkey[5][32];

voiddelay_loop(void);

voiderror(void);

voidWendu(floatc);

voidLCDWrite(unsignedintx,unsignedinty,unsignedintLR,unsignedintn);

voidmain(void)

{

InitSysCtrl();

EALLOW;

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

0特殊功能:

1

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

//PortFMUX-x000000000001111

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();//Forthisexample,inittheADC

PieCtrlRegs.PIEIE

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

当前位置:首页 > 求职职场 > 简历

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

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