77范文网 - 专业文章范例文档资料分享平台

基于ARM的温度采集系统(2)

来源:网络收集 时间:2019-06-05 下载这篇文档 手机版
说明:文章内容仅供预览,部分内容可能不全,需要完整文档或者需要复制内容,请下载word后使用。下载word有问题请添加微信号:或QQ: 处理(尽可能给您提供完整文档),感谢您的支持与谅解。点击这里给我发消息

是为了防止电源输入反接烧坏集成稳压块而设计的。

3.2.2温度采集电路设计

温度采集模块电路采用AT89S52单片机作为模块的协控制器。对于温度传感器的选用DS18B20,因为DS18B20是Dallas公司最新单总线数字温度传感器,该传感器集温度变换、A/D转换于同一芯片,输出直接为数字信号,大大提高了电路的效率。由于现场温度直接以“一线总线”的数字方式传输,大大提高了系统的抗干扰性,且提高了CPU的效率。AT89S52单片机的P0 口与8路温度传感器相连,用于采集温度数据;另外,模块提供RS-232串行口与RAM核心控制模块通信,达到数据传输的目的。温度采集模块电路原理图如图3-3。

图3-3 温度采集电路原理图

四、软件设计

4.1设计思路

本系统软件设计是在CodeWarrior for ADS开发环境下完成的。本温度数据采集与显示装置的主体由S3C44B0x核心控制模块和温度数据采集模块构成,所以系统软件也是围绕这两个模块来编写的。而又由于系统采用了S3C44Box和AT89S52两个CPU协同工作,所以

软件的编写需要对这两个CPU分别编写,以实现所要求的功能。程序流程图如图4-1。

开始 ARM初始化 硬件装置初始化 通信初始化 LED显示初始化 键盘初始化 扫描键盘 Y 有键按下 N 处理数值 数据获取 相应显示 数据处理 数据显示

图4-1程序流程图

由该流程图可看出,刚上电时,S3C44B0x要先进行ARM 内部的初始化,以使ARM进入相应的状态和模式;然后初始化硬件装置,以使硬件系统可以正常支持温度数据采集;接着通信初始化,以确定温度采集模块与ARM核心控制模块连接正常,并通过UART复位温度数据采集模块,确保其进入正常温度数据采集状态;然后初始化LCD显示和键盘,在LCD上显示相应的菜单列表,供用户通过键盘选择操作;至此,系统初始化完成,并进入正常主程序循环状态。

在正常主程序循环状态中,首先扫描键盘,以快速的响应用户的按键操作;若没有键值按下,则ARM立即进行数据的采集、处理与显示,以实现实时数据采

集与显示等功能。

其主程序包括温度采集程序、ARM获取温度子程序、温度处理和转换子程序。当ARM 处理器接收到正确的温度数据后,立即进行相应的温度数据处理与转换,变成可被LCD直接显示的正确温度值。

4.2程序清单

温度处理与转换子程序如下: //存放读取到的当前温度值,未转换 Static U16 a-temp-now[8]={8*0}

//存放经精度计算后的实际温度值,高8位整数部分,低8位小数部分 static U16 b-temp-now[8]={8*0};

//存放8路转换后温度值,分别为百位,十位,个位,小数位 static U8 temp-convent-all[32]={32*0}; //------------------------------- //温度处理与转换子程序

//---------------------------------- void temp-change(void) {

U8 negtive=0x00; //存放数的符号,若为正=0;若为负,=0xff U8 j=0;

U8 *pt=temp-convent-all; U16 *p1=a-temp-now; U16 *p3=b-temp-now; U16 temp=0; for(j=0;j<8;j++) {

negative =0x00; temp=*p1;

//若温度为负值,进行相应处理 if((temp&0xf80) !=0) {

temp=(~temp)+1;//转为正的原码 negative=0xff; // 同时置符号为0xff

}

//根据精度消除无关数据 switch(a-temp-prec) {

case 0x1f: //精度为9位,则清除最低3位无效位 {

temp=temp&0xfff8;break; }

case 0x3f: //精度为10位,则清除最低2位无效位 {

temp=temp&0xfffc;break; }

case 0x5f: //精度为11位,则清除最低1位无效位 {

temp=temp&0xfffe;break; }

case 0x7f: //精度为12位 {

break; }

}

//换算成实际温度,并扩大10倍,去掉小数部分 temp=(U16)((float)(temp)*0.625); //折算放入b-temp-now 数组中

//高8位放整数部分,低8位放小数部分,最高位放符号位 if(negtive== 0xff) //若为负值 {

*p3=((temp/10)<<8)|(temp)|0x8000; }

else {

*p3=((temp/10)<<8)|(temp)&0x7fff; }

if(negative==0xff) //若为负值

{(*pt++)=0x80;} else {

(*pt++)=temp/1000+0x30; }

(*pt++)=temp/100+0x30; (*pt++)=temp/10+0x30; (*pt++)=temp+0x30; p1++; p3++; }

//转换完成后清除读回的原始温度 p1=a-temp-now; for(j=8;j>0;j--) {

*p1++=0x0; } }

五、心得体会

百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说综合文库基于ARM的温度采集系统(2)在线全文阅读。

基于ARM的温度采集系统(2).doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印 下载失败或者文档不完整,请联系客服人员解决!
本文链接:https://www.77cn.com.cn/wenku/zonghe/650656.html(转载请注明文章来源)
Copyright © 2008-2022 免费范文网 版权所有
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ: 邮箱:tiandhx2@hotmail.com
苏ICP备16052595号-18
× 注册会员免费下载(下载后可以自由复制和排版)
注册会员下载
全站内容免费自由复制
注册会员下载
全站内容免费自由复制
注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: