基于单片机的摄像机云台控制系统软硬件设计与实现(本科生毕业论文)_第1页
基于单片机的摄像机云台控制系统软硬件设计与实现(本科生毕业论文)_第2页
基于单片机的摄像机云台控制系统软硬件设计与实现(本科生毕业论文)_第3页
基于单片机的摄像机云台控制系统软硬件设计与实现(本科生毕业论文)_第4页
基于单片机的摄像机云台控制系统软硬件设计与实现(本科生毕业论文)_第5页
已阅读5页,还剩38页未读 继续免费阅读

下载本文档

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

文档简介

兰州交通大学毕业设计(论文)AbstractThisthesisanalyzesthestructureofcamerapanandtilt,steppermotorsystemworksandPTZcontrolrequirementsbasedonthedesignofthecontrollertoSTC89C52microcontrollercamerapanandtiltcontrolsystemtoULN2003steppermotordriverchipfortheuseofseparatebuttonscontrolthePTZrotation,aswellaspreparethePCprogramandthroughtheserialcommunicationwiththePCserialcommunicationbetween.Thecontrolsystemconsistsofsingle-chipcontrolmodule,keyboardmodule,motordrivemodule,theremotePCcontrolmodule.MCUcontrolmoduleincludehandlingkeyboardinput,respondtoPCserialportinterrupt,controlthemotorrunning;Keyboardcontrolmodulesusingstand-alonekeyboardinputofinformation;motordrivemoduleusingULN2003drivercircuitcontrolcamerapanandtiltmovement;remotePCcontrolmodulemicrocomputerremotecontrolmicrocontroller,thencontrolthesteppermotor.PTZoperationwithautomaticoperationandmanualoperationmode,aswellasbyPCcontrol.KeyboardorPCinputinformation,themicrocontrollerafterreceivingtheinputinformationprocessing,andthensendcontrolsignalstosendULN2003A,ULN2003Adrivesteppermotorrunning.SeparatebuttonscanbeachievedusingthePTZmanualcontrol,theuseofcomputerremotecontrolPTZ,PTZcontrolsystemenhancesthepracticality;whileusingVC6.0preparedbythehostcomputer,useKeil4compileanddebugthesystemusingtheProteussimulation,sosystemmoreperfect.Keyword:STC89C52;CameraPan;Keyboard;StepperMotor;SerialCommunication目录摘要 IAbstract II目录 III第一章绪论 1一、云台 1二、步进电机 2(一)步进电机的工作原理 2(二)步进电机主要技术指标 3三、单片机 4(一)STC89C52 5(二)STC89C52各个引脚的功能 6(三)STC89C52串口通信 8(四)STC89C52中断系统 9四、本设计完成的任务 10第二章总体方案 11一、云台控制系统简析 11二、控制系统实现 11第三章软件基础 13一、C语言简介 13二、Keil编译器 13(一)Keil8051C编译器简介 13(二)如何使用Keil软件开发 14三、Proteus仿真软件 17四、MSComm控件 21(一)基于VC的MSComm控件串口编程基本步骤 22(二)MSComm控件属性 22五、VisualC++软件 23第四章系统设计 26一、系统流程 26二、单片机系统 27(一) 复位电路 28(二)时钟电路 28三、ULN2003A驱动电路 28四、键盘模块 30五、初始化模块 30六、串口中断模块 31第五章系统仿真 32一、虚拟串口 32二、Keil编译器 32三、Proteus仿真软件 32第六章结论 35致谢 36参考文献 37附录一单片机程序源代码 38附录二上位机源程序 43附录三单片机云台控制系统 45第一章绪论一、云台摄像机云台是一种安装在摄像机支撑物上的工作平台,用于摄像机与支撑物之间的连接,同时它具有水平和垂直运动的功能,在云台水平、垂直运动的同时,它也带动摄像机做相同的运动,这样就可以通过控制云台的运动来控制摄像机的运动,它与摄像机配套使用能达到扩大监视范围的目的,提高了摄像机的使用价值。云台分为固定云台和电动云台。目前这两类云台广泛应用于各种场所,固定云台适用于小范围的监视;电动云台适用于对大范围进行扫描监视,它可以扩大摄像机的监视范围。电动云台是由两台执行电动机来实现,电动机接受来自控制器的信号精确地运行定位。在控制信号的作用下,云台上的摄像机既可自动扫描监视区域,也可在监控中心值班人员的操纵下跟踪监视对象。步进电机作为云台的转动器件,它的工作可靠性直接影响了云台的质量。云台的性能指标:1、云台的转动速度云台的转动速度衡量云台档次高低的重要指标。云台的水平和垂直方向是由两个步进电机驱动的,因此云台的转动速度也分为水平转速和垂直转速。由于载重的原因,垂直电机在启动和运行保持时的扭矩大于水平方向的扭矩,在加上实际监控时对水平转速的要求要高于垂直转速,因此一般来说云台的垂直转速要低于水平转速。2、云台的转动角度云台的水平转动角度一般都能达到355°,因为限位拴会占用一定的角度,但是出现少许的监控死角。当前的云台都改进了限位装置使其可以达到360°甚至365°(有5°的覆盖角度),以消除监控死角。使用时可以根据现场的实际情况进行限位设置。3、云台的载重量云台的最大负载是指垂直方向承受的最大负载能力。摄像机的重心到云台工作面距离为50mm,该重心必须通过云台回转中心,并且与云台工作面垂直,这个中心即为云台的最大负载点,云台的承载能力是以此点作为设计计算的基准。如果负载位置安装不当,重心偏离回转中心,增大了负载力矩,实际的载重量将小于最大负载量的设计值。因此云台垂直转动角度越大,重心偏离也越大,相应的承载重量就越小。二、步进电机在工业控制系统中,通常要控制机械部件的平移和转动,这些机械部件的驱动大多都采用交流电机、直流电机、和步进电机。在这三种电机中,步进电机最适合数字控制。本设计中单片机作为数字控制器件,因此在本系统中毫无疑问的选择了步进电机。如何运用步进电机无疑是单片机云台控制系统中的重点。因此需要详细的了解步进电机。(一)步进电机的工作原理通常电机的转子为永磁体,当电流流过定子绕组时,定子绕组产生一个矢量磁场。该磁场会带动转子旋转一定角度,使得转子的一对磁场方向与定子的磁场方向一致。当定子的矢量磁场旋转一个角度。转子也随着该磁场转一个角度。每输入一个电脉冲,电动机转动一个角度前进一步。它输出的角位移与输入的脉冲数成正比、转速与脉冲频率成正比。改变绕组通电的顺序,电机就会反转。所以可用控制脉冲数量、频率及电动机各相绕组的通电顺序来控制步进电机的转动。图1-1是四个开关信号控制四相步进电机工作原理示意图。图1-1四相步进电机示意图四相步进电机按照通电顺序的不同,可分为单四拍、双四拍、八拍三种工作方式。单四拍与双四拍的步距角相等,但单四拍的转动力矩小。八拍工作方式的步距角是单四拍与双四拍的一半,因此,八拍工作方式既可以保持较高的转动力矩又可以提高控制精度。步进电机的驱动电路依据控制信号工作,控制信号由单片机产生,完成以下三种功能:1、控制换相顺序:通电换向这一过程称为脉冲分配。通电控制脉冲必须严格按照这一顺序分别控制A、B、C、D相的通断。2、控制步进电机的转向:如果按给定方向的正序换相通电,步进电机正转;如果按反序通电换相,步进电机反转。3、控制步进电机的速度:如果给步进电机发送一个控制脉冲,它就转一步,再发送一个脉冲,它会再转一步。两个脉冲的间隔越短,步进电机就转的越快。调整单片机发出的脉冲频率,就可以对步进电机进行调速。(二)步进电机主要技术指标静态指标:1、相数:产生不同对极N、S磁场的激磁线圈对数。常用m表示。2、拍数:完成一个磁场周期性变化所需脉冲数或导电状态用n表示,或指电机转过一个齿距角所需脉冲数,以四相电机为例,有四相四拍运行方式即AB-BC-CD-DA-AB,四相八拍运行方式即A-AB-B-BC-C-CD-D-DA-A。3、步距角:对应一个脉冲信号,电机转子转过的角位移用θ表示。θ=360度/(转子齿数运行拍数),以常规二、四相,转子齿数为50齿的电机为例。四拍运行时步距角为θ=360度/(504)=1.8度(俗称整步),八拍运行时步距角为θ=360度/(508)=0.9度(俗称半步)。4、定位转矩:电机在不通电状态下,电机转子自身的锁定力矩(由磁场齿形的谐波以及机械误差造成的)。5、静转矩:电机在额定静态电作用下,电机不作旋转运动时,电机转轴的锁定力矩。此力矩是衡量电机体积的标准,与驱动电压及驱动电源等无关。虽然静转矩与电磁激磁安匝数成正比,与定齿转子间的气隙有关,但过分采用减小气隙,增加激磁安匝来提高静力矩是不可取的,这样会造成电机的发热及机械噪音。动态指标:1、步距角精度:步进电机每转过一个步距角的实际值与理论值的误差。用百分比表示:误差/步距角100%。不同运行拍数其值不同,四拍运行时应在5%之内,八拍运行时应在15%以内。2、失步:电机运转时运转的步数,不等于理论上的步数。称之为失步。3、失调角:转齿轴线偏移定齿轴线的角度,电机运转必然存在失调角,由失调角产生的误差,采用细分驱动是不能解决的。4、最大空载起动频率:电机在某种驱动形式、电压及额定电流下,在不加负载的情况下,能够直接起动的最大频率。5、最大空载的运行频率:电机在某种驱动形式,电压及额定电流下,电机不带负载的最高转速频率。6、运行矩频特性:电机在某种测试条件下测得运行中输出力矩与频率关系的曲线称为运行矩频特性,这是电机诸多动态曲线中最重要的,也是电机选择的根本依据。其它特性还有惯频特性、起动频率特性等。电机一旦选定,电机的静力矩确定,而动态力矩却不然,电机的动态力矩取决于电机运行时的平均电流(而非静态电流),平均电流越大,电机输出力矩越大,即电机的频率特性越硬。要使平均电流大,尽可能提高驱动电压,采用小电感大电流的电机。7、电机的共振点:步进电机均有固定的共振区域,二、四相感应子式的共振区一般在180250pps之间(步距角1.8度)或在400pps左右(步距角为0.9度),电机驱动电压越高,电机电流越大,负载越轻,电机体积越小,则共振区向上偏移,反之亦然,为使电机输出电矩大,不会失步和整个系统的噪音降低,一般工作点均应偏移共振区较多。8、电机正反转控制:当电机绕组通电时序为AB-BC-CD-DA时为正转,通电时序为DA-CD-BC-AB时为反转。三、单片机单片机是一种集成电路芯片,是采用超大规模集成电路技术把具有数据处理能力的中央处理器CPU随机存储器RAM、只读存储器ROM、多种I/O口和中断系统、定时器/计时器等功能(可能还包括显示驱动电路、脉宽调制电路、模拟多路转换器、A/D转换器等电路)集成到一块硅片上构成的一个小而完善的微型计算机系统,在工业控制领域的广泛应用。单片机以其价格低廉,功耗小,工作可靠,可编程等优点,得到应用者的青睐。单片机是通过不同的程序实现不同的功能,尤其是特殊的一些功能,这是别的器件需要费很多力气才能做到的,有些则是花大力气也很难做到的。单片机所具有的特点:1、高集成度,体积小,高可靠性;2、控制功能强;3、低电压,低功耗,便于生产便携式产品;4、易于扩展;5、优异的性价比。单片微型计算机简称单片机,是典型的嵌入式微控制器(MicrocontrollerUnit),常用英文字母的缩写MCU表示单片机,单片机又称单片微控制器,它不是完成某一个逻辑功能的芯片,而是把一个计算机系统集成到一个芯片上。单片机由运算器,控制器,存储器,输入输出设备构成,相当于一个微型的计算机(最小系统),和计算机相比,单片机缺少了外围设备等。概括的讲:一块芯片就成了一台计算机。它的体积小、质量轻、价格便宜、为学习、应用和开发提供了便利条件。同时,学习使用单片机是了解计算机原理与结构的最佳选择。用电器,宇航设备等各个领域。(一)STC89C52图1-2STC89C52DIP封装引脚图STC89C52使用经典的MCS-51内核,但做了很多的改进使得芯片具有传统51单片机不具备的功能。在单芯片上,拥有灵巧的8位CPU和在系统可编程Flash,使得STC89C52为众多嵌入式控制应用系统提供高灵活、超有效的解决方案。具有以下标准功能:8k字节Flash,512字节RAM,32位I/O口线,看门狗定时器,内置4KBEEPROM,MAX810复位电路,3个16位定时器/计数器,4个外部中断,一个7向量4级中断结构(兼容传统51的5向量2级中断结构),全双工串行口。另外STC89C52可降至0Hz静态逻辑操作,支持2种软件可选择节电模式。空闲模式下,CPU停止工作,允许RAM、定时器/计数器、串口、中断继续工作。掉电保护方式下,RAM内容被保存,振荡器被冻结,单片机一切工作停止,直到下一个中断或硬件复位为止。最高运作频率35MHz,6T/12T可选。图1-2所示为DIP封装引脚图。(二)STC89C52各个引脚的功能STC89C52为40脚双列直插封装的8位通用微处理器,采用工业标准的C51内核,在内部功能及管脚排布上与通用的8xc52相同,其主要用于会聚调整时的功能控制。功能包括对会聚主IC内部寄存器、数据RAM及外部接口等功能部件的初始化,会聚调整控制,会聚测试图控制,红外遥控信号IR的接收解码及与主板CPU通信等。主要管脚有:XTAL1(19脚)和XTAL2(18脚)为振荡器输入输出端口,外接11.0592MHz晶振。RST(9脚)为复位输入端口,外接电阻电容组成的复位电路。VCC(40脚)和VSS(20脚)为供电端口,分别接+5V电源的正负端。P0~P3为可编程通用I/O脚,其功能用途由软件定义。VCC(40脚):接+5V电压。GND(20脚):接信号地。RST(9脚):复位输入。当振荡器工作时,RST引脚出现两个机器周期以上高电平将使单片机复位。ALE/(30脚):当访问外部程序存储器或数据存储器时,ALE(地址锁存允许)输出脉冲用于锁存地址的低8位字节。一般情况下,ALE仍以时钟振荡频率的1/6输出固定的脉冲信号,因此它可对外输出时钟或用于定时目的。(29脚):程序储存允许输出是外部程序存储器的读选通信号,当AT89s52由外部程序存储器取指令(或数据)时,每个机器周期两次PSEN有效,即输出两个脉冲。在此期间,当访问外部数据存储器,将跳过两次PSEN信号。/VPP(31脚):外部访问允许。欲使CPU仅访问外部程序存储器(地址为0000H—FFFFH),EA端必须保持低电平(接地)。XTAL1(19脚):接外部晶振的一个引脚,且为输入端。XTAL2(18脚):接外部晶振的另一个引脚,该引脚接地。P0口(39~32脚):双向8位三态I/O口,在外接存储器时,与地址总线低8位及数据总线复用。P0可以驱动8个LSTTL负载。P1口(1~8脚):具有内部上拉电阻的8位准双向I/O口,该接口输出不包含高阻态,输出不能锁存。可以驱动4个LSTTL负载。P2口(21~28脚):具有内部上拉电阻的8位准双向I/O口,在访问外部存储器时,作为高8位地址总线。可以驱动4个LSTTL负载。P3口(10~17脚):具有内部上拉电阻的8位准双向I/O口,P3口的8个引脚还用于专门的功能——复用双功能口。它可以驱动4个LSTTL负载。它作为第二功能使用时,其各个引脚的功能如下:P3.0(10脚)RXD:串行口接收端P3.1(11脚)TXD:串行口发送端P3.2(12脚):外部中断0P3.3(13脚):外部中断1P3.4(14脚)T0:定时/计数器0P3.6(16脚):外部数据存储器写选通信号P3.7(17脚):外部数据存储器读选通信号特殊功能寄存器:1、单片机内含有两个16位定时/计数器T0、T1。它们各自由两个独立的8位寄存器组成,分别为TH0、TL0、TH1、TL1,。2、TMOD用于控制定时/计数器的工作方式及4种工作模式,其中低4位为定时器T0的方式控制字,高4位为定时器T1的方式控制字。它的字节地址为89H。其各位的定义如下:GATEC/TM1M0GATEC/TM1MOGATE是选通门,当GATE=1时,只有INT0或INT1引脚为高电平且TR0或TR1置1时,相应的定时/计数器才被选通工作。C/T是计数器/定时器方式选择位。MO和M1是操作模式选择位。1、TCON寄存器的高四位为定时/计数器T0、T1的控制寄存器和定时/计数溢出中断标志。2、IE寄存器用于开放或屏蔽单片机各个中断。3、SCON寄存器用于设置串口的工作方式和查询接收、发送中断产生标志。4、SBUF串行数据缓冲器用于存放串口中预发送或接收的数据,它由两个独立的寄存器构成,一个发送缓冲器,一个接收缓冲器,他们公用一个地址。当从SBUF取数据时,访问接收缓冲器,当写数据时,访问发送缓冲器。(三)STC89C52串口通信单片机系统设计中,经常需要使用串口与外部进行通信,因此,串口通信部分是单片机功能模块中极为重要的一部分。串口通信时通过串口来进行的,串口不同于并口,它的数据和控制信息是一位接一位串行的传送下去。与并口相比,虽然速度慢,但是传送距离比并口更长,因此常用于需要长距离通信而对速度又要求不高的场合。异步通信是以帧的形式发送字符数据,每一帧信息由起始位、数据位、奇偶校验位和停止位构成。异步通信中,每传输一个字节就要使用起始位和停止位,因此传输速度有限,常用于低速场合。同步通信使用数据块传送信息,而不是字节,省去了每个字节的起始位和停止位等数据,提高了通信的速率。与异步通信相比,同步通信发送的数据量大、速度快,常用于传输速率要求较高的场合。STC89C52内部的串口是一个标准的全双工串口,支持四种工作方式。波特率是可变的,可由软件设置。对89c52串口的访问和设置是通过访问其相关的特殊寄存器进行的,与89C52串口相关的特殊寄存器共有3个:SCON、PCON和SBUF。串口控制寄存器SCON主要用于设置串口的工作模式和串口中断的查询。其格式如下:D7D6D5D4D3D2D1D0SM0SM1SM2RENTB8RB8TIRISM0、SM1:用于设置串口的工作方式。SM2:串口多机通信控制位。REN:允许串行接收控制。将其置为1时允许接收。TB8:用于设置串口工作方式2和方式3情况下要发送的第9位数据,有软件置位或复位。RB8:用于保存串口工作方式2和方式3情况下要接收到的第9位数据。TI:串口中断发送标志。当串口数据发送完毕时置位TI,同时向CPU发送串口中断请求。RI:串口中断接收标志。当串口数据接收到一个数据时置位TI,同时向CPU发送串口中断请求。特殊功能寄存器PCON:特殊功能寄存器PCON仅有最高位与串口有关,SMOD,波特率选择位,SMOD的设置可以影响波特率设置的精度。发送/接收缓冲器SBUF:串口中的发送/接收缓冲器SBUF实际上共有两个,分别为发送缓冲器和接收缓冲器,他们在物理上是完全独立的,因此可以同时进行发送和接收。两个缓冲器公用一个内存地址99H。(四)STC89C52中断系统程序在执行过程中,允许外部或内部事件通过硬件中断程序的执行,使其转向出来外部或内部事件的中断服务中去,完成中断服务程序后,CPU继续与原来被中断的程序,这样的过程称为中断过程。能产生中断的外部或内部事件叫中断源。80C52有6个中断源,它们是:INT0:外部中断0.当IT0(TCON.0)=0时,低电平有效;IT0(TCON.0)=1时,下降沿有效。INT1:外部中断1.当IT1(TCON.2)=0时,低电平有效;IT1(TCON.2)=1时,下降沿有效。TF0:定时/计数器T0益处中断。TF1:定时/计数器T1益处中断。TF3:定时/计数器T2益处中断。RX,TX:串行中断。中断相关寄存器IE和IP51单片机有两种中断优先级,其中每一个中断源的优先级都可以有程序设定。中断源的中断要求能否得到响应,受允许中断寄存器IE中各位的控制。它们的优先级由中断优先级寄存器IP的各位确定,同一优先级内的各中断源同时要求中断时,以内部的查询逻辑来确定响应次序。允许中断寄存器IE的各位定义如下:MSBLSBEA—ET2ESET1EX1ET0EX0EA是总中断允位。EA=0时,禁止所有中断;EA=1时,则每个中断源被允许还是被禁止,由各自的允许位确定;ET2:是定时器2中断允许位。ET2=0,禁止定时器2中断;ES:是串行口中断允许位。ES=0,禁止串行口中断;ET1:是定时器1中断允许位;EX1:是外部中断1允许位;ET0:是定时器0中断允许位;EX0:是外部中断0允许位。中断优先级寄存器IP的各位定义如下:MSBLSB——PT2PSPT1PX1PT0PX0PT2:是定时器2中断优先级设定位;PS:是串行口中断优先级设定位;PT1:是定时器1中断优先级设定位;PX1:是外部中断1优先级设定位;PT0:是定时器0中断优先级设定位;PX0:是外部中断0优先级设定位。四、本设计完成的任务本次设计是以单片机为控制器,设计一个云台控制系统,使云台按期望的方式运行,同时还要与远程控制室计算机进行通信。本次设计完成的任务:1、设计单片机外围电路及步进电机驱动电路,驱动云台步进电机运行。2、使用键盘输入控制云台步进电机。3、PC使用串口总线远距离控制云台步进电机。4、使用KeiluVision4编写软件,在Proteus软件中完成仿真。第二章总体方案一、云台控制系统简析云台在任意位置,按下不同按钮,云台将分别按上下左右四个方向。为了限制云台转动的范围,云台的向上、左转、向下和右转动作转换靠限位开关来控制。本设计主要是设计云台的转动,并能按一定的要求动作。为满足控制要求,云台转动设置手动方式和自动工作方式两种。1、手动工作方式。利用按钮对云台的每一步进行单独控制,例如,按“向下”按钮,摄像机云台向下;按“向右”按钮,摄像机云台向右。2、连续工作方式。云台在原位时,按下“自动”按钮,云台自动连续的执行周期动作。二、控制系统实现根据云台的结构和工作特点,其执行机构是步进电机,同时系统与上位机需要进行信息交换,本设计选用单片机系统来进行实现。由于单片机的种类很多,在选择单片机是要依据实际设计要求选择合适的单片机,在本系统设计中,选用了STC89C52型号单片机。云台的运行有自动运行和手动运行模式,同时受上位机控制,所以该系统由单片机控制模块、键盘模块、电机驱动模块、远程控制模块等构成。控制系统具体的结构示意图如图2-1所示。此系统的硬件由STC89C52单片机、键盘、PC机、ULN2003A、步进电机组成。本系统的总体设计思路:键盘或PC输入信息,单片机接收后对输入信息进行处理,然后发出控制信号送ULN2003A,ULN2003A驱动步进电机运转。单片机控制模块是本设计的核心。它的工作包括处理键盘输入、响应PC串口中断、控制电机运行等。键盘模块完成的是控制信息的输入功能。在本系统中采用了独立式键盘,而不采用矩阵键盘,这样可以简化软硬件设计,而且能够满足系统要求。电机驱动模块是本系统的执行机构,用于控制监控摄像机的运动。本系统中对云台电机的转速没有要求,所以在本系统中没有启用步进电机专用的驱动器,这样不仅可以节约成本,而且可以减少工作量。单片机产生步进电机工作所需脉冲信号,脉冲信号通过一级功率放大电路后再送给步进电机,这样实现电机的控制。远程控制模块是为了能够实现在微机操作室就能控制现场单片机,以控制步进电机。它是通过RS232总线实现的,PC将信息从串口发出,通过RS232总线将信息传送到现场的单片机,单片机通过处理得到PC控制指令,发出控制信息控制步进电机运行。系统框图如图2-1所示。PCPC外围器件STC89C52键盘ULN2003A步进电机串口通信图2-1系统框图第三章软件基础一、C语言简介用于单片机设计开发的常用编程语言是汇编语言和C语言,在本设计中使用C语言编程。C语言是一种源于编写UNIX操作系统的语言,它是一种结构化语言,能产生高效率的紧凑代码。C语言含有许多本应由汇编语言实现的机器级函数,同时与汇编语言相比,它又具有如下优点:1、不需要了解单片机的指令系统,仅仅要求对存储器结构有初步的了解;2、寄存器分配、存储器寻址以及数据类型等细节可由编译器管理;3、程序有规范的结构,可分为不同的函数,使得程序结构化;4、程序更具可读性;5、高的编程及程序调试效率;6、提供的库包含许多标准子程序,具有较强的数据处理能力;7、程序易于做到模块化,便于移植。二、Keil编译器单片机的开发除了需要硬件的支持以外,同样离不开软件。CPU真正可执行的是机器码,用汇编语言或C语言等高级语言编写的源程序必须转换为机器码才能被执行。转换的方法有手工汇编和机器汇编两种,前者目前已经极少使用。机器汇编是指通过汇编软件将源程序变为机器码的编译方法。这种汇编软件称为编译器。下面将介绍目前十分流行的Keil8051C编译器。(一)Keil8051C编译器简介KeilC51是美国KeilSoftware公司出品的51系列兼容单片机C语言软件开发系统,与汇编相比,C语言在功能上、结构性、可读性、可维护性上有明显的优势,因而易学易用。用过汇编语言后再使用C来开发,体会更加深刻。KeilC51软件提供丰富的库函数和功能强大的集成开发调试工具,全Windows界面。另外重要的一点,只要看一下编译后生成的汇编代码,就能体会到KeilC51生成的目标代码效率非常之高,多数语句生成的汇编代码很紧凑,容易理解。在开发大型软件时更能体现高级语言的优势。(二)如何使用Keil软件开发1.建立工程打开Keil软件后,出现图3-1所示界面。当然,如果Keil在上次关闭时有打开的工程,再一次打开时它会自动加载上一次的工程文件。图3-1Keil软件主界面首先选择“Project/NewProject...”菜单,建立了一个空的51工程。接下来,在这个工程里面加入自己的程序代码。点击,或者“File”->“New”,便建立了一个空的文本框。现在,就可以开始在里面输入源程序代码了。保存时注意:如果是用C语言写的程序,则将文本保存成*.c,如果是用汇编写的程序,则将文本存成*.asm,本系统使用的是C语言,所以保存为grm.C。到目前为步,我们已经建立了一个工程,也写了一个程序代码。但现在还不能开始编译。因为还没有将程序代码添加到工程里面去。下一步,将写完的程序添加到工程里面,如下图3-2所示,在左边“ProjectWorkspace”工程窗口里的“SourceGroup1”上右击,选择“AddFilestoGroup”‘SourceGroup1’。在打开的对话框中,选择刚存的文件路径和对应的扩展名。这样,程序就添加进了这个工程。图3-2工程中添加文件页面下一步,就开始编译刚输入进去的代码。点击工具栏中的按钮。接着,Keil会打出下面的提示:创建目标'目标1'assemblingled.asm...linking...ProgramSize:data=8.0xdata=0code=100"first"-0Error(s),0Warning(s).其中“"first"-0Error(s),0Warning(s).”说明现在的工程编译通过,0个错误和0个警告。建立工程的时候,默认是不生成HEX文件的,得在编译做如下设置:单击,出现如下图3-3所示对话框,选择“Output”所指的多选框勾上,点“确定”。现在再点击重新编译,系统提示:“creatinghexfilefrom"first"...”。便会在工程所在文件夹里生成HEX文件。图3-3工程设置中的“Output”页面2.调试Keil有很强大的调试功能,可以显示C程序的反汇编代码、可以计算代码运行的时间、可以显示程序中某一变量的值……能用好这个调试工具对编写单片机程序会有很大的帮助。同样的,在这里,只对Debug进行简单应用介绍。图3-4工程设置中的“Target”页面首先,单击,弹出如上图3-4所示对话框,在目标页面上设置对应的晶振频率。其他不作修改。设置完成后,单击,进入调试界面如下图3-5所示。图3-5调试界面点击中对应的工具按钮则可以开始调试。三、Proteus仿真软件Proteus软件是英国LabCenterElectronice公司开发的EDA工具软件。从1989年问世至今已有20年的历史,在全球得到广泛应用。Proteus软件除具有和其他EDA工具软件一样的原理编辑、印制电路板制作外,还具有交互式的仿真功能。它不仅是模拟电路、数字电路、模/数混合电路的设计与仿真平台,更是目前世界上最先进、最完整的多种型号微处理器系统的设计与仿真平台,真正实现了在计算机中完成电路原理图设计、电路分析与仿真、微处理器程序设计与仿真、系统测试与功能验证到形成印制电路板的完整电子设计、研发过程。Proteus软件由ISIS(IntelligentSchematicInputSystem)和ARES(AdvancedRoutingandEditingSoftware)两个软件构成,其中ISIS是一款智能电路原理图输入系统软件,可作为电子系统仿真平台;ARES是一款高级布线编辑软件,用于制作印制电路板(PCB)。Proteus电路原理图设计是在ISIS软件环境中进行绘制,该软件编辑环境具有友好的交互式人机界面,其设计功能强大,使用方便。图3-6为本设计原理图,下面介绍用ProteusISIS原理图的绘制方法。图3-6单片机系统控制电路图1.新建设计文件:首先打开ISIS7Professional窗口,单击菜单命令“File”下的“NewDesign”,弹出如图3-7所示的图纸模板选择窗口。横向图纸为Landscape,纵向图纸为Portrait,DEFAULT为默认模板。本设计中选用的“DEFAULT”,选中后再单击“OK”,则新建了一个DEFAULT模板。图3-7图纸模板选择窗口新建一个模板后,单击保存图标进行保存。在弹出的对话框中,选择保存在C盘“程序与仿真”目录下,保存文件名为“geruiming”。该文件的扩展名为.DSN,即该文件名为geruiming.DSN。文件保存后在ISIS7Professional窗口的标题栏上显示为geruiming。2.设定图纸大小:执行菜单命令“System”下“SetSheetSize”,在弹出的“SheetSizeConfigura...”对话框中选择“A4”选项,单击“OK”按钮,完成图纸的设置。3.添加元器件:在器件选择按钮中单击“P”按钮,或执行菜单命令“Library”下“PickDevice/Symbol”,弹出如图3-8所示的对话框。本系统中使用的原件如表3-1。图3-8“PickDevices”对话框表3-1本设计中使用的原件单片机STC89C52步进电机MOTOR-STEEPER步进电机驱动ULN2003A虚拟终端串口COMPIM电解电容AUDIO1U瓷片电容CAP30pF电阻10K1K按钮BUTTON在此对话框中,添加原件的方法有两种。按照以下方法将元件添加到ISIS对象选择器中。(1)在关键字中输入原件的名称,如STC89C52(本版本中没有STC系列单片机,用AT系列代替),则出现与关键字匹配的原件列表,如图3-9所示,选中并双击AT89C52所在行后,单击“OK”按钮或按ENTER键,便将器件AT89C52加入到ISIS对象选择器中。图3-9输入元件名称(2)在原件类型列表中选择元件所属类,然后再元器件子类列表中选择所属子类;同时,当对元件的制造商有要求时,在制造商区域选择期望的厂商,即可在元件列表区域得到相应的元件。将元件添加到ISIS对象选择器中后,在对象选择器中,单击要放置的元件,蓝色条出现在该元件名上,再在原理图编辑窗口中单击就放置了一个元件。也可以在按住鼠标左键的同时,移动鼠标,在合适的位置释放左键,将元件放置在预定位置。在原理图编辑窗口中,若要移动元件或连线,应先右击对象,是元件或连线处于选中状态(默认为红色),再按住鼠标左键拖动,元件或连线就跟随指针移动,到达合适位置时,松开鼠标左键。放置元件前,单击要放置的元件,蓝色条出现在该元件上,单击方向工具栏上相应的转向按钮可旋转元件,再在原理图编辑窗口中单击就放置了一个已经更改方向的元件。若在原理图编辑窗口中需要更改元件方向,应单击选中该元件再单击块旋转图标,在弹出的对话框中键入旋转的角度也可实现更改元件方向。在原理图编辑窗口中要删除元件时,右键双击该元件就可删除元件,或者先左击选中元件,再按下Delete键也可删除。通过放置、移动、旋转、删除原件后,将各元件放置在原理图编辑窗口中的合适位置即可。4.放置电源、地:单击工具箱中的“元件终端”图标,在对象选择器中单击“POWER”,使得出现蓝色条,再在原理图编辑窗口的合适位置单击鼠标就将电源放置在原理图中。同样的方法可将地放置在原理图中。5.布线:在ISIS原理图编辑窗口中没有专门的布线按钮,但系统默认自动布线按钮有效,因此可直接布线。步骤如下:(1)单击鼠标左键选中连线,将指针靠近该画线,该线出现双箭头。(2)按住左键拖动鼠标,该线就跟随移动。(3)若要同时移动多根线,应先框选这些线,再单击块移动按钮,拖动鼠标,在合适位置单击鼠标左键,就可改变线条的位置。6.设置、修改元件属性在需要修改的元件上右击鼠标,在弹出的菜单中选择“EditProperties”或按快捷键Ctrl+E,将出现“EditProperties”对话框,在此对话框中设置元件属性。例如,修改电容为30pF,如图3-10所示。图3-10设置元件属性根据以上步骤及方法在原理图编辑窗口中绘制出如图3-6所示电路图。四、MSComm控件MicrosoftCommunicationControl(简称MSComm)是Microsoft公司提供的简化Windows下的串行通信编程的ActiveX控件,为应用程序提供了串口接收发送数据的简便方法。MSComm控件通过串行端口传输和接收数据为应用程序提供串行通信功能。MSComm提供了两种处理通信问题的方法:一是事件驱动法,主要利用OnComm事件捕获并处理这些通信时间,也可以检查和处理通信错误;二是询法,在这种情况下,每当应用程序执行完一个串口操作后,将查看MSComm控的CommEvent属性以确定执行结果或者检查某一事件是否发生。本设计中采用时间驱动法。(一)基于VC的MSComm控件串口编程基本步骤(1)在建立的Workspace中插入MSComm控件;(2)添加MSComm控件的ID的控制变量;(3)对串口进行初始化,设置MSComm控件的属性;(4)添加串口事件消息处理函数OnComm()函数,在函数中编写数据处理代码;(5)编写串口发送等其它代码;(6)关闭串口。(二)MSComm控件属性MSComm控件的属性较多,下面简单的介绍几个比较重要的属性:1、CommPort:设置或返回通信端口号。2、Settings:设置并返回通信参数,用来指定数据传输率(波特率)、奇偶校验、数据位数和停止位数。3、PortoPen:设置或返回通信端口的状态,属性为True时打开端口,False则关闭端口,并清除接收和传输缓冲区。4、OutPut:向传输缓冲区写数据,可以传输文本数据和二进制数据。5、InPut:返回并删除接收缓冲区中的数据。6、InputLen:设置并返回Input属性从接收缓冲区读取的字符数,缺省值是0表示用Input读取接收缓冲区中全部的容。7、Rthreshold/Sthreshold:设置并返回引发OnComm事件中接收、发送的字符数。8、OutBufferSize/InBufferSize:设置或返回传输、接收缓冲区大小。五、VisualC++软件1、建立一个基于对话框的MFC程序命名为MCUPC,设置好保存路径。如图3-11。MFC程序程序名字点击OK,其它选为默认即可。MFC程序程序名字图3-11创建新的应用程序界面2、进入对话框设计页面,利用STATIC,BUTTON图像控件设计软件界面如下图所示。图3-12控制界面3、添加串口通信控件,过程如下:菜单ProjectAddtoProjectConponentsandControlsMicrosoftCommunicationsControl,version6.0.4、命名控件ID:IDC_MSCOMM1。为其添加对应的对象命名为:m_mscomm。并设置其属性。双击“打开串口”按钮,添加函数,OnBtnopen(),添加代码实现串口的初始化,程序如下:m_mscomm.SetCommPort(3);//设置通信串口为COM3m_mscomm.SetRThreshold(1);m_mscomm.SetPortOpen(TRUE);//打开串口双击“关闭串口”添加函数,OnBtnclose(),添加关闭串的代码:m_mscomm.SetPortOpen(FALSE);5、分别为“向上”“向下”“向左”“向右”,添加单击响应事件函数:OnBtnup(),OnBtndown()OnBtnleft(),OnBtnright()添加代码如下:voidCMCUPCDlg::OnBtnup()//向上{ CStringa; a='A'; m_mscomm.SetOutput((COleVariant)a);//向串口发送“A”}voidCMCUPCDlg::OnBtndown(){ CStringa; a="B"; m_mscomm.SetOutput((COleVariant)a);//向串口发送“B”}voidCMCUPCDlg::OnBtnleft(){ CStringa; a='C'; m_mscomm.SetOutput((COleVariant)a);//向串口发送“C”}voidCMCUPCDlg::OnBtnright(){ CStringa; a='D'; m_mscomm.SetOutput((COleVariant)a);//向串口发送“D”}voidCMCUPCDlg::OnBtnauto()/向串口发送“Z”{ CStringa; a="Z"; m_mscomm.SetOutput((COleVariant)a); }6、添加以上代码后,编译,运行即可。第四章系统设计一、系统流程云台控制系统分为初始化,键盘扫描,串口中断,延时程序和步进电机运转五部分。主函数通过调用各子程序来实现键盘扫描,串口中断程序的调用来实现步进电机的控制。本设计的系统主程图如图4-1所示,中断子程序流程图如图4-2所示,系统硬件实物如图4-3所示。图4-1系统主流程图图4-2中断子程序流程图图4-3硬件实物图二、单片机系统本设计的所用的单片机系统其实就是单片机最小系统,所谓最小系统就是能是单片机正常工作的最少配置。本此设计的单片机系统由STC89C52单片机、复位电路、时钟电路和电源电路组成,如图4-3所示。图4-3单片机最小系统复位电路复位操作完成单片机片内电路的初始化,是单片机从一种确定的状态开始运行。当单片机的复位引脚RET出现5ms以上的高电平时,单片机就完成了复位操作。复位操作通常有2中基本形式:上电复位、开关复位。上电后,由于电容充电,使RET持续一段高电平时间。当单片机已在运行中时,按下复位键也能使RET持续一段时间的高电平,从而实现上电且开关复位的操作。(二)时钟电路单片机的时钟信号用来提供单片机内各种操作的时间基准。单片机的时钟信号通常用两种电路形式得到:内部振荡方式和外部振荡方式。在引脚XTAL1和XTAL2外接晶体振荡器,振荡方式所得的时钟信号比较稳定,所以在本设计中就是采用内部振荡方式。晶振选用11.0592MHz。三、ULN2003A驱动电路该器件为步进电机的驱动,本设计使用两台相同的步进电机,所以其驱动电路也完全一样。驱动电路如图4-4所示。ULN2003A是高压大电流达林顿晶体管阵列集成电路,内部由七个硅NPN达林顿管组成,ULN2003的每一对达林顿串联一个2.7K的基极电阻,在5V的工作电压下它能与TTL和CMOS电路直接相连,可以直接处理原先需要标准逻辑缓冲器来处理的数据。ULN2003工作电压高,工作电流大,灌电流可达500mA,并且能够在关状态时承受50V的电压,输出还可以在高负载电流并行运行。ULN2003A采用DIP-16塑料封装,如图4-5所示。图4-4ULN2003A驱动电路图4-5ULN2003A方框图ULN2003A内部还集成了一个消线圈反电动势的二极管,可用来驱动继电器。它是双列16脚封装,NPN晶体管矩阵,最大驱动电压=50V,电流=500mA,输入电压=5V,适用于TTLCOMS,由达林顿管组成驱动电路。ULN是集成的达林顿管IC,内部还集成了一个消线圈反电动势的二极管,它的输出端允许通过电流为200mA,饱和压降VCE约1V左右,耐压BVCEO约为36V。用户输出口的外接负载可根据以上参数估算。采用集电极开路输出,输出电流大,故可直接驱动继电器或固体继电器,也可直接驱动低压灯泡。通常单片机驱动ULN2003时,上拉2K的电阻较为合适,同时,COM引脚应该悬空或接电源。ULN2003是一个非门电路,包含7个单元,但每个单元驱动电流最大可达350mA,9脚可以悬空。比如1脚输入,16脚输出,你的负载接在VCC与16脚之间,不用9脚。ULN2003是大电流驱动阵列,多用于单片机、智能仪表、PLC、数字量输出卡等控制电路中。可直接驱动继电器等负载。输入5VTTL电平,输出可达500mA/50V。ULN2003是高耐压、大电流达林顿陈列,由七个硅NPN达林顿管组成。该电路的特点如下:ULN2003A的每一对达林顿都串联一个2.7K的基极电阻,在5V的工作电压下它能与TTL和CMOS电路直接相连,可以直接处理原先需要标准逻辑缓冲器。在本系统中,步进电机的运行方式选用的是单、双8拍运行方式,即按A-AB-B-BC-C-CD-D-DA-A或者相反顺序通电的。单片机的P2的低四位分别连接的是控制云台竖直方向转动电机的A、B、C、D四相,高四位则分别接的是控制云台水平方向转动的电机的A、B、C、D四相。在编程中,将步进电机通电相的正序、反序分别放在两个数组中,在电机动作模块中使用不同的数组,就能达到控制电机的正转、反转。四、键盘模块键盘是由按键构成的,键的闭合与否通常用高、低电平来进行检测。键闭合时,该键为高电平;键断开时,该键为低电平。考虑该系统的复杂程度,决定选用独立式键盘。独立式键盘直接用I/口线连接。每个按键接一根输入线,占用一根I/O口线,各键的工作状态互不影响。图4-6独立式按键综合考虑,本设计单片机I/O资源比较丰裕,所以采用了独立式键盘。独立式键盘的工作方式有查询式和中断式,本设计采用查询式,如图4-6所示。每一个按钮直接控制单片机的P0相连接,当其中有一个按钮被按下时,PO口的相应位就被置为高电平,没有按下则为低电平。所以单片机只需要识别PO的值就可以做出相应的动作。五、初始化模块所谓初始化就是在应用系统中,需要对软件进行初始化设置,以能够满足该系统的正常工作。在本系统中,如果没有初始化,则该系统无法正常工作。本系统中初始化程序包括两部分,一部分是定时器初始化,另一部分是串口初始化。而这些都是通过设置相应的特殊功能寄存器来实现的。本设计中定时器初始化包括定时/计数器选择、定时/技术器工作方式、计数器装初值、打开定时器;串口初始化包括串口工作方式设置、打开串口、开总中断。和定时/计数器有关的特殊功能寄存器有TOMD、TCON,和串口相关的特殊功能寄存器有SCON、PCON。前面已经介绍了特殊功能寄存器,这里不再赘述。串口工作方式1的波特率由定时/计数器T1、T2的溢出速率和SMOD共同确定,计算公式为波特率=()·(TI溢出率),TI溢出率=fosc/{12×[256—(TH1)]},本系统波特率为9600bit/s,晶振频率为11.0592MHz,串口选择工作方式为1,所以初值等于0xfa。定时计数器的初始化编程步骤:1、根据定时时间要求或计数要求计算初值;2、工作方式控制字送TMOD;3、送计数初值到THX和TLX寄存器中;4、启动定时/计数器,即将TRX置位。六、串口中断模块在本系统中,单片机通过串口向单片机发送远距离控制信号,一旦PC机发送控制信号后,单片机接受到信息产生中断,通过中断服务程序去控制步进电机动作。由于串口中断具有优先级别高的特点,所以不需要担心键盘和串口信息发生冲突。

第五章系统仿真仿真是一项非常有效的检测设计工作是否达到预期的结果方法,而且非常具有实际意义。一项新的系统不经过调试仿真就直接进入实用,这样是非常不科学的,既费时又费里,所以一项新的设计只有在经过了仿真的考验才能真正的得到实际应用。仿真就是一个完成目标模型的建立过程,对于本次设计来说仿真所要完成的工作有:搭建虚拟串口、Keil软件中程序的编译并生成HEX文件、Proteus仿真软件电路模型的建立。一、虚拟串口首先安装好SerialNull虚拟串口软件和串口调试助手,分别对其进行设置。添加虚拟端口,一般电脑最多为两个串行口,这里我们选择端口一为COM2和端口二为COM3,点击添加端口就添加了这两个串口,在虚拟端口下就会看到有两个串口。这样我们就完成里串口的设置,可以把此软件关闭,这两个端口将会一直存在于你的电

温馨提示

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

评论

0/150

提交评论