摘 要:在工业生产和日常生活中,有的时候迫切需要知道某种环境、某种物体的温度,而且需要将它记录下来。更高的要求是,需要每隔一段时间记录时间与温度,将温度上传到PC机进行分析计算……。本方案讨论了使用凌阳科技公司的高性能SPCE061A单片机作为主控制器,采用一线制数字温度传感器DS18B20作为温度传感器,采用液晶1602作为显示器件,采用凌阳科技公司的SPR1024作为数据存储器的应用方案。该方案实现了目标温度的测量、显示、存储与PC机传输数据的功能,体现了SPCE061A强大的功能。
关键词:测温;单片机;SPCE061A;SPR1024;DS18B20;液晶1602;DS18B20
1 引言
在工业生产和日常生活中,有的时候迫切需要知道某种环境、某种物体的温度,而且需要将它记录下来。更高的要求是,需要每隔一段时间记录时间与温度,将温度上传到PC机进行分析计算……。本方案讨论了使用凌阳科技公司的高性能SPCE061A单片机作为主控制器,采用一线制数字温度传感器DS18B20作为温度传感器,采用液晶1602作为显示器件,采用凌阳科技公司的SPR1024作为数据存储器的应用方案。该方案实现了目标温度的测量、显示、存储与PC机传输数据的功能,体现了SPCE061A强大的功能。
2 技术指标及方案可行性论证
2.1 系统的技术指标
本系统的技术指标要求如下:
1. 采集温度,达到0.1℃;
2. 实时显示温度;
3. 具有温度数据存储功能,每隔10分钟存储,并且在存储的过程中通过液晶提示,要求可以存储30天的数据;
4. 具有UART通讯功能,可以将采集的温度实时的上传到PC机。
2.2 可行性论证
考虑到性价比,开发工具等等,选择凌阳SPCE061A作为主控制器。根据系统的技术指标,选择DS18B20作为温度传感器。该温度传感器具有多种测温模式,其中11位的测温模式可以达到0.0625的要求,满足系统的要求。采用液晶1602来显示温度,该液晶具有很好的性价比,为16*2的字符型液晶,驱动简单,可以进行实时显示。为了可以存储数据,外扩凌阳科技公司的SPR1024串行Flash作为存储器。该存储器为128K*8 bit的flash,系统要求每隔10分钟存储数据,30天共需存储30(天)*24(小时)*6(每小时6次)为4320次数据,由于数据为11位分为高低字节存放,共需要4320(次)*2(字节)为8640(字节),所以SPR1024完全满足要求,而且具有余量,可以进行扩展,例如将温度的时间也保存到SPR1024中,或者提高存储的频率,每隔5分钟存储等等。UART功能为SPCE061A具有的功能,扩展一个电平转换电路就可以实现与PC机通讯。综上所述,系统方案可行。
3 系统所用模块简介
本系统采用SPCE061A单片机作为主控制器,DS18B20作为温度传感器,SPR1024作为存储器件,液晶1602作为显示器件,下面将依次介绍这些模块。
3.1 SPCE061A芯片特性
3.1.1 SPCE061A简介
SPCE061A是凌阳科技研发生产的性价比很高的一款十六位单片机,该芯片拥有8路10位的ADC,两路10的DAC,只需要外接功放(SPY0030A)即可完成语音的播放。另外凌阳十六位单片机具有易学易用的效率较高的一套指令系统和集成开发环境。在此环境中,支持标准C语言,可以实现C语言与凌阳汇编语言的互相调用为软件开发提供了方便的条件。
SPCE061A片内还集成了一个ICE(在线仿真电路)接口,使得对该芯片的编程、仿真都变得非常方便,而ICE接口不占用芯片上的硬件资源,结合凌阳科技提供的集成开发环境(unSP IDE)用户可以利用它对芯片进行真实的仿真;而程序的下载(烧写)也是通过该接口进行下载。
下图为SPCE061A单片机的内部结构框图:
图 3.1 SPCE061A内部结构图
3.1.2 芯片特性
· 16位μ'nSP微处理器;
· 工作电压:内核工作电压VDD为3.0~3.6V(CPU),IO口工作电压VDDH为VDD~5.5V(I/O);
· CPU时钟:0.32MHz~49.152MHz;
· 内置2K字SRAM;
· 内置32K闪存ROM;
· 可编程音频处理;
· 晶体振荡器;
· 系统处于备用状态下(时钟处于停止状态),耗电小于
2μA@3.6V;
· 2个16位可编程定时器/计数器(可自动预置初始计数值);
· 2个10位DAC(数-模转换)输出通道;
· 32位通用可编程输入/输出端口;
· 14个中断源可来自定时器A / B,时基,2个外部时钟源输入,键唤醒;
· 具备触键唤醒的功能;
· 使用凌阳音频编码SACM_S240方式(2.4K位/秒),能容纳210秒的语音数据;
· 锁相环PLL振荡器提供系统时钟信号;
· 32768Hz实时时钟;
· 7通道10位电压模-数转换器(ADC)和单通道声音模-数转换器;
· 声音模-数转换器输入通道内置麦克风放大器和自动增益控制(AGC)功能;
· 具备串行设备接口;
· 低电压复位(LVR)功和低电压监测(LVD)功能;
· 内置在线仿真(ICE,In- Circuit Emulator)接口。
3.2 SPCE061A精简开发板
SPCE061A精简开发板(简称61板),是以凌阳16位单片机SPCE061A为的精简开发-仿真-实验板,大小相当于一张扑克牌,是"凌阳科技大学计划"专为大学生、电子爱好者等进行电子实习、课程设计、毕业设计、电子制作及电子竞赛所设计的,也可作为单片机项目初期研发使用。61板除了具备单片机最小系统电路外,还包括有电源电路、音频电路(含MIC输入部分和DAC音频输出部分)、复位电路等,采用电池供电,方便学生随身携带!!!使学生在掌握软件的同时,熟悉单片机硬件的设计制作,锻炼学生的动手能力,也为单片机学习者和开发者创造了一个良好的学习条件和开发新产品的机会! 61板上有调试器接口(Probe接口)以及下载线(EZ_Probe)接口,分别可接凌阳科技的在线调试器、简易下载线,配合unSP IDE,可方便地在板上实现程序的下载、在线仿真调试。
61板上的主要功能模块如下:
· SPCE061A单片机最小系统外围电路模块;
· 电源输入模块;
· 音频电路(包含MIC输入、DAC音频功放输出)模块;
· 按键模块;
· I/O端口接口模块;
· 调试、下载接口模块;
下图为61板的实物图:
图 3.2 61板实物图
3.3 DS18B20温度传感器简介
3.3.1 简介
DS18B20是DALLAS公司生产的一线式数字温度传感器,具有3引脚TO-92小体积封装形式;温度测量范围为-55℃~+125℃,可编程为9位~12位A/D转换,测温分辨率可达0.0625℃,被测温度用符号扩展的16位数字量方式串行输出;其工作电源既可在远端引入,也可采用寄生电源方式产生;多个DS18B20可以并联到3根或2根线上,CPU只需一根端口线就能与诸多DS18B20通信,占用微处理器的端口较少,可节省大量的引线和逻辑电路。以上特点使DS18B20非常适用于远距离多点温度检测系统。
3.3.2 DS18B20的内部结构
DS18B20内部结构图 3.3所示,主要由4部分组成:64位ROM、温度传感器、非挥发的温度报警触发器TH和TL、配置寄存器。DS18B20的管脚排列如图 3.4所示,DQ为数字信号输入/输出端;GND为电源地;VDD为外接供电电源输入端(在寄生电源接线方式时接地,见图 3.9)。
图 3.3 DS18B20内部结构
图 3.4 DS18B20封装形式
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。
3.3.3 DS18B20的工作时序
DS18B20的一线工作协议流程是:初始化→ROM操作指令→存储器操作指令→数据传输。其工作时序包括初始化时序、写时序和读时序,如图 3.5、图 3.6和图 3.7所示。
图 3.5 初始化时序
图 3.6 写时序
图 3.7 读时序
3.3.4 DS18B20与单片机的典型接口设计
可以采用外接电源与寄生电源供电(就是供电电源从数据线上得到):
图 3.8 外接电源供电
图 3.9 寄生电源供电
3.4 SPR1024 Flash简介
3.4.1 芯片简介
SPR1024是128K*8bit的高性能Flash,内嵌有并行总线接口(BMI Bus Memory Interface)和串行总线接口(SIF Serial Interface)。工作电压在2.7V-3.6V,工作频率达到5MHz,读操作电流1mA,写操作/擦除电流4mA。在串行模式下,可以与SPCE061A单片机通过SIO方便连接。
3.4.2 芯片内部结构
图 3.10 SPR1024内部结构
更详细资料参考SPR1024 DataSheet。
3.5 液晶1602简介
3.5.1 技术参数
显示容量:32个字符,每个字符为5*7点阵,分2行,每行16列
芯片工作电压:4.5-5.5V
工作电流:2mA(5.0V)
模块工作电压:5.0V
字符尺寸:2.95*4.35(W*H)mm
3.5.2 接口信号说明
接口 |
编号 |
引脚说明 |
接口 |
编号 |
引脚说明 |
1 |
VSS |
电源地 |
9 |
D2 |
DATA I/O |
2 |
VDD |
电源正极 |
10 |
D3 |
DATA I/O |
3 |
VL |
液晶显示偏压信号 |
11 |
D4 |
DATA I/O |
4 |
RS |
数据/命令选择端(H/L) |
12 |
D5 |
DATA I/O |
5 |
R/W |
读/写选择端(H/L) |
13 |
D6 |
DATA I/O |
6 |
EP |
使能信号 |
14 |
D7 |
DATA I/O |
7 |
D0 |
DATA I/O |
15 |
BLA |
背光源正极 |
8 |
D1 |
DATA I/O |
16 |
BLK |
背光源负极 |
3.5.3 读写时序
读操作时序
图 3.11读操作时序
图 3.12 写操作时序
时序参数:
3.5.4 典型应用
图 3.13 1602与单片机典型接口
4 系统总体方案介绍
本系统由一块SPCE061A精简开发板(61板)、一线制数字温度传感器DS18B20、128K*8bit Flash SPR1024、液晶1602和外扩UART串口电平转换电路组成,可以实现温度的测量、显示、存储与PC机通讯等功能。此系统以SPCE061A为,由测温模块、显示模块、存储模块等构成。
硬件结构框图如图 4.1所示。
图 4.1 硬件结构图
SPCE061A与其它器件连接图:
图 4.2系统连线图
5 系统硬件设计
5.1 SPCE061A周边模块
5.1.1 SPCE061A最小系统
SPCE061A最小系统当中,包括SPCE061A芯片外围的基本模块,有:晶振输入模块(OSC)、锁相环外围电路(PLL)、复位电路(RESET)、指示灯(LED)等,如下图所示。
图 5.1 SPCE061A最小系统
本系统,有关SPCE061A单片机的最小系统的各个模块都做在61板当中,读者可以查阅61板的电路原理图。
5.1.2 电源模块
SPCE061A的内核供电为3.3V,而I/O端口可接3.3V也可以接5V,所以在电源模块(61板上)中有一个端口电平选择跳线,如图中的J5,下图为61板上的电源模块图。
图 5.2 电源模块
5.2 DS18B20电路连接
由于DS18B20是一线制数字温度传感器,在与SPCE061A连接的时候非常的方便。
图 5.3DS18B20的电路
5.3 液晶1602电路连接
由于液晶1602已经是一个模块,在这里只介绍与61板的连线图:
图 5.4液晶1602与61板连线
5.4 SPR1024电路连接
参考下面的电路图:
图 5.5 SPR1024电路图
6 系统软件设计
6.1 主程序设计
主程序流程如图 6.1所示。
图 6.1 主程序流程图
主函数比较简单,在程序开始后将系统时钟调到24.576M,程序中操作液晶1602与DS18B20需要严格的读写控制时许,其中软件延时就是按照这个时钟计算的。然后初始化IO端口,打开2Hz中断,为了定时10分钟做准备。调用开机显示界面,在液晶1602上显示
www.unsp.com.cn/TEL62981668-2965字样,持续一段时间,重新初始化液晶1602,初始化SIO与UART,为使用SIO,UART做准备。然后进入循环,调用测温函数测温,调用显示函数显示,调用发送数据函数发送数据,判断是否是设定的时间(10分钟),如果是调用存储函数存储数据,如果不是直接执行下一步清看门狗操作,然后继续循环。
6.2 子程序的设计
6.2.1 测温子程序
图 6.2 测温子程序子程序
在测温时首先设置DS18B20的DQ为高电平,然后初始化DS18B20,在成功后DS18B20接收单片机的命令,为了简单起见这里跳过ROM命令设置匹配过程,然后再次初始化DS18B20在成功后启动测温,然后将温度保存起来,返回。其中读写DS18B20的驱动程序在DS18B20.c文件中,可以参考DS18B20的读写时序图来理解程序。
6.2.2 显示子程序
在测得温度后,将温度数据转换为十进制数的温度表示,然后再通过查表(在c语言中是一个数组,参考程序中在Display函数中,Data[10]数组)调用液晶1602显示在液晶上,这里面比较简单,数据处理类似于由二进制转换为十进制,再由十进制转换为ASCII码,读者可以参考相关的说明。液晶显示驱动程序在LCD1602_Driver .asm 文件中。
6.2.3 存储子程序
调用SPR1024的用户函数,完成存储功能,存储的数据没有经过转换,只是将温度数据分为高低字节分两次存储。SPR1024的驱动程序在SPR1024_Driver.asm文件中。
6.2.4 UART通讯子程序
通讯子程序采用查询的方法,数据格式为先发数据0xAA,然后是温度数据的高字节,温度数据的低字节,是0x55结束。UART操作的函数在UART.c文件中。
6.2.5 中断的处理
在程序中打开2Hz的中断作为计时使用,设置全局变量g_Min10为计数器,每进入中断计数加一。在主函数中判断是否到预定值(10分钟),如果到了,将变量清0,重新开始计数。
7 结语
本系统以SPCE061A单片机为控制,利用其强大的处理能力,以及丰富的外围接口,再配合DS18B20温度传感器、液晶1602、SPR1024,很好的完成了温度的测量、显示、存储与PC机通讯的功能,为温度系统的实现提供了一种解决方案。
SPCE061A的IOA口低8位还没有使用,IOB口的许多IO口也没有使用,可以扩展1*8或4*4键盘增加人机交互功能,实现温度的查询。在外扩时间芯片可以记录温度的时间,这样整个系统具有更加实用的意义。
//评论区