论文部分内容阅读
摘要:本文介绍了基于SPCE061A单片机的多路温度采集系统,以及结合DS18B20实现多路温度控制,并给出了部分硬件系统框图和部分主要软件流程图。
关键词:SPCE061A;DS18B20;多路采集;语音
中图分类号:TP313文献标识码:A 文章编号:1009-3044(2007)04-11041-02
温度是工业生产中常见的和最基本的参数之一,在生产过程中常需对温度进行检测和监控。采用微型机进行温度检测、显示、信息存储及实时控制,对于提高生产效率和产品质量、节约能源等都有重要的作用。考虑到许多工业环境中对多点温度进行监控,一般需要测量几十个点以上,为此,我们设计了一种采用 SPCE061A单片机的多通道温度检测及显示系统。可以很容易实现温度采集及显示,而且具有语音处理优势,可以实现语音报警功能。
1 系统硬件组成
1.1 系统框图
整个系统以SPCE061A为核心,前向通道包括DS18B20传感器输入电路,按键输入电路;后向通道包括:LED显示电路和语音输出电路。 系统整体硬件设计如图1所示。
图1 采集系统总体流程图
1.2DS18B20简述
DS18B20是DALLAS公司生产的一线制数字温度传感器;温度测量范围为-55℃~+125℃,可编程为9位~12位A/D转换精度,测温分辨率可达0.0625℃,被测温度用符号扩展的16位数字量方式串行输出;其工作电源既可在远端引入,也可采用寄生电源方式产生;多个DS18B20可以并联到一起,CPU只需一根数据线就能与诸多DS18B20通信,占用微处理器的端口较少,可节省大量的引线和逻辑电路。以上特点使DS18B20非常适用于远距离多点温度检测系统。
DS18B20内部结构,主要由4部分组成:64位ROM、温度传感器、温度报警触发器TH和TL、配置寄存器。DS18B20的管脚排列如图2所示,DQ为数字信号输入/输出端;GND为电源地;VDD为外接供电电源输入端(寄生电源接线方式时接地)。
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。
1.3 SPCE061A单片机
SPCE061A是凌阳科技推出的一款16位具有语音处理μ'nSP结构的微控制器。SPCE061A采用Soc架构,其内核为凌阳科技自主研发的u'nSP架构内核,该芯片带有硬件乘法器,能够实现乘法运算、内积运算等复杂的运算。它不仅运算能力强,而且处理速度快,单周期最高可以达到49MHz。内置的专用MIC接口和双路10bit DAC使之非常适合于开发语音电子产品,可方便灵活地实现高品质语音录制、语音播放等功能。SPCE061A内嵌32K字的Flash程序存储器以及2K的SRAM、8通道10bit ADC、2路16位定时器、UART接口、看门狗、时基输出以及电压监测等模块。丰富的外设资源和良好的监控机制使该芯片功能丰富、性能稳定,可作为通用微控制器,广泛应用于工业控制、家居安防、智能家电等众多领域。在温度数据的采集上,利用了两个I/O口连接DS18B20的数据引脚,在显示上,利用了12个I/O口实现数码管的动态刷新显示。利用这些特性可以很容易实现温度采集及显示,而且具有语音处理优势,可以实现语音报警功能。
2 系统软件的设计
程序的控制思想:系统运行后初始化系统变量、按键显示用到的I/O以及中断等;之后初始化两路DS18B20以确认器件的存在;初始化完成之后,将进行温度的采样,并执行温度比较,如果温度大于35摄氏度(初始值为35),将进行超温语音提示。主程序循环过程中不断的扫描按键,如果有按键触发将会调用键值处理函数(系统主程序流程图3)。整个程序包括:
主程序文件,实现系统的初始化,整个系统的运行控制,键值的处理和语音处理。
数码管显示文件,包含显示的端口初始化,显存的刷新,数码管的闪烁等。
按键函数文件,按键的初始化、扫描及获取键值。
语音的API函数文件,内含语音播放必须的用户接口函数
中断服务函数文件:系统的显示刷新、按键扫描、通道的自动切换及语音的解码均通过中断完成。(由于文章篇幅,我们此处重点介绍DS18B20采集温度流程,按键处理流程。)
图3 系统主程序流程 图4 DS18B20读取数据流程
2.1 DS18B20采集温度流程
如果想从DS18B20传感器获得温度,必须按照图四DS18B20读取数据流程的流程操作:本系统中一根数据线上接一个DS18B20,所以ROM匹配时采用跳过处理(SKIP),向DS18B20发送0xcc命令字即可;然后向DS18B20写命令字0x44启动一次温度转换。转换结束后,DS18B20将采集到的16位温度值存储到其ROM的最低两个字节。转换结束后必须对DS18B20进行初始化,然后才能通过向DS18B20写命令字0xbe读取ROM获取温度结果。温度转换部分的程序如下:
Data数组存储温度值,Data[0]为温度值的低8位,Data[1]为温度值的高8位。
2.2 按键处理程序
该系统共用到3个按键KEY1、KEY2、KEY3。按键用于显示方式的切换以及设置报警温度,其服务程序如图5所示:
按键扫描程序,该函数被中断服务程序调用
3 结论
基于SPCE061A的16位特性、DSP功能以及快速的处理能力,使得该系统的数据采集和运算处理十分的方便简单,另外由于IDE支持标准的C语言函数库,使得复杂的数学运算变得轻而易举,大大减小了编程的难度。
推广:(1)实现在一条数据总线上挂接多个18B20器件; (2)采集的温度可以通过串口发送到上位机,并由上位机显示; (3)可以将采集的温度值进行备份,并通过按键查询。
参考文献:
[1]张迎新,雷道振,陈 胜.计算机原理应用及接口技术[M].北京:国防工业出版社,2004.
[2]文哲雄,罗中良.单总线多点分布式温度监控系统的设计[J],2005(6):63-65.
[3]王志鹏.可编程逻辑器原理与程序设计[M].北京:北京航天航空出版社,2005.
[4]求是科技.单片机典型模块设计实例导航[M].北京.人民邮电出版社,2006.
[5]罗亚非.凌阳16位单片机应用基础[M].北京:北京航空航天大学出版社,2006.
本文中所涉及到的图表、注解、公式等内容请以PDF格式阅读原文。
关键词:SPCE061A;DS18B20;多路采集;语音
中图分类号:TP313文献标识码:A 文章编号:1009-3044(2007)04-11041-02
温度是工业生产中常见的和最基本的参数之一,在生产过程中常需对温度进行检测和监控。采用微型机进行温度检测、显示、信息存储及实时控制,对于提高生产效率和产品质量、节约能源等都有重要的作用。考虑到许多工业环境中对多点温度进行监控,一般需要测量几十个点以上,为此,我们设计了一种采用 SPCE061A单片机的多通道温度检测及显示系统。可以很容易实现温度采集及显示,而且具有语音处理优势,可以实现语音报警功能。
1 系统硬件组成
1.1 系统框图
整个系统以SPCE061A为核心,前向通道包括DS18B20传感器输入电路,按键输入电路;后向通道包括:LED显示电路和语音输出电路。 系统整体硬件设计如图1所示。
图1 采集系统总体流程图
1.2DS18B20简述
DS18B20是DALLAS公司生产的一线制数字温度传感器;温度测量范围为-55℃~+125℃,可编程为9位~12位A/D转换精度,测温分辨率可达0.0625℃,被测温度用符号扩展的16位数字量方式串行输出;其工作电源既可在远端引入,也可采用寄生电源方式产生;多个DS18B20可以并联到一起,CPU只需一根数据线就能与诸多DS18B20通信,占用微处理器的端口较少,可节省大量的引线和逻辑电路。以上特点使DS18B20非常适用于远距离多点温度检测系统。
DS18B20内部结构,主要由4部分组成:64位ROM、温度传感器、温度报警触发器TH和TL、配置寄存器。DS18B20的管脚排列如图2所示,DQ为数字信号输入/输出端;GND为电源地;VDD为外接供电电源输入端(寄生电源接线方式时接地)。
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。
1.3 SPCE061A单片机
SPCE061A是凌阳科技推出的一款16位具有语音处理μ'nSP结构的微控制器。SPCE061A采用Soc架构,其内核为凌阳科技自主研发的u'nSP架构内核,该芯片带有硬件乘法器,能够实现乘法运算、内积运算等复杂的运算。它不仅运算能力强,而且处理速度快,单周期最高可以达到49MHz。内置的专用MIC接口和双路10bit DAC使之非常适合于开发语音电子产品,可方便灵活地实现高品质语音录制、语音播放等功能。SPCE061A内嵌32K字的Flash程序存储器以及2K的SRAM、8通道10bit ADC、2路16位定时器、UART接口、看门狗、时基输出以及电压监测等模块。丰富的外设资源和良好的监控机制使该芯片功能丰富、性能稳定,可作为通用微控制器,广泛应用于工业控制、家居安防、智能家电等众多领域。在温度数据的采集上,利用了两个I/O口连接DS18B20的数据引脚,在显示上,利用了12个I/O口实现数码管的动态刷新显示。利用这些特性可以很容易实现温度采集及显示,而且具有语音处理优势,可以实现语音报警功能。
2 系统软件的设计
程序的控制思想:系统运行后初始化系统变量、按键显示用到的I/O以及中断等;之后初始化两路DS18B20以确认器件的存在;初始化完成之后,将进行温度的采样,并执行温度比较,如果温度大于35摄氏度(初始值为35),将进行超温语音提示。主程序循环过程中不断的扫描按键,如果有按键触发将会调用键值处理函数(系统主程序流程图3)。整个程序包括:
主程序文件,实现系统的初始化,整个系统的运行控制,键值的处理和语音处理。
数码管显示文件,包含显示的端口初始化,显存的刷新,数码管的闪烁等。
按键函数文件,按键的初始化、扫描及获取键值。
语音的API函数文件,内含语音播放必须的用户接口函数
中断服务函数文件:系统的显示刷新、按键扫描、通道的自动切换及语音的解码均通过中断完成。(由于文章篇幅,我们此处重点介绍DS18B20采集温度流程,按键处理流程。)
图3 系统主程序流程 图4 DS18B20读取数据流程
2.1 DS18B20采集温度流程
如果想从DS18B20传感器获得温度,必须按照图四DS18B20读取数据流程的流程操作:本系统中一根数据线上接一个DS18B20,所以ROM匹配时采用跳过处理(SKIP),向DS18B20发送0xcc命令字即可;然后向DS18B20写命令字0x44启动一次温度转换。转换结束后,DS18B20将采集到的16位温度值存储到其ROM的最低两个字节。转换结束后必须对DS18B20进行初始化,然后才能通过向DS18B20写命令字0xbe读取ROM获取温度结果。温度转换部分的程序如下:
Data数组存储温度值,Data[0]为温度值的低8位,Data[1]为温度值的高8位。
2.2 按键处理程序
该系统共用到3个按键KEY1、KEY2、KEY3。按键用于显示方式的切换以及设置报警温度,其服务程序如图5所示:
按键扫描程序,该函数被中断服务程序调用
3 结论
基于SPCE061A的16位特性、DSP功能以及快速的处理能力,使得该系统的数据采集和运算处理十分的方便简单,另外由于IDE支持标准的C语言函数库,使得复杂的数学运算变得轻而易举,大大减小了编程的难度。
推广:(1)实现在一条数据总线上挂接多个18B20器件; (2)采集的温度可以通过串口发送到上位机,并由上位机显示; (3)可以将采集的温度值进行备份,并通过按键查询。
参考文献:
[1]张迎新,雷道振,陈 胜.计算机原理应用及接口技术[M].北京:国防工业出版社,2004.
[2]文哲雄,罗中良.单总线多点分布式温度监控系统的设计[J],2005(6):63-65.
[3]王志鹏.可编程逻辑器原理与程序设计[M].北京:北京航天航空出版社,2005.
[4]求是科技.单片机典型模块设计实例导航[M].北京.人民邮电出版社,2006.
[5]罗亚非.凌阳16位单片机应用基础[M].北京:北京航空航天大学出版社,2006.
本文中所涉及到的图表、注解、公式等内容请以PDF格式阅读原文。