基于SPCE061A单片机的多路温度采集系统Word文件下载.docx
- 文档编号:22427658
- 上传时间:2023-02-04
- 格式:DOCX
- 页数:54
- 大小:293.31KB
基于SPCE061A单片机的多路温度采集系统Word文件下载.docx
《基于SPCE061A单片机的多路温度采集系统Word文件下载.docx》由会员分享,可在线阅读,更多相关《基于SPCE061A单片机的多路温度采集系统Word文件下载.docx(54页珍藏版)》请在冰豆网上搜索。
4.2.1系统主程序图9
4.2.2中断服务程序流程图10
5结语11
致谢11
参考文献12
附录13
1引言
设计的目:
温度是工业上常见的和最基本的参数之一,经常需要对温度进行采集和监控,考虑到许多工业环境中对多点温度进行监控,一般需要测几十点以上,为此我采用61单片机设计一两路温度采集显示报警系统。
对多路温度采集进行一次设计实践尝试。
设计意义:
本设计系统可以作为温度监控系统,如果稍微改装可以作热水器温度调节系统、实验室温度监控系统等诸多温度采集系统。
课题主要任务是完成环境温度检测,利用单片机实现温度调节并且显示温度数据。
2设计要求
2.1设计题目
利用SPCE061A单片机、DS18B20实现多路温度采集。
2.2设计任务与要求
1)温度的实时采集显示;
2)对温度的变化在不同范围内能够及时做出语音提示;
3)2路温度的实时采集;
4)温度通过数码管显示,分手动和自动两种方式:
自动状态循环显示各通道温度,每隔2s切换一个通道;
手动方式下只显示被选择的通道温度;
5)为每一个通道设置独立的报警温度。
2.3系统组成结构及工作原理
系统整体硬件设计如图2.1所示,整个系统以SPCE061A为核心,主要包括DS18B20温度传感器数码管显示电路、语音播放电路。
由于SPCE061A内部有8路10位精度的AD转换器,所以直接将传感器输出信号放大后输入SPCE061A的AD转换通道即可,不需外接ADC。
SPCE061A实时采样温度,并根据采样结果控制加热器,调节加热功率大小;
同时将当前温度信息通过数码管显示出来。
图2.1系统整体框图
通过系统组成框图可以看出系统的各个模块及其模块间的关系。
按照本课题的设计要求分析组成框图:
设置完成后启动系统,开始接受温度传感器DS18B20采集温度数据,实时的温度数据经61单片机的程序处理,处理后的信息在数码管上显示出来,当温度超过设置限值时通过扬声器进行语音报警。
在自动工作状态下,此过程在一二通道交替进行,通道切换速率为两秒一次,本系统在手动工作方式上,可单独显示一个通道的实时温度,两个通道的温度上限报警,按各自通道的上限设定值分别报警,报警语音同时报出超温通道号。
2.4硬件功能模块连接说明
系统的硬件连接如图2.2所示,用10Pin排线将61板IOA高8位(J9)与LED键盘模组的SEG接口连接;
用10Pin排线将61板IOB高8位(J7)与LED键盘模组的DIG接口连接;
用10Pin排线将61板IOB低8位(J6)与DS18B20模块接口连接。
系统采用61板自带的3个按键。
用排线连接LED键盘模组和DS18B20模块时应注意,61板I/O接口中标示为“+”的引脚要与各模组中标示为“+”的引脚对应,不要接反。
图2.2硬件连接方式
2.5软件操作说明
确认硬件连接无误后,将程序下载到61板并运行程序。
该系统共有三种运行模式:
自动模式、手动模式、设置模式。
1)自动模式
上电进入该模式,系统自动循环切换通道并显示当前通道及其温度值,如图2.3表示当前通道为第二通道,其温度为23.5摄氏度。
当前通道该通道温度
图2.3显示介面说明
2)手动模式
可以通过KEY1键进入手动模式,该模式下选择特定通道,观察该通道的温度值。
这时仅采样并显示被选中的通道温度,可以通过重复按KEY1键切换通道,观察其他通道。
手动模式下,可以通过按KEY2键切换到自动模式。
在自动和手动模式下,如果采样温度大于报警温度(默认为35摄氏度),系统将会进行相应的语音提示。
3)设置模式
系统自动或手动模式下,可以通过按KEY3键进入设置模式,重新设置报警温度。
进入设置模式后可以通过KEY1和KEY2键设置报警温度。
具体过程如下(以设置通道1报警温度29.5摄氏度,通道2报警温度30摄氏度为例):
按KEY3键进入设置模式,此时的数码管显示如图2.4所示,最后一位数码管闪烁,表示当前正在设置通道1的小数位。
当前通道闪烁位通过+-键修改
图2.4设置介面
通过KEY1键、KEY2键调整闪烁位值的大小,每按一次KEY1键,闪烁位值加1,每按一次KEY2键,闪烁位值减1,设置该位为5。
图2.5小数位设置界面
按KEY3键,闪烁位将由小数位切换到个位,如图2.6所示,调整该值为9。
图2.6个位设置界面
通道1的个位值设置完成后按KEY3键,闪烁位将由个位切换到十位,设置该位值为2,如图2.7所示:
图2.7十位设置界面
通道1的十位设置完成后按KEY3键,系统会将29.5保存到报警值数组的通道1的单元,并切换到通道2的报警值设定,其界面如图2.8所示,按照设置通道1报警温度的方法设置通道2。
图2.8通道二设置界面
2.6器件选型
本系统采用SPCE061A单片机作为主控制器,通过一线制温度传感器DS18B20实现温度的采集,下面介绍将会用到的主要器件。
2.6.1单片机的选择
SPCE061A是性价比很高的一款十六位单片机,使用它可以非常方便实现复杂的数据处理,包括基本的加减运算和复杂的乘积运算处理,该芯片拥有8路10位精度的ADC,其中一路为音频转换通道,另外7路可作为普通的AD转换通道。
另外SPCE061A单片机具有易学易用的效率较高的一套指令系统和集成开发环境。
在此环境中,支持标准C语言,可以实现C语言与汇编语言的互相调用,并且,提供了语音录放的库函数,只要了解库函数的使用,就会很容易完成语音录放。
SPCE061A片内还集成了一个ICE(在线仿真电路)接口,使得对该芯片的编程、仿真都变得非常方便,而ICE接口不占用芯片上的硬件资源,结合集成开发环境(μ’nSPIDE)用户可以利用它对芯片进行真实的仿真;
而程序的下载(烧写)也是通过该接口进行下载。
图2.9为SPCE061A单片机的内部结构框图:
图2.9SPCE061A内部结构图[4]
SPCE061A性能简介:
1)16位μ’nSP微处理器
2)工作电压(CPU)VDD为3.0-3.6V,(I/O)VDDH为3.0-5.5V
3)CPU时钟:
0.32-49.152MHz
4)内置2K字SRAM
5)内置32K字FLASH
6)可编程音频处理
7)晶体振荡器
8)系统处于备用状态下(时钟处于停止状态),耗电仅为2uA/3.6V
9)2个16位可编程定时器/计数器(可自动预置初始计数值)
10)2个10位DAC(数/模转换)输出通道
11)32位通用可编程输入/输出通道
12)14个中断源可来自定时器A/B、时基、2个外部时钟源输入和键唤醒
13)具备触键唤醒的功能
14)使用凌阳音频编码SACM_S480可以播放压缩的语音资源
15)锁相环PLL振荡器提供系统时钟信号
16)32768Hz实时时钟
17)7通道10位电压模/数转换器(ADC)和单通道声音模/数转换器
18)声音模/数转换器输入通道内置麦克风放大器,并具有自动增益控制(AGC)功能
19)具备串行设备接口
20)具备低电压复位功能和低电压检测功能
21)内置在线仿真电路接口
22)具有WatchDog功能
2.6.2温度传感器的选择
DS18B20是一线制数字温度传感器;
温度测量范围为-55℃~+125℃,可编程为9位~12位A/D转换精度,测温分辨率可达0.0625℃,被测温度用符号扩展的16位数字量方式串行输出;
其工作电源可在远端引入,多个DS18B20可以并联到一起,CPU只需一根数据线就能与诸多DS18B20通信,占用微处理器的端口较少,可节省大量的引线和逻辑电路。
以上特点使DS18B20非常适用于远距离多点温度检测系统[13]。
1)DS18B20内部结构图
DS18B20内部结构图2.10所示,主要由4部分组成:
64位ROM、温度传感器、温度报警触发器TH和TL、配置寄存器。
DS18B20的管脚排列如图2.11所示,DQ为数字信号输入/输出端;
GND为电源地;
VDD为外接供电电源输入端。
图2.10DS18B20内部结构
图2.11DS18B20封装形式[13]
ROM中的64位序列号是出厂前被光刻好的,它可以看作是该DS18B20的地址序列码,每个DS18B20的64位序列号均不相同。
64位ROM排放循环冗余校验码(CRC=X8+X5+X4+1)。
ROM的作用是使每一个DS18B20都各不相同,这样就可以实现一根总线上挂接多个DS18B20的目的。
DS18B20中的温度传感器完成对温度的测量,用16位符号扩展的二进制补码读数形式提供,以0.0625℃/LSB形式表达,其中S为符号位。
例如+125℃的数字输出为07D0H,+25.0625℃的数字输出为0191H,-25.0625℃的数字输出为FF6FH,-55℃的数字输出为FC90H。
2)DS18B20的工作时序
DS18B20的一线工作协议流程是:
初始化→ROM操作指令→存储器操作指令→数据传输。
其工作时序包括初始化时序、写时序和读时序,如图2.12-图2.14所示。
图2.12初始化时序[4]
主机即单片机首先发480us-960us的低电平,进行复位,然后释放总线,之后总线被外部上拉电阻电阻抬高,大约等待15-60us之后,DS18B20发出60到240us的低电平信号,以示存在。
图2.13写操作时序[4]
写“0“的时候,首先单片机发复位信号,然后发“0”于是低电平持续60us就完成了写“0”写“1”的时候首先单片机发复位信号,持续时间大于1us小于15us然后发“1”持续50us以上即可。
图2.14读操作时序[4]
读时序也是主机先发低电平,然后在15us内检测连接DS18B20的数据线的引脚,从而读得相应值。
3单元电路设计
系统的整体硬件电路如所示:
以SPCE061A为核心控制器,包括传感器电路,键盘和显示电路,下面逐个模块介绍:
3.1传感器电路
DS18B20采用外电源供电方式,其原理如图3.1所示。
图3.1DS18B20工作电路
DS18B20的读写时序和测温原理与DS1820相同,只是得到的温度值的位数因分辨率的不同而不同,且温度转换时的延时时间由2s减为750ms。
DS18B20测温原理如图3.1所示。
图中低温度系数晶振的震荡频率受温度影响很小,用于生产固定频率的脉冲信号送给计算器1。
高温度系数晶振随温度变化其震荡频率明显改变,所产生的信号作为计数器2的脉冲输入。
计数器1和温度寄存器被顶置在—55℃所对应的一个基数值。
计数器1对低温度系数晶振产生的脉冲信号进行减法计数,当计数器1的预置减到0时温度寄存器的值将加1,计数器1的预置顶将重新被装入,计数器1重新开始对低温度系数晶振产生的脉冲信号进行计数,如此循环直到计数器2计数到0时,停止温度寄存器的累加,此时温度寄存器中的数值即为所测温度。
图3.1中的斜率累加用于补偿和修正测温度过程中的非线性,其输出用于计数器1的置顶值[14]。
3.2按键和显示电路
按键直接使用61板自带的按键,其电路如下图所示,不需要连接硬件即可使用。
图3.2独立按键电路原理图
显示采用6位数码管的其中4位(D1、D4~D6)进行动态显示,电路原理如图3.3所示。
在使用时,将a~dp接IOA8~IOA15,DIG1接IOB8,DIG4~DIG6接IOB11~13。
图3.3显示电路原理图
3.3电源电路
图3.4电源电路原理图
61板的内核SPCE061A电压要求为3.3V,而I/O端口的电压可以选择3.3V也可以选择5V。
所以,在板子上具有两种工作电压:
5V和3.3V。
对应的引脚中15、36和7必须为3.3V,对于I/O端口的电压51、52、75可以为3.3V也可以是5V,这两种电平的选择通过跳线J5来选择。
61板的供电电源系统采用用户多种选择方式。
1)5V供电
用户可以用3节电池来供电,5V直流电压直接通过SPY0029(相当于一般3.3V稳压器)稳压到3.3V,为整个61板提供了5V和3.3V两种电平的电压。
另外也可以直接外接5V的直流稳压源供电,5V电压再通过SPY0029稳压到3.3V。
2)3.3V供电
用户可以提供直流3.3V电压为实验板进行供电,此时整个板子只有3.3V电压,I/O端口电压此时只有一种选择。
4系统软件设计
4.1软件总体设计
程序的控制思想:
设置目标温度后,采样室温,并通过预设温度,当前温度,作出相应语音提示并显示当前温度。
系统运行首先初始化I0,Timer等部件,同时初始化键盘和显示等,并初始化系统状态设定状态。
初始化完成之后进入主程序循环体,在循环体内不停的扫描按键是否有触发,是否进行AD转换,如果已经完成AD转换,则对AD结果进行处理转化为温度值,如果有键按下,系统显示当前温度值。
4.2程序设计
4.2.1系统主程序图
图4.1系统主程序
系统主程序图如图4.1所示:
本系统中一根数据线上接一个DS18B20,所以ROM匹配时采用跳过处理(SKIP),向DS18B20发送0xcc命令字即可;
然后向DS18B20写命令字0x44启动一次温度转换。
转换结束后,DS18B20将采集到的16位温度值存储到其ROM的最低两个字节。
转换结束后必须对DS18B20进行初始化,然后才能通过向DS18B20写命令字0xbe读取ROM获取温度结果。
温度转换部分的程序如下:
F_18B20_Reset(uiChannel);
DS18B20_WriteByte(uiChannel,0xcc);
//不进行ROM匹配
DS18B20_WriteByte(uiChannel,0x44);
//启动一次温度采样
while(F_18B20_Read_DQ(uiChannel)==0)//等待转换结束
{
*P_Watchdog_Clear=0x0001;
}
F_18B20_Reset(uiChannel);
//不进行ROM匹配
DS18B20_WriteByte(uiChannel,0xbe);
//读取ROM命令
for(uiTemp=0;
uiTemp<
2;
uiTemp++)
{
Data[uiTemp]=DS18B20_ReadByte(uiChannel);
Data数组存储温度值,Data[0]为温度值的低8位,Data[1]为温度值的高8位。
SPCE061A单片机向DS18B20读一个完整字节的程序流程如图4.2所示:
图4.2向DS18B20读一个字节程序流程
4.2.2中断服务程序流程图
该系统用到了以下中断:
FIQ_TMA、IRQ2_TMB、IRQ4_4KHz、IRQ5_2Hz、IRQ6_TMB2(128Hz)。
FIQ_TMA中断:
调用语音播放服务函数,实现语音播放。
图4.3FIQ_TMA中断服务流程
5结语
经过三个多星期的努力,终天完成的这个设计。
基于SPCE061A的16位特性、DSP功能以及快速的处理能力,使得该系统的数据采集和运算处理十分的方便简单,另外由于IDE支持标准的C语言函数库,使得复杂的数学运算变得轻而易举,大大减小了编程的难度。
本次毕业设计,培养了我们综合应用课本理论解决实际问题的能力;
我觉得本次设计对我们的脑力操作和动手能力的提高是很大的,它需要我们将学过的理论知识与实际系统地联系起来,加强我们对学过的知识的实际应用能力!
在设计的过程中还培养出了我们的团队精神,互相学习,互相帮助,同学们共同协作,解决了许多个人无法解决的问题,在今后的学习过程中我们会更加努力和团结。
但是由于我们水平有限,我们的毕业设计难免会有一些错误和误差,还希望老师批评指正。
致谢
本论文得以完成,首先要感谢周平和老师的细心指导。
老师开阔的视野,为我提供了极大的发挥空间,在这段时间里让我明白了做任何事情要严谨细致、一丝不苟,对人要宽容、宽厚,周老师宽厚待人的学者风范更是令我感动。
感谢各位老师在这几年一直在生活中、组织上给予我的教导和无私的帮助,让我在陕西理工学院这个大舞台上有锻炼的能力、自我完善的平台。
在此文即将完成之际,我衷心的感谢在此过程中帮助过我的每个人,在这里请接收我最诚挚的谢意!
由于时间仓促、自身等原因,文章错误疏漏之处在所难免,恳请各位老师斧正。
参考文献
[1]马淑华.单片机原理与接口技术[M].北京:
北京邮电大学出版社,2007.
[2]薛钧义.凌阳十六位单片机原理及应用[M].北京:
北京航空航天大学出版社,2003.
[3]罗亚飞.凌阳16位单片机应用基础[M].北京:
北京航空航天大学出版社,2005.
[4]凌阳科技.凌阳大学计划光盘.2006.10/2008.4..
[5]李东升.protel99SE电路设计教程[M].电子工业出版社,2007.1.
[6]藏春华.电子线路设计与应用[M].高等教育出版社,2004.7.
[7]李学海.16位单片机SPCE061A使用教程——基础篇[M].人民邮电出版社,2007.6.
[8]张琳娜,刘武发.传感检测技术及应用[M].中国计量出版社,1999.1.
[9]邵敏权,刘刚.单片机原理实验及应用[M].吉林科学技术出版社,1995.1.
[10]杨振江等.智能仪器与数据采集系统中的新器件及应用[M].西安电子科技大学出版社,2001.12.
[11].刘笃仁,韩保君.传感器原理及应用技术[M].机械工业出版社,2003.
[12]郝迎吉,张明,王洪波.多路温度采集及监控系统的设计与实现[J].黄冈师范学院学报,2006,6:
21-26.
[13]查方勇.基于DS18B20的多点温度采集系统设计与实现[J].国外电子元器件,2011,31(6):
46-50.
[14]LiDongsheng.Adesignofalowcosthighprecisiondataacquisitionsystem[M].IntelligentControlandAutomation.2002.2.
[15]H.Fujita.Environmentalsensor.InstrumentationandMeasurementTechnologyConference[M].AdvancedTechnologiesinI&
M.IEEE.1994.6.
附录
系统主程序
//======================================================
//文件名称:
main.c
//功能描述:
获取DS18B20的温度并进行数据处理,以及按键处理和语音播放
#include"
ds18b20_driver.h"
spce061a.h"
sys.h"
key.h"
dig.h"
s480.h"
unsignedintTep[4];
unsignedintV_Set[3];
floatV_Alarm[2];
unsignedintg_Data[10]={0x003f,0x0006,0x005b,0x004f,0x0066,0x006d,0x007d,0x0007,0x007f,0x006f};
unsignedintuiSet,uiSetChannel,uiChannel,uiSetbit,uiMode,uiTurn;
voidKey_Process(unsignedintkey);
voidPlaySnd(unsignedintIndex);
//========================================================================
//语法格式:
intmain(void)
//实现功能:
主函数
//参数:
无
//返回值:
无
intmain()
unsignedintkey
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 SPCE061A 单片机 温度 采集 系统