ARM温湿度传感器课程设计资料.docx
《ARM温湿度传感器课程设计资料.docx》由会员分享,可在线阅读,更多相关《ARM温湿度传感器课程设计资料.docx(12页珍藏版)》请在冰豆网上搜索。
ARM温湿度传感器课程设计资料
目录
目录1
第一章概述2
1.1设计题目2
1.2设计目的2
1.3设计器材2
1.4任务分析2
第二章设计原理3
2.1嵌入式操作系统的概述3
2.2设计原理3
第三章系统设计5
3.1系统需求分析5
3.2硬件设计5
3.3软件设计6
第四章详细设计8
4.1主函数8
4.3湿度的转化实现代码9
4.4TFT屏幕显示设置9
4.5下载运行9
总结10
致谢11
第一章概述
1.1设计题目
在LPC2103开发板上,实现设定温度以及控制功能。
1.2设计目的
1、本次课程设计的主要目的是实现温度的控制功能,锻炼学生的动手能力以及注重课外实践的培养,使得理论与实践相结合;
2、了解并掌握掌握相关专业课程知识和设计能力;
3、初步掌握软件开发过程的问题分析、系统设计、程序编码、测试等基本方法和技术;
4、提高综合运用所学的理论知识和方法独立分析和解决问题的能力;
5、加深对专业课的理解,强化学生的逻辑思维能力和动手能力,巩固良好的编程习惯,掌握工程软件设计的基本方法,为将来工作的学习打下坚实基础。
1.3设计器材
本课程设计需要的硬件要求和软件配置具体要求如下:
硬件要求:
一台PC机、LPC2103开发板一块;
软件配置:
KEIL软件、J-FlashARM,串口助手;
1.4任务分析
有许多客观需求促进了ARM处理器的设计改进。
首先,便携式的嵌入式系统往往需要电池供电,为降低功耗,ARM处理器已经被特殊设计成较小的核,从而延长了电池的使用时间。
高的代码密度是嵌入式系统的又一个重要需求。
由于成本问题和物理尺寸的限制,嵌入式系统的存储器是很有限的。
所以,高的代码密度对于那些只限于在板存储器的应用是非常有帮助的。
另外,嵌入式系统通常都是价格敏感的,因此,一般都使用速度不高,成本较低的存储器。
ARM内核不是一个纯粹的RISC体系架构,这是为了使他能够更好的适应其主要应用领域——嵌入式系统。
在某种意义上,甚至可以认为ARM内核的成功,正是因为它没有在RISC的概念上沉入太深。
本系统的设计过程中,根据嵌入式系统的基本设计思想,系统采用了模块化的设计方法,并且根据系统的功能要求和技术指标,系统遵循自上而下,由大到小,由粗到细的设计思想,按照系统的功能层次,在设计中把硬件和软件分为若干功能模块设计和调试,然后全部连接起来统调。
第二章设计原理
2.1嵌入式操作系统的概述
嵌入式系统是集成电路发展过程中的一个标志性成果,它把计算机直接嵌入到应用系统中,融合了计算机软/硬件技术、通信技术和微电子技术,是一种微电子产业和信息技术产业的最终产品。
微电子产业是许多国家优先发展的产业。
以超深亚微米工艺和IP核复用技术为支撑的系统芯片技术是国际超大规模集成电路发展的趋势和21世纪集成技术的主流。
2.1.1嵌入式操作系统的特性
随着计算机技术和产品向其它行业的广泛渗透,由于嵌入式系统具有小巧、高度自动化、响应速度快的特点,因而非常适应信息家电和现代控制设备的需要,嵌入式技术成为了一个研究热点。
嵌入式系统,是将计算机直接嵌入至系统中,是信息IT的最终产品。
它根据应用的要求,将操作系统和功能软件集成于计算机硬件系统中,实现软件与硬件一体化。
2.1.2嵌入式操作系统的分类
嵌入式操作系统是随着嵌入式系统的发展出现的。
从应用范围角度大致可以分为可分为专用型(如Ucos、WindowsCE、VxWorks、嵌入式Linux等)和通用型(如PalmOS、Symbian)的嵌入式操作系统等。
从实时性的角度大致可以分为实时嵌入式操作系统和一般嵌入式操作系统。
2.1.3嵌入式操作系统的特点
嵌入式操作系统是对通用操作系统的继承和发展,具有操作系统的基本功能,包括指令执行、任务调度、存储器管理、设备管理和中断处理等。
但是,由于嵌入式系统的硬件环境和程序运行需求有很大限制,所以嵌入式操作系统又有如下并不同于一般操作系统的特点。
(1)资源限制。
嵌入式操作系统一般只有64MB内存,而且非易失性FLASH通常也就32MB,因此,操作系统运行时,就不能像在PC上那样使用资源了。
(2)安全性限制。
在嵌入式领域,系统在运行之后一般都不能在短时期内停机或者重启,因此死机、蓝屏是绝对不允许的。
(3)可移植性。
2.2设计原理
本次课程设计采用SHT10传感器温湿度监测系统,通过SHT10检测室内温度,如果检测到的温度超过设定值时,由LPC2103输出控制信号启动相应的中断报警功能。
温湿度传感器模块默认使用处理器的IIC总线,需要连接开发板的P1端口,IIC总线需要接上拉电阻。
2.2.1IIC总线
IIC总线是一种二进制总线,它通过SDA(串行数据线)及SCL(串行时钟线)连接到总线上的器件,并根据地址识别每个器件。
支持IIC的设备有微控制器,ADC,DAC,存储
器,LCD控制器,LED驱动器以及实时时钟等,通过软件寻址实现片选,减少器件片选线的
连接。
2.2.2数字温湿度传感器SHT10
SHT10系列单芯片传感器是一款含有已校准数字信号输出的温湿度复合传感器。
它应用于专利的工业COMS过程微加工技术(CMOSens),确保产品具有极高的可靠性与卓越的长期稳定性。
传感器包含一个电容式聚合体测湿元件和一个能隙式测温元件,并与一个14位的AD转换器以及串行接口电路在同一芯片上实现无缝连接。
因此,该产品具有品质卓越,超快响应,抗干扰能力强,性价比极高等优点。
SHT10的供电电压为2.4-5.5v。
传感器上电后,要等待11ms以越过休眠状态,在此期间无需发送任何指令。
电源引脚(VDD,GND)之间可以增加一个100NF的电容,用以去耦滤波。
串行接口(两线双向),SHT10的串行接口,在传感器信号的读取以及电源损耗方面,都做了优化处理,但与IIC接口不兼容。
串行时钟输入(SCK),SCK用于微处理器与SHT10之间的通讯同步,由于接口包含了完全静态逻辑,因而不存在最小SCK频率。
串行数据(SDA)
DATA三态门用于数据的读取,DATA在SCK时钟下降沿之后改变状态,并仅在SCK时钟上升沿有效。
数据传输期间,在SCK时钟高电平时,DATA必须保持稳定。
为避免信号冲突,微处理器应驱动DATA在低电平。
需要一个外部上拉电阻将信号提升至高电平。
上拉电阻通常包含在微处理器的IO电路中。
第三章系统设计
3.1系统需求分析
3.1.1课程设计内容
基于LPC2103开发板,完成设定温度控制功能。
3.1.2课程设计要求
(1)熟悉ARM开发板工作及开发环境;
(2)熟悉ARM处理器的定时器控制及工作原理;
(3)采用温度传感器测试温度用继电器控制加热器,实现设定温度的控制;
(4)在LCD屏幕显示当前的温度和设置温度。
(5)控制温度可以设置。
3.2硬件设计
3.2.1ARM处理器
ARM(Advanced RISC Machines),既可以认为是一个公司的名字,也可以认为是对微处理器的通称,还可以认为是一种技术的名字。
ARM处理器是一个32位元精简指令集(RISC)处理器架构,其广泛地使用在许多嵌入式系统设计。
(1)ARM处理器系列
ARM7系列 、ARM9系列、 ARM9E系列 、ARM10E系列 、SecurCore系列 Intel的Xscale Intel的StrongARMARM11系列,其中,ARM7、ARM9、ARM9E和ARM10为4个通用处理器系列,每一个系列提供一套相对独特的性能来满足不同应用领域的需求。
(2)ARM处理器特点
1、体积小、低功耗、低成本、高性能;
2、支持Thumb(16位)/ARM(32位)双指令集,能很好的兼容8位/16位器件;
3、大量使用寄存器,指令执行速度更快;
4、大多数数据操作都在寄存器中完成;
5、寻址方式灵活简单,执行效率高;
6、指令长度固定。
(3)指令结构
ARM微处理器的在较新的体系结构中支持两种指令集:
ARM指令集和Thumb指令集。
其中,ARM指令为32位的长度,Thumb指令为16位长度。
Thumb指令集为ARM指令集的功能子集,但与等价的ARM代码相比较,可节省30%~40%以上的存储空间,同时具备32位代码的所有优点。
3.3软件设计
3.3.1KEIl软件开发环境的使用
建立一个新的工程,单击Project菜单,在弹出的下拉菜单中选中NewProject选项,然后选择保存路径,输入工程的文件名字,然后单击保存,根据处理器的型号选择NXP(foundedbyPhilips)的LPC2103处理器,接下来就是软件的详细设计环节了。
3.3.2SHT10的相关命令定义、
#defineTEM_TEST0x03//温度检测命令
#defineHUM_TEST0x05//湿度检测命令
#defineREG_READ0x07//读寄存器
#defineREG_WRITE0x06//写寄存器
#defineFUNCTION_SET0x01//设置SHT11的工作精度为8位/湿度12位温度
#defineSHT_SCK0x00000400//p0.10
#defineSHT_DATA0x00000800//p0.11
#defineSCL1<<47
#defineSDA1<<48
unsignedintflag_tempeture,flag_humidity;
3.3.3相关函数的说明
1.voidDelay()函数名称:
Delay(),函数功能:
SHT10内部延时
2.voidDelay_Ms(unsignedintms),函数名称:
Delay_Ms(),函数功能:
SHT11检测等待延时函数,说明:
11ms/55ms/210ms分别对应8位/12位/14位测量结果对应的形参为N则延时Nms;
3.voidSHT11_Start()函数功能:
SHT11启动时序
4.voidSHT11_Sendbyte(unsignedchardat)函数名称:
SHT11_Sendbyte(uchardat)函数功能:
向SHT11发送8bite数据
5.voidSHT11_Answer()函数名称SHT11_Answer():
函数功能:
检测SHT11的响应信号(在第九个时钟周期)
6.voidSHT11_Test_Finish()函数名称:
SHT11_Test_Finish()
函数功能:
检测SHT11温湿度检测是否完毕
7.unsignedcharSHT11_Receivebyte()函数名称:
SHT11_Receivebyte()
函数功能:
从SHT11接收8bite数据
8.voidARM_Answer()函数名称:
ARM_Answer()
函数功能:
ARM向SHT11发送应答信号
9.voidSHT11_End()函数名称:
SHT11_End()
当接收两个8byte数据后部接收CRC校验码
10.voidSHT11_Write_Register(unsignedcharcommand,unsignedchardat)函数名称:
voidSHT11_Write_Register(ucharcommand,uchardat)函数说明:
向SHT11的状态寄存器设置功能
command为REG_WRITE0x06写寄存器dat为设置SHT11的功能可以设置检测的数据位数。
11.unsignedcharSHT11_Read_Register(unsignedcharcommand)函数名称:
uchar
SHT11_Read_Register(ucharcommand)函数说明:
command为REG_READ0x07//读寄存器返回值为状态寄存器的值位6显示当前检测完一次数据后电源供电情况当位6为0时表明VDD>2.47V当位6为1时表明VDD<2.47V即电量不足位0表明当前的测量分辨率,当位0为1时表明测量精度:
8位/湿度12位温度,当位0为0时表明测量精度:
12位湿度14位温度默认为0。
12.unsignedintSHT11_Measure(unsignedcharcommand,unsignedchartime)函数名称:
SHT11_Measure(ucharcommand,uinttime);函数功能:
设置SHT11检测功能,并返回相应的检测结果函数说明:
command形参用于设定温度检测还是湿度检测,time形参用于设定检测过程中的等待时间,以确定检测结果的位数。
11ms/55ms/210ms分别对应8位/12位/14位。
12.floatSHT11_Convert_Tempeture14bit(unsignedintdat)函数称:
Convert_Tempeture(uintdat);函数功能:
将检测到的数据转化为相应的温度数据函数说明:
温度转换公式--T=d1+d2*SOt
公式中的参数d1=-40,d2=0.01适用于14位测量精度。
13.floatSHT11_Convert_Humidity12bit(unsignedintdat,floattemp)函数名称:
SHT11_Convert_Humidity(uintdat,floattemp)函数功能:
将检测到的数据转化为相应的湿度数据函数说明:
相对湿度转换公式-----RHline=C1+C2*SOrh+C3*SOrh*SOrh(检测数据的线性化SOrh为单片机接收到的数据)-----RHtrue=(tempeture-25)*(t1+t2*SOrh)+RHline公式中的数:
C1=-4,C2=0,0405,C3=-0.0000028t1=0.01,t2=0.00008适用于12位测量精度。
14.floatSHT11_Convert_Tempeture12bit(unsignedintdat)函数功能:
将检测到的数据转化为相应的温度数据函数说明:
温度转换公式--T=d1+d2*SOt公式中的参数d1=-40,d2=0.04适用于12位测量精度。
15.floatSHT11_Convert_Humidity8bit(unsignedintdat,floattemp)函数名称:
SHT11_Convert_Humidity8bit(uintdat,floattemp)函数功能:
将检测到的数据转化为相应的湿度数据函数说明:
相对湿度转换公式-----RHline=C1+C2*SOrh+C3*SOrh*SOrh(检测数据的线性化SOrh为单片机接收到的数据)-----RHtrue=(tempeture-25)*(t1+t2*SOrh)+RHline公式中的参数:
C1=-4,C2=0,648,C3=-0.00072t1=0.01,t2=0.00128适用于8位测量精度。
16.voidUART0_init(void)串口初始化。
17.voidUART0_PutCh(unsignedcharCh)发送数据。
18.voidfasong(inttem,inthum)发送数据到屏幕。
第四章详细设计
4.1主函数
intmain(){
{
inttempdata,humidata,temp,humi;
PINSEL0=PINSEL0&0x33ffffff;
SHT11_Write_Register(REG_WRITE,FUNCTION_SET);
UART0_init();
while
(1)
{
tempdata=SHT11_Measure(TEM_TEST,55);//温度检测
temp=SHT11_Convert_Tempeture12bit(tempdata);//12位温度转换
humidata=SHT11_Measure(HUM_TEST,11);//湿度检测
humi=SHT11_Convert_Humidity8bit(humidata,temp);//8位湿度转换
fasong(temp,humi);
}
}
4.2温度的转化代码
ffloatSHT11_Convert_Tempeture14bit(unsignedintdat)
{
floattempeture1;
tempeture1=-40+0.01*dat;
if(tempeture1>100.0)
{
flag_tempeture=1;
}
elseif(tempeture1<0.0)
{
flag_tempeture=1;
}
else
{
flag_tempeture=0;
}
return(tempeture1);
}
函数名称:
Convert_Tempeture(uintdat);函数功能:
将检测到的数据转化为相应的温度数据
函数说明:
温度转换公式--T=d1+d2*SOt公式中的参数d1=-40,d2=0.01适用于14位测量精
度。
4.3湿度的转化实现代码
floatSHT11_Convert_Humidity12bit(unsignedintdat,floattemp)
{
floatRHline,RHtrue;
RHline=-4+0.0405*dat-0.0000028*dat*dat;
RHtrue=(temp-25)*(0.01+0.00008*dat)+RHline;
if(RHtrue<10.0)
{
flag_humidity=1;
}
else
{
flag_humidity=0;
}
return(RHtrue);
}
函数功能:
将检测到的数据转化为相应的湿度数据,说明:
相对湿度转换公式RHline=C1+C2*SOrh+C3*SOrh*SOrh(检测数据的线性化SOrh为单片机接收到的数据)
-----RHtrue=(tempeture-25)*(t1+t2*SOrh)+RHline公式中的数:
C1=-4,C2=0,0405,C3=-0.0000028
t1=0.01,t2=0.00008适用于12位测量精度。
4.4TFT屏幕显示设置
voidBacklightOn(void){
//PINSEL0=0x00000000;
PINSEL1|=0x00000200;//设置MAT1.3--P0.20
T1TCR=0x03;//在设置之前,先将定时器复位
T1IR=0x01;//清除中断标志位
T1PR=0x00;//设置预分频器
T1PWMCON=0x08;//使能相应PWM模式位MAT1.3
T1MCR=0x02;//MR0匹配时,定时器复位
T1MR0=50;//设置匹配寄存器
T1MR3=48;
T1TCR=0x01;//重新启动定时器
}
4.5下载运行
将工程文件下载至开发板,调整好串口,设置好波特率,可以看到开发板将检测到的室内温度和湿度以十进制的形式发送给PC机的串口,并且验证温度传感器的灵敏度,可以发现温度随着外部环境的变化而变化,由此可以得出结论温度传感器的温度采集和传送功能都已实现。
总结
在这次ARM嵌入式系统课程设计中,我对ARM嵌入式系统尤其是数据处理中的温度采集系统有了更进一步的了解,同时知识面也进一步得到了扩展和加深。
本次课程设计的任务主要是对基于传统温度采集系统的使用环节中遇到的一些问题提出的一种改进方法,有助于温度采集系统更好的发展与使用,帮助我们更好的理解嵌入式系统和温度采集系统的原理和应用。
温度采集是一种直接数字处理方法。
所谓温度采集系统,就是通过温度传感器对被采集物体进行温度数据的收集与处理,最后得到所需要的有用的数字信号并送入系统的下一环节进行其他操作。
目前,由于传统的温度采集系统存在响应慢、精度低、可靠性差、效率低、操作繁琐等弊端,已经不能完全适应现代化工业的高速发展。
随着嵌入式技术的迅猛发展,设计高速度、高效率、低成本、高可靠性、操作方便的温度采集系统成为当务之急。
所以,学习和应用温度采集系统及其应用技术对我们以后的学习和工作有着十分重要的意义。
通过本次课程设计,让我很好的锻炼了理论联系实际,与具体项目、课题相结合开发、设计产品的能力。
既让我懂得了怎样将理论应用于实际,又让我懂得了在实践中遇到的问题怎样用理论去解决。
在设计过程中,总是会遇到这样或那样的问题。
有时一个问题可能会需要去查阅资料,做大量的工作,花大量的时间才能解决。
通过不断地发现问题,解决问题,我的发现问题和解决问题的能力便在其中建立起来了。
这都为以后的工作积累了经验,同时也增强了我解决问题的能力。
致谢
大学生活即将结束,这也意味这在校的学习生涯即将结束。
回顾在这充实幸福快乐的大学中我倍感欣慰。
在大学里我学到了专业知识、提供了思想修养、懂的了做人做事的行为道德。
在沈阳工程学院的学习生涯是我在这十几年的学习生涯中最忙碌与最充实的时光。
因为在这里学习他不但强调理论性的学习及思想的修养还很重视学生的动手操作能力与解决实际问题的能力。
为了培养我们的这些能力学校精心安排许多实验课程和实训项目并举办一些竞赛鼓励我们的学习。
最重要的是在这里能让我们学到使用技术给我们日后的工作生活铺平了道路。
在这美好的时光即将结束之际首先,并且是最重要的我要感谢沈阳工程学院给了我这个学习生活环境平台,让我能够在知识的海洋里畅游。
感谢给予我们帮助的老师,他们传道授业,无私奉献,不仅使我们开阔了视野,拓宽了思路,增长了学识,而且为我们今后的工作和学习打下了牢固的基础,也使我们增强了对嵌入式学习的浓厚兴趣。
最后,再次感谢踪念品老师,我们在他的悉心指导下才顺利完成了程序的设计。
老师渊博的学识和严谨求实的科学精神、一丝不苟的治学态度和高尚的品格,深深的感染了我和每一个同学。
程序的每次改动都离不开老师的帮忙,综合所有,审查的工作往往比编写任务更复杂。
在这里,我们对您衷心的表示感谢。
在大学中有一群“共患难”的同学们以及对我们有深远影响的老师们,你们使我在今后的继续学习或工作中,都是我们宝贵的财富。
最后,再次感谢对我有影响和帮助的老师和同学们。