基于单片机实现的智能液位传感器毕业论文(设计)word格式

上传人:细水****9 文档编号:59395670 上传时间:2022-03-02 格式:DOC 页数:38 大小:739.50KB
返回 下载 相关 举报
基于单片机实现的智能液位传感器毕业论文(设计)word格式_第1页
第1页 / 共38页
基于单片机实现的智能液位传感器毕业论文(设计)word格式_第2页
第2页 / 共38页
基于单片机实现的智能液位传感器毕业论文(设计)word格式_第3页
第3页 / 共38页
点击查看更多>>
资源描述
智能液位传感器摘 要摘 要:介绍了压力传感器的应用,设计了智能液位传感器。此设计通过压力传感器测出液体的压力,输出0 - +5V的模拟电压通过ADC0804采集转换成数字量送入单片机处理,由RS232串口通信送到上位机,并显示出高度。此设计能完成0-1.5m高度的液位测量,能精确到厘米。此设计主要由压力传感器,单片机,ADC0804转换器构成。关键词:智能液位传感器,单片机,AD转换器Abstract:This article introduces the application of pressure sensor, and designs a intelligent level sensor. This design detects the liquid pressure through the pressure sensors, and it will send the voltage from 0 to 5V which is converted into digital quantity by the simulation ADC0804 acquisition to the SCM processing. Then the digital will be sent to the PC which shows the high by RS232 serial interface communication. This design can finish 0 to 1.5 m high level measurement, and accurate to cm. This design main have pressure sensor, a single-chip microcomputer, and ADC0804 converter to form. Keywords:Intelligence level sensor ,Single-chip microcomputer,AD converter 目录1绪论41.1设计目的51.2 设计任务与要求51.3 智能液位传感器的基本原理52总体方案设计62.1 智能液位传感器设计方案框图62.2 方案论证72.3 方案可能的扩展功能83 单元模块电路的设计93.1各单元模块功能介绍及电路设计93.1.1 传感器输出部分93.1.2 ADC0804数据采集转化部分93.1.3 单片机最小系统模块103.1.4 RS232模块113.2 电路参数计算及元器件的选择123.2.1 元器件的选择123.3 特殊元器件介绍133.2.1 ADC0804143.1.2 压力传感器D3B163.4 个单元模块的联接174 软件设计1941 软件设计原理及所用的工具194.1.1 单片机部分194.1.2 上位机VB部分204.2 软件的设计流程框图224.3 软件设计总结235 系统调试245.1 硬件结构部分245.2 VB部分245.3 压力传感器部分256 系统功能及指标参数266.1系统功能266.2 系统各部分的测试参数266.2.1 AD部分调试参数266.2.2 系统测量液面高度的数据参数276.2.3 调试总结287 结论298 总结与体会及感谢语309 参考文献31附录32附录1:32附录2:程序35附录3 元器件清单381绪论液位检测在许多控制领域已较为普遍,各种类型的液位检测传感器较多,按原理分有浮子式、压力式、超声波式、吹气式等。各种方式都根据其需要设计完成,其结构、量程和精度适用于各自不同的场合,大多结构较为复杂,制造成本偏高;市面上也有现成的液位计,有投入式、浮球式、弹簧式等,多数成品价格惊人。以上液位计多数输出为模拟量电流或电压,有些为机械指针读数,不能用于远程监视;普遍适用于静止液面,在波动液面易引起读数的波动;也有用电容法测液位的系统,此法是一种简单易行的方案。本文利用压力传感器测液体压力的原理,结合单片机设计出一种智能液位检测装置。本学期开设了传感器及传感器技术,单片机等课程。本课程设计是在学完这么多课程的基础上,为了能更好的掌握这些课的内容,把理论应用于实际而提出来的。旨在发挥我们的设计,创新意识。通过本课程设计可以掌握和巩固传感器的基本设计方法,工业水位的测量方法,单片机的基本应用,显示电路的连接等知识。进一步加强对课堂理论知识的理解与综合应用能力,从而提高我们解决问题的能力和创造发明能力。如今传感器的应用是非常的广泛,并且已经融入到我们的生活,工作,科研等领域中。在我组进行设计中我们首先对压力传感器输出的电压和对应的液体高度进行整理和多次测量得出一个比较与实际高度符合的函数。我们通过压力传感器测出液体压力,利用ADC0804对传感器的输出电压进行采集并将模拟电压信号转换成数字电平信号0,1。然后将采集的数据送入单片机最小系统进行处理然后利用RS232电平转换送到PC机,PC机上用VB编写一个显示界面,再在VB中利用程序将数字量转换成以厘米为单位的高度并显示出来。液位传感器的应用虽然非常广泛,但是现在高精度的液位的传感器价格非常贵,实现民用还有一定的难度。所以我们的设计应更加创新利用更小的成本设计生产出更好的传感器。1.1 设计目的1理解并掌握智能液位传感器的原理及实现的方法。2. 掌握ADC,RS232电平转换电路的原理,压力传感器的特性参数的计算及选择。3掌握单片机最小系统的组成。4.培养实践技能,提高分析和解决实际问题的能力。5.学习基本理论在实践中综合运用的初步经验,掌握模拟电路及数字电路设计的基本方法、设计步骤,培养综合设计与调试能力。1.2 设计任务与要求1利用一个液位传感器及周边电路,完成液位到电信号的转换;液位测量采用测量液体的压强的方式;测量范围0-1.5米;2设计一个单片机系统控制一个ADC对压力变送器输出的电信号进行采集;3编写数据转换程序;将二进制的量化数据转换为以厘米为单位的ASCLL标准字符串形式传送到PC机;注:ASCLL标准字符串是以ASCLL码为信息的编码方式,字符串结尾数据是一个字节00H;4设计单片机通信程序以及RS232电平转换电路;5设计单片机相关运行程序;6设计相关电路,如单片机系统,模拟输入通道,ADC,和电源电路等;7报告格式严格按照课程设计报告格式要求说明执行;1.3 智能液位传感器的基本原理本次设计的智能液位传感器的基本原理是利用一个压力传感器测出在水管的水的压力,压力变送器的输出为是0-5V的模拟电压信号(或是4-20毫安的模拟电流信号),利用ADC0804对传感器的输出电压进行采集并将模拟电压信号转换成数字电平信号0,1。然后将采集的数据送入单片机最小系统进行处理然后利用RS232电平转换送到PC机,PC机上用VB的MS.COM控件编写一个显示界面,再在VB中利用程序将数字量转换成以厘米为单位的高度并显示出来。2总体方案设计通过查阅大量相关技术资料,并结合自己的实际知识,我主要提出了两种技术方案来实现系统功能。下面我将首先对这两种种方案的组成框图和实现原理分别进行说明。2.1 智能液位传感器设计方案框图两种方案的框图如下图:方案1:利用应变片自制的压力传感器AD转换器(ADC0832)单片机最小系统RS232串口通信上位机显示液面高度方案2:压力传感器AD转换器(ADC0804)单片机最小系统RS232串口通信上位机显示液面高度2.2 方案论证对于方案1和2按照理论来看做出来能够达到一定的预期效果,能达基本满足本次设计的基本要求。但是两种方案不同之处就在于传感器的选择和AD的选择,现就这两个方面来论述.为什么选择方案2。方案1的传感器部分是利用应变片做的压力变送器,其结构如下图2.1: 图 2.1 这是利用4片应变片做的全桥电路其电压灵敏度比单臂工作时提高了4倍,消除了一定的非线性误差。其输出的为电流信号但是非常小,所以在外部又加了一个差动放大将信号放大才能满足AD 0 - +5V的输入电压的要求。但是此类的工作都是提供1.5mA的横流源,我们自己做的恒流源很难满足要求。硬件部分完成以后还要对其进行测试线性度,但是测量比较麻烦后期的数据处理也比较繁琐,最后达到的效果也比较差所以就没有选择应变片制作。对于AD的选择主要是ADC0832与ADC0804之间的选择。ADC0832是8位分辨率;+5V电源供电;输入电压为0 - +5V;工作频率250HZ;转换时间为32us;数据转送是8位串行传送;ADC0804是8位分辨率;5V电源供电;输入电压为0 - +5V;转换时间的100us;存取时间是135us;数据传送是8位并行传送;通过直观的观察可以发现由于ADC0832的数据传送是8位串行的所以传完8位数据需要的时间为256us,而ADC0804为8位的并行数据传送,传8位数据只需100us。所以ADC0804的转换存取速度更快,这样系统的工作效率更高。所以我们采用的是ADC0804。综上我们本次设计液位传感器采用的方案2。2.3 方案可能的扩展功能我们这次设计的智能液位传感器结构还比较简单,只是完成测液位并读出页面高度的基本功能,在这几完成后发现该系统还能扩展许多功能。比如增加报警系统(应用于比如水库的水位测量时可以做下限报警和超限报警);远程的控制系统(比如家用的水塔水不足时可以控制水泵加水)。3 单元模块电路的设计本节主要介绍系统各单元模块的具体功能、电路结构、工作原理、以及各个单元模块之间的联接关系;同时本节也会对相关电路中的参数计算、元器件选择、以及核心器件进行必要说明。3.1各单元模块功能介绍及电路设计 本系统电路模块主要分为四个单元模块,它们分别是:传感器输出部分;ADC0804的数据采集转换模块;单片机最小系统模块;RS232模块.各单元模块功能及相关电路的具体说明如下。3.1.1 传感器输出部分3.1.2 ADC0804数据采集转化部分该级电路一共实现了两个功能:第一个是对模拟电压信号的采集。第二个功能是将模拟电压信号转换成数字信号。这一级的原理图如图3.2: 图3.2 ADC0804数据采集转换电路图3.1.3 单片机最小系统模块 这部分主要是由STC89C52单片机组成的一个最小系统,通过单片机来控制ADC0804的信号采集转换以及对RS232串口通信的控制。该级电路原理图如图3.3: 图3.3 单片机最小系统电路图3.1.4 RS232模块RS232模块主要通过USB转串口线来与PC机通信将ADC0804采集和转换的数据传给上位机显示出所测得液面高度。模块的原理图如图3.4: 图3.4 RS232电路图3.2 电路参数计算及元器件的选择3.2.1 元器件的选择设计所用仪器及器件如下表1:单片机STC89C521片MAX2321片ADC08041片串口母头1个晶振1个0.1uf电容5个22pf电容2个10uf极性电容1个33pf电容1个1k电阻2个10k电阻2个排线若干USB转串口线1根电烙铁一台面包板1块焊锡若干+5V直流可调电压源1台压力传感器1个示波器1台水管1根万用表1台钳子1个电脑1台 表13.3 特殊元器件介绍这一节将对设计过程中用到的一些特殊元器件进行介绍,主要是介绍该特殊元器件的内部结构,工作原理,及使用时应该注意的事项。3.2.1 ADC0804ADC0804的内部原理结构图如下图3.5: 图3.5 ADC0804的内部原理结构图 ADC0804主要技术指标如下: (1) 高阻抗状态输出 (2) 分辨率:8 位(0255) (3) 存取时间:135 us (4) 转换时间:100 us (5) 总误差:-1- +1LSB (6) 工作温度:ADC0804C为0度-70度;ADC0804L为-40 度-85 度 (7) 模拟输入电压范围:0V - +5V (8) 参考电压:2.5V (9) 工作电压:5V (10) 输出为三态结构ADC0804的引脚图如下图3.6: 图 3.6 ADC0804引脚图引脚及功能特性如下:CS 、RD 、WR (引脚1、2、3):是数字控制输入端,满足标准TTL 逻辑电平。其中CS 和WR 用来控制A/D 转换的启动信号。CS 、RD 用来读A/D 转换的结果,当它们同时为低电平时,输出数据锁存器DB0DB7 各端上出现8 位并行二进制数码。LKI(引脚4)和CLKR(引脚19):ADC08010805 片内有时钟电路,只要在外部“CLKI”和“CLKR”两端外接一对电阻电容即可产生A/D 转换所要求的时钟,其振荡频率为fCLK1/1.1RC。其典型应用参数为:R=10K,C=150PF,fCLK640KHZ,转换速度为100。若采用外部时钟,则外部fCLK 可从CLKI 端送入,此时不接R、C。允许的时钟频率范围为100KHZ1460KHZ。INTR (引脚5): INTR 是转换结束信号输出端,输出跳转为低电平表示本次转换已经完成,可作为微处理器的中断或查询信号。如果将CS 和WR 端与INTR 端相连,则ADC0804 就处于自动循环转换状态。CS 0 时,允许进行A/D 转换。WR 由低跳高时A/D 转换开始,8 位逐次比较需88=64 个时钟周期,再加上控制逻辑操作,一次转换需要6673 个时钟周期。在典型应用fCLK640KHZ 时,转换时间约为103114。当fCLK 超过640KHZ,转换精度下降,超过极限值1460KHZ 时便不能正常工作。VIN()(引脚)和VIN()(引脚7):被转换的电压信号从VIN()和VIN()输入,允许此信号是差动的或不共地的电压信号。如果输入电压V的变化范围从0V到Vmax,则芯片的VIN()端接地,输入电压加到VIN()引脚。由于该芯片允许差动输入,在共模输入电压允的情况下,输入电压范围可以从非零伏开始,即Vmin 至Vmas。此时芯片的VIN()端应该接入等于Vmin 的恒值电码坟上,而输入电压VIN仍然加到VIN()引脚上。AGND(引脚8)和DGND(引脚10):A/D 转换器一般都有这两个引脚。模拟地AGND 和数字地DGND 分别设置引入端,使数字电路的地电流不影响模拟信号回路,以防止寄生耦合造成的干扰。VREF2(引脚9):参考电压VREF/2 可以由外部电路供给,从“VREF/2”端直接送入,VREF/2 端电压值应是输入电压范围的二分之一。所以输入电压的范围可以通过调整VREF/2 引脚处的电压加以改变,转换器的零点无需调整。ADC0804 转换器的工作时序如图3.7: 图3.7 工作时序图3.1.2 压力传感器D3B 我们这次智能液位传感器设计使用的传感器部分采用的是压力传感器D3B,液位测量采用的测量液体压强的方式。压力传感器如下图3.8: 图 3.8传感器主要参数如下:工作电压:4.2v6.2v;压力范围:0-1000mm水柱,0-0.1Kg/c;电压输出:0.23v-4.9v;线性度0.2%;外型:303020mm。接线方式:每个接线柱下皆有标示,G-接地,I-接+5V另与O-之间加载2.2K上拉电阻即可通过0-输出传感器本身不能放到水里,所以设计时我们是利用水管引水到传感器中央的压力感应膜上。3.4 个单元模块的联接个单元的联接如下图3.9: 图 3.9 个单元模块的联接图说明:AD的输入连接的是压力传感器的输出端。4 软件设计 本次设计主要用到的软件主要涉及到单片机的c语言编程,上位机的VB部分的界面编程。41 软件设计原理及所用的工具4.1.1 单片机部分单片机程序部分主要功能是:控制ADC0804接收模拟数据转换成数字量,由89C52接收数字量,将处理后的数字量通过串口通讯传给上位机。该程序部分设计过程中使用的是keil软件来编写的,利用STC-ISP软件进行下载和调试的。主要就是通过STC89C52来控制AD采集转换部分和串口通信,该部分的核心程序如下:void adopen() /adc0804初始化 wr=1; wr=0; wr=1; delay(1); rd=0; i=i; i=i;/延时 j=P1; rd=1;void initial()/串口初始化 TMOD=0x20;/设置定时器1为工作方式2 TH1=0xfd; TL1=0xfd; TR1=1; REN=1;/串口始能REN=1时允许串行口接收数据 SM0=0;/模式1,8位数据,波特率由软件设置 SM1=1; EA=1;/总通断 ES=1;/串口通断4.1.2 上位机VB部分这个部分主要是通过Microsoft Visual Basic 6.0这个软件来编写一个上位机界面来显示所测得到的液面高度,利用的VB里面的串口通信控件MS.COM来实现的。显示的输入的两个部分都是显示在vb里的text文本框里的。核心程序如下:串口的设置如下程序:Private Sub Form_Load() 设置串口MSComm1.Settings = 9600,N,8,1 串口通讯初始化:波特率为9600,没有校验位,八位数据传送,一位停止位MSComm1.RThreshold = 1MSComm1.InputMode = comInputModeText 以文本形式接收数据Combo1.AddItem COM1Combo1.AddItem COM2Combo1.AddItem COM3Combo1.AddItem COM4Combo1.AddItem COM5Combo1.AddItem COM6j = 0End Sub程序的核心部分:VB的串口通讯控件MSCommPrivate Sub MSComm1_OnComm() Dim a As StringSelect Case MSComm1.CommEvent Case comEvReceive 每接收一个数据就触发一次事件 a = MSComm1.Input b = Asc(a) e(j) = b 收20个数据取平均值再显示出来 减小抖动 j = j + 1 If j = 19 Then MSComm1.PortOpen = False For k = 0 To 19 summ = summ + e(k) Next k c = summ / 20 summ = 0 i = (c / 255) * 10 If i 0.08 Then Text2.Text = 0 Text1.Text = 0 Else Text2.Text = i * 1.04 Text1.Text = 18.33766 * i * 1.04 End If MSComm1.PortOpen = True j = 0 End If End SelectEnd Sub4.2 软件的设计流程框图开始ADC0804的初始化串口的初始化打开AD,对数据采集转换串口通信将数据传送给上位机结束VB通过MSComm控件接收数据,进行数字滤波,显示电压4.3 软件设计总结 软件设计中主要运用了所学的单片机课程和VB语言中的知识,单片机中的程序用的是C语言。程序主要包含了ADC0804的初始化;调用串口功能;串口的初始化;延时程序,主代码段实现了打开AD并对数据进行采集转换。 上位机利用的是VB的知识,利用串口通信控件MS.COM来实现的。编写出来的显示界面如下图4.1: 图 4.1 显示界面该界面内可以选择串口端口号,达到了本次设计的基本要求,显示了AD的输入电压和测得的液面高度值。5 系统调试5.1 硬件结构部分硬件部分我们先是通过PROTEL软件画的AD部分;单片机部分和RS232部分的原理图,然后这部分没有画PCB图就直接用万用板和排线进行搭建的。这样在焊接的过程中就会显得比较麻烦,必须很细心才能很好的完成,如果哪个地方焊接错误或者是将要用到的引脚没有焊接上都会导致系统不能工作。比如像我们这次的设计就出现过这样的问题,在焊接完单片机最小系统和RS232串口通信后觉得因该能下载程序到单片机内部了,结果利用直流可调的稳压电源给单片机加了+5V的工作电压结果单片机不能工作。在经过讨论发现应该是单片机没有起振,然后发现是晶振的两个引脚焊接反了,这样小小的失误会导致严重的后果。在焊接好ADC0804部分后我们对其进行了调试,在调试AD时,我们发现通过P0口始终不能将数据写到AD,后来经过查阅资料发现,要想使P0口输出数据必须在P0口接上拉电阻,后来我们换P2口为数据输出口,才成功将AD驱动成功。5.2 VB部分上位机部分的调试是结合前面的AD采集系统一起来进行调试的这样下过会更直观。这里的调试用到了直流可调的稳压电源,给单片机加上+5V的工作电压后在AD输入端加上0-5V的输入电压然后利用RS232串口通信将采集并转换的电压值显示在PC上利用VB做的显示界面上。结果发现当AD没有给输入电压时,上位机显示有输入电压,经过查资料发现这是由于由于AD器件本身的原因,当没有给输入时,其输入端呈高阻状态,所以当没有输入时,所测到得电压是错误的,为了解决这个问题我们尝试了几种方法,其中是用运放做电压跟随器来进行阻抗变换,使AD输入端不再悬空,但是由于很多运放都不是轨道轨的运放(即不是满伏输出运放),而且会大大增加硬件的结构,所以不选择这种方法,后来我们想到给输入端加下拉电阻的方法,可以将输入端电压拉至地端,并且当有输入时,其显示的电压也是输入电压。在刚开始设计上位机显示这部分时我们没有想到由于系统整体的原因,所采集到得数据有很大的抖动,讨论过后发现是有多方面的原因的。其一就是我们这次设计采用的AD0804的采集转换时间为100us,这个时间是非常短的所以数据在不断地更新。后来经过老师对数字滤波的详细讲解,我们下来也查阅了于数字滤波相关的资料,然后运用到上位机部分。在程序部分利用取多组数据再取均值的方法,虽然系统的测试速度有所变慢,但数据抖动很小,只在百分位抖动,影响不大。VB加的部分程序如下:For k = 0 To 19 summ = summ + e(k) Next k c = summ / 20 summ = 0 i = (c / 255) * 105.3 压力传感器部分传感器部分主要我们是购买的成品回来,在调试时主要是检验其是否到达要求,输出的线性度如何。在测试时我们把G-接地,I-接+5V另与O-之间加上2 K上拉电阻即可通过0-输出,然后给传感器装上水管后先不加水看起输出的电压时多少,再不断的加水看输出的电压是否在给的范围之内,再加水到传感器的极限输出即传感器的最大输出电压是多少。6 系统功能及指标参数6.1系统功能本次设计的智能液位传感器主要能实现以下功能:(1) 压力传感器采用的测量液体的压强的方式来实现测量液面高度;(2) 设计的单片机系统能控制ADC对压力传感器的输出电压信号进行采集并转换;(3) 测量范围能基本达到设计的要求在0-1米的范围内误差较小;(4) 能在上位机上直观的显示出测量的液面高度;6.2 系统各部分的测试参数6.2.1 AD部分调试参数在调通AD后我们对AD的数据采集功能进行了测试,测试数据如下图6.1: 图 6.1 AD的采集数据与给定的输入数据这几组数据都是在室内测得的,都是在室温接近30度的情况测得。我们对所测得的数据进行了处理,一共测了5组数据(给定的输入电压是在直流稳压电源上直接读的,而测得的数据则是通过我们所做的上位机显示程序读出来的),求出了每组数据的样本均值和样本方差,通过直观的观察发现和给定的AD输入误差不是很大,我们也通过excel做表发现这几组测得的数据与给定的输入电压误差很小。这说明AD的线性度还是比较高的。6.2.2 系统测量液面高度的数据参数这里测的数据是整个系统组在一起进行的测量,测量我们所给的液面高度。测得的数据如下图6.2: 图6.2 液面高度的测量数据这些数据都是在室内测得的,在室温30度左右测得。一共测了三组数据,电压利用上位机显示程序直接读得,而高度的数据则是用米尺测得,一个电压对应一个液面高度。数据处理则是求斜率的问题,每一个高度对应一个斜率主要为后面的上位机显示液面高度的VB程序找一个理论的依据。这样也可以看压力传感器的工作的线性度如何。6.2.3 调试总结通过调试我们发现调试时最费时间的药考虑很多因素,调试过程要将整个系统组合起来看工作是否正常,能否达到基本的要求。我们设计的只能液位传感器能基本满足设计的基本要求,通过压力传感器测量液位的压强方式,ADC0804对压力传感器的输出的模拟电压进行采集和转换送入单片机然后通过RS232串口通信传送到上位机上显示液面的高度。实现了将二进制的量化转换为以厘米为单位的ASCLL标准字符串形式传送到PC机。测量范围在0-1米内时误差能基本满足要求。误差主要就是来至压力传感器的输出与ADC0804的输入有一定的差距,这主要是由于整个系统连接起来过后传感器的内部电阻将其输出电压拉下来了,我们在以后对系统加入电压跟随器来改善。7 结论 本次设计的智能液位传感器达到了预期的基本要求,主要特色之一就是直接利用压力传感器测液体的压力的方式实现了测液面的高度,这种方式实现起来比较容易;其二就是将测量系统与PC机相结合起来这样对数据的读数比较直观,并且能精确到厘米。不过此设计也有很多不足之处,测量时要在容器的底部开口才能读出压力,还可以加入报警系统,当测量超出范围时,系统自动报警。还有就是还可以加上一定的数据存储能力,这样要对以前的数据进行研究的地方非常有帮助。8 总结与体会综合上述各部分的测试结果,本设计完成了课程设计的大多数的要求。基本达到了预期的目标。这次智能综合设计历时接近一个月,在这期间可以说是苦多于甜,但是可以学到很多很多的东西,不仅可以巩固以前所学过的知识,而且学到了很多书本上没有接触过的知识。以前接触的那些程序都是很短很基础的,但是在课程设计中碰到了一些复杂的程序编写,这时画程序方框图就显得很有必要了。通过画程序方框图可以使我们对所要完成的每一步任务都有一个很清楚的思路,让我们明白每一步的任务,同时在程序测试的过程中也有利于查错。另外,以前对于编程工具的使用还处于一知半解的状态上,经过一段上机的实践,对于怎么去排错、查错,怎么去看每一步的运行结果,怎么去了解每个寄存器的内容以确保程序的正确性上都有了很大程度的提高。 这次课程设计终于顺利完成了,在设计中遇到了很多编程问题,最后在同学们的帮助下并且查阅了很多相关的资料才得以解决。通过本次课程设计,我进一步温习和巩固了课本的理论知识,增强了理论联系实际的能力,同时也增强了我通过检索资料来获取相关专业信息以及利用检索到的信息来解决面临问题的能力。本次设计使我深刻认识到自己软件编程方面的知识薄弱,同时也使我体会到软件编程在实际硬件电路连接中的重要作用,软件编程的使用使硬件开销大大减少,同时也使设计更加的简洁易于控制,在今后的学习中我们会加强软件编程方面知识的积累和运用,会更加注重理论与实际的结合。在这次作品制作过程中,我们知道了要真正的做出作品需要考虑非常多的因素,有些看似不起眼的细节都可能对电路产生巨大的影响,如连线是否可等。通过这次课程设计自己看到了许多工程和一些产品中的要求,让自己明白了自己现在缺乏很多工程意识和思考问题的全面性。在此我要特别感谢我们的课程设计指导老师郑海春老师。在设计过程中他为我们提供了很多的帮助和指导。在老师的身上我们学也到很多实用的知识,在此我们表示感谢!同时,对给过我们组帮助的所有同学和各位指导老师再次表示忠心的感谢!9 参考文献1汪德彪. MCS-51单片机原理及接口技术M. 北京电子工业出版社. 2004.2胡文金,钟秉翔. 单片机应用技术实训教程M. 重庆大学出版社. 2005.3张毅刚,彭喜元,董继成. 单片机原理及应用M. 重庆大学出版社. 2003.4 谢自美.电子线路设计实验测试M . 武汉:华中科技出版社,2000.55 谭浩强.C程序设计(第三版)M. 北京:清华大学出版社,2008.16 王华奎.数字信号处理及应用M. 北京:高等教育出版社,2006.127 姚燕南.微型计算机原理与接口技术M. 北京:高等教育出版社,2006.48 古天祥.电子测量原理M. 北京:机械工业出版社,2009.19 徐科军.传感器与检测技术M. 北京:电子工业出版社,2010.11附录附录1:总电路图如下图1: 图 1 总电路图实物图如下图: 实物图1 实物图2 实物图3附录2:程序单片机程序如下:#include#define uchar unsigned char#define uint unsigned intuchar flag,i,j;sbit wr=P36;sbit rd=P37;void delay(uint z)uint x,y;for(x=z;x0;x-)for(y=110;y0;y-);void adopen()/adc0804初始化wr=1;wr=0;wr=1;delay(1);rd=0;i=i;i=i;/延时j=P1; rd=1;void initial()/串口初始化TMOD=0x20;/设置定时器1为工作方式2TH1=0xfd;TL1=0xfd;TR1=1;REN=1;/串口始能REN=1时允许串行口接收数据SM0=0;/模式1,8位数据,波特率由软件设置SM1=1;EA=1;/总通断ES=1;/串口通断void main() initial(); while(1) adopen();if(flag=1)ES=0;flag=0;SBUF=j/2;while(!TI);TI=0;ES=1; void ser() interrupt 4/串口中断 while(TI);flag=1;上位机VB部分程序如下:Dim i As SingleDim j As IntegerDim k As IntegerDim d(1) As ByteDim b As LongDim c As DoubleDim summ As DoubleDim e(20) As DoublePrivate Sub Combo1_click()MSComm1.CommPort = Combo1.ListIndex + 1 选择通讯口End SubPrivate Sub Command1_Click()MSComm1.PortOpen = True 打开串口End SubPrivate Sub Command10_Click()EndEnd SubPrivate Sub Form_Load() 设置串口MSComm1.Settings = 9600,N,8,1 串口通讯初始化:波特率为9600,没有校验位,八位数据传送,一位停止位MSComm1.RThreshold = 1MSComm1.InputMode = comInputModeText 以文本形式接收数据Combo1.AddItem COM1Combo1.AddItem COM2Combo1.AddItem COM3Combo1.AddItem COM4Combo1.AddItem COM5Combo1.AddItem COM6j = 0End SubPrivate Sub MSComm1_OnComm() 程序的核心部分:VB的串口通讯控件MSCommDim a As StringSelect Case MSComm1.CommEvent Case comEvReceive 每接收一个数据就触发一次事件 a = MSComm1.Input b = Asc(a) e(j) = b 收20个数据取平均值再显示出来 减小抖动 j = j + 1 If j = 19 Then MSComm1.PortOpen = False For k = 0 To 19 summ = summ + e(k) Next k c = summ / 20 summ = 0 i = (c / 255) * 10 If i 0.08 Then Text2.Text = 0 Text1.Text = 0 Else Text2.Text = i * 1.04 Text1.Text = 18.33766 * i * 1.04 End If MSComm1.PortOpen = True j = 0 End IfEnd Select附录3 元器件清单元器件清单如下表1:品名单位单价(元)数量价格(元)STC89C52个616ADC0804个10110MAX232个2 24串口母头套0.8216USB转串口线根20120面包板块428排线米若干5.5压力传感器D3B个25125晶振个0.52 1合计81.1 表1:元器件清单表由于这次的设计所用的电阻电容是在实验室找的而且很便宜就没有计算在成本内,总的来说这次设计的智能液位传感器成本还在预算范围内。
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 其他分类 > 其它学术


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!