• 1.08 MB
  • 2022-04-22 13:40:11 发布

简易直线位移测量系统设计毕业论文.doc

  • 43页
  • 当前文档由用户上传发布,收益归属用户
  1. 1、本文档共5页,可阅读全部内容。
  2. 2、本文档内容版权归属内容提供方,所产生的收益全部归内容提供方所有。如果您对本文有版权争议,可选择认领,认领后既往收益都归您。
  3. 3、本文档由用户上传,本站不保证质量和数量令人满意,可能有诸多瑕疵,付费之前,请仔细先通过免费阅读内容等途径辨别内容交易风险。如存在严重挂羊头卖狗肉之情形,可联系本站下载客服投诉处理。
  4. 文档侵权举报电话:19940600175。
'简易直线位移测量系统设计毕业论文目录第1章绪论11.1研究背景11.2研究意义11.3研究内容21.4系统总体方框图2第二章硬件设计32.1编码器设计32.2单片机概述32.2.1单片机分类42.2.2单片机与单片机系统52.2.3单片机应用领域52.3MCS—51系列单片机介绍62.3.1MCS—51系列芯片简介62.3.2最小系统62.3.3定时与中断的概念72.4AT89S52芯片概述82.5MAX232芯片简介102.6RS232(DB9)串口介绍112.7电压比较器132.7.1LM339芯片132.7.2四细分原理142.8光敏二极管简介14第三章软件程序设计163.1上位机VB程序设计163.1.1VB流程图163.1.2VisualBasic6.0软件介绍173.1.3VB界面设计1839 3.1.4Mscomm控件简介193.1.5VB程序设计203.2下位机单片机程序设计223.2.1主程序223.2.2定时中断程序243.2.3看门狗激活253.2.4串口中断程序263.2.5数据发送程序263.2.6计数程序27第四章系统调试294.1硬件电路调试294.1.1protues软件简介294.1.2实物检测步骤294.2软件调试304.2.1系统调试工具keil304.2.2调试的主要方法30结论32参考文献33谢辞34附录1上位机VB程序35附录2下位机单片机程序37附录3实物图4139 简易直线位移测量系统设计第1章绪论1.1研究背景位移测量系统大部分都是通过各式各样的传感器来实现的的,而传感器本身的特性从很大程度上决定了测量系统本身的精度、实用性,通用性等要素。传感器是能感受规定的被测量并按照一定的规律转换成可用输出信号的器件或装置。物体的准确定位是实现工业自动化生产的前提,现已经有多种位置测量方法,并已经成功地应用到了实际中[1]。如今的传感器不在局限于传统量的测量,也可测量如振动,粗糙度等。如文献[10]中提到一种不断移动的检测系统,它可以同时检测表面粗糙度,直径和枪管内壁。基于传统理论的位置传感器主要有电容式、电感式、电磁式等几种。电感式位移传感器与滑线电阻式的位移传感器相比较,在工作频率范围、测试精度和使用寿命方面都有显著提高。这种传感器的优点是结构简单,加工、使用、维修及保养都很方便[3]。电容式位移传感器具有优良的性能:稳定性好,分辩率高;响应时间短;环境适应性好。然而,由于其本身的电容量小(一般在10-100PF之间),阻抗高。近十年来特别是光栅传感器及其测量仪表随着信息技术(IT)和制造技术(MT)的发展得到了相应的迅速发展。近50年来精密机械加工精度从1μm提高到0.01μm,提升了100倍[2]。光栅是闭环位置伺服系统中用得较多的测量装置,可用作位移或转角的检测,且测量输出的信号为数字信号。它测量范围大,测量精度高,可达几微米。光栅传感器把被测位移量转变为电信号,经前置放大和电路处理后,送入下位机进行综合运算处理后输出,并通过LED显示。目前在精密机加工方面应用较多[5]。本设计中没有采用LED显示测量数据,而是通过PC系统用VB语言设计了人机界面,更加方便,数据管理更加容易。光栅位移传感器具有抗电磁干扰能力强、电绝缘性好、耐腐蚀、测量范围广、体积小以及传输容量大等优点,被广泛地用于医疗、交通、电力、机械、航空航天等各个领域[4]。1.2研究意义位移是指物体在外来因素作用下引起的质点位置的改变。现代生产生活中都离不开位移的测量,特别是对自动化生产的需求越来越高的情况下。如工业生产中,电机的转速、刀具的进给、注塑机注塑过程等都需要通过位移测量来控制。为了更精确和方便地测量位移,人们制作了各种各样的位移传感器来测量位移。位移传感器主要应用在自动化装备生产线对模拟量的智能控制。39 简易直线位移测量系统设计其中基于光电原理的光栅式位移传感器具有易实现数字化、精度高、抗干扰能力强、没有人为读数误差、安装方便、使用可靠等优点,在机床加工、检测仪表等行业中得到日益广泛的应用[4]。此次毕业设计就是针对位移测量而设计制作的基于光栅位移传感器的位移测量系统。参照光栅原理,设计一种简易的位移测量系统。首先将光栅传感器输出信号进行整形、电子细分、辨向处理、计数后通过RS232串口与计算机通讯,由VB程序界面显示数据。本课题不论是从现实市场的需求上,还是从当今技术环境上,都满足了如今位移测量的基本需求。1.3研究内容此次设计要求设计一套有计算机显示、管理界面的简易直线位移测量系统。直线编码器的信号由单片机系统采集处理。单片机系统通过RS232c串口与计算机通讯。可通过计算机人机接口界面显示直线位移的大小。光信号到电信号的转换通过光敏二极管实现,对细分信号的实现不在通过传统的通过设置4个等距光敏二极管来接收,而是通过打有(N+1/4)W的孔的副尺将A、B信号变成有90度相位差的两路信号,而后通过电压比较器得到正交方波信号,由此便可通过程序将信号进行四细分。单片机的计数程序为普通的累加程序,定时采用内部脉冲定时中断溢出的方法计时。和PC的通信采用RS232串口,VB程序主要负责数据处理和显示,并向单片机发送控制命令,单片机进行串口中断执行命令。1.4系统总体方框图图1-1简易直线位移测量系统框图39 简易直线位移测量系统设计第二章硬件设计2.1编码器设计图2-1编码器如图2-1此次设计采用了带孔的直尺来代替光栅尺(主尺A),而副尺B则使AB信号产生90度的相位差,使接受到的AB信号正交。如此便可为后面的软件细分做好准备。2.2单片机概述单片机因将其主要组成部分集成在一个芯片上而得名,具体说就是把中央处理器CPU(Centralprocessingunit)。随机存储器RAM(Randomaccessmemory)。只读存储器ROM(Readonlymemory)。中断系统、定时器/计数器以及IO(Input/output)接口电路等主要微型机部件集成在一个芯片上。虽然单片机只是一个芯片,但从组成和功能上看,它已具有了计算机系统的属性[11]。为此,称它为单片微型计算机SCMC(Singlechipmicrocomputer),是一种非常活跃且颇具生命力的机种。简称单片机。39 简易直线位移测量系统设计图2-2单片机内部结构单片机主要应用与控制领域,用以实现各种测试和控制功能,为了强调起控制属性,也可以把单片机称为微控制器MCU(Microcontrollerunit)。图2-2为单片机内部结构。在国际上,“微控制器(Microcontroller)”的叫法似乎更通用一些,而在我国则比较习惯与“单片机”这一名称。单片机只需要与适当的软件及外部设备相结合,便可成为一个单片机控制系统[11]。单片机在应用时,通常是处于控制系统的核心地位并融入其中,即以嵌入的方式进行使用,为了强调其"嵌入"的特点,也常常将单片机称为嵌入式微控制器EMCU(Embeddedmicrocontrollerunit)。在单片机的电路和结构中,有许多嵌入式应用的特点。2.2.1单片机分类根据控制应用的需要,可以将单片机分成为通用型和专用型两种类型。通用型单片机是一种基本芯片,他的内部资源比较丰富,性能全面且适用性强,能覆盖多种应用需要。用户可以根据需要设计成各种不同应用的控制系统,即通用单片机有一个在设计的过程,通过用户的进一步设计,才能组建成一个以通用单片机芯片为核心再配以其它外围电路的应用控制系统。然而在单片机的控制应用中,有许多时候是专门针对某个特定产品的,例如电度表和IC卡读写器上的单片机等。这种应用的最大特点是针对性强而且数量巨大,为此厂家常与芯片制造商合作,设计和生产专用的单片机芯片。由于专用单片机芯片是针对一种产品或一种控制应用而专门设计的,设计时已经对系统结构的最简化,软硬件资源利用的最优化。39 简易直线位移测量系统设计2.2.2单片机与单片机系统单片机通常是指芯片本身,它是有芯片制造商生产的,在它上面集成的是一些做为基本组成部分的运算器电路,控制器电路,存储器,中断系统,定时器/计数器以及输入/输出口电路等。但一个单片机芯片并不能把计算机的全部电路都集成到其中,例如组成谐振电路和复位电路的石英晶体,电阻,电容等,这些元件在单片机系统中只能以散件的形式出现。此外,在实际的控制应用中,常常需要扩展外围电路和外围芯片。从中可以看到单片机和单片机系统的差别,即:单片机只是一块芯片,而单片机系统则是在单片机芯片的基础上扩展其它电路或芯片构成的具有一定应用功能的计算机系统[11]。通常所说的单片机系统都是为实现某一控制应用需要由用户设计的,是一个围绕单片机芯片而组建的计算机应用系统。在单片机系统中,单片机处于核心地位,是构成单片机系统的硬件和软件基础。2.2.3单片机应用领域计算机的产生加快了人类改造世界的步伐,但是它毕竟体积大。微计算机(单片机)在这种情况下诞生了,它为我们改变了什么?纵观我们现在生活的各个领域,从导弹的导航装置,到飞机上各种仪表的控制,从计算机的网络通讯与数据传输,到工业自动化过程的实时控制和数据处理,以及我们生活中广泛使用的各种智能IC卡、电子宠物等,这些都离不开单片机。下面我们就一些典型方面进行介绍。1.工业自动化方面自动化能使工业系统处于最佳状态,提高经济效益,改善产品质量和减轻劳动强度。因此,自动化技术广泛应用于机械、电子、电力、石油、化工、纺织、食品等轻重工业领域中,而在工业自动化技术中,无论是过程控制技术,数据采集和测控技术,还是生产线上的机器人技术,都需要要有单片机的参与。在工业自动化的领域中,机电一体化技术将发挥愈来愈重要的作用,在这种集机械、微电子和计算机技术于一体的综合技术中,单片机将发挥越来越大的作用。2.仪器仪表方面现在仪器仪表的自动化和智能化要求越来越高,对此最好使用单片机来实现,而单片机的使用又将加速仪器仪表向数字化,智能化,多功能化和柔性化方向发展。此外,单片机的使用还有助于提高仪器仪表的精度和准确度,简化结构、减小体积及重量而易于携带和使用,并具有降低成本,增强抗干扰的能力,便于增加显示、报警和自诊断等功能。3.家用电器方面当前,家用电器产品的一个重要发展趋势是不断提高其智能化程度,而家电智能化的进一步提高就需要有单片机的参与,所以生产厂家常标榜“电脑控制”39 简易直线位移测量系统设计以提高其产品的档次,例如洗衣机,电冰箱,空调机,微波炉,电视机和音像视频设备等,这里说的电脑实际上就是单片机。智能化家用电器将给我们带来更大的舒适和方便,进一步改善我们的生活质量,把我们的生活变的更加丰富多彩。4.信息和通信产品方面信息和通信产品的自动化和智能化程度很高,这当然离不开单片机的参与,例如计算机的外部设备和自动化办公设备中,都有单片机在其中发挥着作用。5.军事装备方面科技强军、国防现代化离不开计算机,在现代化的飞机、军舰、坦克、大炮、导弹火箭和雷达等各种军用装备上,都有单片机深入其中[12]。2.3MCS—51系列单片机介绍2.3.1MCS—51系列芯片简介MCS-51单片机是指由美国INTEL公司(大名鼎鼎的INTEL)生产的一系列单片机的总称,这一系列单片机包括了好些品种,如8031,8051,8751,8032,8052,8752等,其中8051是最早最典型的产品,该系列其它单片机都是在8051的基础上进行功能的增、减、改变而来的,所以人们习惯于用8051来称呼MCS-51系列单片机,而8031是前些年在我国最流行的单片机,所以很多场合会看到8031的名称。INTEL公司将MCS51的核心技术授权给了很多其它公司,所以有很多公司在做以8051为核心的单片机,当然,功能或多或少有些改变,以满足不同的需求,其中89C51就是这几年在我国非常流行的单片机,它是由美国ATMEL公司开发生产的。2.3.2最小系统最小系统就是单片机在发挥具体测控功能时所必须的组成部分。如图2-3图2-4所示。图2-3最小系统方框图39 简易直线位移测量系统设计图2-4单片机最小系统电路图2.3.3定时与中断的概念中断是一项重要的计算机技术,采用中断技术可以使多项任务共享一个资源,所以中断技术实质上就是一种资源共享技术。向CPU发出中断请求的来源称之为中断源。MCS-51是一个多中断源的单片机,以80C51为例,有三类共五个中断源,分别是外部中断两个,定时中断两个和串行中断一个[13]。1.外中断外中断是由外部信号引起的,共有两个中断源,即外部中断“0”和外部中断“1”。它们的中断请求信号分别由引脚INT0(P3.2)和INT1(P3.3)引入。外部中断请求有两种信号方式,即电平方式和脉冲方式,可通过有关控制位进行定义。2.定时中断定时中断是为满足定时或计数的需要而设置的。3.串行中断串行中断是为串行数据传送的需要而设置的。4.中断控制39 简易直线位移测量系统设计这里所说的中断控制是指提供给用户使用的中断控制手段,实际上就是一些专用寄存器。在MCS-51单片机中,用于此目的的控制寄存器共有四个,即定时器控制寄存器、中断允许控制寄存器、中断优先控制寄存器以及串行口控制寄存器。5.定时器控制寄存器(TCON)该寄存器用于保存外部中断请求和以及定时器的计数溢出。寄存器地址88H,位地址8FH~88H。位地址8F8E8D8C8B8A8988位符号TF1TR1TF0TR0IE1IT1IE0IT0这个寄存器既有定时器/计数器的控制功能又有中断控制功能,其中与中断有关的控制位共六位:IE0和IE1、IT0和IT1以及TF0和TF1。6.中断允许控制寄存器(IE)寄存器地址A8H,位地址AFH~A8H。位地址AFAEADACABAAA9A8位符号EA//ESET1EX1ET0EX0其中与中断有关的控制位共六位:EA、EX0和EX1、ET0和ET1、ES。7.中断优先级控制寄存器(IP)MCS-51的中断优先级控制只定义了高、低两个优先级。各中断源的优先级由优先寄存器(IP)进行设定。IP寄存器地址B8H,位地址为BFH~B8H。寄存器的内容及位地址表示如下:位地址BFBEBDBCBBBAB9B8位符号///PSPT1PX1PT0PX0PX0外部中断0优先级设定位PT0定时中断0优先级设定位PX1外部中断1优先级设定位PT1定时中断1优先级设定位PS串行中断优先级设定位为0的位优先级为低;为1的位优先级为高。8.定时器/计数器的控制寄存器与定时器/计数器应用有关的控制寄存器有:(1)定时器控制寄存器(TCON)(2)工作方式控制寄存器(TMOD)2.4AT89S52芯片概述AT89S52是一个低功耗,高性能CMOS8位单片机,片内含4kBytesISP(In-system39 简易直线位移测量系统设计programmable)的可反复擦写1000次的Flash只读程序存储器,器件采用ATMEL公司的高密度、非易失性存储技术制造,兼容标准MCS-51指令系统及80C51引脚结构(如图2-5),芯片内集成了通用8位中央处理器和ISPFlash存储单元,功能强大的微型计算机的AT89S52可为许多嵌入式控制应用系统提供高性价比的解决方案图2-5AT89S52封装和引脚分配其工作电压在4.5-5V,一般我们选用+5V电压。新增加很多功能,性能有了较大提升,价格基本不变,甚至比89C51更低!89S52相对于89C51增加的新功能包括:--ISP在线编程功能,这个功能的优势在于改写单片机存储器内的程序不需要把芯片从工作环境中剥离。是一个强大易用的功能。--最高工作频率为33MHz,大家都知道89C51的极限工作频率是24M,就是说S52具有更高工作频率,从而具有了更快的计算速度。--具有双工UART串行通道。--内部集成看门狗计时器,不再需要像89C51那样外接看门狗计时器单元电路。--双数据指示器。--电源关闭标识。--全新的加密算法,这使得对于89S51的解密变为不可能,程序的保密性大大加强,这样就可以有效的保护知识产权不被侵犯。--39 简易直线位移测量系统设计兼容性方面:向下完全兼容51全部字系列产品。比如8051、89C51等等早期MCS-51兼容产品。也就是说所有教科书、网络教程上的程序(不论教科书上采用的单片机是8051还是89C51还是MCS-51等等),在89S51上一样可以照常运行,这就是所谓的向下兼容。因此我们选用AT89S51单片机来作为本系统的核心部分。下图为89S51的核心电路框图:图2-689S52的核心电路框图2.5MAX232芯片简介图2-7MAX232引脚图MAX232芯片是美信公司专门为电脑的RS-232标准串口设计的单电源电平转换芯片,使用+5v单电源供电。MAX232芯片的引脚如图2-7所示:第一部分是电荷泵电路。由1、2、3、4、5、6脚和4只电容构成。功能是产生+12v和-12v两个电源,提供给RS-232串口电平的需要。39 简易直线位移测量系统设计第二部分是数据转换通道。由7、8、9、10、11、12、13、14脚构成两个数据通道。其中13脚(R1IN)、12脚(R1OUT)、11脚(T1IN)、14脚(T1OUT)为第一数据通道。8脚(R2IN)、9脚(R2OUT)、10脚(T2IN)、7脚(T2OUT)为第二数据通道。TTL/CMOS数据从T1IN、T2IN输入转换成RS-232数据从T1OUT、T2OUT送到电脑DB9插头;DB9插头的RS-232数据从R1IN、R2IN输入转换成TTL/CMOS数据后从R1OUT、R2OUT输出[15]。第三部分是供电。15脚GND、16脚VCC(+5v)。主要特点:1、符合所有的RS-232C技术标准2、只需要单一+5V电源供电3、片载电荷泵具有升压、电压极性反转能力,能够产生+10V和-10V电压V+、V-4、功耗低,典型供电电流5mA5、内部集成2个RS-232C驱动器6、内部集成两个RS-232C接收器2.6RS232(DB9)串口介绍图2-8RS232(DB9)接口RS232(DB9)的引脚如图2-8所示:1:DCD:载波检测。主要用于Modem通知计算机其处于在线状态,即Modem检测到拨号音,处于在线状态。2:RXD:此引脚用于接收外部设备送来的数据;在你使用Modem时,你会发现RXD指示灯在闪烁,说明RXD引脚上有数据进入。3:TXD:此引脚将计算机的数据发送给外部设备;在你使用Modem时,你会发现TXD指示灯在闪烁,说明计算机正在通过TXD引脚发送数据。4:DTR:数据终端就绪;当此引脚高电平时,通知Modem可以进行数据传输,计算机已经准备好。5:GND:信号地;此位不做过多解释。39 简易直线位移测量系统设计6:DSR:数据设备就绪;此引脚高电平时,通知计算机Modem已经准备好,可以进行数据通讯了。7:RTS:请求发送;此脚由计算机来控制,用以通知Modem马上传送数据至计算机;否则,Modem将收到的数据暂时放入缓冲区中。8:CTS:清除发送;此脚由Modem控制,用以通知计算机将欲传的数据送至Modem。9:RI:Modem通知计算机有呼叫进来,是否接听呼叫由计算机决定[15]。RS232(DB9)和MAX232芯片的连接方法如图2-9所示。图2-9MAX232芯片和RS232串口的连接电路图39 简易直线位移测量系统设计2.7电压比较器2.7.1LM339芯片图2-10LM339芯片管脚图LM339的特点和一些参数:(1)电压失调小,一般是2mV;(2)共模范围非常大,为0v到电源电压减1.5v;(3)他对比较信号源的内阻限制很宽;(4)LM339vcc电压范围宽,单电源为2-36V,双电源电压为±1V-±18V;(5)输出端电位可灵活方便地选用。(6)差动输入电压范围很大,甚至能等于vcc;LM339集成块内部装有四个独立的电压比较器,该电压比较器的特点是:1)失调电压小,典型值为2mV;2)电源电压范围宽,单电源为2-36V,双电源电压为±1V-±18V;3)对比较信号源的内阻限制较宽;4)共模范围很大,为0~(Ucc-1.5V)Vo;5)差动输入电压范围较大,大到可以等于电源电压;6)输出端电位可灵活方便地选用。LM339集成块采用C-14型封装,外型及管脚排列如图2-10。由于LM339使用灵活,应用广泛,所以世界上各大IC生产厂、公司竟相推出自己的四比较器,如IR2339、ANI339、SF339等,它们的参数基本一致,可互换使用。39 简易直线位移测量系统设计LM339类似于增益不可调的运算放大器。每个比较器有两个输入端和一个输出端。两个输入端一个称为同相输入端,用“+”表示,另一个称为反相输入端,用“-”表示。用作比较两个电压时,任意一个输入端加一个固定电压做参考电压(也称为门限电平,它可选择LM339输入共模范围的任何一点),另一端加一个待比较的信号电压。当“+”端电压高于“-”端时,输出管截止,相当于输出端开路。当“-”端电压高于“+”端时,输出管饱和,相当于输出端接低电位。两个输入端电压差别大于10mV就能确保输出能从一种状态可靠地转换到另一种状态,因此,把LM339用在弱信号检测等场合是比较理想的。LM339的输出端相当于一只不接集电极电阻的晶体三极管,在使用时输出端到正电源一般须接一只电阻(称为上拉电阻,选3-15K)。选不同阻值的上拉电阻会影响输出端高电位的值。因为当输出晶体三极管截止时,它的集电极电压基本上取决于上拉电阻与负载的值。另外,各比较器的输出端允许连接在一起使用。LM339可构成单限比较器、迟滞比较器、双限比较器(窗口比较器)、振荡器等。LM339还可以组成高压数字逻辑门电路,并可直接与TTL、CMOS电路接口。2.7.2四细分原理此次设计中对信号的四细分的实现是靠LM339芯片组成的电压比较器将A、B信号转换为正交方波信号,而后程序便能够比较A、B信号不同时刻的状态而得出四种组合状态,从而实现了四细分。本此次系统中用的的比较电路如图2-11。.图2-11电压比较电路2.8光敏二极管简介光敏二极管也叫光电二极管。光敏二极管与半导体二极管在结构上是类似的,其管芯是一个具有光敏特征的PN结,具有单向导电性,因此工作时需加上反向电压。无光照时,有很小的饱和反向漏电流,即暗电流,此时光敏二极管截止。当受到光照时,饱和反向漏电流大大增加,形成光电流,它随入射光强度的变化而变化。当光线照射PN结时,可以使PN结中产生电子一空穴对,使少数载流子的密度增加。这些载流子在反向电压下漂移,使反向电流增加。因此可以利用光照强弱来改变电路中的电流。常见的有2CU、2DU等系列。光敏二极管工作原理:光敏二极管是将光信号变成电信号的半导体器件。它的核心部分也是一个PN结,和普通二极管相比,在结构上不同的是,为了便于接受入射光照,PN结面积尽量做的大一些,电极面积尽量小些,而且PN结的结深很浅,一般小于1微米。39 简易直线位移测量系统设计光敏二极管是在反向电压作用之下工作的。没有光照时,反向电流很小(一般小于0.1微安),称为暗电流。当有光照时,携带能量的光子进入PN结后,把能量传给共价键上的束缚电子,使部分电子挣脱共价键,从而产生电子---空穴对,称为光生载流子。它们在反向电压作用下参加漂移运动,使反向电流明显变大,光的强度越大,反向电流也越大。这种特性称为“光电导”。光敏二极管在一般照度的光线照射下,所产生的电流叫光电流。如果在外电路上接上负载,负载上就获得了电信号,而且这个电信号随着光的变化而相应变化。在此次设计中将用光敏二极管来收集变化的光信号,转换成电信号,通过处理而得出要测的数据。39 简易直线位移测量系统设计第三章软件程序设计3.1上位机VB程序设计3.1.1VB流程图图3-1上位机流程图如图3-1所示VB程序初始化之后等待数据接收,接收到数据之后分别读取位移计数和时间计数,将其以十进制进行计算,最后显示在所设计的界面上。39 简易直线位移测量系统设计图3-2相对方式流程图如入3-2所示,相对测量方式时,VB向单片机发送一个数据,单片机接收到数据之后将时间计数和位移计数清零,而后再进入正常的测量程序。3.1.2VisualBasic6.0软件介绍图3-3VisualBasic界面39 简易直线位移测量系统设计VB是一种由微软公司开发的包含协助开发环境的可视化的、面向对象和采用事件驱动方式的结构化高级程序设计语言,它编程简单、方便、功能强大,具有与其它语言及环境的良好接口,不需要编程开发人员具备C/C++或者TurboPascal语言知识和特别高深的专业知识,只要懂得Windows的界面及其基本操作,就可以迅速上手,而VB在程序界面设计、多媒体开发方面更是独具优势。其开始界面如图3-3所示。因此特别适合初学者和业余人员使用。在VisualBasic环境下,利用事件驱动的编程机制、新颖易用的可视化设计工具,使用Windows内部的广泛应用程序接口(SPI)函数,以用动态链接库(DLL)、对象的链接与世隔嵌入(OLE)、开放式数据连接(ODBC)等技术,可以高效、快速地开发Windows环境下功能强大、图形界面丰富的应用软件系统。随着版本的提高,VisualBasic的功能也越来越强[15]。3.1.3VB界面设计图3-4VB界面如图3-4所示,VB显示界面共设置6个显示框,2个命令按钮,1个通信控件。39 简易直线位移测量系统设计3.1.4Mscomm控件简介Mscomm控件为实现VB和单片机通信的重要控件VB5.0/6.的MSComm通信控件提供了一系列标准通信命令的接口,它允许建立串口连接,可以连接到其他通信设备(如Modem).还可以发送命令、进行数据交换以及监视和响应在通信过程中可能发生的各种错误和事件,从而可以用它创建全双工、事件驱动的、高效实用的通信程序[15]。MSComm控件有很多重要的属性,但首先必须熟悉几个属性。CommPort属性:设置并返回通讯端口号。说明:在设计时,value可以设置成从1到16的任何数(缺省值为1)。RThreshold属性:当接受缓冲区接到n个新的字符时产生Oncomm事件,如果N为零,则不产生ONCOMM事件。InputMode属性:设置或返回传输数据的类型comInputModeText0(缺省)通过Input属性以文本方式取回数据。comInputModeBinary1通过Input属性以二进制方式检取回数据。Settings()属性设置并返回波特率、奇偶校验、数据位和停止位(“QQ,WW,EE,RR”)PortOpen()打开或关闭串口,或返回串口的开关状态TRUE打开串口,FALSE关闭串口;Input属性:从接收缓冲区读出数据,返回值为VARIANT型变量,当串口没打开时不能用。当InputMode属性值为0时,数据为文本方式,变量为string类型;当为1时,数据位为二进制,变量为Byte类型InputLen属性:设置并返回Input属性从接收缓冲区读取的字符数。说明:InputLen属性的缺省值是0。设置InputLen为0时,使用Input将使MSComm控件读取接收缓冲区中全部.InBufferSize属性:设置或返回输入缓冲区的大小。缺省值大小为1024byteInputBufferCont属性设置或返回输入缓冲区内等待读取的字节数。当设置为零是时可以清除接受缓冲区Output属性:向发送缓冲区写数据,或返回发送缓冲区当前的数据OutBufferSize属性:设置或返回发送缓冲区的大小,缺省值为512byte,OutBufferSize属性:返回发送缓冲区的字节数,或清空发送缓冲区。MSComm控件示例下面这个简单的例子演示了用调制解调器进行基本的串行通讯:PrivateSubForm_Load()DimInstringAsString,保存输入子串的缓冲区39 简易直线位移测量系统设计MSComm1.CommPort=1,使用COM1。MSComm1.Settings="9600,N,8,1",9600波特,无奇偶校验,8位数据,一个停止位。MSComm1.InputLen=0MSComm1.PortOpen=True,打开端口。MSComm1.Output="ATV1Q0"&Chr$(13)DoDoEventsBuffer$=Buffer$&MSComm1.InputLoopUntilInStr(Buffer$,"OK"&vbCRLF),从串行端口读"OK"响应。MSComm1.PortOpen=False,关闭串行端口。EndSub3.1.5VB程序设计(1)发送控制命令,使单片机清零计数器,转换到相对测量方式。privatesubcommand1_click()DimNumAsIntegerDimoutbte(0)AsByteoutbte(0)=CByte(1),将数值转换位byte类型MSComm1.OutBufferCount=0"...清空输出寄存器MSComm1.Output=outbte(0)"...发送数据endsub(2)结束按钮,结束VB程序privatesubcommand2_click()unloadme,结束程序endsub(3)初始化,设定波特率,通讯端口,Mscomm控件参数privatesubform_load()mscomm1.portopen=true,打开通讯端口mscomm1.commport=1,设置通讯端口号mscomm1.setting="9600,u,8,1",设置波特率,奇偶校验,数据位,停止位mscomm1.outbuffersize=1024,设置传输缓冲区字节数MSComm1.RThreshold=valueendsub39 简易直线位移测量系统设计(4)计算,显示处理privatesubmscomm1.oncomm()DimindataAsVariantDimbte(0)AsByteselectcasemscomm1.commeventcasecomevreceive,有接收事件发生indata=MSComm1.Inputbte(0)=AscB(indata),字符转换为ASCII码text.text4=bte(0),将接收缓冲区收到的数据显示到text4text.text5=Mid$(text.text4,1,8),计数显示到text5text.text6=Mid$(text.text4,9,8),时间显示到text6text.text1=val("&H"&text.text5)*1.25text.text2=val("&H"&text.text1)/[val("&H"&text.text6)*0.05]text.text3=val("&H"&text.text2)/[val("&H"&text.text6)*0.05]mscomm1.inbuffercount=0,清空输入寄存器endselectendsub39 简易直线位移测量系统设计3.2下位机单片机程序设计3.2.1主程序图3-5主程序流程图如图3-5所示,单片机将编码器发送来的正交方波进行程序四细分,判断位移的反向并进行计数,定时计数也同时进行。在发现数据停止变化即测量尺没有移动时,判断是否有计数值,有就向VB进行发送。ORG0000HAJMPSTARTORG000BH39 简易直线位移测量系统设计LJMPTIME0ORG0001BHLJMPRECEIVEORG30HSTART:MOV30H,#00HMOVR6,#00HMOVSCON,#50H;串口工作方式1,允许接收MOVTMOD,#20H;T1工作方式2MOVTL1,#0FDH;设置波特率,停止位,校验位MOVTH1,#0FDHMOVTMOD,#00000001BH;定时器0工作方式1MOVTH0,#4CHMOVTL0,#00H;置初值SETBEA;开总中断SETBTR1;开定时器T1SETBES;开串口中断SETBET0;开定时器0中断允许L1:MOVA,P2.0JZL1;判断是否到达0位MOV#31H,P2.1;读入A、B信号MOV#32H,P2.2LCALLDELAYL4:MOV#33H,P2.1;再次读入A、B信号MOV#34H,P2.2MOVA,#31HCJNEA,#33H,L2;判断A信号是否变化L7:MOVA,#32HCJNEA,#34H,L3;判断B信号是否变化CLRTR0;关计时中断L8:39 简易直线位移测量系统设计MOVA,,R5JZL4CJNEA,R6,L4MOVR6,R5;位移计数存到R6LJMPSENDLJMPL1END3.2.2定时中断程序图3-6计时模块流程图11.0592M的晶振每秒可产生0.9216M个机器周期50ms就需要46080个机器周期定时器在方式1工作是16位计数器最大值为65536所以需设置初值19456即4C00H所以TH0=4cHTL0=00H。 如图3-6所示,本段程序采用50ms定时,累加计时0.1s。TIME0:PUSHACC;保护现场PUSHPSWINC30HMOVA,30H39 简易直线位移测量系统设计CJNEA,#10,T-RET;判断到0.5s没有T-L1:到了MOV30H,#00HINCR7T-RET:MOVTH0,#4CHMOVTL0,#00HPOPPSWPOPACCRETI3.2.3看门狗激活看门狗具体使用方法如下:在程序初始化中向看门狗寄存器(WDTRST地址是0A6H)中先写入01EH,再写入0E1H。即可激活看门狗。程序代码:org0000LjmpbeginBegin:Mov0A6H,#01EH;先送1EMov0A6H,#0E1H;后送E1;在程序初始化中激活看门狗。For:……Mov0A6H,#01EH;先送1EMov0A6H,#0E1H;后送E1;喂狗指令……Ljmpfor看门狗功能特点1.89S51的看门狗必须由程序激活后才开始工作。所以必须保证CPU有可靠的上电复位。否则看门狗也无法工作。2.看门狗使用的是CPU的晶振。在晶振停振的时候看门狗也无效。39 简易直线位移测量系统设计3.89S51只有14位计数器。在16383个机器周期内必须至少喂狗一次。而且这个时间是固定的,无法更改。当晶振为12M时每16个毫秒需喂狗一次[13]。3.2.4串口中断程序图3-7串口通信模块流程图RECEIVE:MOVA,SBUF;接收数据JNBRI,$;等待接收完毕CLRRI;清接收标志位CLRR5CLRR6CLRR7RETI3.2.5数据发送程序SEND:MOVA,R5;MOVSBUF,A;发送位移计数39 简易直线位移测量系统设计JNBTI,$;等待发送完毕CLRTI;清发送标志位MOVA,R6;MOVSBUF,A;发送时间计数JNBTI,$;等待发送完毕CLRTI;清发送标志位RETI3.2.6计数程序图3-8计数模块流程图如图3-8所示,程序先判断尺子运动反向,而后在分别用不同的计数方法进行技术,最后返回计数值。L2:SETBTR0;运行定时器0MOV#31H,#33HMOV#32H,#34H;保存A、B状态值MOVA,#31HCJNEA,#32H,L5DECR5LJMPL4L5:INCR539 简易直线位移测量系统设计LJMPL7L3:SETBTR0;运行定时器0MOV#31H,#33HMOV#32H,#34H;保存A、B状态值MOVA,,#31HCJNEA,#32H,L6INCR5LJMPL4L6:DECR5LJMPL839 简易直线位移测量系统设计第四章系统调试4.1硬件电路调试4.1.1protues软件简介PROTUES是一种面向单片机系统设计的EDA工具软件,Proteus主要由三个组件组成:ISIS、ARES、VSM。ISIS是Protues软件系统的电路原理图设计环境,同时也是进行仿真和调试的用户界面。ARES是用于PCB布线的设计工具。VSM是虚拟系统仿真模型。VSM有机地结合了混合模式SPICE电路模型、动态器件模型和通用微控制器的完整硬件模型。VSM能够完全实时仿真微处理器及所有相关外围电路。Protues提供了MCS51、PIC、MC68和AVR等CPU模型和超过6000种SPICE模型。Protues还提供了在仿真过程中和其他IDE(uv2、MPLAB等)进行程序联调的接口,能够在基于原理图的虚拟模型上进行系统软固件的编程,并实现软件源码级的实时调试。如需显示及输出,还能够使用系统配置的示波器、逻辑分析等虚拟仪器观察运行后输入输出的效果。可用调试软件protues检测硬件电路逻辑错误4.1.2实物检测步骤1.用万用表测量电路各处电信号情况,查看电路是否连接正常,各芯片是否正常工作,2.发光二极管是否正常工作3.发光二极管的光信号是否被光敏二极管正常接受,是否输出正交正弦信号4.比较器是否输出正交方波信号39 简易直线位移测量系统设计4.2软件调试4.2.1系统调试工具keil图4-1KeiluVision3版本Keil仿真器是一款利用KEIL的IDE集成开发环境作为仿真环境的廉价仿真器(其界面如图4-1),是利用SST公司具有IAP功能的单片机SST89C58制作而成,主要是利用了SST89C58的IAP功能,所谓IAP功能是Inapplicationprogram的英文缩写,是在应用编程的意思,通俗一点讲就是:它可以通过串口将用户的程序下载到单片机中,可以通过串口对单片机进行编程。它之所以具有这种功能,实际上它有两块程序flash区,其中一块flash中运行的程序可以更改另外的一块程序flash区中的程序,正是利用这一特性才用它作成了仿真器,我们把仿真器的监控程序事先烧入SST89C58,监控程序通过SST89C58的串口和PC通讯,当使用KEILC51的IDE环境仿真时,用户的程序通过串口被监控程序写入flash程序区中,当用户设置断点等操作仿真程序时,flash程序中的用户程序也在相应的更改,从而实现了仿真功能[13]。4.2.2调试的主要方法1.启动Keil2.新建一个工程。Project菜单——〉Newproject39 简易直线位移测量系统设计,选择好我们要保存的文件夹后,键入Frist保存。接着弹出CPU类型选择框,我们选择最常用的AT89C52,按确定。3.在工程中加入文件。新建一个文件,文件菜单File——〉New,我们再选择:文件菜单File——〉SaveAs.(另存为)弹出对话框后,我们文件名框中键入First.c(注意文件后缀名是.c)保存。C文件建好啦。现在我们把文件加入到工程中去。点击Target1前面的+号,右键单击SourceGroup1——〉选择AddFilestoGroupSourceGroup1,选择添加Add。本系统的主要设计是软件设计,详细的源程序清单见附录1。39 简易直线位移测量系统设计结论通过本次简易直线位移测量系统的设计,我大有收获,在制作过程中,一定要注意的每个工作步骤的检查,确保制作成功。比如在合理布线,检查装配无误的情况下,如果还出现电路无输出的情况,那么可以肯定是原理图错误,这时就要回到原理图进行检查。总体的检查顺序应该是原理图、装配情况、焊接工艺。从整体来说这是一个复杂的过程,要细心谨慎,沉着冷静,反复检查,直到找到原因为止。这次毕业设计历时至少3个月,从一开始的确定课题,到后来的资料查找、理论学习,再有就是近来的调试和测试过程,这一切都使我的理论知识和动手能力进一步得到频率合成电路课题中包含了通信电路和单片机部分知识,可以说是对通信电路知识的一次全面综合。在画原理图、安装和调试过程中不可避免地遇到各种问题,这要求保持沉着冷静,联系书本理论知识积极地思考,实在解决不了可以请教同学或指导老师。虽然在制作过程中不可避免地遇到很多问题,但是最后还是在老师以及同学的帮助下圆满解决了这些问题,实现了整个系统设计与最后调试,相关指标达到期望的要求,很好地完成了本次设计任务。经过四年学习的积累,在已经掌握相关专业方面知识及其它各方面知识的情况下,我认真严肃的完成了我的毕业设计。从得到题目到查找资料,从对题目的研究设定到电路板的制作,从电路板的调试到失败后再一次全部重新开始……在这一个充满挑战伴随挫折,充满热情伴随打击的过程中,我感触颇深,它已不仅是一个对我四年学习知识情况和我的应用动手能力的检验,而且还是对我的钻研精神,面对困难的心态,做事的毅力和耐心的考验。我在这个过程中深刻的感受到了做毕业设计的意义所在,和我一样真正投入了身心去做的人也一定会有同样的感触。39 简易直线位移测量系统设计参考文献[1]刘增辉,赖英旭.位移传感技术研究发展[J].传感器技术,2005年10期.[2]卢国纲.直线位移传感器的回顾和当今产品[J].世界制造技术与装备,2005年01期.[3]田新启.位移传感器及其应用[J].自动化仪表,2000年12期.[4]周顺斌,刘莹.光纤位移传感器的研究进展及其应用[J].煤矿机械,2008年06期.[5]陈庆樟.光栅位移传感器在位置伺服系统中的应用及误差分析[J].机床与液压,2008年08期.[6]张梅,文方,曹卫锋.基于USB总线的光栅位移检测系统设计[J].仪表技术与传感器,2009年07期.[7]肖天来,李银祥.单片机在光栅位移传感器中的应用[J].自动化与仪表,1992年01期.[8]颜国正,徐广庚,张德俊.光栅位移传感器细分技术的新方法[J].吉林工业大学学报,1995年01期.[9]CaoLinxiang,WangHong.MagneticFieldCharacteristicsinTime-gratingDisplacementSensorProceedingsoftheSecondInternationalSymposiumonInstrumentationScienceandTechnology[J].ProceedingsoftheSecondInternationalSymposiumonInstrumentationScienceandTechnology,2002.[10]YuanHuijuan,YuXiaoyang,QuoJianying.OpticalDetectionSystemforInternalGunBarrelQuality[J].ProceedingsoftheSecondInternationalSymposiumonInstrumentationScienceandTechnology,2002.[11]胡汉才.单片机原理与其接口技术[M].北京:清华大学出版社,2004.[12]谢维成,杨加囯,董秀成.单片机原理与应用及C51程序设计[M].北京:清华大学出版社,2009.[13]李秀忠.单片机原理及应用[M].广东:华南理工大学出版社,2009.[14]李江全.VisualBasic数据采集与串口通信测控应用实战[M].北京:人民邮电出版社,2010.[15]杨晶.VB6.0程序设计[M].北京:机械工业出版社,2004.39 简易直线位移测量系统设计谢辞本文是在导师倪霞林的悉心指导下完成的。倪老师不断地以他自身对待科学的热忱,治学严谨的态度,以及对待学生的责任感染着我,在这样的言传身教下,我深深了解了作为一名教师的应有的责任和做法。倪老师扎实的理论功底,丰富的科研经验极大程度地帮助了我设计工作的顺利进行。在整个毕业设计期间,倪老师一直热情、耐心、细致地指导和关怀着我,在此,我向我的导师致以最真诚的感谢和敬意!在这里,我要感谢我的同学们,他们在我毕业设计期间提供了诸多宝贵的建议及资料,同时鼓励着我努力进取,再次对他们表示深深的谢意!39 简易直线位移测量系统设计附录1上位机VB程序PrivateSubMscomm1_Oncomm()"...通讯事件发生DimindataAsVariantDimbte(0)AsByteSelectCaseMSComm1.CommEventCasecomEvReceive"...有接受事件发生text4.TEXT=MSComm1.InputText5=Mid$(Text4,1,4)Text6=Mid$(Text4,5,4)Text7=Val("&H"&Text5)Text8=Val("&H"&Text6)Text1=Text7*1.25Text2=Format(Text1/(Text8*0.5),"0.0000")Text3=Format(Text2/(Text8*0.5),"0.0000")MSComm1.InBufferCount=0"...清空输入寄存器EndSelectEndSubPrivateSubCommand1_Click()"...发送数据MSComm1.OutBufferCount=0"...清空输出寄存器MSComm1.Output=1"...发送数据EndSubPrivateSubCommand2_Click()"...退出UnloadMeEndSubPrivateSubForm_Load()"...初始化MSComm1.CommPort=1"...使用Com1口MSComm1.Settings="9600,n,8,1""...设置通讯参数39 简易直线位移测量系统设计MSComm1.PortOpen=True"...打开串口MSComm1.RThreshold=valueEndSub39 简易直线位移测量系统设计附录2下位机单片机程序ORG0000HAJMPSTARTORG000BHAJMPTIME0ORG0001BHAJMPRECEIVESTART:MOV30H,#00HMOVR6,#00HMOVSCON,#50H;串口工作方式1,允许接收MOVTMOD,#20H;T1工作方式2MOVTL1,#0FDH;设置波特率,停止位,校验位MOVTH1,#0FDHMOVTMOD,#00000001BH;定时器0工作方式1MOVTH0,#3CHMOVTL0,#0B0H;置初值SETBEA;开总中断SETBTR1;开定时器T1SETBES;开串口中断SETBET0;开定时器0中断允许L1:MOVA,P1JZL1;判断是否到达0位MOVA,P2;读入A、B信号MOVR1,AMOVA,P3MOVR2,AL4:MOVA,P2;再次读入A、B信号MOVR3,AMOVA,P339 简易直线位移测量系统设计MOVR4,AMOVA,R1MOV31H,R3CJNEA,31H,L2;判断A信号是否变化L7:MOVA,R2MOV32H,R4CJNEA,32H,L3;判断B信号是否变化CLRTR0;关计时中断L8:MOVA,R5JZL4MOV33H,R6CJNEA,33H,L4MOVA,R5MOVR6,A;位移计数存到R6LJMPSENDLJMPL1L2:SETBTR0;运行定时器0MOVA,R3MOVR1,AMOVA,R4MOVR2,A;保存A、B状态值MOVA,R1MOV34H,R2CJNEA,34H,L5DECR5LJMPL4L5:INCR5LJMPL739 简易直线位移测量系统设计L3:SETBTR0;运行定时器0MOVA,R3MOVR1,AMOVA,R4MOVR2,A;保存A、B状态值MOVA,R1MOV35H,R2CJNEA,35H,L6INCR5LJMPL4L6:DECR5LJMPL8SEND:MOVA,R5;MOVSBUF,A;发送位移计数JNBTI,$;等待发送完毕CLRTI;清发送标志位MOVA,R6;MOVSBUF,A;发送时间计数JNBTI,$;等待发送完毕CLRTI;清发送标志位RETIRECEIVE:MOVA,SBUF;接收数据JNBRI,$;等待接收完毕CLRRI;清接收标志位MOVR5,#00HMOVR6,#00HMOVR7,#00H39 简易直线位移测量系统设计RETITIME0:PUSHACC;保护现场PUSHPSWINC30HMOVA,30HCJNEA,#10,L9;判断到0.5s没有MOV30H,#00HINCR7L9:MOVTH0,#3CHMOVTL0,#0B0HPOPPSWPOPACCRETIEND39 简易直线位移测量系统设计附录3实物图39'