学位论文基于单片机的便携式土壤温湿度测量仪的设计Word下载.docx
《学位论文基于单片机的便携式土壤温湿度测量仪的设计Word下载.docx》由会员分享,可在线阅读,更多相关《学位论文基于单片机的便携式土壤温湿度测量仪的设计Word下载.docx(24页珍藏版)》请在冰豆网上搜索。
![学位论文基于单片机的便携式土壤温湿度测量仪的设计Word下载.docx](https://file1.bdocx.com/fileroot1/2023-1/4/713c29df-b8d7-4b61-a67f-b0dbb3af3697/713c29df-b8d7-4b61-a67f-b0dbb3af36971.gif)
对供电电源采用抗干扰措施;
输入输出通道抗干扰措施;
进行软硬件滤波;
系统自诊判断功能等。
在系统的软硬件设计时,应从操作者的角度考虑操作和维护方便,要尽可能减少人机交换接口,多采用操作内置或简化的方法。
单片机除体积小、功耗低等特点外,最大的优势在于高性能价格比。
一个单片机应用系统能否被广泛使用,性价比是其中一个关键因素。
因此,再设计时,除了保持高性能外,尽可能降低成本,如简化外围硬件电路,在系统性能和速度允许的情况下尽可能使用软件功能取代硬件功能等。
3系统的硬件设计与实现
3.1系统框图
系统主要由单片机模块、温湿度检测模块、显示模块、A/D转换模块和电源模块组成,其整体框图如图1所示。
图3-1系统框图
3.2系统主要硬件部分设计
3.2.1STC89C51单片机
STC89C51RC/RD+系列单片机是STC推出的新一代高速低功耗超强抗干扰的单片机[1],指令代码完全兼容传统8051单片机,它是一个40引脚的集成电路芯片,采用DIP(双列直插)形式封装。
51系列单片机:
集成8位CPU、4K字节ROM、128字节RAM、4个8位并口、1个全双工串行口、2个16位定时/计数器。
寻址范围64K,并有控制功能较强的布尔处理器。
[1].主电源引脚
Vcc(40脚):
接+5V电源正端.
Vss(20脚):
接-5V电源地端.
[2].外接晶体或外部振荡器引脚
XTAL1(19脚):
接外部晶振的一个引脚。
在单片机内部,它是一个反相放大器的输入端,这个放大器构成了片内振荡器。
当采用外部振荡器时,此引脚要接地。
XTAL2(18脚):
接外部晶振的另一个引脚。
在片内接至反相放大器的输出端和内部时钟电路的输入端。
当采用外部振荡器时,此脚应接外部振荡器的输出端。
图3-2STC89C51外形示意图
[3].控制信号线
RST/VPD(9脚):
复位信号输入端,复位/掉电时内部RAM的备用电源输入端
VPP(31脚):
访问外部存储器允许/编程电压输入。
EA为高电平时,访问内部存储器;
低电平时,访问外部存储器。
对片内EPROM编程时,此脚接21V编程电压。
RST:
复位输入。
当振荡器复位器件时,要保持RST脚两个机器周期的高电平时间。
ALE/PROG:
当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的低位字节。
在FLASH编程期间,此引脚用于输入编程脉冲。
在平时,ALE端以不变的频率周期输出正脉冲信号,此频率为振荡器频率的1/6。
因此它可用作对外部输出的脉冲或用于定时目的。
然而要注意的是:
每当用作外部数据存储器时,将跳过一个ALE脉冲。
如果禁止ALE的输出可在SFR8EH上置0。
此时,ALE只有在执行MOVX,MOVC指令时ALE才其作用。
另外,该引脚被略微拉高。
如果微处理器在外部执行状态ALE禁止,置位无效。
PSEN:
外部程序存储器的选通信号。
在由外部程序存储器取指期间,每个机器周期两次PSEN有效。
但在访问外部数据存储器时,这两次有效的PSEN信号将不出现。
EA|VPP:
当EA保持低电平时,则在此期间外部程序存储器(0000H-FFFFH),不管是否有内部程序存储器。
注意加密方式1时,EA将内部锁定为RESET;
当EA端保持高电平时,此期间内部程序存储器。
在FLASH编程期间,此引脚也用于施加12V编程电源(VPP)。
XTAL1:
反向振荡放大器的输入及内部时钟工作电路的输入。
XTAL2:
来自反向振荡器的输出。
[4].多功能I/O口引脚
STC89C52单片机设有4个双向I/O口(P0、P1、P2、P3),每一组I/O口线都可以独立地用作输入或输出口。
P3口同时为闪烁编程和编程校验接收一些控制信号。
表3-1P3口第二功能各引脚功能定义
管脚
功能
P3.0RXD
串行输入口
P3.1TXD
串行输出口
P3.2/INT0
外部中断0
P3.3/INT1
外部中断1
P3.4T0
计时器0外部输入
P3.5T1
计时器1外部输入
P3.6/WR
外部数据存储器写选通
P3.7/RD
外部数据存储器读选通
由图3-4可知,单片机集成了中央处理器(CPU)、存储器系统(RAM和ROM)、定时/计数器、并行接口、串行接口、中断系统及一些特殊功能寄存器(SFR)[2]。
他们通过内部总线紧密地联系在一起。
它的总体结构仍是通用CPU加上外围芯片的总线结构。
只是在功能部件的控制上与一般微机的通用寄存器加接口寄存器控制不同,CPU与外设的控制不再分开,采用了特殊功能寄存器集中控制,使用更方便。
内部还集成了时钟电路,只需要外接石英晶体就可形成时钟。
图3-3单片机结构示意图
CPU:
由运算和控制逻辑组成,同时还包括中断系统和部分外部特殊功能寄存器。
RAM:
用以存放可以读写的数据,如运算的中间结果、最终结果以及欲显示的数据。
ROM:
用以存放程序、一些原始数据和表格。
I/O口:
四个8位并行I/O口,既可用作输入,也可用作输出。
T/C:
两个定时/记数器,既可以工作在定时模式,也可以工作在记数模式。
3.2.2主控电路
一个单片机嵌入式系统的核心,其实就是一个单片机的最小系统,或者称为最小应用系统,是指用最小的元件组成的单片机可以工作的系统。
由图2-4可知最小系统应由时钟电路和复位电路构成。
如图3-5所示,STC89C51单片机芯片内部集成了振荡电路,它是利用一个高增益反相放大器构成的振荡电路,引脚XTAL1和XTAL2分别是放大器的输入端和输出端。
外接晶体谐振器以及电容C1和C2构成并联谐振电路,接在放大器的反馈回路中,片内的放大器与作为反馈元件的片外晶体谐振器一起构成一个自激振荡器。
这个振荡器为单片机提供时序脉冲。
而采用12MHZ的晶振,主要是为了方便定时操作[3]。
图3-4单片机最小系统电路
单片机的复位是指使单片机进入初始化工作状态。
当单片机的复位引脚RESET出现2个机器周期以上的高电平时,单片机就执行复位操作。
如果RESET持续为高电平,单片机将处于循环复位的状态。
但是单片机本身不能自动复位,必须配合相应的外部电路才能实现复位操作。
复位操作通常有两种基本形式:
上电复位和开关复位。
上电复位要求接通电源后,自动实现复位操作。
开关复位则是在单片机已运行时,按下复位键后松开,也能使RESET保持一段时间的高电平,从而实现开关复位的操作。
3.2.3串行口通信电平转换电路
MCS-51单片机有一个可编程的串行接口,它是一个全双工的通信端口,可以同时接收和发送数据。
串行通信接口的优点在于使用较少的传输线即可完成数据的传输。
MCS-51的通信端口有一个接收缓冲式的串行接口,在特殊功能寄存器中有一个串行数据缓冲器寄存器,专门供存放发送和接收的数据。
RS-232C是EIA(美国电子工业协会)1969年修订RS-232C标准[4]。
RS-232C定义了数据终端设备(DTE)与数据通信设备(DCE)之间的物理接口标准。
RS-232C采取不平衡传输方式,即单端通信。
RS-232C标准规定其高电平为+3~+15V,低电平为-3V~-15V,噪声容限为2V。
另外,该串口标准数据线传送采用负逻辑,即低电平表示1、高电平表示0;
其他控制线采用正逻辑。
因此,当单片机进行RS-232C通信时就需要通过电平转换电路,将RS-232C总线中的数据信号转换为TTL电平后才能接收,否则就会将TTL电路烧毁。
另外,RS-232C的最大通信距离为15m,最高传输速率为20kbit/s,只能进行一对一的通信。
1、机械特性
RS-232C接口规定使用25针连接器,市场上常见的有25针串口和9针串口两种接口形式,连接器的尺寸及每个插针的排列位置都有明确的定义。
图3-5RS-232C接口
2、功能特性
表3-2RS-232C标准接口主要引脚定义
插针序号
信号名称
信号方向
1
PGND
保护接地
2
TXD
发送数据(串行输出)
DTE→DCE
3
RXD
接收数据(串行输入)
4
RTS
请求发送
5
CTS
允许发送
6
DSR
DCE就绪(数据建立就绪)
7
SGND
信号接地
8
DCD
载波检测
20
DTR
DTE就绪(数据终端准备就绪)
22
RI
振铃指示
数字电路中只有两种电平:
高和低。
单片机为TTL电平:
高电平+5V,低电平0V。
计算机的串口为RS232电平:
高电平+12V,低电平-12V。
所以计算机与单片机之间通讯时需要加电平转换芯片MAX232。
MAX232是专用于串口电平转换的集成电路,它不仅可以转换PC与单片机之间不同的电平,还可以降低232通信的误码率,提高通信性能。
MAX232系列芯片由电压倍增器、电压反相器、RS-232发送器和RS-232接收器等四部分组成,电压倍增器利用电荷充电泵原理通过外接电容升压至+10V。
电压反相器又通过外接电容将+10V电压转换为-10V电压存储到电容上。
这样,通过单5V供电就可以满足所需要的转换电平。
MAX232性能特点如下:
1.单+5V电源供电;
2.两个驱动器和两个接收器;
3.低电源电流:
典型值为8mA;
4.工作温度在0℃~70℃。
图3-6MAX232电平转换电路
3.2.4电源电路
USB称为通用串行总线。
它是连接外部设备的一个串口总线标准。
USB最大的特点是支持热拔插和即插即用。
USB为+5V供电,而本系统采用的模拟温湿度传感器需要+12V供电,因此需要接一个12V转5V的电路。
图3-7USB供电电路
12V转5V电路采用的芯片是三端稳压集成电路L7805CV。
三端是指这种稳压用的集成电路,只有三条引脚输出,分别是输入端、接地端和输出端。
它的样子像是普通的三极管,TO-220的标准封装。
用三端稳压IC来组成稳压电源所需的外围元件极少,电路内部还有过流、过热及调整管的保护电路,使用起来可靠、方便,而且价格便宜。
在实际应用中,应在三端集成稳压电路上安装足够大的散热器(当然小功率的条件下不用)。
当稳压管温度过高时,稳压性能将变差,甚至损坏。
图3-812V转5V电路
3.2.5LCD显示电路
液晶显示器简称LCD显示器,它是利用液晶经过处理后能改变光线的传输方向的特性来显示信息的。
要使用点阵型LCD显示器,必须有相应的LCD控制器、驱动器来对LCD显示器进行扫描、驱动,以及一定空间的ROM和RAM来存储写入的命令和显示字符的点阵。
现在往往将LCD控制器、驱动器、RAM、ROM和LCD显示器连接在一起,称为液晶显示模块。
液晶显示模块是一种常见的人机界面,在单片机系统中的应用极其广泛。
液晶显示模块既可以显示字符,又可以显示简单的图形。
本系统采用的是1602的LCD接口。
1602是一种点阵字符型液晶显示模块,可以显示两行共32个字符。
根据LCD型号的不同,所需要的背光电阻大小会不同,可自行调节。
本系统采用的LCD为RT-1602C,其主要引脚的功能如下:
RS:
数据/命令选择端,高电平时选择数据寄存器,低电平时选择指令寄存器。
RW:
读/写选择端,高电平时进行读操作,低电平时进行写操作。
当RS和RW共同为低电平时,可以写入指令或者显示地址;
当RS为低电平、RW为高电平时,可以读忙信号;
当RS为高电平、RW为低电平时,可以写入数据。
E:
使能端,当E端由高电平跳变成低电平时,液晶模块执行命令。
图3-9LCD显示电路
LCD显示部分程序:
voidwrite_command(ucharcom)//lcd写命令
{
lcdrs=0;
lcdwr=0;
P0=com;
delay(5);
lcden=1;
lcden=0;
}
voidwrite_data(uchardate)//lcd写数据
lcdrs=1;
P0=date;
voidinit_lcd()//lcd初始化
write_command(0x38);
//设置16x2显示
write_command(0x0e);
//设置光标
write_command(0x06);
//写字符指针加1,光标加1
write_command(0x01);
//清屏
3.2.6A/D转换电路
模拟/数字转换就是我们通常所说的A/D转换,它将输入的模拟信号(如电压)转换成控制芯片(如单片机,ARM)所能识别的二进制形式,然后经过运算,既可以还原出输入模拟信号的值。
A/D转换是一种非常重要的技术手段,是单片机等控制芯片与外界信号的接口部分,下图给出了一种常用的嵌入式设计模式。
图3-10一种常用的基于A/D芯片的嵌入式设计模式
本系统设计了在没接入传感器之前的A/D转换的测试程序。
首先通过调节滑动变阻器改变输入到ADC0804芯片的电压值(ADC0804芯片的参考电压调节成0V~5V,而滑动变阻器产生的电压范围也为0V~5V,因此没有必要设计额外的模拟电路),然后通过单片机进行运算处理得到这个输入电压值,最后再通过LCD将这个电压值显示出来。
图3-11A/D转换的测试模式
本系统采用的A/D芯片为ADC0804,它是CMOS8位单通道逐次渐近型的模/数转换器。
图3-12ADC0804规格及引脚分配图
其主要引脚的功能如下:
CS:
芯片片选信号,低电平有效,即CS=0该芯片才能正常工作,在外接多个ADC0804芯片时,该信号可以作为选择地址使用,通过不同的地址信号使能不同的ADC0804芯片,从而可以实现多个ADC通道的分时复用。
WR:
启动ADC0804进行ADC采样,该信号低电平有效,即WR信号由高电平变成低电平时,触发一次ADC转换。
RD:
低电平有效,即RD=0时,可以通过数据端口DB0~DB7读出本次的采样结果。
图3-13A/D转换电路
A/D转换部分程序
voiddelay(uintz)//定义延时函数
uintx,y;
for(x=z;
x>
0;
x--)
for(y=110;
y>
y--);
voidinit_ad()//AD初始化
csad=0;
}
voidstart_ad()//AD启动
wrad=1;
wrad=0;
voidmain()
while
(1)
{
start_ad();
//启动一次ADC0804采样
delay(10);
//延时10ms,等待采样结束
AdcRead();
//完成一次采样后,从ADC0804的DB引脚读取采样值
Display();
//将采样结果在LCD上显示出来
}
3.2.7传感器模块
现代传感器在原理与结构上千差万别,如何根据具体的测量目的、测量对象以及测量环境合理地选用传感器,是在进行某个量的测量时首先要解决的问题。
当传感器确定之后,与之相配套的测量方法和测量设备也就可以确定了。
测量结果的成败,在很大程度上取决于传感器的选用是否合理。
在传感器的选择上,首先要根据测量对象与测量环境确定传感器的类型。
需要根据被测量对象的特点和传感器的使用条件考虑以下一些具体问题:
量程的大小;
被测位置对传感器体积的要求;
测量方式为接触式还是非接触式;
信号的引出方法,有线或是非接触测量,在考虑上述问题之后就能确定选用何种类型的传感器,然后再考虑传感器的具体性能指标。
TDR-5土壤温湿度传感器是将土壤水分和土壤温度传感器集中于一体,方便土壤墒情,土壤温度的测量研究,具有携带方便,密封,高精度等优点,是土壤墒情,土壤温度测量的理想选择。
TDR-5土壤温湿度传感器可连接各种载有差分输入的数据采集器,数据采集卡,远程数据采集模块等设备。
图3-14TDR-5传感器的接线图
图3-15接线说明
TDR-5土壤水分部分是基于频域反射原理,利用高频电子技术制造的高精度、高灵敏度的测量土壤水分的传感器。
通过测量土壤的介电常数,能直接稳定地反映各种土壤的真实水分含量。
测量时,传感器产生的高频电磁波沿传输线进行传播,在末端经过周围有土壤介质的反射并在传输线上形成驻波,驻波的电压随着探针和周围土壤介质阻抗的变化而变化,通过测量传输线两端的电压差即可测出土壤的介电常数,从而测出土壤的含水量,可测量土壤水分的体积百分比,是目前国际上最流行的土壤水分测量方法。
图3-16土壤容积含水量转换图
TDR-5土壤温度部分是由德国Heraeus公司进口A级ST-1-PT1000精密铂电阻和高精度变送器两部分组成。
变送器部分由电源模块、温度传感模块、变送模块、温度补偿模块及数据处理模块等组成,彻底解决铂电阻因自身特点导入的测量误差,变送器内有零漂电路和温度补偿电路,对使用环境有较高的适用性。
土壤温度变送器应用广泛,可测量多种粉末状多孔介质,液体的温度,精度高,不锈钢探针稳定性好,耐腐蚀,并且可做成多种外形,是测量温度的理想选择。
土壤温度转换公式:
T=61.5V-55.87
T:
土壤温度;
V:
采集器采集到的电压值
图3-17土壤温度转换图
TDR-5土壤温湿度传感器的优点:
1、本传感器体积小巧化设计,测量精度高,响应速度快,互换性好。
2、密封性好,可直接埋入土壤中使用,且不受腐蚀。
3、实时温湿度监测功能,可测量不同深度土壤的温温度。
4、土质影响较小,应用地区广泛。
5、测量精度高,性能可靠,确保正常工作,响应速度快,数据传输效率高。
4系统的软件设计与实现
便携式温湿度测量仪的程序主要包括转换数据读取程序、将读取的数字量转换成温湿度值程序、显示温度值程序等。
4.1系统软件设计流程图
图4-1系统软件设计主程序
图4-2ADC0804完成单次采样的软件控制流程图
4.2单片机C51语言编程
C51是在通用C语言的基础上开发出的专门用于51系列单片机编程的C语言。
由于C51语言相对单片机汇编语言具有可读性强,可移植性强,易学易用,便于修改维护等优点,因此本设计采用C51进行软件编程。
KeilC51软件提供丰富的库函数和功能强大的集成开发调试工具,全Windows界面。
重要的是KeilC51生成的目标代码效率非常高,多数语句生成的汇编代码很紧凑,容易理解。
KeilC51完全支持C的标准指令和很多用来优化8051指令结构的C语言扩展指令[5]。
此外,KeilC51不但具有ANSIC的所有标准数据类型,为了更加有效地利用8051的结构特点,又加入了一些特殊的数据类型。
5设计的调试与分析
5.1硬件电路的调试
此部分的任务是在系统连接好后,调试各个组件能否正常工作,能否实现软件设计的预期目标。
其步骤如下:
1、按照系统设计,将系统需要的各个组件连接好。
2、根据芯片说明书,了解各个组件的工作原理,开始着手调试各功能模块。
3、把各个功能模块编写成单独的源文件进行调试,调试成功以后,再将各部分联合在一起。
4、调试了各模块之后,接下来的工作就是将各源程序段连接起来,进行综合调试了,综合调试需要我们特别注意细节部分,这样才能尽可能的减少错误的产生。
图5-1电路板各模块整体图
图5-2A/D转换功能调试图
5.2设计过程中遇到的问题
1、A/D转换模块是一个比较重要的模块,在调试的阶段遇到的问题较多,由于它是程序运行的瓶颈,如果这一部分通不过的话,那么程序就无法执行下去,本系统采用的是延时的方法。
2、LCD显示模块,根据LCD型号的不同,所需要的背光电阻大小会不同,可自行调节。
若电阻选择过大,则背光灯不能点亮。
3、电源电路12V转5V中电容的选取不仅要考虑电容的大小,也要考虑所选电容电压的大小,电