日光跟踪系统_第1页
日光跟踪系统_第2页
日光跟踪系统_第3页
日光跟踪系统_第4页
日光跟踪系统_第5页
已阅读5页,还剩59页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

日光跟踪系统摘要本文详细介绍了日光跟踪系统的软件设计方案及硬件整体结构,本系统是以单片机为核心,应用太阳辐射与环境亮度比较的方法,由光敏二极管及放大电路组成了光电检测和比较装置(跟踪暗桶),以两台直流电机用电枢串电阻调速的方法来拖动跟踪暗桶,构建了方位角和高度角双轴机械跟踪定位系统,使跟踪暗桶中心线与日光夹角保持在一定的精度,由此组成自动跟踪装置,实现了追踪日光的效果,达到提高太阳能利用效率的目的。详细解读软件程序应该具备的功能,根据软件功能完成了C程序的设计,并应用KeilC软件将C语言程序用汇编语言做简单解释。该系统能自动根据日光,跟踪精度高,结构简单,成本低,不必人工干预,特别适合无人值守的情况,有较好的推广应用价值。关键词:光电检测;日光自动跟踪;跟踪暗桶AbstractThispaperintroducesthedesignofthesoftwaresuntrackingsystemandhardwarestructureofthesystembasedonSCM,asthecore,andapplicationofsolarradiationandenvironment,photosensitivediodesandbyamplifyingcircuitofphotoelectricdetectionisformedandtrackingdevice,darkwithtwodcmotorarmatureresistancewiththemethodofspeedtodragtrackingdarkbarrels,constructstheazimuthandhighAngletrackingsystem,mechanicalsix-fatiguecenterlineanddarkbarrelstotrackthesunAngle,theprecisionofautomatictrackingdeviceconsistingofsunlight,tracking,andtoenhancetheeffectofsolarenergyutilizationefficiency.Detailedanalysissoftwareprogramshouldpossessthefunction,AccordingtothesoftwarefunctioncompleteCprogramdesign,andtheapplicationofsoftwarewillKeilCClanguageprogramwritteninassemblylanguagedosimpleexplanation.Thesystemcanautomaticallyaccordingtothesun,andhighprecision,simplestructure,lowcost,nomanualintervention,especiallysuitableforthesituationisunattended,effectivelyimprovetheutilizationofsolarenergy,andhasgoodapplicationvalue.keywords:Photoelectricdetection;Automatictrackingthesun;Trackingdarkbarrels目录TOC\o"1-5"\h\z1绪论 1\o"CurrentDocument"课题意义 1\o"CurrentDocument"2方案论证 2\o"CurrentDocument"2.1基本设计思路 2\o"CurrentDocument"2.2数据采集部分设计思路 4\o"CurrentDocument"2.3单片机部分设计思路 6\o"CurrentDocument"3电机拖动及调速方法分析 11\o"CurrentDocument"3.1电动机的机械特性 11\o"CurrentDocument"3.1.1机械特性方程 11\o"CurrentDocument"3.1.2固有机械特性 12\o"CurrentDocument"3.2他励直流电动机的制动 15\o"CurrentDocument"3.2.1能耗制动 16\o"CurrentDocument"3.2.2反接制动 17\o"CurrentDocument"3.3他励直流电动机的调速 19\o"CurrentDocument"3.3.1电枢串电阻 19\o"CurrentDocument"3.3.2降低电源电压 22\o"CurrentDocument"4日光跟踪系统软件设计 244.1主程序设计 24\o"CurrentDocument"4.2中断服务程序设计 28\o"CurrentDocument"4.2.1AT89S52的中断源 28\o"CurrentDocument"4.2.2AT89S52的中断控制寄存器IE 28\o"CurrentDocument"4.2.3定时器/计数器方式寄存器TMOD 29\o"CurrentDocument"4.2.4中断优先控制寄存器IP 30\o"CurrentDocument"4.2.5AT89S52中断系统结构 31\o"CurrentDocument"4.2.6中断服务程序分析 31\o"CurrentDocument"4.3数据采集及日光跟踪程序设计 33\o"CurrentDocument"4.4过热、过压、越线、堵转停车程序设计 35\o"CurrentDocument"4.5C语言程序用汇编语言简单解释 36\o"CurrentDocument"5总结 38\o"CurrentDocument"参考文献 39致谢 错误!未定义书签。\o"CurrentDocument"附录IC语言程序 40\o"CurrentDocument"附录IIC语言程序用汇编语言简单解释 46课题意义太阳能是一种环保可再生新型能源,太阳能能解决能源短缺和环境保护等方面的问题,而且太阳能清洁无污染、取之不尽、用之不竭,我国每年接收到335〜873KJ/cm2,地球每天收到的太阳能约4X1015千瓦时,相当于2.5X108万桶石油,然而现如今太阳能利用率并不高其原因主要是太阳能的,分散性,方向性不稳定性。现如今提高太阳能的利用率组要有以下两种方法:使太阳光永远垂直照射在接收面上(能量积分);提高太阳能的吸收率和转化率。伴随着环境能源等一系列问题的出现,世界上越来越多的国家认识到一个能够持续发展的社会应该是一个既能满足社会需要,而又不危及后代人前途的社会。因此,尽可能多地用洁净能源代替高含碳量的矿物能源,是能源建设应该遵循的原则。随着能源形式的变化,常规能源的贮量日益下降,其价格必然上涨,而控制环境污染也必须增大投资。我国是世界上最大的煤炭生产国和消费国,煤炭约占商品能源消费结构的76%,已成为我国大气污染的主要来源。大力开发新能源和可再生能源的利用技术将成为减少环境污染的重要措施。能源问题是世界性的,向新能源过渡的时期迟早要到来。太阳能利用技术和装置的大量应用,也必然可以制约矿物能源价格的上涨,从长远看来太阳能利用技术太符合“低碳”要求,而“低碳”又是时代赋予的使命,因此太阳能利用技术,也不失为是解决能源问题和可持续发展问题的一种良好途径。就目前来说,人类直接利用太阳能还处于初级阶段,主要有太阳能集热、太阳能热水系统、太阳能暖房、太阳能发电等方式。日光跟踪系统的研究,为充分利用太阳能而立,通过对日光的跟踪提高太阳能的吸收率,从而更充分的利用太阳能,如应用用日光跟踪系统完善太阳能发电,太阳集热等。本课题“日光自动跟踪器系统”正是基于以上所陈诉的意义的基础之上充分的利用太阳这种可再生的高级能源,来满足人们的工作学习等多方面的要求,所以其意义深远性无可否认,其发展程度无可或缺。方案论证基本设计思路本课题采用比较控制实现对日光的自动跟踪。利用光敏二极管在光照时输出电压发生变化的原理,将四个完全相同的光敏二极管管分别放置于跟踪器的东南西北方向边沿处(跟踪器平面结构图如图2.1)如果太阳光垂直照射跟踪桶时,东西(南北)两个光敏二极管接收到的光照强度相同,所以它们的输出完全相等,此时电动机不转动。当太阳光方向与接送板的法线有夹角时,接收光强多的光敏二极管输出电压减小,信号采集电路可以采集到光敏二极管的信号差值,控制电路将此差值转换成控制信号,驱电动机转动,直至两个光敏二极管上的光照强度相同。其优点在于控制较精确,且电路也比较容易实现。

如图2.2所示,检测装置不仅能接收到平行于跟踪暗桶的日光,还能接收到与跟踪暗桶夹角在误差角度(±0.5°)的日光,再由跟踪桶半径为1cm可计算出跟踪暗桶的长度L= 1cm沁114.6cm,tan0.5太阳光太阳光图2.2跟踪暗桶侧面结构图数据采集部分设计思路数据采集主要用到由光敏二极管组成的光电传感器和A/D转换器,其主要是将采集来的信号经过滤波及放大处理再通过A/D转换器,传送给计算机来控制电机动和正反转和停转。从而实现最大效率的利用太阳能。如图2.3所示为光敏二极管组成的最简单的光检测电路,图2.3(a)是二极管输出端为开路方式,其输出电压随入射光量的对数呈线性变化,但容易受温度变化的影响。图2.3(b)是二极管输出端为短路方式.输出电流随入射光量的对数呈线性变化.一般采用输出端短路的工作方式。(a)(b)图2.3简单的光电检测电路光敏二极管加反向偏置,则响应速度可提高几倍以上,响应特性比无偏置电路好,但暗电流比无偏置电路大,由于在日光跟踪测量中,被测信号都比较微弱,暗电流的影响一般都非常明显。本设计待检测信号也是十分微弱的信号,尽量避免干扰是首要任务,所以设计时光敏二级管工作采用无偏置工作模式图2.4是光敏二极管工作在无偏置电路实例,其中图2.4(a)接高阻抗负载.图2.4(b)接低阻抗负载。负载阻抗越高其特性越接近输出端开路方式,负载阻抗越低则越接近输出端短路方式。然而因二极管都是单个使用,所以输出信号极小.一般需要接放大电路。

图2.4光敏二级管无偏置电路由于光敏二极管触发电路产生的信号,需要经过A/D转换电路传输给控制芯片,而A/D转换电路所需电压幅值一般为2V。,输出的电压信号一般还需要继续放大几百倍,因此还需应用主放大电路。其典型放大电路如图2.5所示R1R2++图2.5典型放大电路该主放大器的放大倍数为A=l+R2/R3,其中R2为反馈电阻。为了后续电路的正常工作,设计时需要设定合理的R2和R1值,以便得到所需幅值的输出电R2压。即有U=AUi=(1+ )Ui

单片机部分设计思路单片机的软件设计采用模块化设计的方法,主要分为如下几个软件模块:电机控制模块、A/D转换模块。计算机系统框图如图2.6计算机系统亠V亠V或门输岀锁存器输入锁存器输岀驱动器输岀驱动器可靠性隔离可靠性隔离可靠性隔离故障源图2.6计算机系统框图输岀锁

存器ZJ1ZJ85ZJ9输入锁

存器可靠性

隔离模数转换器功率放大器

计算机系统亠V亠V或门输岀锁存器输入锁存器输岀驱动器输岀驱动器可靠性隔离可靠性隔离可靠性隔离故障源图2.6计算机系统框图输岀锁

存器ZJ1ZJ85ZJ9输入锁

存器可靠性

隔离模数转换器功率放大器电机控制模块主要用AT98S52单片机来实现,AT98S52单片机特点是,8位字长的CPU;可在线ISP编程的8KB片内Flash存储器;256B的片内数据存储器;可编程的32根I/O口线(P0-P3);可编程16位定时计数器;双数据指针DPTR0和DPTR1;具有8个中断源,6个中断矢量,2级优先权的中断系统;可在空闲和掉电两种低功耗方式运行,3级程序锁定位;全双的UART串行通讯口;1个看门狗定时器WDT;具有掉电标志位POF;与MCS-51单片机产品完全兼容。AT89S52引脚图如图2.7T2/P1.0T2EX/P1.1P1.2P1.3P1.4MOSI/P1.5M0SI/P1.6SCK/P1.7RSTRXD/P3.0TXD/P3.1INT0/P3.2INT1/P3.3一一T0/P3.4T1/P3.5WR/P3.6RD/P3.7XTAL2XTAL1GNDAT89S521T2/P1.0T2EX/P1.1P1.2P1.3P1.4MOSI/P1.5M0SI/P1.6SCK/P1.7RSTRXD/P3.0TXD/P3.1INT0/P3.2INT1/P3.3一一T0/P3.4T1/P3.5WR/P3.6RD/P3.7XTAL2XTAL1GNDAT89S5214023933843753663573483393210311130122913281427152616251724182319222021VccP0.0/AD0P0.1/AD1P0.2/AD2P0.3/AD3P0.4/AD4P0.5/AD5P0.6/AD6P0.7AD7EA/VppALEPSENP2.7/A15P2.6/A14P2.5/A13P2.4/A12P2.3/A11P2.2/A10P2.1/A9P2.0/A8图2.7AT89S52引脚图A/D转换模块用ADC0809芯片,ADC0809是CMOS单片型逐次逼近式A/D转换器,它由8路模拟开关、地址锁存与译码器、比较器、8位开关树型D/A转换器、逐次逼近。ADC0809芯片有28条引脚,采用双列直插式封装,如图2.8所示。引脚功能如下IN0〜IN7:8路模拟量输入端。2-1〜2-8:8位数字量输出端。ADDA、ADDB、ADDC:3位地址输入线,用于选通8路模拟输入中的一路ALE:地址锁存允许信号,输入,高电平有效。START:A/D转换启动脉冲输入端,输入一个正脉冲(至少100ns宽)使其启动(脉冲上升沿使0809复位,下降沿启动A/D转换)。EOC:A/D转换结束信号,输出,当A/D转换结束时,此端输出一个高电平(转换期间一直为低电平)。OE:数据输出允许信号,输入,高电平有效。当A/D转换结束时,此端输入一个高电平,才能打开输出三态门,输出数字量。CLK:时钟脉冲输入端。要求时钟频率不高于640KHZ。REF(+)、REF(-):基准电压。Vcc:电源,单一+5V。GND:地。——ADDA—ADEJ11A/D转换器大致可以分为三类:一是双积分A/D转换器,优点是精度高,抗干扰性好,价格便宜,但速度慢;二是逐次逼近法A/D转换器,精度、速度、价格适中;三是并行A/D转换器,速度快,但价格昂贵。日光跟踪系统用到的A/D转换芯片是ADC0809,它是一个8位8通道逐次逼近的A/D转换器,每采集一次数据一般需要lOOys。转换过程是由“START”引脚上接收到启动信号开始,转换完成后,ADC0809自动产生转换完成信号“EOC”,此信号可以用来通知单片机取走转换好的数字量。单片机可以采用中断方式、查询方式或软件延时等方法采集数据。中断方式是将“EOC”信号接在单片机外部中断请求引脚上,当A/D转换完成后自动申请中断,单片机利用外部中断处理输入转换好的数据。查询方式是将“EOC”信号接在单片机的I/O引脚上,通过软件查询该I/O引脚来确定转换是否完成。软件延时的方法不连接“EOC”信号,由于大概知道A/D转换时间的数量级,通过软件设置一段较长的等待时间,这段时间足够A/D转换完成,然后输入转换后的数据。比较起来,中断和查询方式的实时性较好,中断方式对CPU的利用率最高。图2.9为ADC0809模数转换电路由于ADC0809具有输出三态锁存器,数据输出引脚D7-D0可直接与数据总线相连,地址译码引脚A,B,C分别与总线AO,A1,A2相连,以选通IN0-IN7中的一个通道。

图2.9ADC0809与AT89S52接口ADC0809与AT89S52的中断方式接只需将ADC0809的EOC脚经过一个非门接到AT89S52的INT1上,当转换结束时EOC发出一个正脉冲,经过非门后向单片机申请中断,单片机响应中断请求,由外部中断1的中断服务程序读A/D转换的结果,并启动ADC0809下一次转换。

电机拖动及调速方法分析电动机的机械特性电动机的机械特性值指电动机的转速n与转矩T的关系n=J(T)。机械特性是电动机力学性能的主要表现,它与运动方程相联系,将决定拖动系统稳定运行及过渡过程的工作情况。机械特性中转矩T是电磁转矩,它与电动机轴上的输出转矩T差一个空载d转矩T,当电动机工作在电动状态时T—T+T。在运动方程中,将T作为负0d0z载转矩则T应为轴上拖动转矩即T,它与机械特性上的电磁转矩不同,比后者d小T,在将T视作电磁转矩,则T为负载转矩与空载转矩T之和,由于一般情0z0况下空载转矩T占转矩TA或T之比较小,在一般工程计算中可以略去T二粗略0d地认为电磁转矩T等于输出转矩T。d机械特性方程直流电机基本方程:电磁转矩T—电磁转矩T—C©ITa(C二pZ.60a)感应电动势n0E=感应电动势n0E=C©nae电枢电路电动势平衡方程U-1Rn—a

C©e由基本方程得:直流电机机械特性方程URn直流电机机械特性方程URn—一一C©CC©2eetC—9.55C)Ten—CTChT中当T=0时n—右称为理想空载转速即(如图eet e

图3.1直流电机机械特性固有机械特性当电动机电压U及磁通o均为额定值U及o,电枢没有串联电阻时的机械特nN性称为固有机械特性,其方程为n=鼻- RT,固有机械特性如图3.2所c0cc02eN eTN示,由于R较小,直流电机的固有特性较硬。人为机械特性可以改变电动机参a数的获得方法。1电枢串电阻时的人为机械特性电枢串电阻R时U=U,©=©,R=R+R,人为机械特性方程为:Q N N aQUR+Rn= ———a 4TC©CC©2eN eTN如图3.3中线1为固有机械特性,线2和线3为电枢串电阻为R,RQ1 Q2(R>R)时的人为机械特性。Q1Q2根据图3.3和电枢串电阻时的人为机械特性方程可见,在一定的负载转矩(例如在额定转矩T)下,转速降An随串联电阻的加大而增加。N2改变电压时的人为机械特性改变电压时电枢不串联电阻R=0,©=©,人为机械特性方程为:QN a—CC©TN如图3-4中线1为额定电压时的机械特性线2和线3电压为U和U时的改变电12压的人为机械特性。(U>U>U)N12

图3.4图3.4直流电机电压不同时的人为机械特性由改变电压时的特性方程与固有特性方程比较和图3.4不难看出,改变电压时,n随电压的降低而降低,特性的斜率则保持不变。一般电动机的电压向低0于额定电压方向改变,因此人为机械特性是几根平行线,它们低于固有特性曲线,又与机械特性平行。3.减弱电动机磁通时的人为机械特性一般直流电动机在额定磁通下运行时,电机已接近饱和。改变磁通实际上是减弱励磁。在励磁回路内串联电阻rQ,并变化其阻值,即使磁通©减弱,并在低于额定磁通0时调节©的大小(如图3.5)。N图3.5直流他励电动机电路原理

图3.5直流他励电动机电路原理U=U电枢不串电阻,减弱磁通时人为机械特性方程为:NURn= —- a-—c©cce2eNeTNn=n=J(I)特性方程为:aURn= —— a-—cecc©eNeTN由上述两式可见当e减弱时,理想空载转速n=UCe加大,短路(堵转)0 Ne电流I=UR=常值,而短路转矩T将随着e减弱而降低(T=CeI)k N'a k k Tke为不同数值时的人为机械特性n=J(T)如图3.6。(eN>e2>eN)如图3.6e不同时的n如图3.6e不同时的n=J(T)曲线他励直流电动机的制动他励直流电动机制动运转状态,其拖动时转矩T与转速n的方向相反,此时电动机变成发电机吸收机械能并转化为电能。制动的目的是使电力拖动系统停车,对于位能负载的工作机构,用制动可获得稳定的下降速度。使电力拖动系统停车最简单的方法是断开电枢电源,系统会慢下来最后停车,这种方法一般较慢,特别是空载停车更需要较长的时间。通常可以使用电器制动(能耗制动,反接制动,回馈制动)的方法实现停下。能耗制动由能耗制动的特点U=0,R二R+R,得能耗制动机械特性方程为:azR+Rn二一一azTCC02eT由特性方程可见,n为正时,T为负;n=0时,T=0,所有机械特性位于第二象限,并通过坐标原点(如图3.7)。特性斜率为B二R+R/'(CC02),与电枢a Z eT

如果制动运行时转速为n,开始制动时,n不变,工作点平移到能耗制动特11性上,因而制动转矩T为负,在(-T,-T)的作用下,电动机减速,工作点11z愈小,沿特性下降,制动转矩逐渐减小,直到0为止,电动机停车。(制动电阻R则机械特性愈平T绝对值愈大,制动愈快)z1制动电阻R愈小,则机械特性愈平,T的绝对值愈大,制动愈快。但R又Z1Z不能太小否则I及T将超过允许值,如按最大电流不超过21来选择R则可近11NZ—R—R> 4一RQ21 aN似认为R+R> 沁—na。 21 21NN反接制动反接制动可以用两种方法实现,即转速反向(用于位能负载)与电枢反接(一般用于反作用负载)。1.转速反向的反接制动如图3.8表示电动机串较大电阻R时的人为机械特性,特性在第4象限内Q的一段(图中实线表示)即为转速反向的反接制动特性,此时T为正,n为负。由特性可见随着转速(在反向),转矩的增加T也加大,直到T与T相等时,转z速稳定,获得稳定的下放速度。图3.8图3.8转速反向的反接制动机械特性在转速反向的反接制动状态下,由于n为负,感应电动势E的方向与电动a状态时相反。电枢电路的电压平衡方程式为I(R+R)二U-(-E)二U+E,aa Q a a由此可见,在额定转速n时,U+E可达到近于2U的数值,此时R必须较大,N a N Q以限制电枢电流。1.电枢反接的反接制动如图3.9所示,如电动机在制动前工作在电动状态,在固有特性的A点运转,电枢反接,转矩瞬时变为-T(T的大小决定R的数值),由于,转速不能突变,BB Qn=n电动机工作的转移到人为机械特性BCDE的B点,B点的T为负,n为正,BA在第二象限。直线在第二象限的一段BC即为反接制动特性。如果反接制动时最大电流不超过2I,则应使NR+R>^—N N〜N= N 即R> 4—R,与能耗制动R > 4一RaQ 2I 2I I Q2I a z2I aN N N N N比较可见,R比能耗制动时的R差不多大一倍,特性比能耗制动陡的多,图3.9Qz中BC段的制动转矩都比较大,因此比能耗制动时制动作用更强烈,制动更快。他励直流电动机的调速为了使跟踪系统已最合理的速度进行跟踪日光,要求在不同的情况下以不同的速度工作,就要对电动机进行调速。电枢串电阻电枢串电阻后,在电阻上流过电枢电流产生压降,电枢端电压因之减低。电枢端电压的数值受负载影响很大,由图3.10可见转速受负载的影响也很大,在空载时几乎没有调速作用。负载转矩T下电枢串联不同的电阻可得不同转速。由Z图3.10可知n>n>n>n)12 3 4RR—3图3.10电枢串联电阻调速当电枢电阻由R突增至R」寸,n及E一开始不能突变,I及T减小,图3.101aa中,运行点即在相同的转速下由a点过渡到b,转矩由T下降到T',T=T'<T,dn/dt为负,系统减速。随着n及E的下降,I及T不断增高I二(U-E)R,a a a a 1T-T仍为负,系统继续减速,但减速的速度在不断减小,(因T-T|在减小),

直到n降到n时,T增至T,转矩新的平衡又建立,系统以较低的转速n稳定2z2运行,调速过程终了。分析电枢串电阻调速的效率如下:电动机由电网吸收的功率P为P=UI11损耗AP为损耗AP为AP=12R=UI-EI=UIa a aaE——aUE C恤(1-―)=P(1-一-U1C恤e0n-n)=p(-° )。1n0P—AP n—nn效率耳为耳=—i =1——电动机带动额定恒转矩负载,Pn10电动机带动额定恒转矩负载,=I,P=P=UI为定值,随着n的N11NNN降低,损耗增大效率降低。当n降低,损耗增大效率降低。当nPn时,AP=宁“皿'即转速调到弓时,由电网吸收功率的一半消耗在电枢回路总电阻上,效率仅为50%。可见电枢串电阻调速方法很不经济,但其方法非常简单,控制设备部复杂,非常适合与日光跟踪器这种小型系统。由于日光跟踪系统电机多数时间为低速运转,机械特性较软,就需提高机械特性的硬度,在串电阻R的同时,再在电枢两端并联电阻R,如图3.11a,等Q B效电源法得出等效电路如图3.11b。

RRRBUR+BG从等效电路可得出机械特性方程为n=Rg+Rb - Rb[RT=n-卩TC© CC©2 0e eT通过机械特性方程可绘出机械特性曲线如图3.12如图3.12虚线画出固有特性及电枢不并联电阻R仅有串联电阻R时的人B Q为机械特性,与只串联J的特性比较:理想空载转速由n二U/(C0)变为n/<n,而斜率由B二(R+R)/(CC02)变为旷<0,由此可见串并联电阻使特性的理想aQeT空载转速降低,而硬度则提高了,但此时仍不能平滑调速,低速的电能损耗仍然较大。降低电源电压U RIR降低电源电压的调速系统特性方程为n二冬-^o-RaT式中U就是发电c0cc02oe eT机的感应电动势E,及U=E,R为整流装置内阻。改变U可得一组平行的G0G00特性(如图3.13),其n与U成正比,并具有相同的斜率0二(R+R)/(CC02),0 0 0aeT如采用反馈控制,特性的硬度可再提高,从而获得调速范围广,平滑性能高的性能优良的调速系统。这样的缺点是设备投资过大。因为日光跟踪系统是一个小型系统调速方法应以方便简单切经济考虑对象,所以调速选择电枢串电阻的方法。图3.13降低电源电压调速时的机械特性23日光跟踪系统软件设计软件设计一般按下列步骤进行:先分析系统对软件的要求;然后在此基础上进行软件总体设计,包括程序整体结构设计和对程序进行模块化设计,接着画出每一个专用模块的详细流程图,并选择合适的语言编写程序。4.1主程序设计日光跟踪控制主程序的设计应考虑以下问题:(1)光电检测和A/D转换;(2)电机正反转控制程序(3)越限报警和处理;(4)实现过压停车、过热停车、堵转停车。主程序流程图如图4.1所示图4.1主程序流程图通过上述流程图分析编写程序主函数如下:voidmain(void)//主函数{TMOD=0x01;//T0工作于方式1TH0=0xfc;TL0=0x17;//0.001秒触发一次中断ETO=1;〃允许TO中断EA=1;〃允许全局中断TR0=1;//启动TOSENSOR4=1;SENSOR5=1;while(1){while(AdjustFlag)//1O分钟调整一次姿态{// 调整X轴 while(AdjustXFlag){XMotorDIRFlag=Oxff;while(AdjustXFlag){if(GetSensor1Flag){

GetSensor1Flag=O;//--LastDataSensor1=DataSensor1;GetSensor1();if(DataSensor1>LastDataSensor1){XMotorOKFlag=Oxff;}if(DataSensor1<LastDataSensor1){if(XMotorOKFlag){XMotorOKFlag=OxOO;//--AdjustXFlag=OxOO;}else{XMotorDIRFlag=~XMotorDIRFlagif(XMotorDIRFlag)XMotorForward();elseXMotorBackward();//--XMotorStop();AdjustYFlag=0xff;// 调整X轴结束 // 调整Y轴 while(AdjustYFlag)YMotorDIRFlag=0xff;while(AdjustYFlag)if(GetSensor1Flag){GetSensor1Flag=0;//--LastDataSensor1=DataSensor1;GetSensor1();if(DataSensor1>LastDataSensor1){YMotorOKFlag=0xff;}if(DataSensor1<LastDataSensor1){if(YMotorOKFlag){YMotorOKFlag=0x00;//--AdjustYFlag=0x00;}else{YMotorDIRFlag=~YMotorDIRFlag}}if(XMotorDIRFlag){YMotorForward();}else{YMotorBackward();}}}

//--YMotorStop();AdjustFlag=0x00;}//----调整Y轴结束----}if(GetSensor1Flag){GetSensor1Flag=0;//--LastDataSensor1=DataSensor1;GetSensor1();}XMotorStop();YMotorStop();}}中断服务程序设计AT89S52的中断系统共有8个中断源,6个中断矢量,两级中断优先级,可实现两级嵌套,可通过软件来屏蔽或允许相应的中断请求。AT89S52的中断源AT89S52有两个外部中断源,INTO和INT1分别对应两个矢量。INTO:外部中0请求中断输入引脚(P3.2引脚),低电平或下降沿有效。INTO中断有效,则置位中断请求标志位IEO(TCON.1).CPU在每个机械周期的S5P2状态采样IE0标志位,当条件满足,则响应中断请求。中断响应后,转向对应的中断矢量,执行中断服务程序,并由硬件自动复位IE0标志位。INT1:外部中断1请求输入中断引脚(P3.3引脚),低电平下降沿有效。其功能与操作同INTO.AT89S52的中断控制寄存器IEAT89S52的中断均属可屏蔽中断,即通过软件对特殊功能寄存器IE的设置,实现对各中断源的中断请求允许或屏蔽的控制。中断控制寄存器IE各位含义如下。表1中断控制寄存器IE各位含义表IE.7IE.6IE.5IE.4IE.3IE.2IE.1IE.OIEEAET2ESET1EX1ETOEXO位地址AFH9EHADHACHABHAAHA9HA8HEA是CPU中断总允许位。EA=1,CPU开放中断;EA=O,CPU屏蔽所有的中断请求。ES是串行中断允许位。ES=1,允许串行口中断;ES=O,禁止串行口中断。ET1是定时器T1的溢出中断允许位。ET1=1时允许T1溢出中断;反之依然。EX1是外部中断INT1中断允许位。EX1=1时,允许外部中断1中断反之依然。ET0是定时计数器T0的溢出中断允许位。EX0是外部中断INTO允许位。4.2.3定时器/计数器方式寄存器TMOD方式寄存器TMOD是一个逐位定义的8位寄存器,但只能使用字节寻址的寄存器,字节地址为89H。其格式为:表2定时器/计数器方式寄存器TMOD格式D7D6D5D4D3D2D1DOGATEC/TM1M0GATEC/TM1M定时器1定数器0其中低四位定义定时器/计数器TO,高四位定义定时器/计数器T1各位的说明:GATE——门控制。GATE=1时,由外部中断引脚INTO、INT1和控制寄存器的TRO,TR1来启动定时器。当INTO引脚为高电平时TRO置位,启动定时器TO;当INT1引脚为高电平时TR1置位,启动定时器T1。GATE=O时,仅由TRO,TR1置位分别启动定时器TO、T1。C/T——功能选择位置位时选择计数功能,清零时选择定时功能。MO、M1——方式选择功能由于有2位,因此有4种工作方式M1MO工作方式计数器模式TMOD(设置定时器模式)00方式013位计数器TMOD=0x0001方式116位计数器TMOD=0x0110方式2自动重装8位计数器TMOD=0x0211方式3T0分为2个8位独立计数器,T1为无中断重装8位计数器TMOD=0x03中断优先控制寄存器IPAT89S52的中断设有两个优先级,每个中断源均可通过软件对中断优先寄存器IP中的对应位进行设置,编程为高优先级或低优先级,置1为高优先级,清0为低优先级。正在执行的低优先级服务程序可以被高优先级中断源的中断请求所中断,但不能被同级或低优先级的中断源中断请求所中断;正在执行的高优先级中断服务程序不能被任何中断源的中断请求所中断。两个或两个以上的中断源同时请求中断时,CPU只响应优先级高的中断请求。中断源优先级设定寄存器IP的地址为0B8H,单片机具有两个中断优先级,每个中断源可编程为高优先级中断或低优先级中断,并可实现二级中断嵌套。其功能如下表:表3IP控制器的格式D7D6D5D4D3D2D1DOIP一一PT2PSPT1PX1PT0PX0位地址BFHBEHBDHBCHBBHBAHB9HB8HPT2是定时器/计数器T2中断优先控制位。PT2=1,设定定时器T2为高优先级中断;PT2=0,为低优先级。PS是串行中断优先控制位。PS=1,设定串行口为高优先级中断;反之依然。PT1是定时器/计数器T1中断优先控制位。PT1=1,设定定时器T1为高优先级中断;反之依然。PX1是外部中断INT1中断优先控制位。PX1=1,设定外部中断INT1为高优先级中断;反之依然。

PT0是定时器/计数器TO中断优先控制位。PX0是外部中断INTO中断优先控制位。AT89S52复位后,IP低5位全部清0,将所有中断源设置为低优先级中断。AT89S52中断系统结构如图4.2为AT89S52单片机的中断功能示意图。外部中断源INT0、INT1对应两个中断矢量;串行通信接收中断源和发送中断源,经过一个活门,共用同一个中断矢量;定时计数器0和定时计数器1的溢出中断源对应两个中断矢量;定时/计数器2有计数溢出和捕获两种中断源,经过一个或门共用一个中断矢量。硬件間旬碳杵倉询图4.2AT89S52单片机的中断功能示意图硬件間旬碳杵倉询图4.2AT89S52单片机的中断功能示意图1—1/7D=l|_1SCON

中斷标志中断服务程序分析如下面程序TMOD=0x01;//T0工作于方式1TH0=0xfc;/〃写入初始值,初始值可以决定定时多久TL0=0x17;//0.001秒触发一次中断ETO=1;〃允许T0中断(如表1ET0是定时计数器T0的溢出中断允许位。)EA=1;〃允许全局中断TRO=1;〃启动TOT0中断服务程序如下voidTimeO(void)interrupt1using1//TO中断入,1mS发生一次中断{THO=Oxfc;TLO=Ox17; //--Count++;if(Count>1OOO){Count=O;//Cout>1OOOCout清零//--AdjustCount++;if(AdjustCount>6OO){AdjustCount=0;〃AdjustCout>1000Cout清零//--AdjustFlag=Oxff;AdjustXFlag=Oxff;XMotorOKFlag=OxOO;AdjustXFlag=OxOO;XMotorOKFlag=OxOO;}}GetSensor1Count++;if(GetSensor1Count>1OOO){GetSensor1Count=O;//--GetSensor1Flag=0xff;}数据采集及日光跟踪程序设计如图4.3所示,在跟踪日光时先对X进行跟踪当X轴输入达到最大时,证明跟踪暗桶X轴平面以平行于日光(误差0.5°),则开始对Y轴进行跟踪,同理当Y轴输入达到最大值时,跟踪暗桶Y轴平面也平行于日光。由此跟踪暗桶X,Y平面全平行于日光,所以得出跟踪暗桶平行于日光,即跟踪到日光。

图4.3跟踪日光程序流程图采集摄入日光强度程序:voidGetSensorl(void)//采集摄入的日光强度{ALE=l;DelayMS(l0);//延时l0个周期ALE=0;STR=1;//起动A/D转换EOC=1DelayMS(5);STR=0;while(EOC==0){}OE=1;//打开三态数据输出锁存器DelayMS(1);ADDataBus=0xff;DelayMS(10);DataSensorl=ADDataBus;〃采样EOC=0;OE=0;}过热、过压、越线、堵转停车程序设计如图4.4所示为实现过热、过压、越线、堵转等故障时的紧急停车过程图4.4过压、过热、堵转、越线停车流程图4.5C语言程序用汇编语言简单解释KeilC软件介绍KeilC是美国KeilSoftware公司出品的51系列兼容单片机C语言软件开发系统,与汇编相比,C语言在功能上、结构性、可读性、可维护性上有明显的优势,因而易学易用。用过汇编语言后再使用C来开发,体会更加深刻。KeilC软件提供丰富的库函数和功能强大的集成开发调试工具,全Windows界面。另外重要的一点,只要看一下编译后生成的汇编代码,就能体会到KeilC生成的目标代码效率非常之高,多数语句生成的汇编代码很紧凑,容易理解。在开发大型软件时更能体现高级语言的优势。Keil工具包的整体结构,如图4.5所示,其中uVision与Ishell分别是C51forWindows和forDos的集成开发环境(IDE),可以完成编辑、编译、连接、调试、仿真等整个开发流程。开发人员可用IDE本身或其它编辑器编辑C或汇编源文件。然后分别由C51及A51编译器编译生成目标文件(.OBJ)。目标文件可由LIB51创建生成库文件,也可以与库文件一起经L51连接定位生成绝对目标文件(.ABS)。ABS文件由OH51转换成标准的Hex文件,以供调试器dScope51或tScope51使用进行源代码级调试,也可由仿真器使用直接对目标板进行调试,也可以直接写入程序存贮器如EPROM中。图4.5工具包整体结构图C语言程序用汇编语言简单解释见附录II5总结本文研究与设计了日光跟踪系统,并对日光跟踪系统的必要性与可行性进行了分析,本系统由光敏二极管及放大电路组成了光电检测和比较装置(跟踪暗桶),以两台直流电机用电枢串电阻调速的方法来拖动跟踪暗桶,构建了方位角和高度角双轴机械跟踪定位系统,使跟踪暗桶中心线与日光夹角保持(+0.5°至-0.5°),由此组成自动跟踪装置,实现了追踪太阳光的效果,利用VT89S52单片机和A/DC0809芯片,将软、硬件有机地结合起来。本日光自动跟踪系统能对日光进行自动跟踪,应用了太阳辐射与环境亮度的比较,使得该自动跟踪系统的准确性高、可靠性强,能有效的提高太阳能的利用效率。参考文献[1]顾绳谷电机与拖动基础北京机械工业出版社19965[2]齐占庆.机床电气自动控制.北京:机械工业出版社,1987.8[3]张刚毅,彭喜源等.新编MSC-51单片机应用设计.哈尔滨:工业大学出版社,2003:53-80[4]贾伯年.传感器技术.南京:东南大学出版社,2000:239-240[5]赵茂泰.智能仪器原理及应用.电子工业出版社,2004:11-12[6]何立民.单片机应用文集.北京:航空航天大学出版社,2000:45-68高伟.AT89单片机原理及应用[M].北京:国防工业出版社,2008年.蔡朝阳.单片机控制实习与专题制作[M].北京:北京航空航天大学出版社,2006年.杨凌霄.微型计算机原理及应用[M].江苏:中国矿业大学出版社,2004年丁建伟.抢答器电路设计[J].兰州工业高等专科学校学报,2008,(04).胡学海.单片机原理及应用系统设计[M].北京:北京电子工业出版社,2005年.孙育才.《单片微型计算机及其应用》.东南大学出版社.2004[2]沈德金陈粤初.《单片机接口电路与应用程序实例》.北京航天航空大学出版社.1990.潘新民王燕芳.《微型计算机控制技术》.电子工业出版社2003李朝青.单片机原理及接口技术(简明修订版).杭州:北京航空航天大学出版社,1998李广弟.单片机基础[M].北京:北京航空航天大学出版社,1994阎石.数字电子技术基础(第三版).北京:高等教育出版社,1989廖常初.现场总线概述[J].电工技术,1999.附录IC语言程序#include"Reg51.h"#include"intrins.h"#defineADDataBusP1//定义AD数据线sbitALE=P3人0;//定义ADC0809控制口sbitOE=P3A1;sbitEOC=P3A2;sbitSTR=P3A3;// sbitINPUTl=P2A0;〃定义电机控制线sbitEN_A=P2Al;sbitINPUT2=P2A2;sbitINPUT3=P2A3;sbitEN_B=P2A4;sbitINPUT4=P2A5;// sbitSENSOR2=P0A0;〃定义X轴电机正传限位开关输入口sbitSENSOR3=P0A1;〃定义X轴电机反传限位开关输入口机正传限位开关输入口sbitSENSOR5=P0A3;〃定义Y轴电机反传限位开关输入口// 4unsigned charDataSensor1,LastDataSensor1;unsignedcharGetSensor1Flag;unsignedintGetSensor1Count;unsignedcharXMotorDIRFlag;unsignedcharYMotorDIRFlag;unsignedcharSunStrongFlag;unsignedcharXMotorOKFlag;unsignedcharYMotorOKFlag;unsigned charAdjustFlag,AdjustXFlag,AdjustYFlag;unsignedintAdjustCount;unsignedintCount;voidTime0(void)interrupt1using1 //T0中断入,1mS发生一次中断sbitSENSOR4=P0A2;〃定义Y轴电 {TH0=0xfc;voidDelayMS(unsignedintnumber)voidDelayMS(unsignedintnumber)//延时函数{unsignedintcount;for(count=0;count<=number;count++){_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();}}voidGetSensor1(void)//采集摄入的日光强度{ALE=1;DelayMS(10);ALE=0;STR=1;EOC=1;DelayMS(5);STR=0;TL0=0x17;//--Count++;if(Count>1000){Count=0;//--AdjustCount++;if(AdjustCount>600){AdjustCount=0;//--AdjustFlag=0xff;AdjustXFlag=0xff;XMotorOKFlag=0x00;AdjustXFlag=0x00;XMotorOKFlag=0x00;}}//--GetSensor1Count++;if(GetSensor1Count>1000){GetSensor1Count=0;//--GetSensor1Flag=0xff;}}while(EOC==0){}OE=1;DelayMS(1);ADDataBus=0xff;DelayMS(10);DataSensor1=ADDataBus;//采样EOC=0;OE=0;}voidXMotorForward(void)//控制X轴电机正传{INPUT1=1;EN_A=SENSOR2;INPUT2=0;}voidXMotorBackward(void)//控制X轴电机反传{INPUT1=0;EN_A=SENSOR3;INPUT2=1;}voidXMotorStop(void)//控制X轴电机停止{INPUT1=1;EN_A=0;INPUT2=1;}voidYMotorForward(void)//控制轴电机正传{INPUT3=1;EN_B=SENSOR4;INPUT4=0;}voidYMotorBackward(void)//控制轴电机反传{INPUT3=0;EN_B=SENSOR5;INPUT4=1;}voidYMotorStop(void)//控制Y轴电机停止{INPUT3=1;EN_B=0;INPUT4=1;

voidmain(void)//主函数{

//--GetSensor1Flag=0;//--TMOD=0x01;//T0工作于方式1TH0=0xfc;TL0=0x17;//0.001秒触发一次中断ETO=1;〃允许TO中断EA=1;〃允许全局中选TR0=1;//启动TOSENSOR4=1;SENSOR5=1;while(1){while(AdjustFlag)//1O分钟调整一次姿态{// 调整X轴 while(AdjustXFlag){XMotorDIRFlag=Oxff;while(AdjustXFlag){if(GetSensor1Flag)

LastDataSensor1=DataSensor1;GetSensor1();if(DataSensor1>LastDataSensor1){XMotorOKFlag=Oxff;}if(DataSensor1<LastDataSensor1){if(XMotorOKFlag){XMotorOKFlag=OxOO;//--AdjustXFlag=OxOO;}else{XMotorDIRFlag=~XMotorDIRFlagif(XMotorDIRFlag)XMotorForward();elseXMotorBackward();//--XMotorStop();AdjustYFlag=0xff;// 调整X轴结束 // 调整Y轴 while(AdjustYFlag)YMotorDIRFlag=0xff;while(AdjustYFlag)if(GetSensor1Flag){GetSensor1Flag=0;//--LastDataSensor1=DataSensor1;GetSensor1();if(DataSensor1>LastDataSensor1){YMotorOKFlag=0xff;}if(DataSensor1<LastDataSensor1){if(YMotorOKFlag){YMotorOKFlag=0x00;//--AdjustYFlag=0x00;}else{YMotorDIRFlag=~YMotorDIRFlag}}if(XMotorDIRFlag){YMotorForward();}else{YMotorBackward();}}}}

//--YMotorStop();AdjustFlag=0x00;}//----调整Y轴结束----}if(GetSensor1Flag){GetSensor1Flag=0;//--LastDataSensor1=DataSensor1;GetSensor1();}XMotorStop();YMotorStop();}附录IIC语言程序用汇编语言简单解释C:0x0000020180LJMPC:0180126:voidXMotorStop(void)//控制X轴电机停止127:{128:C:0x0003INPUT1=1;D2A0 SETBINPUT1(0xA0.0)129:EN_A=0;C:0x0005C2A1 CLREN_A(0xA0.1)130:INPUT2=1;C:0x0007D2A2 SETBINPUT2(0xA0.2)131:}132:133:voidYMotorForward(void)//控制Y轴电机正传134:{135:INPUT3=1;136:EN_B=SENSOR4;137:INPUT4=0;138:}139:140:voidYMotorBackward(void)//控制Y轴电机反传141:{142:INPUT3=0;143:EN_B=SENSOR5;144:INPUT4=1;145:}146:147:voidYMotorStop(void)//控制Y轴电机停止148:{149:INPUT3=1;150:EN_B=0;151:INPUT4=1;

152:}153:C:0x0009 22 RETC:0x000A 00 NOPC:0x000B0200C6LJMPTime0(C:00C6)154:voidmain(void)//主函数155:{156:TMOD=0x01;//T0工作于方式1C:0x000E 758901MOVTMOD(0x89),#0x01157: TH0=0xfc;C:0x0011758CFCMOVTH0(0x8C),#0xFC158:TL0=0x17;//0.001秒触发一次中断C:0x0014 758A17MOVTL0(0x8A),#AdjustCount(0x17)159: ET0=1;〃允许T0中断C:0x0017D2A9SETBET0(0xA8.1)160: EA=1;〃允许全局中选C:0x0019D2AFSETBEA(0xA8.7)161: TR0=1;〃启动T0162:C:0x001BD28CSETBTR0(0x88.4)163: SENSOR4=1;C:0x001DD2A6SETBSENSOR4(0xA0.6)164: SENSOR5=1;C:0x001FD2A7SETBSENSOR5(0xA0.7)165: while(1)166: {167:while(AdjustFlag)//10分钟调整一次姿

态C:0x0021E516MOVA,AdjustFlag(0x16)C:0x00237003JNZC:0028C:0x00250200B6LJMPC:00B6168:{169:// 调整X轴 170:while(AdjustXFlag)C:0x0028E50FMOVA,AdjustXFlag(0x0F)C:0x002A6043JZC:006F171:{172:XMotorDIRFlag=0xff;C:0x002C7511FFMOVXMotorDIRFlag(0x11),#0xFF173:while(AdjustXFlag)C:0x002FE50FMOVA,AdjustXFlag(0x0F)C:0x00316034JZC:0067174:{175:if(GetSensor1Flag)C:0x0033E513MOVA,GetSensor1Flag(0x13)C:0x003560F8JZC:002F176:{177:GetSensor1Flag=0;178://--179:LastDataSensor1=DataSensor1;180:GetSensor1();C:0x003712012CLCALLL?0051(C:012C)181:if(DataSensor1>LastDataSensor1)C:0x003AE50CMOVA,DataSensor1(0x0C)C:0x003CD3SETBCC:0x003D950ESUBBA,LastDataSensor1(0x0E)C:0x003F4003JCC:0044{182:183:182:XMotorOKFlag=0xff;C:0x00417508FFMOVXMotorOKFlag(0x08),#0xFF185:184:185:C:0x0044E50CMOVA,DataSensor1(0x0C)C:0x0046C3CLRCC:0x0047950ESUBB}if(DataSensor1<LastDataSensor1)C:0x0049C:0059186:{187:if(XMotorOKFlag)C:0x004BA,XMotorOKFlag(0C:0x004D500EJNCE508x08)6007MOVJZA,LastDataSensor1(0x0E)C:0056{188:189:

188:XMotorOKFlag=0x00;190://--C:0x004F E4AC:0x0050 F508XMotorOKFlag(0x08),A191:AdjustXFlag=0x00;C:0x0052F50FCLRMOVMOVAdjustXFlag(0x0F),ACLRMOVMOV}193:elseC:0x00548003SJMPC:0059194:{195:XMotorDIRFlag=~XMotorDIRFlag;C:0x00566311FFXRLXMotorDIRFlag(0x11),#0xFF196:197:}198:if(XMotorDIRFlag)C:0x0059E511A,XMotorDIRFlag(0x11)C:0x005B6005C:0062199:{200:XMotorForward();C:0x005D12018CXMotorForward(C:018C)MOVJZLCALLMOVJZLCALL202:elseC:0x006080CDC:002F203:{204:XMotorBackward();C:0x0062120195XMotorBackward(C:0195)205:}206:}207:}208://--C:0x006580C8C:002F209:XMotorStop();C:0x0067120003XMotorStop(C:0003)210:AdjustYFlag=0xff;C:0x006A7510FFAdjustYFlag(0x10),#0xFF211:212:// 调整X轴结束 213:// 调整Y轴 C:0x006D80B9C:0028214:while(AdjustYFlag)C:0x006FE510SJMPLCALLSJMPSJMPLCALLSJMPLCALLMOV}SJMPMOVC:0x007160AEJZC:0021215:{216:YMotorDIRFlag=0xff;C:0x00737512FFMOVYMotorDIRFlag(0x12),#0xFF217:while(AdjustYFlag)C:0x0076E510MOVA,AdjustYFlag(0x10)C:0x00786034JZC:00AE218:{219:if(GetSensor1Flag)C:0x007AE513MOVA,GetSensor1Flag(0x13)C:0x007C60F8JZC:0076220:{221:GetSensor1Flag=0;222://--223:LastDataSensor1=DataSensor1;224:GetSensor1();C:0x007E12012CLCALLL?0051(C:012C)225:if(DataSensor1>LastDataSensor1)C:0x0081E50CMOVA,DataSensor1(0x0C)C:0x0083 D3 SETBCC:0x0084 950E SUBBA,LastDataSensor1(0x0E)C:0x00864003JCC:008B226:{227:YMotorOKFlag=0xff;C:0x00887509FFMOVYMotorOKFlag(0x09),#0xFF228:}229:if(DataSensor1<LastDataSensor1)C:0x008B E50C MOVA,DataSensor1(0x0C)C:0x008D C3 CLRCC:0x008E 950E SUBBA,LastDataSensor1(0x0E)C:0x0090 500EJNCC:00A0230:{231:if(YMotorOKFlag)C:0x0092E509MOVA,YMotorOKFlag(0x09)C:0x00946007JZC:009D232:{233:YMotorOKFlag=0x00;234://--C:0x0096 E4 CLRAC:0x0097 F509 MOVYMotorOKFlag(0x09),A235:AdjustYFlag=0x00;C:0x0099F510MOVAdjustYFlag(0x10),A236:}237:elseC:0x009B8003SJMPC:00A0238:{239:YMotorDIRFlag=~YMotorDIRFlag;C:0x009D6312FFXRLYMotorDIRFlag(0x12),#0xFF240:}241:}242:if(XMotorDIRFlag)C:0x00A0E511MOVA,XMotorDIRFlag(0x11)C:0x00A26005JZC:00A9243:{244:YMotorForward();C:0x00A412019ELCALLYMotorForward(C:019E)245:}246:elseC:0x00A780CDSJMPC:0076247:{248:YMotorBackward();C:0x00A91201A7LCALLYMotorBackward(C:01A7)249:}250:}251:}252://--C:0x00AC80C8SJMPC:0076253:YMotorStop();C:0x00AE1201B0LCALLYMotorStop(C:01B0)254:AdjustFlag=0x00;C:0x00B1 E4 CLRAC:0x00B2 F516 MOVAdjustFlag(0x16),A255:}256:// 调整Y轴结束 C:0x00B480B9SJMPC:006F257:}258:if(GetSensor1Flag)C:0x00B6E513MOVA,GetSensor1Flag(0x13)C:0x00B86003JZC:00BD259:{260:GetSensor1Flag=0;261://--262:LastDataSensor1=DataSensor1;263:GetSensor1();C:0x00BA12012CLCALLL?0051(C:012C)264:}A,#0x03265:C:0x00DF402CJCXMotorStop();C:010DC:0x00BD120003LCALL49:{XMotorStop(C:0003)50:266:Count=0;YMotorStop();51://--C:0x00C01201B0LCALLC:0x00E1750A00MOVYMotorStop(C:01B0)Count(0x0A),#0x00267:}C:0x00E4750B00MOVC:0x00C3020021LJMP0x0B,#0x00C:002152:42:voidTimeO(void)interruptAdjustCount++;1using1//TO中断入,ImS发C:0x00E70518INC生一次中断0x1843:{C:0x00E9E518MOVC:0x00C6COEOPUSHA,0x18ACC(0xE0)C:0x00EB7002JNZC:0x00C8CODOPUSHC:00EFPSW(0xD0)C:0x00ED0517INC44:TH0=0xfc;AdjustCount(0x17)C:0x00CA758CFCMOV53:TH0(0x8C),#0xFCif(AdjustCount>600)45:TL0=0xl7;C:0x00EFD3SETB46://--CC:0x00CD758Al7MOVC:0x00F09458SUBBTL0(0x8A),#AdjustCount(0x17)A,#0x5847:Count++;C:0x00F2E517MOVC:0x00D0O5OBINCA,AdjustCount(0x17)0x0BC:0x00F49402SUBBC:0x00D2E5OBMOVA,#0x02A,0x0BC:0x00F64015JCC:0x00D47OO2JNZC:010DC:00D854:{C:0x00D6O5OAINC55:Count(0x0A)AdjustCount=0;48:if(Count>1000)56:C:0x00D8D3SETB//--CC:0x00F8751700MOVC:0x00D994E8SUBBAdjustCount(0x17),#0x00A,#0xE8C:0x00FB751800MOVC:0x00DBE5OAMOV0x18,#0x00A,Count(0x0A)57:C:0x00DD94O3SUBBAdjustFlag=0xff;C:0x00FE7516FFMOVAdjustFlag(0x16),#0xFF58:AdjustXFlag=0xff;C:0x0101750FFFMOVAdjustXFlag(0x0F),#0xFF59:XMotorOKFlag=0x00;C:0x0104750800MOVXMotorOKFlag(0x08),#0x0060:AdjustXFlag=0x00;C:0x0107750F00MOVAdjustXFlag(0x0F),#0x0061:XMotorOKFlag=0x00;C:0x010A750800MOVXMotorOKFlag(0x08),#

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论