基于单片机的多路模拟输出及通信设计论文_第1页
基于单片机的多路模拟输出及通信设计论文_第2页
基于单片机的多路模拟输出及通信设计论文_第3页
基于单片机的多路模拟输出及通信设计论文_第4页
基于单片机的多路模拟输出及通信设计论文_第5页
已阅读5页,还剩29页未读 继续免费阅读

下载本文档

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

文档简介

摘要模拟信号的输出是生产过程中非常重要的一个环节,它直接影响到控制系统性能。采用上位机对系统进行控制是一个工业生产中经常遇到的问题,采用上位机通过RS-485控制单片机不仅具有控制方便、操作简单等优点,而且可以在节约操作成本的同时大幅度的提高控制安全。整个系统的电路结构简单,可靠性能高。本文着重介绍了该系统的硬件设计方法。本设计是设计一个8路的模拟量输出系统,外部信号由RS-485通信传送给控制器作为控制的依据,决定每路模拟量输出通道输出的大小。本设计要求输出4-20mA电流。精度要求做到1%。因此本设计采用的单片机是AT80C51,只所以采用51单片机是因为该单片机在软件编写时,用C语言编写比较的灵活,价格便宜。采用的DA芯片是DAC0832,DAC0832的转换精度可以做到1%。关键词:D/A,单片机,异步串行通信ABSTRACTTheoutputoftheanalogsignalisveryimportantfortheproductionprocess,whichdirectlyaffectsthecontrolsystemperformance.TheuseofPCcontrolsystemisoftenencounteredinanindustrialproductionproblems,theuseofPCcontrolviaRS-485chipisnotonlyeasytocontrol,butalsocansavesubstantialoperatingcostswhileimprovingcontrolsecurity.Thestructureofthewholesystemissimple,ithashighreliability.Thisarticlehighlightsthesystem'shardwaredesign.Thispaperistodesignan8-wayanalogoutputsystem,receivinganexternalsignal,istheexternalsignalthedecisionofeachanalogoutputchannel.TheexternalsignaltransmittedbytheRS-485communicationstothecontrollerasthecontrolbasis.Thedesignwhichoutputis4-20mAcurrentistoachieve1%accuracy.Therefore,amicrocontrollerwhichisusedbythisdesignistheAT80C51,becausetheuseof51single-chipmicrocontrollerinsoftwaredevelopmentwhencomparedwiththeClanguageflexibleandcheaperpricesisverygood.DAchipwhichweuseisDAC0832,DAC0832candotheconversionaccuracyof1%.KEYWORDS:D/A,microcomputer,asynchronousserialcommunication目录摘要 IABSTRACT I第1章绪论 11.1课题背景 11.2研究的意义 11.3研究的对象 1第2章总体方案设计 22.1系统总体设计 22.2本系统工作流程 2第3章硬件设计 43.1AT80C51功能简介 43.2CPU最小系统设计 43.2.1晶振原理设计 53.2.2复位电路设计: 63.3单片机与DAC0832接口的设计 83.3.1DAC0832的功能简介 83.3.2DAC0832的工作原理 83.3.3具体接口设计 103.3.4输出电路设计 113.4单片机串口通信设计 123.4.1RS-485收发器介绍 133.4.2RS-485通信模块设计 143.5电源模块 16第4章软件部分 194.1主程序设计 194.2DA转换程序设计 204.3通信设置 204.3.1 串口控制寄存器SCON的设置 204.3.2定时器内部主要寄存器 214.3.3波特率计算 224.4通信程序流程图 22第5章总结与展望 265.1总结 265.2展望 26致谢 27参考文献 28第1章绪论1.1课题背景随着单片机技术的迅速兴起与蓬勃发展,其稳定、安全、高效、经济等优点十分突出,所以其应用也十分广泛。单片机已经无处不在、与我们生活息息相关,并且渗透到生活的方方面面。所以单片机在工业中应用中,可以极大地提高工业设备的智能化、数据处理能力和处理效率。本课题是单片机系统应用课题,是针对工业数据检测与控制系统的常用模块设计,具有普遍的使用价值,有助于对单片机系统的开发做进一步研究,本课题是一实践课题,要求运用单片机系统设计具有串行通信功能的多路模拟信号输出模块,上位机可通过串行总线对单片机输入控制信号,对它进行远距离的多路控制,大大节约了成本,提高了利用率。特别在现在工业生产和生活中带来了很多便利。1.2研究的意义电流是一个非常重要的控制量,因此对用电流为控制量的研究的意义就越来越大。多路模拟信号输出和通信系统在工业生产、科学研究和人们的生活领域中,得到了广泛应用。在工业生产过程中,很多时候都需要对现场仪表进行严格的控制,以使得生产能够顺利的进行,产品的质量才能够得到充分的保证。单片机广泛适用于工业现场,过程控制,智能控制仪表及状态检测等各个方面,单片机微型计算机原理及接口技术是机电,电子信息及控制技术相关专业的一门重要专业课程。本课题是单片机系统应用课题,是针对工业数据检测与控制系统的常用模块设计,具有普遍的使用价值,有助于对单片机系统的开发做进一步研究。1.3研究的对象本设计的研究对象主要是基于单片机的数字信号到模拟信号的转换,即单片机于DA芯片接口的研究和单片机和上位机的数据通信。主要采用单片机是AT08C51,采用的数模装换器是DAC芯片DAC0832,采用的是RS-485通信。第2章总体方案设计2.1系统总体设计本章主要内容是论述基于51单片机的多路模拟信号输出及通信系统的总体设计以及方案论证。单片机接受上位机控制信号并控制哪路去完成数字信号到模拟信号的转换。本系统由单片机AT08C51、D/A转换模块DAC0832、电源系统单元、串行通信单元RS-485、上位机等组成。使用的软件有MAPLAB,串口助手软件等。总体设计框图如图2.1所示。单片机串口通信单片机串口通信晶振电路复位电路3-8译码器D/A转换模块上位机数据总线图2.1系统总体设计2.2本系统工作流程系统的工作流程如图2.2所示。系统上电初始化上位机通过485传输控制信号系统上电初始化上位机通过485传输控制信号单片机对信号处理数模转换出模拟信号模拟信号处理图2.2系统工作流程单片机:该部分的功能不仅包括向DA转换器写入各种控制命令、读取上位机传输数据、数据处理。单片机是整个系统的控制核心及数据处理核心。485芯片:本部分的主要功能是完成单片机与上位机的通信,作用就像是单片机和上位机之间的桥梁,上位机通过它对系统可实行远程控制。D/A转换:本部分将单片机的数字信号转换成模拟信号。三-八译码器:单片机通过它实现多路模拟信号输出。第3章硬件设计3.1AT80C51功能简介方案一:采用ATMEL公司生产的AT80C51系列的单片机作为主控制器。其特点是支持ISP在线可编程写入技术。串行写入、其频率高达33MHz,故其速度更快、内部集成看门狗计时器,不再需要像80C51那样外接看门狗计时器单元电路,稳定性更好。AT80C51是一款高性能、低功耗8位单片机,片内含8kBytesISP(In-systemprogrammable)的可反复擦写1000次的Flash只读程序存储器。AT方案二:采用ATMEL公司ATmega系列等高档八位单片机作为本系统控制核心。这一类高档单片机最显著的特点就是功能全,如空间更大的FLASH和SRAM存储器、双串口、更多的硬件定时器资源等。但是其价格往往比普通单片机贵。根据系统设计要求和资源预算,并且考虑系统成本,为了使本系统性价比达到更高,决定选用方案一,即AT80C51单片机作为本系统控制核心模块。3.2CPU最小系统设计单片机是整个系统的核心,在本设计中选用8位微处理器AT89C51,该微处理器是一种CMOS工艺的低功耗、高性能8位嵌入式微控制器。该器件与MCS-51系列的同类产品(如80C51等)在指令系统及引脚上完全兼容。微处理器具有8K可写/擦1000次的Flash内部程序存储器,对系统开发过程中的程序编写和调试可以提供极大的方便。另外,微处理器内部还有256字节的RAM、3个16位定时器/计数器、8个中断源和可编程串行口。在该系统的单片机模块中,还有一路由11.0592MHz晶振和电容组成的振荡电路用于构成系统时钟。本设计的CPU单元电路图如图3.1所示[2]。图3.1CPU单元电路图3.2.1晶振原理设计时钟引脚为XTAL1、XTAL2。时钟引脚外接晶体与片内的反向放大器构成了一个振荡器,它提供单片机的时钟控制信号。时钟引脚也可外接晶体振荡器。XTAL1(19脚):接外部晶体的一个引脚。在单片机内部,它是一个反向放大器的输入端。这个放大器构成了片内振荡器。当采用外接晶体振荡器时,此引脚应接地。XTAL2(18脚):接外部晶体的另一端,在单片机内部接至内部反向放大器的输出端。若采用外部振荡器时,该引脚接收振荡器的信号,即把此信号直接接到内部时钟发生器的输入端。本系统采用晶振时钟电路。外部晶振以及电容C2和C3构成并联谐振电路,接在放大器的反馈回路中。对外接电容的值虽然没有严格要求,但电容的大小多少会影响振荡器频率的高低,振荡器的稳定性,起振的快速性和稳定性。外接晶振时,C1和C2通常选择30pf,晶振采用11.0592MHz。时钟电路如下图3.2所示。图3.2时钟电路图

在图3.3中上面的正弦波是11.0592MHZ产生的,下面的是12MHZ产生的波形,可知12MHZ由于过驱动产生纹波,11.0592MHZ能够产生较稳定的晶振频率[4]。图3.3晶振产生的正弦波3.2.2复位电路设计:本系统采用的复位电路如图3.4所示。图3.4复位电路图单片机复位电路设计不良将导致以下现象:程序无故无循环特征的跑飞、死机,但在仿真软件中运行良好;在短时间内开关机,单片机无法复位等。所以我们设计了本复位电路[3]。首先,在单片机上电过程中,单片机的电源电压上升到一定水平并保持稳定的时候,其才可以正常工作。其次,在单片机上电过程中,晶振从的震荡幅度由0V到规定值的过程需要一定的时间。最后,单片机程序运行中出现死机、跑飞等现象是,需要回到初始值来从头开始。本复位电路的基本功能是:为了可靠起见电源稳定后,还要经一定的延时才撤销复位信号以防电源开关或电源插头分-合过程中引起的抖动而影响复位。本电路用于低电平复位的单片机的上电复位。确保系统上电时能够自动复位,系统上电时提供复位信号,直至系统电源稳定后,撤销复位信号。本复位电路的基本原理:设Vcc=5V,经计算得知,当VCC由0V上升到5V,并保持稳定的时候,R2两端的压降为0.8V,此时NPN导通。由于C2和C3的存在,RESET脚的电压由0V缓慢上升到5V(理论值),R4值的大小决定了这个上升过程的时间,即下降沿保持时间。在这个时间中,单片机处于复位状态。当RESET脚的电压达到单片机正常工作的高度,复位结束。图中D205为C2和C3提供了一个放电通路,以确保在关电的时候,这两个电容快速的放电,这样在频繁的开关机过程中不会出现复位不良的问题。R3为NPN的限流电阻;C1为电源的滤波电容,C3为复位信号的滤波电容,这两个电容一起,防止了电源波动或外部干扰,引起不必要的复位[5]。图3.5上电瞬间各引脚电压上述复位电路的优点在于,等电源电压上升到Vcc时候,复位电路才正式启动。单片机启动的时候,复位信号释放的时机(各电平变化)如图3.4所示:在单片机每次初始加电时,首先投入工作的功能部件是复位电路。复位电路把单片机锁定在复位状态上并且维持一个延时,以便给予电源电压从上升到稳定的一个等待时间;在电源电压稳定之后,再插入一个延时,给予时钟振荡器从起振到稳定的一个等待时间。在经历了一系列延时之后,单片机才开始按照时钟源的工作频率,进入到正常的程序运行状态。从图3.5所示的实测曲线中可以同时看到3条曲线:VDD、Vrst、和ALE。在电源电压以及振荡器输出信号稳定之后,又等待了一段较长的延时才释放RST信号,使得CPU脱离复位锁定状态;而RST信号一旦被释放,立刻在ALE引脚上就可检测到持续的脉冲信号。综合上述理由,复位电路的延时是为等待电源电压和晶振稳态的出现,在这个过程中,单片机重启,程序初始化。3.3单片机与DAC0832接口的设计上位机把控制信号送给单片机,单片机控制哪一路进行D/A转换,并将所转换完的模拟信号保持住。3.3.1DAC0832的功能简介DAC0832是美国资料公司研制的8位双缓冲器D/A转换器。芯片内带有资料锁存器,可与数据总线直接相连。电路有极好的温度跟随性,使用了COMS电流开关和控制逻辑而获得低功耗、低输出的泄漏电流误差。芯片采用R-2RT型电阻网络,对参考电流进行分流完成D/A转换。转换结果以一组差动电流IOUT1和IOUT2输出[6]。DAC0832主要性能参数:①分辨率8位②转换时间1μs③参考电压±10V④单电源+5V~+15v⑤功耗20mW3.3.2DAC0832的工作原理一个8位D/A转换器有8个输入端(其中每个输入端是8位二进制数的一位),有一个模拟输出端。输入可有256个不同的二进制组态,输出为256个基准电压之一,即输出电压不是整个电压范围内任意值,而只能是256个可能值。图3.6是DAC0832的封装图[7]。

图3.6DAC0832的封装图D0~D7:数字信号输入端。

ILE:输入寄存器允许,高电平有效。

CS:片选信号,低电平有效。

WR1:写信号1,低电平有效。

XFER:传送控制信号,低电平有效。

WR2:写信号2,低电平有效。

IOUT1、IOUT2:DAC电流输出端。

Rfb:是集成在片内的外接运放的反馈电阻。

Vref:基准电压(-10~10V)。

Vcc:是源电压(+5~+15V)。

AGND:模拟地NGND:数字地,可与AGND接在一起使用。 DAC0832的内部结构如图3.7所示。DAC0832中有两级锁存器,第一级锁存器称为输入寄存器,它的锁存信号为ILE;第二级锁存器称为DAC寄存器,它的锁存信号为传输控制信号XFER。因为有两级锁存器,DAC0832可以工作在双缓冲器方式,即在输出模拟信号的同时采集下一个数字量,这样能有效地提高转换速度。此外,两级锁存器还可以在多个D/A转换器同时工作时,利用二级锁存信号来实现多个转换器同步输出。图3.7DA0832内部原理图图3.7中ILE为高电平、CS和WR1为低电平时,ILE为高电平,输入寄存器的输出跟随输入而变化;此后,当WR1由低变高时,ILE为低电平,资料被锁存到输入寄存器中,这时的输入寄存器的输出端不再跟随输入资料的变化而变化。对第二级锁存器来说,XFER和WR2同时为低电平时,ILE为高电平,DAC寄存器的输出跟随其输入而变化;此后,当WR2由低变高时,ILE变为低电平,将输入寄存器的资料锁存到DAC寄存器中。3.3.3具体接口设计DAC0832的时序如图3.8所示[8]。图3.80832时序图DAC0832有3种工作方式:⑴单缓冲方式。单缓冲方式是控制输入寄存器和DAC寄存器同时接收资料,或者只用输入寄存器而把DAC寄存器接成直通方式。此方式适用只有一路模拟量输出或几路模拟量异步输出的情形。⑵双缓冲方式。双缓冲方式是先使输入寄存器接收资料,再控制输入寄存器的输出资料到DAC寄存器,即分两次锁存输入资料。此方式适用于多个D/A转换同步输出的情节。⑶直通方式。直通方式是资料不经两级锁存器锁存,即WR1,WR2,XFER,CS均接地,ILE接高电平。此方式适用于连续反馈控制线路,不过在使用时,必须通过另加I/O接口与CPU连接,以匹配CPU与D/A转换[9]。图3.9DA转换模块设计转换电路整体电路图见附录,单路接线图接线如图3.9所示,本设计采用单缓冲方式,故XFER接地,ILE接高电平,WR1与WR2与单片机WR口相连,由3-8译码器出来控制CS信号控制口。当CS由Y2送低电平时,DA开始转换,模拟信号输出。当CS由Y2送高电平时,这时DA芯片将维持输出刚才的模拟量,我们用单片机P2口控制74LS138,74LS138的每一个输出控制一路DA转换。这样我们达到了控制要求。3.3.4输出电路设计由于DAC0832产生0到100nA的电流,要想产生4到20mA的电流,要先转换成电压信号,后再转换成电流信号,具体电路图如图3.10所示。图3.10输出电路设计电流取样电阻尽量取小点的原因是,为了满足输出电流信号的带负载能力,所以要求信号转换电路的内部压降尽可能减小。但是,为了保证转换精度,也不能太小.所以取50欧姆,即对应4~20毫安时的压降为0.2~1V。对应输入电压0~5V来讲,Vi=0~5V,Vo=0.2~1V。

运放增益:(3.1)

运放的输入端:(3.2)所以+V的分压电阻上端取20K,下端取100K即可。3.4单片机串口通信设计在工业控制及测量领域较为常用的网络之一就是物理层采用RS-485通信接口所组成的工控设备网络。这种通信接口可以十分方便地将许多设备组成一个控制网络。从目前解决单片机之间中长距离通信的诸多方案分析来看,RS-485总线通信模式由于具有结构简单、价格低廉、通信距离和数据传输速率适当等特点而被广泛应用于仪器仪表、智能化传感器集散控制、楼宇控制、监控报警等领域。但RS485总线存在自适应、自保护功能脆弱等缺点,如不注意一些细节的处理,常出现通信失败甚至系统瘫痪等故障[10]。3.4.1RS-485收发器介绍采用MAX公司的MAX485芯片(DIP8封装)作为485通信的收发器。MAX485是MAX公司生产的一种RS485接口芯片,它使用单一电源Vcc,电压在4.75—5.5V范围内均能正常工作,可以完成TTL与RS485之间转换。MAX485芯片引脚和典型工作电路如图3.11所示[11]。图3.11MAX485芯片引脚和典型工作电路MAX485芯片功能表,见下表3.1所示。表3.1MAX485芯片功能表发送功能表输入接收功能表输入输出输入输出DEDIZYDEA-BROX110100>0.2V1X101000<-0.2V000X高阻高阻00输入开路110X高阻高阻10X高阻MAX485芯片的结构和引脚都非常简单,内部含有一个驱动器和接收器。R0和D1端分别为接收器的输出和驱动器的输入端,与单片机连接时只需分别与单片机的RXD和TXD相连;和DE端分别为接收和发送的使能端,当为逻辑0时,器件处于接收状态;当DE为逻辑1时,器件处于发送状态,因为MAX485工作在半双工状态下,所以只需用单片机的一个管脚控制这两个引脚;A端和B端分别为接收和发送的差分信号端,当A引脚的电平高于B时,代表发送的数据位1;当A的电平低于B端时,代表发送的数据位0。在单片机连接时接线非常简单。只需要一个信号控制MAX485的接收和发送。同时将A和B之间加匹配电阻,一般可选100的电阻[12]。对于由单片机结合RS-485组建的测控网络,应优先采用各节点独立供电的方案。RS-485由于使用了差分电平传输信号,传输距离比RS-232更长,最多可以达到3000m,因此很适合工业环境下的应用。但与CAN总线等更为先进的现场工业总线相比,其处理错误的能力还稍显逊色,所以在软件部分还需要进行特别的设计,以避免数据错误等情况发生。另外,系统的数据冗余量较大,对于速度要求高的应用场所不适宜用RS-485总线。虽然RS-485总线存在一些缺点,但由于它的线路设计简单、价格低廉、控制方便,只要处理好细节,在某些工程应用中仍然能发挥良好的作用。总之,解决可靠性的关键在于工程开始施工前就要全盘考虑可采取的措施,这样才能从根本上解决问题,而不要等到工程后期再去亡羊补牢。3.4.2RS-485通信模块设计单片机与上位机通信模块如图3.12所示。单片机MAX485单片机MAX485MAX485上位机(PLC)图3.12单片机与上位机通信模块设计RS-485通信的硬件电路设计如图3.13所示,在该电路中,使用了一种RS-485接口芯片MAX485,它采用单一电源Vcc,电压在+3~+5.5V范围内都能正常工作。与普通的RS-485芯片相比,它不但能抗雷电的冲击而且能承受高达8kV的静电放电冲击,片内集成4个瞬时过压保护管,可承受高达400V的瞬态脉冲电压。因此,它能显著提高防止雷电损坏器件的可靠性。对一些环境比较恶劣的现场,可直接与传输线相接而不需要任何外加保护元件。该芯片还有一个独特的设计,当输入端开路时,其输出为高电平,这样可保证接收器输入端电缆有开路故障时,不影响系统的正常工作。另外,它的输入阻抗为RS485标准输入阻抗的2倍(≥24kΩ),故可以在总线上连接64个收发器。芯片内部设计了限斜率驱动,使输出信号边沿不会过陡,使传输线上不会产生过多的高频分量,从而有效扼制电磁干扰。在图1中,四位一体的光电耦合器TLP521让单片机与之间完全没有了电的联系,提高了工作的可靠性。基本原理为:当单片机P2.5=0时,光电耦合器的发光二极管发光,光敏三极管导通,输出高电压(+5V),选中RS485接口芯片的DE端,允许发送。当单片机P2.5=1时,光电耦合器的发光二极管不发光,光敏三极管不导通,输出低电压(0V),选中RS485接口芯片的RE端,允许接收。MAX485的R端(接收端)和D端(发送端)的原理与上述类似。图3.13485通信电路图

RS-485的DE控制端设计,在RS-485总线构筑的半双工通信系统中,在整个网络中任一时刻只能有一个节点处于发送状态并向总线发送数据,其他所有节点都必须处于接收状态。如果有2个节点或2个以上节点同时向总线发送数据,将会导致所有发送方的数据发送失败。因此,在系统各个节点的硬件设计中,应首先力求避免因异常情况而引起本节点向总线发送数据而导致总线数据冲突。以MCS51系列的单片机为例,因其在系统复位时,I/O口都输出高电平,如果把I/O口直接与RS-485接口芯片的驱动器使能端DE相连,会在CPU复位期间使DE为高,从而使本节点处于发送状态。如果此时总线上有其他节点正在发送数据,则此次数据传输将被打断而告失败,甚至引起整个总线因某一节点的故障而通信阻塞,继而影响整个系统的正常运行。考虑到通信的稳定性和可靠性,在每个节点的设计中应将控制RS485总线接口芯片的发送引脚设计成DE端的反逻辑,即控制引脚为逻辑“1”时,DE端为“0”;控制引脚为逻辑“0”时,DE端为“1”。在图3-13中,将CPU的引脚P2.5通过光电耦合器驱动DE端,这样就可以使控制引脚为高或者异常复位时使MAX485始终处于接收状态,从而从硬件上有效避免节点因异常情况而对整个系统造成的影响。这就为整个系统的通信可靠奠定了基础。当一个节点需要使用总线时,为了实现总线通信可靠,在有数据需要发送的情况下先侦听总线。在硬件接口上,首先将RS-485接口芯片的数据接收引脚反相后接至CPU的中断引脚INT0。在图3.13中,INT0是连至光电耦合器的输出端。当总线上有数据正在传输时,MAX485的数据接收端(R端)表现为变化的高低电平,利用其产生的CPU下降沿中断(也可采用查询方式),能得知此时总线是否正“忙”,即总线上是否有节点正在通信。如果“空闲”,则可以得到对总线的使用权限,这样就较好地解决了总线冲突的问题。在此基础上,还可以定义各种消息的优先级,使高优先级的消息得以优先发送,从而进一步提高系统的实时性。采用这种工作方式后,系统中已经没有主、从节点之分,各个节点对总线的使用权限是平等的,从而有效避免了个别节点通信负担较重的情况。总线的利用率和系统的通信效率都得以大大提高,从而也使系统响应的实时性得到改善,而且即使系统中个别节点发生故障,也不会影响其他节点的正常通信和正常工作。这样使得系统的“危险”分散了,从某种程度上来说增强了系统的工作可靠性和稳定性[13]。3.5电源模块本系统中用+5V,—5V,和+24V供电,采用了7805和7824和LMC7600做出了三个简单独立的电源。由下图可知,220V交流电经过变压器降压,再经过桥式整流电路进行整流,而后接滤波电容进行滤波,输出脉动的直流电,再由三端稳压芯片7805进行稳压,输出5V直流电压,图中D205起保护作用。+5V电源如图3.14所示。图3.14+5V电源原理图+24V电源原理和+5V一样,我们将7805改成7824。并换了220V/36V变压器。其原理图如图3.15所示。图3.15+24V电源原理图由于0832基准电源是-5V,而我们只有+5V的电源,所以需设计+5V转-5V的电路。图3.16是转换电路。主要通过LMC7660芯片转换+5V得到-5V。图3.16-5V电源原理图第4章软件部分软件的设计是我毕业设计的另一个重要方面。它的好坏直接关系毕业设计的成功与否。我的软件是用汇编完成的,需要能熟练的掌握汇编语言,还要熟悉AT89C51单片机。从程序流程图、通信协议、波特率计算、编写程序,是很复杂的。下面作详细介绍:4.1主程序设计程序流程图是编写软件的重要前提,它是在图表上直观的体现拟设计的目的及过程。也是编译的重要依据,按照流程图一步一步编写程序,下面为主流程图图4.1。图4.1程序主流程图4.2DA转换程序设计DA转换模块的程序流程框图如图4.2所示。图4.2DA转换程序流程图4.3通信设置通信协议是发射机和接收机之间通信不可缺少的部分,包括下面几方面的设置。串行串行口控制寄存器的基本情况在前面已经介绍,这里不再重复。根据我们所做的内容,我们采用了串行工作方式1,REN设置为“1”(允许接收),综上所述我们设SCON的初始值为50H,如表4.1所示:串口控制寄存器SCON的设置表4.1串行口控制寄存器SM0SM1SM2RENTB8TB8TIRI010100004.3.2定时器内部主要寄存器定时器/计数器0有4种工作模式:模式0(13位定时器/计数器),模式1(16位定时器/计数器模式),模式2(8位自动重装模式),模式3(2个8位定时器/计数器)定时器/计数器1除模式3外,其他工作模式与定时器/计数器0相同,T1在模式3时无效,停止计数。与定时器/计数器0、定时器/计数器1有关的寄存器有定时器控制寄存器TCON、定时器方式TMOD寄存器格式、中断允许寄存器IE,三者共同作用控制着定时器的工作状态[14]。定时器方式TMOD寄存器格式如表4.1所示。表4.1定时器方式TMOD寄存器格式89HGATEC/TM1M0GATEC/TM1M0控制T1控制T0定时器控制寄存器TCON格式如表4.2所示。表4.2定时器控制寄存器TCON格式TCONTF1TR1TF0TR0IE1IT1IE0IT0位地址8F8E8D8C8B8A8988TR0:为0时,停T0计数;为1时,启T0计数TF0:为0时,无T0中断(硬件复位);为1时,有T0溢出中断TR1:为0时,停T1计数;为1时,启T1计数TF1:为0时,无T1中断(硬件复位);为1时,有T1溢出中断IE1:为0时,硬件复位;为1时INT1上有中断IT1:为0时,INT1电平触发(软件复位);为1时,INT1负边沿触发IE0:为0时,硬件复位;为1时INT0上有中断IT0:为0时,INT0电平触发(软件复位);INT0负边沿触发中断允许寄存器IE格式如表4.3所示。表4.3中断允许寄存器IEIEIEEAET2ET1E1ET0E0位地址AFADABAAA9A8A:为0时关所有中断;为1时开所有中断ET2:为0时关T2中断;为1时开T2中断,只有8032、8052、8752才有此中断ES:为0时关串口中断;为1时开串口中断ET1:为0时关T1中断;为1时开T1中断EX1:为0时关;INT1中断;为1时开ET0:为0时关T0中断为1时开T0中断EX0:为0时关INT0中断;为1时开INT0中断4.3.3波特率计算晶振为6M,波特率为1.2K单片机工作方式为串行方式1,T1是方式2,所以1.2=1/16*XX=19.219.2=1/2*(256-Y)Y=217.6把十进制转换成十六进制数为D9,所以初始值为D9。4.4通信程序流程图从机接收到主机发来的地址信号后产生串口中断,在中断服务程序里被寻址从机根据接收到的控制命令,从机就准备根据控制命令完成相应的操作。串口通信的流程图如图4.5所示。图4.5串口通信流程图主机和从机间发送数据和地址外,还发送一些从机识别的状态字和命令。主机通信子程序用于主机和从机间一个数据块的传输,程序流程图如图4.6所示。图4.6主机通讯子程序流程图从机中断服务程序用于对主机的通信,从机程序通信流程图如图4.7所示。图4.7从机通讯子程序流程图单片机通信节点的程序基本上可以分为6个主要部分,分别为预定义部分、初始化部分、主程序部分、设备状态检测部分、帧接收部分和帧发送部分。预定义部分主要定义了通信中使用的握手信号,用于保存设备信息的缓冲区和保存本节点设备号的变量。设备状态检测部分应能在程序初始化后,当硬件发生故障时,作出相应的反应。主程序部分应能接收命令帧,并根据命令的内容作出相应的回应[15]。第5章总结与展望5.1总结我所做的是单片机多路模拟信号输出及通信,从去年放假我就开始准备。毕业设计完成了,达到了预期的目的。一开始拿到这个题目的时候,真不知道从哪下手,在老师的指导下,自己找资料、看书,总算完成了。通过这次的毕业设计,使我对单片机有了更深的认识,从理论和实践上都得到了很大的提高,所以这次任务的完成是我学到了很多东西。首先,丰富了自己的知识面,学到了以前没能学通的东西,具体了解了怎样去完成一个电路的设计:从流程图、电路图,毕业论文。从毕业设计中,学到了单片机AT89C51的内部结构及其工作原理,巩固了汇编语言的使用能力,提高了自己动手的能力,学到了很多经验,并且提高了自己分析问题的能力和创新能力,得到了理论联系实际的机会,做出了成果。使自己在硬件设计方面树立了信心,为以后从事这方面的工作打好了基础,这也是这次毕业设计的最大收获。在一开始接触这个题目的时候,真的很茫然,不知道从哪开始下手,不知道单片机485通信是干什么的?怎么才能做出来?用什么做?这些问题一个都不知道。后来在庞老师的指导下,才知道我要怎么开始做。自己就开始找资料,了解单片机89C51、RS-485的有关知识,学习时钟电路、控制电路的设计原理,看不懂的时候就去问老师、同学。在这些都搞得比较明白后就开始画设计流程图和电路图,最后用了很长时间才画出自己的电路图,给老师看后,在老师的帮助下,改正了几处有问题的地方。接下来的工作一切还算顺利,在老师还有同学的帮助下,都一一完成。这次的毕业设计总的来说还是很成功的,自己从中学到很多,也发现了不少问题,为自己以后的学习、进步打下了不错的基础。5.2展望实验的结果基本令人满意,今后可以在以下几个方面继续研究:1.通过网络通信的学习研究可以改进上位机对系统进行远程控制2.将系统实行多个模块的链接使系统更便于操作。3.信号输出应该采用多路方式,对各个部分都得到实时控制。致谢本文的研究工作是在我尊敬的庞中华老师的悉心指导下完成的。从论文的选题到具体每一步的设

温馨提示

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

评论

0/150

提交评论