基于ARM的温湿度采集系统.docx

上传人:b****7 文档编号:10545853 上传时间:2023-02-21 格式:DOCX 页数:16 大小:168.90KB
下载 相关 举报
基于ARM的温湿度采集系统.docx_第1页
第1页 / 共16页
基于ARM的温湿度采集系统.docx_第2页
第2页 / 共16页
基于ARM的温湿度采集系统.docx_第3页
第3页 / 共16页
基于ARM的温湿度采集系统.docx_第4页
第4页 / 共16页
基于ARM的温湿度采集系统.docx_第5页
第5页 / 共16页
点击查看更多>>
下载资源
资源描述

基于ARM的温湿度采集系统.docx

《基于ARM的温湿度采集系统.docx》由会员分享,可在线阅读,更多相关《基于ARM的温湿度采集系统.docx(16页珍藏版)》请在冰豆网上搜索。

基于ARM的温湿度采集系统.docx

基于ARM的温湿度采集系统

编号22

期末大作业

题目:

基于ARM的温湿度采集系统

物联网工程学院计算机科学与技术专业

学号0304100222

学生姓名仲其龙

指导教师陈志国

 

二〇一三年五月

摘要

课题是基于S3C44B0xARM微处理器为核心,采用LCD液晶显示,设计空气中的温温度和湿度数据采集显示系统。

设计的过程主要包括硬件设计和软件设计,其中软件设计为C语言设计。

系统的主要功能是从空气中采集数据,通过A/D转换器,转换为数字信号,并通过LCD液晶显示屏显示。

实现了智能化的温度数据采集、传输、处理与显示功能。

关键词:

ARM;S3C44B0x;嵌入式系统;数据采集

 

第1章概述

1.1实验目的及要求

目前嵌入式系统的研究和应用中,ARM芯片的使用越来越广泛。

本课程的目的是了解嵌入式系统基础理论的前提下,掌握一些常用的ARM处理器相关的汇编语言和C语言程序设计方法,熟悉基于S3C44B0X芯片的硬件接口设计方法,学会使用ARM集成开发环境,从而了解嵌入式系统的软硬件设计过程,为今后从事相关领域的应用和研究打好基础。

通过大作业期望可以实现如下目的:

一、掌握一种ARM的开发工具使用方法;

二、掌握S3C44B0XARM处理器的原理和接口设计方法;

三、掌握ARM的C语言和汇编语言编程方法;

四、培养选用参考书、查阅技术手册及相关参考文献的能力;

五、培养独立思考、分析问题和解决问题的能力;

六、培养严肃认真的学习风气和良好的沟通协作能力。

1.2实验内容

题目:

基于ARM的温湿度显示系统

具体要求:

1.以S3C44B0X的ARM处理器为核心,选择合适的元器件,设计一个空气中的温度和湿度的显示系统;

2.温度传感器和湿度传感器的类型不限,要求温度测量范围为-20℃~+60℃,湿度测量范围为10%~90%;

3.温度和湿度的显示,可以采用八段数码管或LCD液晶屏的形式;

4.要求给出S3C44B0X和主要装置的硬件连接电路图(原理图);

5.要求编写相关的温湿度采集和显示程序,并给出合理的程序注释。

 

第2章设计原理

2.1硬件系统总体设计

在本系统的设计过程中,根据嵌入式系统的基本设计思想,系统采用了模块化的设计方法;并且根据系统的功能要求和技术指标,系统遵循自上而下、由大到小、由粗到细的设计思想;按照系统的功能层次,在设计中把硬件和软件分成若干功能模块分别设计和调试,然后全部连接起来统调。

本设计的基于ARM的嵌入式数据采集和显示装置的原理框图如图1所示。

由图可见,本系统采用“电源部分+ARM核心控制模块+温度采集模块”实现所需功能。

下面分别对各部分的工作原理做简要的说明:

为了实现系统所要求的功能和指标,并考虑到系统的可扩展性和延伸性,本系统采用主从CPU协同工作,实现了数据的实时采集、传输与显示,具有处理速度快、精度高、人机交互界面友好、稳定性高、扩展性好等优点。

2.2LCD液晶显示设计

2.2.1S3C44B0XLCD控制器介绍

S3C44B0X处理器集成LCD控制器,支持4位单扫描、4位双扫描和8位单扫描工作方式。

处理器使用内部RAM区作为显示缓存,并支持屏幕水平和垂直滚动显示。

数据的传送采用DMA(直接内存访问)方式,以达到最小的延迟。

根据实际硬件水平和垂直像素点数、传送数据位数、时间线和帧速率方式等进行编程以支持多种类型的液晶屏。

可以支持的液晶类型有:

-单色液晶

-4级或16级灰度屏(基于时间抖动算法或帧速率控制--FRC)

-256色彩色液晶(STN液晶)

2.2.2显示控制

LCD控制器主要提供液晶屏显示数据的传送、时钟和各种信号的产生与控制功能。

S3C44B0X处理器的LCD控制器主要部分框图如图2所示:

2.2.3电路设计

进行液晶屏控制电路设计时必须提供电源驱动、偏压驱动以及LCD显示控制器。

由于S3C44B0X处理器本身自带LCD控制器,而且可以驱动实验板所选用的液晶屏,所以控制电路的设计可以省去显示控制电路,只需进行电源驱动和偏压驱动的电路设计即可。

图3液晶显示电路

2.3A/D转换设计

2.3.1采样保持接口

在S3C44B0X中A/D模块有8个模拟输入通道,通道的切换可以由内部的定时器完成。

如果要进行8个通道连续变化的信号的转换,还必须在8个通道全部加采样保持器,采样保持的接口电路如下图。

模拟输入信号为需要转换的信号,驱动控制信号可以通过编程利用ARM里面的timer产生,也可以通过I/O口来控制,输出信号直接接到A/D模块中的输入通道。

图4采样保持接口

2.3.2分压电路

分压电路比较简单,为了保证电压转换时是稳定的,可以直接调节可变电阻得到稳定的电压值。

图5分压电路

2.4电源电路设计

本系统的电源电路由两部分组成:

系统总电源电路和RAM核心模块电源电路。

如图:

+12V恒定直流电源经电容滤波,分别进入7809和7805稳压,得到+9V和+5V的稳定电压输出后分别供给ARM核心控制模块和其余电路部分使用。

图中IN4148是为了防止输出端并接高于本稳压模块的输出电压而烧坏7809和7805而特别设计,达到了可靠性电源设计目的。

另外,由于系统正常工作电流较大,因此使用时均应在7809和7805上加散热片散热。

由图可见,系统采用双电源供电,提供了系统正常工作所需的电源电压。

另外,由于考虑到便携目的,本系统采用+12V铅蓄电池提供系统所需的恒定直流电源。

图6电源电路

2.5温度采集电路设计

温度采集模块电路如图。

考虑到系统成本因素,此处采用AT89S52单片机作为模块的协控制器。

对于温度传感器的选用DS18B20,因为DS18B20是Dallas公司最新单总线数字温度传感器,该传感器集温度变换、A/D转换于同一芯片,输出直接为数字信号,大大提高了电路的效率。

由于现场温度直接以“一线总线”的数字方式传输,大大提高了系统的抗干扰性,且提高了CPU的效率。

图4中AT89S52单片机的P0口与8路温度传感器相连,用于采集温度数据;另外,模块提供RS-232串行口与RAM核心控制模块通信,达到数据传输的目的。

图7温度采集电路

第3章设计步骤

3.1软件设计

本温度数据采集与显示装置的主体由S3C44B0x核心控制模块和温度数据采集模块构

成,所以系统软件也是围绕这两个模块来编写的。

而又由于系统采用了S3C44Box和AT89S52两个CPU协同工作,所以软件的编写需要对这两个CPU分别编写,以实现所要求的功能。

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

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

3.2关键代码

LCD液晶屏初始化:

voidlcd_init(void)

{

rDITHMODE=0x12210;

rDP1_2=0xa5a5;

rDP4_7=0xba5da65;

rDP3_5=0xa5a5f;

rDP2_3=0xd6b;

rDP5_7=0xeb7b5ed;

rDP3_4=0x7dbe;

rDP4_5=0x7ebdf;

rDP6_7=0x7fdfbfe;

//disable,8B_SNGL_SCAN,WDLY=16clk,WLH=16clk,

rLCDCON1=(0x0)|(2<<5)|(MVAL_USED<<7)|(0x3<<8)|(0x3<<10)|(CLKVAL_COLOR<<12);

//LINEBLANK=10(withoutanycalculation)

rLCDCON2=(LINEVAL)|(HOZVAL_COLOR<<10)|(10<<21);

rLCDCON3=0;

//256-color,LCDBANK,LCDBASEU

rLCDSADDR1=(0x3<<27)|(((unsignedint)g_unLcdActiveBuffer>>22)<<21)|M5D((unsignedint)g_unLcdActiveBuffer>>1);

rLCDSADDR2=M5D((((unsignedint)g_unLcdActiveBuffer+(SCR_XSIZE*LCD_YSIZE))>>1))|(MVAL<<21);、

rLCDSADDR3=(LCD_XSIZE/2)|(((SCR_XSIZE-LCD_XSIZE)/2)<<9);

//Thefollowingvaluehastobechangedforbetterdisplay.

rREDLUT=0xfdb96420;//11111101101110010110010000100000

rGREENLUT=0xfdb96420;//11111101101110010110010000100000

rBLUELUT=0xfb40;//1111101101000000

rLCDCON1=(0x1)|(2<<5)|(MVAL_USED<<7)|(0x3<<8)|(0x3<<10)|(CLKVAL_COLOR<<12);

rPDATE=rPDATE&0x0e;

lcd_clr();

}

 

LCD显示温度湿度代码:

//------------------------------------------------------

//显示温度湿度

//------------------------------------------------------

voidword_view320x240x256(UINT8T*pBuffer)

{

UINT32Ti,j;

UINT32T*pView=(UINT32T*)g_unLcdActiveBuffer;

for(i=0;i

{

*pView=((*pBuffer)<<24)+((*(pBuffer+1))<<16)+

((*(pBuffer+2))<<8)+(*(pBuffer+3));

pView++;

pBuffer+=4;

}

}

相应温度处理与转换子程序:

//存放读取到的当前温度值,未转换

staticU16a-temp-now[8]={8*0}

//存放经精度计算后的实际温度值,高8位整数部分,低8位小数部分

staticU16b-temp-now[8]={8*0};

//存放8路转换后温度值,分别为百位,十位,个位,小数位

staticU8temp-convent-all[32]={32*0};

//-------------------------------

//温度处理与转换子程序

//----------------------------------

voidtemp-change(void)

{

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

U8j=0;

U8*pt=temp-convent-all;

U16*p1=a-temp-now;

U16*p3=b-temp-now;

U16temp=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)

{

case0x1f:

//精度为9位,则清除最低3位无效位

{

temp=temp&0xfff8;

break;

}

case0x3f:

//精度为10位,则清除最低2位无效位

{

temp=temp&0xfffc;

break;

}

case0x5f:

//精度为11位,则清除最低1位无效位

{

temp=temp&0xfffe;

break;

}

case0x7f:

//精度为12位

{

break;

}

}

//换算成实际温度,并扩大10倍,去掉小数部分

temp=(U16)((float)(temp)*0.625);

//折算放入b-temp-now数组中

//高8位放整数部分,低8位放小数部分,最高位放符号位

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

{

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

}

else

{

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

}

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

{

(*pt++)=0x80;

}

else

{

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

}

(*pt++)=temp/100%10+0x30;

(*pt++)=temp/10%10+0x30;

(*pt++)=temp%10+0x30;

p1++;p3++;

}

//转换完成后清除读回的原始温度

p1=a-temp-now;

for(j=8;j>0;j--)

{

*p1++=0x0;

}

}

第4章实验结果及结果分析

4.1实验结果

工作模式

显示

范围

采集湿度

显示湿度

10%~90%

采集温度

显示温度

-20℃~+60℃

实验结果表

4.2实验结果分析

系统运行稳定,由于传感器灵敏度问题,采集的数据与实际的数据有一定的差距。

去除误差,系统采集基本正确。

第5章小结

如今嵌入式已经渗透到各个行业当中,与我们的生活息息相关,学习嵌入式已经成为计算机专业人员必不可少的一个过程。

经过一个学期的嵌入式学习,对嵌入式领域有了一个大体的概念,了解到嵌入式行业的ARM芯片的优秀的设计工艺,以及整个嵌入式的开发过程。

此次大作业,正是对一个学期学习的检测,是将理论知识应用于实践的一次考察,对自身的学习水平有一个大致的了解。

同时,加深加固对知识的掌握与理解。

此次大作业,感觉到如果真正的能够理解知识,就必须将知识应用实践。

在整个设计的过程中,从硬件的设计到软件的设计,涉及的知识包括S3C44B0X、C语言程序设计、电路设计、调试等,可见计算机专业人员,必须有一个很广的知识面,对各个领域都有一定的涉及,这便是平时一个学习的积累。

可见,学习积累对于计算机专业人员的重要性。

另一个方面,在设计的过程中,基础知识很重要,基础不牢,设计的过程很艰难。

所以。

今后要注意自身的学习,打牢基础。

参考文献

[1]马维华.嵌入式系统原理及应用[B].北京:

北京邮电出版社,2010.

[2]基于ARM的嵌入式温度数据采集系统与LCD显示.

[3]EduKit3ARM7_UserGuide_V3.0_cn.

 

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

当前位置:首页 > PPT模板 > 国外设计风格

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1