毕业设计基于51单片机的太阳能干燥温湿度检测设计new1.docx
《毕业设计基于51单片机的太阳能干燥温湿度检测设计new1.docx》由会员分享,可在线阅读,更多相关《毕业设计基于51单片机的太阳能干燥温湿度检测设计new1.docx(29页珍藏版)》请在冰点文库上搜索。
![毕业设计基于51单片机的太阳能干燥温湿度检测设计new1.docx](https://file1.bingdoc.com/fileroot1/2023-5/26/c80ff23f-efad-41da-ad13-800da4e272d5/c80ff23f-efad-41da-ad13-800da4e272d51.gif)
毕业设计基于51单片机的太阳能干燥温湿度检测设计new1
编号
毕业设计(论文)
样张1
基于单片机的太阳能干燥温湿度检测系统的研究
ResearchonSCMsystembasedonwater-savingirrigation
学院名称
专业名称
学生姓名
学号
指导教师
2016年6月22日
摘要
本文结合目前太阳能干燥温湿度检测系统的研究现状,针对检测控制系统的价格昂贵、检测精度不高、使用不灵活的特点,提出了一种基于单片机的数字式温湿度传感器的测控系统构成方案,研究和设计了硬件电路,完成了软件设计。
系统采用模块化设计思想,主要包括以单片机为主的下位机信号采集部分、以PC机为主的上位机信号分析处理部分和单片机与主机的通信部分三大方面的设计。
所做的主要工作如下:
1)以单片机为主的下位机部分设计。
下位机系统以STC89C54单片机为控制核心,采用16路数字式温湿度传感器SHT10完成干燥箱内16处不同被测点的温湿度的采集,并将采集的温湿度数据实时显示在LCD1602液晶显示器中,完成了硬件电路的设计和软件程序设计。
该系统设计了键盘模块和报警模块,在键盘模块中,设计了3个独立按键,对温湿度的阈值进行设置,当温度或湿度超出设定的阈值时,则发出报警信号。
2)以PC机为主的上位机部分设计。
上位机在VB环境下,利用图形化编程语言,开发了太阳能干燥温湿度数据采集系统,实现对干燥过程的数据采集、处理、存储、报警和实时监测的功能。
3)单片机与上位机通信系统的设计。
用C语言设计单片机的串口通信软件,上位机采用VB编程语言设计了采集界面,并进行模拟测试,实现单片机与上位机的通信。
4)模拟仿真。
对硬件电路和软件程序调试无误后,进行软硬件联合仿真,实时巡回检测16路温湿度数据。
仿真结果表明:
该检测系统可以有效的进行数据采集,并且在一定程度上提高了检测精度,为进一步研究太阳能干燥温湿度检测提供参考依据。
关键词:
STC89C52单片机串口通信、上下限报警、温湿度检测
Abstract
Inthispaper,thecurrentstatusofresearchsolardryingtemperatureandhumiditydetectionsystems,measurementandcontrolsystemsforthepriceofexpensive,detectionaccuracyisnothigh,donotusetheflexiblefeatures,measurementandcontrolsystemisproposeddigitaltemperatureandhumiditysensorbasedonasingle-chipconfigurationprogram,researchanddesignofthehardwarecircuit,completedthesoftwaredesign.Thesystemusesmodulardesign,includingamicrocontroller-basedsignalacquisitionpartofthenextcrew,thecommunicationsectionofthethreeaspectsofthedesigntothePC,PC-basedsignalanalysisandprocessingsectionwiththehostmicrocontroller.
Themainworkisasfollows:
1)partofthenextcrewtothemicrocontroller-baseddesign.LowercomputersystemSTC89C54microcontrollercore,using16digitaltemperatureandhumiditysensorSHT10completedwithinoven16temperatureandhumiditytestdifferentcollectionpoints,andthetemperatureandhumiditydataacquisition,real-timedisplayintheLCD1602LCDdisplay,Wecompletedthedesignandsoftwaredesignofhardwarecircuit.Thesystemwasdesignedkeyboardmoduleandalarmmodule,thekeyboardmodule,designedthreeseparatebuttonsonthethresholdtemperatureandhumiditysettings,whenthetemperatureorhumidityexceedsthesetthreshold,analarmsignal.
2)PCpartofthedesigntothePC-based.InVBPCenvironment,theuseofgraphicalprogramminglanguage,developmentofsolardryingtemperatureandhumiditydataacquisitionsystemtorealizethedryingprocessofdataacquisition,processing,storage,real-timemonitoringandalarmfunctions.
3)DesignofMCUandPCcommunicationsystem.UsingClanguagedesignmicrocontrollerserialcommunicationsoftwarePCusingVBprogramminglanguagedesignedcollectioninterfaceandsimulationtesting,toachievesingle-chipcommunicationswiththehostcomputer.
4)simulation.Afterhardwareandsoftwaredebuggingandcorrecthardwareandsoftwareco-simulation,real-timedetectioncircuit16temperatureandhumiditydata.Simulationresultsshowthat:
thedetectionsystemcanbeeffectivedatacollection,andtosomeextent,improvethedetectionaccuracy,provideareferenceforfurtherstudyofsolardryingtemperatureandhumiditytesting.
Keywords:
STC89C52SerialCommunication,upperandloweralarm,temperatureandhumiditytesting
第1章绪论
1.1基于单片机的太阳能干燥温湿度系统开发背景分析
随着计算机技术、通信技术以及大规模集成电路技术的快速发展,在工农业生产等领域中,农产品干燥检测技术在软、硬件方面的研究都有了一定的进展[8]。
在国外,太阳能干燥检测技术发展的比较成熟,已将数字式传感器应用于检测系统。
数字式传感器采用了半导体集成电路与微控制器的最新技术,不仅能完成温湿度检测的功能,还能完成预置范围温湿度、多路A/D转换、温度补偿、报警等功能。
因数字式温湿度传感器输出的是数字量,不需要进行模数转换,从而解决了一些温湿度信号长距离传输以及传输过程中因干扰和衰减而导致精度降低等棘手的问题[9]。
测控系统的基础是数据采集系统,随着电子技术的发展,数据采集装置已经历了几个不同的发展阶段。
将数据采集系统应用于传感器测控系统,对实际运用意义重大。
国外的大型传感器企业特别重视传感器测试技术的研究,八十年代芬兰Vaisala公司、日本Figaro公司研制了气体传感器自动测试系统,保证了传感器产品在世界传感器市场的领先地位。
九十年代Tsuchida公司生产了集成温度测量套件。
Boltshauser研制了用于集成湿度传感器的测试系统[10][11]。
加拿大、美国等在监控技术方面发展的较快[12],农产品干燥检测系统已经广泛使用高科技数字式传感器,并且推出了一定数量的检测系统,提高了监测的精度和速度。
目前,国内农产品干燥检测系统的研究主要采用的硬件有电阻式温度传感器、采样器、模数转换器等,线路比较复杂,并且不易于维护[13]。
自1978年开始,利用电阻式温度传感器、采样器、模数转换器、报警器等组成的检测系统的出现,它可以对各个测量点进行巡回检测,提高了检测的精度和速度,并降低了劳动强度,但是由于电阻传感器的灵敏度比较低,一般达不到预定的要求,使检测的精度以及系统的可靠性还不够完善[14]。
1990年,检测系统有了较大的提高和改善,在布线方面,系统采用布线技术为矩阵式,数据采集部分的线路被简化,还应用了热电偶、半导体传感器件;采用串行传输方式线路,减少了传输线条数。
因传感器存在线性度差,导致系统检测精度不高,因此没有得到大范围推广利用[15]。
随着单片机技术及功能的日益强大,对检测的稳定性和准确性有了更高的要求。
所以太阳能干燥检测系统研究的重点是寻求最佳的配置与最优性价比。
总之,农产品干燥检测技术在软、硬件方面的研究,国外有较先进的研究经验,国内有经验也有不足,这为本课题提供了一定的研究基础和研究空间。
1.2系统总体结构框图
本文从干燥物质入手,根据太阳能干燥布局,选择温湿度测量模块、显示模块、控制模块、通讯端口、上位机等,根据测量要求,确定具体设计方案。
由此,系统的总体结构主要有以下六大模块,即温湿度采集模块、显示模块、控制模块、声光报警模块、数据处理模块和通信模块。
具体结构框图如下图所示:
图1.1系统总体结构框图
第2章系统硬件电路设计
2.1微控制器模块设计
本系统的控制器的设计要求不是特别的高,能实现简单的液晶显示,独立按键输入,多个I/O口检测和串口发送数据即可。
所以控制器采用了STC公司STC89C52芯片来实现,该芯片兼备传统的8051的处理器,RAM的容量也有521KB,不仅能简化硬件设计,还可以节约设计成本。
2.1.1控制器芯片
本系统用到的STC89C52芯片是STC公司生产的一种高性能、低功耗的CMOS8位微控制器,它有一个8K的Flash存储器,并且是在系统可编程的,STC89C52芯片运用最经典的MCS-51内核,而且做了较多的改进令芯片具有了传统的51单片机所不具备的功能。
在单芯片上,拥有灵巧的8位CPU和在系统可编程Flash,使得STC89C52为众多嵌入式控制应用系统提供超有效、高灵活的解决方案,它拥有以下的标准性功能:
8k字节的Flash,512字节的RAM,32位的I/O口线,watchdog定时器,内置4KB的EEPROM,MAX810复位电路,3个16位的定时器/计数器,4个外部中断,一个7向量4级中断的结构(兼容传统51的5向量2级中断结构),全双工的串行口,最高运作频率达到35MHz,6T/12T可选。
图2.1STC89C52芯片引脚
2.1.2STC89C52单片机最小系统设计
所谓的单片机最小系统其实就是指单片机所利用自身有限的资源,用最少的辅助元件组成一个可以正常工作的系统。
包括起振电路(晶振Y2=11.0592MHZ),电源(地),复位电路组成。
本系统的STC89C52单片机核心控制电路如下图2.2所示。
其中,晶振的两端分别接30pF的电容到地。
复位电路先接10uF电容后在与地并联,起到滤波的作用,复位电路包括按键脉冲复位,按键电平复位,上电复位三种。
其中复位电路是使单片机的CPU或系统中的其他部件处于某一确定的初始状态,并从这个状态开始工作,除了进入系统的正常初始化之外,当由于程序运行出现错误或操作错误使系统处于死锁状态时,为了摆脱困境,也需要按复位电路以重新启动。
本设计复位采用按键电平复位电路。
晶振是为单片机提供起振信号,晶振频率越高,单片机处理速度越快。
图2.2STC89C52单片机核心电路
2.2键盘输入电路
本系统共利用了三个独立按键,可任意的调整上限和下限的报警温度,简单而且实用。
它们分别与单片机的P1.0~P1.2端口相连,其中,K1按键作为设置按键,按第1下,则是上限温度调整状态;按第2下,则是下限温度调整状态;按第3下,则是显示实际温度的状态。
K+键为每按一次设置的温度加1。
K-键为每按一次设置的温度减1。
2.3报警电路设计
本系统中利用三极管来驱动蜂鸣器的报警,其中,LED1和LED2分别是模拟制冷器模式和制热器模式。
当温度高于上限温度时,蜂鸣器发出声音报警,LED2灯亮,模拟启动制冷器模式;当温度低于下限温度时,蜂鸣器发出声音报警,LED1灯亮,模拟启动制热器模式。
其中,与蜂鸣器相连的轻触开关断开时,蜂鸣器停止报警,实现手动解除报警。
如图:
2.4温湿度传感器的设计
SHT10温湿度传感器的集成度比较高,包含一个温度敏感元件和一个湿度敏感元件,二者与14位的A/D转换器及串行接口电路在同一芯片上进行连接,连接方法采用二线制。
SHT10通过两线串行接口电路与单片机连接,具体电路如图2.5所示。
其中,串行时钟输入线SCK。
SHT10的温度量程为-40℃~123.8℃,湿度量程为0%RH~100%RH,测湿精度为±4.5%RH,测温精度为±0.5℃,湿度分辨率为0.03%RH,温度分辨率为0.01℃[23],这些参数指标满足本设计的温湿度检测的精度和测量范围要求。
用于单片机控制器与SHT10之间的通信同步。
串行数据线DATA用于内部数据的输出与外部数据的输入。
DATA在SCK时钟下降沿之后改变状态,并仅在SCK时钟上升沿后有效。
因此,单片机可在SCK高电平时读取数据,而当其向SHT10发送数据时,在SCK时钟下降沿后改变状态,同时保证DATA线上的电平状态在SCK高电平段稳定。
图2.5SHT10引脚接线图
2.5LCD1602液晶显示电路设计
本系统使用的LCD1602是一种图形点阵式液晶屏幕,它主要由行驱动器/列驱动器及全点阵液晶显示器组成。
可显示英文字母、数字、ASCII码。
同时,该液晶模块内有很多软件功能:
比如,光标显示、反白显示、清除、睡眠、关闭等等许多功能,这样就使得编程人员对其进行编程时更加方便快捷。
而且,该液晶模块还提供了3线串行和8线并行的接口方式,以方便不同的编程需求。
如图2.15所示,本系统中LCD1602液晶接口方式采用8位并行接口方式显示数据,因为与串行显示方式对比,并行可以更快速的传输数据,节省时间,即时性更好,本系统中其他模块不需要占用大量的单片机I/O口,这种并行的方式最为适用。
如下图所示,液晶的CS、SID、SCLK串行数据线分别与STC89C52单片机的P2.0~P2.2相连接,D0~D7分别与单片机的P0^0~P0^7连接。
然后通过程序中相应子函数的调用来实现液晶的显示。
图2.15LCD1602液晶显示电路
2.6电源电路设计
2.6.1电源方案选择
方案一:
利用LM7805三端可调稳压器集成电路作为核心制作+5V直流稳压电源供电,由于厂家作工不同,输出电压达不到稳定的+5V的电压。
方案二:
用LM317三端稳压IC来组成稳压电源所需的外围元件少,电路内部还有过流,过热及调整管的保护电路,使用起来方便,可靠,价格便宜。
输出电压值稳定精确而且输出电压可以根据匹配电阻的变化改变。
由于本系统电路中对直流稳压电源要求很严格,是为系统提供稳定的工作电压,所以,所以通过对比,以及对系统整体要求的考虑,选用二者结合使用。
2.6.2电源电路设计
本设计主要采用输出直流稳压构成集成稳压电路,通过变压,滤波,稳压过程将220V交流电,变为稳定的直流+3.3V和+5V电源,本电路的目的在于从50HZ、220V的交流电压中得到直流电压。
当输入为220V交流电压时,首先通过变压器降至22V左右交流电压。
整流部分选用了全波桥式整流电路,输出为30V直流电压,电容滤波电路的输出电压在负载变化时波动较大,它的负载能力比较差,只是用于负载较轻且变化不大的场合。
采用电容滤波器不仅可以使输出电压变得平滑、文波显著减小,同时输出的平均值也增大。
本系统设计要求+3.3V和+5V电压供电,因为对正5V电压要求不是很高,所以正5V电压我们采用7805芯片制作,如图2.17所示,交流电压从J1输入端输入经过四个IN4007整流二极管整流后经过电容滤波和7805芯片稳压后得到相对稳定的+5V直流电压源从J2输出。
系统中需要的+3.3V电压要求精确稳定,所以采用LM317芯片做成可调直流稳压电源得到。
如图2.18所示,交流电压从J5输入端输入经过四个IN4007整流二极管整流后经过电容滤波和LM317芯片稳压后得到相对稳定的+3.3V直流电压源从J6输出。
图2.18正5V电源电路
第3章系统软件结构设计
单片机软件采用模块化的设计思想,既便于调试、连接,又便于移植、修改和维护。
因此在程序编写时,把每个程序模块都写成一个独立的功能模块,主程序调用各子程序模块,各个任务之间的资源通过缓冲区来传递[22]。
在单片机开发中,汇编语言和C语言应用较多[23]。
本文的微控制器为STC89C54单片机,从开发周期的长短角度考虑,C语言较汇编语言占优势。
C语言有较强的可读性和可移植性。
利用Keil编译器可直接进行编辑操作。
因此单片机软件选择使用C语言进行程序设计。
3.1系统软件设计及总体流程图
系统的主程序的主要功能是负责温度的实时显示、读出并处理SHT10温湿度传感器的测量的当前温度值,并判断是否超过限定值,超过限定值则报警。
温湿度的测量是每1s进行一次。
这样可以在一秒之内测量一次被测温度,可以达到很好的即时性。
其程序流程如下图所示:
主程序流程图
3.2读温度子程序实现
测量温湿度流程图如下图。
测量温湿度函数,*P_value用于存储采集到的温度值或湿度值,*P_checksum用于存储SHT10的应答信号,mode有两个值TEMP和HUMI,分别用来指定进行温度测量和湿度测量。
温湿度测量首先发送开始信号,向传感器发送命令,等待传感器测量完成,读第一个字节(高字节)和第二个字节(低字节)。
图3.3读温度程序框图
3.3LCD1602液晶显示实现
下面是液晶显示的部分主要程序,本系统液晶采取串行方式发送数据,把显示部分分为若干子函数,最后统一调用子函数进行显示,程序流程图如图3.3所示,进入子函数入口后,首先初始化液晶屏幕,调用清屏函数。
本程序中位值X全部设置为0即从每行的第一个位开始显示。
随后判断行号Y用来判定程序从液晶的第几行开始显示字符,如果Y值为1则是第一行开始显示,为2则是第二行开始显示。
判定完从第几行第几位开始显示后就是调用数据传输函数开始串行传送数据。
最后判断数据是否传送结束,如果是则返回主函数,如果不是则继续传送数据。
图3.3LCD1602液晶显示程序流程图
通过上面的流程图实现了液晶的字符显示.
3.4温度比较报警子程序实现
首先定义通信时钟端口(sbitSCK=P3^2)和通信数据端口(sbitDATA=P3^3),并定义一个共用体,包含两个成员,用来将采集到的温度值或湿度值暂存到整型变量中,并将其转换成浮点型数据。
需要定义一个枚举类型,并设置TEMP=0,HUMI=1,写SHT10状态寄存器指令为00000110,读SHT10状态寄存器指令为00000111,SHT10温度测量指令为00000011,SHT10湿度测量指令为00000101,SHT10复位指令为00011110。
温湿度传感器函数有如下声明:
延时函数voiddelay_n10us(uintn)、启动传输函数voids_transstart(void)、连接复位函数voids_connectionreset(void)、SHT10写函数chars_write_byte(unsignedcharvalue)、SHT10读函数chars_read_byte(unsignedcharack)、温湿度传感器序号的选择voidsht10_num_select(unsignedcharnum)、测量温湿度函数chars_measure(unsignedchar*p_value,unsignedchar*p_checksum,unsignedcharmode)、温湿度补偿函数voidcalc_dht90(float*p_humidity,float*p_temperature)。
本系统程序是把实际的温度与设置的报警上限值和下限值来做比较,决定是否发出报警信号。
由于T为实际的温度的绝对值,TH、TL也是温度的绝对值,因此判断大小关系时要通过其正负符号来确定。
具体流程图如下所示:
温度比较报警子程序
3.5温湿度补偿函数的实现
为了测得更准确的数据,需进行温湿度的补偿,用*P_humidity来存储修正后的湿度值,用*P_temperature来存储修正后的温度值。
输入湿度为12位,温度为14位,C1、C2、C3为12位湿度修正值,T1、T2为14位温度修正值,rh为湿度采集值12Bit,t为温度采集值14Bit,rh_lin为湿度线性值,rh_true为温度补偿后的湿度值,湿度上限值为100,湿度精度为0.1,计算出实际温度值和湿度线性值以及温度补偿后的湿度[%RH],返回温度实际值和湿度实际值,部分程序如下。
voidcalc_dht90(float*p_humidity,float*p_temperature)
{
constfloatC1=-4.0;
constfloatC2=+0.0405;
constfloatC3=-0.0000028;
constfloatT1=+0.01;
constfloatT2=+0.00008;
floatrh=*p_humidity;
floatt=*p_temperature;
floatrh_lin;
floatrh_true;
floatt_C;
t_C=t*0.01-40;
rh_lin=C3*rh*rh+C2*rh+C1;
rh_true=(t_C-25)*(T1+T2*rh)+rh_lin;
if(rh_true>100)
rh_true=100;
if(rh_true<