基于单片机的室内云台运动控制电路

更新时间:2024-06-10 01:56:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

成都工业学院 毕 业 设 计 (论 文)

设计(论文)题目: 基于单片机的室内 云台运动控制电路

系 部 名 称: 机电工程系 专 业: 数控技术专业 班 级: 学 生 姓 名: 学 号: 指 导 教 师:

二O一二年 6 月

1

摘要

论文在分析了云台结构和控制的而要求上,设计了以

AT89C52单片机为控

制器的云台控制系统,同时通过RS-232总线的串口通信实现与PC机之间的通信。改控制系统有单片机的控制模块、键盘模块、远程控制模块组成,并进行相应的软件设计、调试和仿真。

关键字:AT89C52;云台控制;步进电机;串口通信;仿真

1

ABSTRACT

This paper design a Yuntai control system using AT89C52 MCU based on analysis of the yuntai of the structure and it's control requirements.And the same time realize communication of computer through serial communication of RS-485 bus.MCU control module,keyboard module,motor driver module and remote control module comprise the control system.And complete the corresponding software design,testing and simulation. Key

word:

AT89C52;Yuntai

control;Stepper

motor;Simulation;serial

communication

2

目 录

摘 要 .............................................................. 1 ABSTRACT ........................................................... 2 第1章 引言 ........................................................ 1

1.1 云台 ....................................................... 1 1.2 单片机 ..................................................... 1 1.3 本设计完成的任务 ........................................... 2 第2章 云台 ........................................................ 3

2.1 云台概述 ................................................... 3

2.1.1 云台内部结构 .......................................... 3 2.1.2云台的性能指标 ........................................ 4 2.1.3云台电机 .............................................. 5 2.2 步进电机 ................................................... 5

2.2.1步进电机的工作原理 .................................... 6 2.2.2 步进电机主要技术指标 .................................. 7 第3章 总体方案 .................................................... 8

3.1云台控制系统简析 ............................................ 8 3.2控制系统实现 ................................................ 9 第4章 系统硬件设计 ................................................ 9

4.1 AT89C52单片机简介 .......................................... 9

4.1.1 AT89C52 .............................................. 10 4.1.2 AT89C52各引脚功能 ................................... 10 4.1.3 AT89C52串口通信 ..................................... 12 4.1.4 AT89C52中断系统 ..................................... 13 4.2 单片机系统 ................................................ 14

4.2.1 复位电路 ............................................. 15 4.2.2 时钟电路 ............................................. 15 4.2.3 电源电路 ............................................. 15 4.3 RS232总线设计 ........................................... 16

4.3.1 RS-232电平转换电路 .................................. 16 4.3.2 RS-232终端单片机接口电路 ............................ 17 4.4 键盘 ..................................................... 18 第5章 软件基础 ................................................... 20

5.1 C语言简介 ................................................. 20

5.2 Keil 编译器 ............................................... 20

5.2.1 Keil 8051 C编译器简介 ............................... 20 5.2.2 如何使用Keil软件开发 ................................ 21 5.3 Proteus仿真软件 ........................................... 16 第6章 系统软件设计 ............................................... 28

6.1 系统流程 .................................................. 28

3

6.2 初始化模块 ................................................ 29 6.3 延时模块 .................................................. 30 6.4 串口中断模块 .............................................. 30 第7章 系统调试与运行 ............................................. 31

7.1 虚拟串口 .................................................. 31 7.2 Keil软件程序编译 .......................................... 31 7.3 Proteus仿真 ............................................... 31 第8章 结束语 ..................................................... 33 致谢 .............................................................. 34 参考文献 .......................................................... 35 附录一 单片机程序源代码 ........................................... 36 附录二 单片机云台控制系统电路原理图 ............................... 41

4

2.2.1步进电机的工作原理

步进电机是数字控制电机,它将电脉冲信号转变成角位移,实质上是一种数字/角度转换器。通俗一点讲:当步进驱动器接收到一个脉冲信号,它就驱动步进电机按设定的方向转动一个固定的角度。它的旋转是以固定的角度一步一步运行的。可以通过控制脉冲个数来控制角位移量,从而达到准确定位的目的。步进电机的转子为多级分布,转子上嵌有多相星型连接的控制绕组,由专门电源输入脉冲信号,输出的角位移是断续的,所以又称为脉冲电动机。

步进电机分三种:永磁式(PM) ,反应式(VR)和混合式(HB)。永磁式步进一般为两相,转矩和体积较小,步进角一般为7.5度 或15度;反应式步进一般为三相,可实现大转矩输出,步进角一般为1.5度,但噪声和振动都很大;混合式步进是混合了永磁式和反应式的优点。它又分为两相和五相:两相步进角一般为1.8度而五相步进角一般为 0.72度。这种步进电机的应用最为广泛。

步进电机区别于其他控制电机的最大特点是,它是通过输入脉冲信号来进行控制的,即电机的总转动角度由输入脉冲数决定,而电机的转速由输入脉冲的频率决定。

该步进电机为一四相步进电机,采用单极性直流电源供电。只要对步进电机的各相绕组按合适的时序通电,就能使步进电机步进转动。图2-1是四个开关信号控制四相反应式步进电机工作原理示意图。

开始时,开关SB接通电源,SA、SC、SD断开,B相磁极和转子0、3号齿对齐,同时,转子的1、4号齿就和C、D相绕组磁极产生错齿,2、5号齿就和D、A相绕组磁极产生错齿。当开关SC接通电源,SB、SA、SD断开时,由于C相绕组的磁力线和1、4号齿之间磁力线的作用,使转子转动,1、4号齿和C相绕组的磁极对齐。而0、3号齿和A、B相绕组产生错齿,2、5号齿就和A、D相绕组磁极产生错齿。依次类推,A、B、C、D四相绕组轮流供电,则转子会沿着A、B、C、D方向转动。

四相步进电机按照通电顺序的不同,可分为单四拍、双四拍、八拍三种工作方式。单四拍与双四拍的步距角相等,但单四拍的转动力矩小。八拍工作方式的步距角是单四拍与双四拍的一半,因此,八拍工作方式既可以保持较高的转动力矩又可以提高控制精度。

单四拍、双四拍与八拍工作方式的电源通电时序与波形分别如图2-2 a、b、c所示:

a. 单四拍 b. 双四拍 c八拍

第6页

图2-2步进电机工作时序波形图

步进电机的驱动电路依据控制信号工作,控制信号由单片机产生,完成以下三种功能: ◆控制换相顺序

通电换向这一过程称为脉冲分配。对于四相步进电机而言,其各相通电顺序如图2.4所示,通电控制脉冲必须严格按照这一顺序分别控制A、B、C、D、A 、

B C、D相的通断。 ◆控制步进电机的转向

如果按给定方向的正序换相通电,步进电机正转;如果按反序通电换相,步进电机反转。

◆控制步进电机的速度

如果给步进电机发送一个控制脉冲,它就转一步,再发送一个脉冲,它会再转一步。两个脉冲的间隔越短,步进电机就转的越快。调整单片机发出的脉冲频率,就可以对步进电机进行调速。 2.2.2 步进电机主要技术指标

选择步进电机需要根据实际需要和技术指标综合考虑。步进电机只有在满足额定的工作条件下,才可以正常工作。主要技术指标有:

(1)工作电压:即步进电机工作所需要的工作电压。

绕组电流:只有绕组有电流时,才能建立磁场,且不同相上电流的有无决定步进电机的步进。不同的步进电机,其额定绕组电流也不一样。功率小的有几百毫安,功率大的以安培计。步进电机工作时,应使其工作在此电流下。

(2)转动力矩:转动力矩是指在额定条件下(电压、电流),步进电机的轴上所能产生的转矩,单位通常为牛顿每厘米(N/cm)。转动力矩会随转动的升高而下降,当步进电机转动时,电机各相绕组的电感将形成一个反向电动势,频率越高反向电动势越大,在它的作用下,电机随频率或速度的增大而相电流减小,从而导致力矩下降。

(3)保持转矩:保持转矩是指步进电机通电但是没有转动时,定子锁住转子的力矩。通常步进电机在低速时的力矩接近保持转矩。由于步进电机的输出力矩岁转速增大而不断衰减,输出功率也随速度增大而变化,所以保持转矩就成为了衡量步进电机的重要参数。

(4)步进角:步进电机每走一步实际上就是转子转一个角度。不同的电机,每步转动的角度不一样。小的有0.5度每步、1.5度每步,大的到15度每步。在应用中可根据用户的需求选用。

第7页

(5)精度:一般步进电机的进度为步进角的3~5%,且不积累。采用细分技术可以提高电机的运转精度。细分技术实质上是一种电子阻尼技术,起主要目的是减弱或消除步进电机的低频振动,提高电机的运转精度只是细分技术的一个附带功能。

(6)工作频率:即步进电机每秒钟走的额定步数。由于步进电机的走步实际上是转子的机械运动,不可能很快。例如,有的工作频率为500Hz,就意味着每走一步需要2ms。目前频率高的可达10KHz。但是总的来说步进电机的速度是十分慢的。

(7)空载启动频率:即步进电机在空载情况下能够正常启动的脉冲频率,如果脉冲频率高于该值,电机不能正常启动,可能发生丢失或堵转。在有负载的情况下,启动频率应更低。如果要是电机达到高速转动,脉冲频率应该有加速过程,即启动频率较低,然后按一定加速度升到所希望的高频(电机转速从低速到高速)。

(8)激励方式:以四相电机为例,驱动它的激励方式有1相、2相、1-2相三种。1相激励方式是指每一时刻4相中只有一相导通,步进电机以此工作方式工作时,温升较高,电源功率功耗小,但是当速度较高时容易产生失步;2相激励方式是指每一时刻4相中都有两相导通,然后按4相的顺序循环;1-2相激励方式是指驱动时一相导通和两相导通交替出现的。

(9)外表温度:步进电机温度过高会使电机的磁性材料退磁,从而导致力矩下降乃至失步,因此电机外表允许的最高温度应取决于不同电机磁性材料的退磁点。

第3章 总体方案

3.1云台控制系统简析

云台在任意位置,按下启动按钮,云台将依次完成向上→左行→向下→右行四个动作,逆时针方向旋转实现云台一个周期的动作。在转动的同时还可以手动控制云台。为了限制云台转动的范围,云台的向上、左转、向下和右转动作转换靠限位开关来控制。

本设计主要是设计云台的转动,并能按一定的要求动作。起动时,云台从原点开始按顺序动作,停止时,云台停在现行位置上,重新起动时,云台按停止前的动作继续进行。

为满足控制要求,云台转动设置手动方式和自动工作方式两种。 (1)手动工作方式。利用按钮对云台的每一步进行单独控制,例如,按“向下”按钮,云台使摄像头向下;按“向右”按钮,云台使摄像头向右。

(2)连续工作方式。云台在原位时,按下“自动”按钮,云台自动连续的

第8页

执行周期动作。当按下停止按钮式,云台保持当前状态,重新恢复后云台按停止前的动作继续进行工作。

3.2控制系统实现

系统总体组成框图如图1 所示,为保证控制的实时性及准确性,采用了主、从单片机控制方案,其中主单片机主要负责实时接收来自于外部专用球形摄像机控制键盘发出的控制指令并进行指令解释,若是控制云台运动的指令,则由主单片机将此指令转发给从单片机,由从单片机完成对云台水平及俯仰两轴的控制;若是控制摄像机的指令。从单片机功能相对简单,主要完成对两轴步进电机速度及位置的控制并记录当前两轴位置信息。 水平光电开关 存储器 显示器 水平电机 Rs232 Rs232 俯仰光电开关 Rs232

图1 系统组成框图

键盘 摄像机 步进电机驱动器1 主单片机 通信 从单片机 步进电机驱动器2 俯仰电机 第4章 系统硬件设计

4.1 AT89C52单片机简介

单片机是将中央处理器,随机存储器,只读存储器,定时器芯片和I/O接口电路集成于一个芯片上的微控制器。

ATMEL公司的89C52单片机,是增强型RISC内载Flash的单片机,在芯片上的Flash存储器附在用户的产品中,可随时编程,在线编程,使用户的产品设计容易,更新换代方便。89C52单片机采用增强的RISC结构,使其具有高速处理能力,在一个时钟周期内可执行复杂的指令,每MHz可实现1MIPS的处理能力。

第9页

89C52单片机工作电压为2.7~6.0V,可以实现耗电最优化。89C52的单片机广泛应用于计算机外部设备,工业实时控制,仪器仪表,通讯设备,家用电器,宇航设备等各个领域。 4.1.1 AT89C52

AT89C52是一个低电压、高性能COMS 8位单片机,片内含8K bytes的可反复擦写的Flash只读程序存储器(ROM)和256 bytes的随机存取数据存储器(RAM),器件采用ATMEL公司的高密度、非易失性存储技术生产,兼容标准MCS-51指令系统,片内置通用8位中央处理器和Flash存储单元,功能强大的AT89C52单片机可为你提供许多复杂较系统控制应用场合。

AT89C52有40个引脚,32个外部双向输入/输出(I/O)端口,同时内含2个外中断口,3个16位可编程定时计数器,2个全双工串行通信口,2个读写口线,AT89C52可以按照常规方法进行编程,但不可以在线编程(S系列的才支持在线编程)。其将通用的微处理器和Flash存储器结合在一起,特别是可反复擦写的Flash存储器可有效地降低开发成本。AT89C52有PDIP、PQFP/TQFP及PLCC等三种封装形式,以适应不同产品的需求。图4-1所示为DIP封装引脚图。

P1.0P1.1P1.2P1.3P1.4P1.5P1.6P1.7RSTRXD/P3.0TXD/P3.1INT0/P3.2VCCP0.0P0.1P0.2P0.3P0.4P0.5P0.6P0.7AT89C52EA/VPPALE/PROGPESNINT1/P3.3P2.7P2.6P2.5P2.4P2.3P2.2P2.1P2.0T0/P3.4T1/P3.5WR/P3.6RD/P3.6XTAL2XTAL1GND 图4-1 AT89C52 DIP封装引脚图 4.1.2 AT89C52各引脚功能

AT89C52为40 脚双列直插封装的8 位通用微处理器,采用工业标准的C51内核,在内部功能及管脚排布上与通用的8xc52 相同,其主要用于会聚调整时的功能控制。功能包括对会聚主IC 内部寄存器、数据RAM及外部接口等功能部件的初始化,会聚调整控制,会聚测试图控制,红外遥控信号IR的接收解码及与主板CPU通信等。主要管脚有:XTAL1(19 脚)和XTAL2(18 脚)为振荡器

第10页

输入输出端口,外接11.0592MHz 晶振。RST(9 脚)为复位输入端口,外接电阻电容组成的复位电路。VCC(40 脚)和VSS(20 脚)为供电端口,分别接+5V电源的正负端。P0~P3 为可编程通用I/O 脚,其功能用途由软件定义。 VCC(40脚):接+5V电压。 GND(20脚):接信号地。

RST(9脚): 复位输入。当振荡器工作时,RST引脚出现两个机器周期以上高电平将使单片机复位。

ALE/PROG(30脚):当访问外部程序存储器或数据存储器时,ALE(地址锁存允许)输出脉冲用于锁存地址的低8 位字节。一般情况下,ALE 仍以时钟振荡频率的1/6 输出固定的脉冲信号,因此它可对外输出时钟或用于定时目的。 PSEN(29脚):程序储存允许输出是外部程序存储器的读选通信号,当AT89s52 由外部程序存储器取指令(或数据)时,每个机器周期两次PSEN 有效,即输出两个脉冲。在此期间,当访问外部数据存储器,将跳过两次PSEN信号。 EA/VPP(31脚):外部访问允许。欲使CPU 仅访问外部程序存储器(地址为0000H—FFFFH),EA 端必须保持低电平(接地)。 XTAL1(19脚):接外部晶振的一个引脚,且为输入端。 XTAL2(18脚):接外部晶振的另一个引脚,该引脚接地。

P0口(39~32脚):双向8位三态I/O口,在外接存储器时,与地址总线低8位及数据总线复用。P0可以驱动8个LS TTL负载。

P1口(1~8脚):具有内部上拉电阻的8位准双向I/O口,该接口输出不包含高阻态,输出不能锁存。可以驱动4个LS TTL负载。

P2口(21~28脚):具有内部上拉电阻的8位准双向I/O口,在访问外部存储器时,作为高8位地址总线。可以驱动4个LS TTL负载。

P3口(10~17脚):具有内部上拉电阻的8位准双向I/O口,P3口的8个引脚还用于专门的功能——复用双功能口。它可以驱动4个LS TTL负载。它作为第二功能使用时,其各个引脚的功能如下: P3.0(10脚)RXD:串行口接收端 P3.1(11脚)TXD:串行口发送端 P3.2(12脚)INT0:外部中断0 P3.3(13脚)INT1:外部中断1 P3.4(14脚)T0:定时/计数器0

P3.6(16脚) WR:外部数据存储器写选通信号

P3.7(17脚) RD:外部数据存储器读选通信号 特殊功能寄存器:

第11页

(1) 单片机内含有两个16位定时/计数器T0、T1。它们各自由两个独立的8位寄存器组成,分别为TH0、TL0、TH1、TL1,。

(2) TMOD用于控制定时/计数器的工作方式及4种工作模式,其中低4位为定时器T0的方式控制字,高4位为定时器T1的方式控制字。它的字节地址为89H。其各位的定义如下: GATE C/T M1 M0 GATE C/T M1 MO GATE是选通门,当GATE=1时,只有INT0或INT1引脚为高电平且TR0或TR1置1时,相应的定时/计数器才被选通工作。C/T是计数器/定时器方式选择位。MO和M1是操作模式选择位。

1;TCON寄存器的高四位为定时/计数器T0、T1的控制寄存器和定时/计数溢出中断标志。

2;IE寄存器用于开放或屏蔽单片机各个中断。

3;SCON寄存器用于设置串口的工作方式和查询接收、发送中断产生标志。

4;SBUF串行数据缓冲器用于存放串口中预发送或接收的数据,它由两个独立的寄存器构成,一个发送缓冲器,一个接收缓冲器,他们公用一个地址。当从SBUF取数据时,访问接收缓冲器,当写数据时,访问发送缓冲器。 4.1.3 AT89C52串口通信

单片机系统设计中,经常需要使用串口与外部进行通信,因此,串口通信部分是单片机功能模块中极为重要的一部分。

串口通信时通过串口来进行的,串口不同于并口,它的数据和控制信息是一位接一位串行地传送下去。与并口相比,虽然速度慢,但是传送距离较并口会更长,因此常用于需要常距离通信而对速度又要求不高的场合。

异步通信以帧的形式发送字符数据,每一帧信息由起始位、数据位、奇偶校验位和停止位构成。异步通信中,每传输一个字节就要使用起始位和停止位,因此传输速度有限,常用于低速场合。同步通信使用数据块传送信息,而不是字节,省去了每个字节的起始位和停止位等数据,提高了通信的速率。同步通信的每个数据块的开始使用同步字符,使接受和发送同步。与异步通信相比,同步通信发送的数据量大、速度快,常用于传输速率要求较高的场合。

AT89C52内部的串口是一个标准的全双工串口,支持四种工作方式。波特率是可变的,可由软件设置。对89C52串口的访问和设置是通过访问其相关的特殊寄存器进行的,与89C52串口相关的特殊寄存器共有3个:SCON、PCON和SBUF。 串口控制寄存器SCON

串口控制寄存器SCON只要用于设置串口的工作模式和串口中断的查询。其格式如下:

第12页

D7 SM0 D6 SM1 D5 SM2 D4 REN D3 TB8 D2 RB8 D1 TI D0 RI SM0、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。 4.1.4 AT89C52中断系统

程序在执行过程中,允许外部或内部事件通过硬件中断程序的执行,使其转向出来外部或内部事件的中断服务中去,完成中断服务程序后,CPU继续与原来被中断的程序,这样的过程称为中断过程。能产生中断的外部或内部事件叫中断源。

1.中断源

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益处中断。

第13页

RX,TX:串行中断。 2.中断相关寄存器IE和IP

51单片机有两种中断优先级,其中每一个中断源的优先级都可以有程序设定。中断源的中断要求能否得到响应,受允许中断寄存器IE中各位的控制。它们的优先级由中断优先级寄存器IP的各位确定,同一优先级内的各中断源同时要求中断时,以内部的查询逻辑来确定响应次序。

允许中断寄存器IE的各位定义如下:

MSB LSB EA — ET2 ES ET1 EX1 ET0 EX0 EA 是总中断允位。EA=0时,禁止所有中断;EA=1时,则每个中 断源被允许还是被禁止,由各自的允许位确定;

ET2:是定时器2中断允许位。ET2=0,禁止定时器2中断;

ES:是串行口中断允许位。ES=0,禁止串行口中断; ET1:是定时器1中断允许位; EX1:是外部中断1允许位;

ET0: 是定时器0中断允许位; EX0: 是外部中断0允许位。

中断优先级寄存器IP的各位定义如下:

MSB — — PT2 PS PT1 PX1 PT0 LSB PX0 PT2: 是定时器2中断优先级设定位; PS:是串行口中断优先级设定位; PT1:是定时器1中断优先级设定位; PX1:是外部中断1优先级设定位; PT0:是定时器0中断优先级设定位; PX0:是外部中断0优先级设定位。

4.2 单片机系统

本设计的所用的单片机系统其实就是单片机最小系统,所谓最小系统就是能是单片机正常工作的最少配置。本此设计的单片机系统由AT89C52单片机、复位电路、时钟电路和电源电路组成,如图4-2所示。

第14页

图4-2 单片机最小系统

4.2.1 复位电路

复位操作完成单片机片内电路的初始化,是单片机从一种确定的状态开始运行。当单片机的复位引脚RET出现5ms以上的高电平时,单片机就完成了复位操作。复位操作通常有2中基本形式:上电复位、开关复位。常用的上电且开关复位电路如图4-2中所示。上电后,由于电容充电,使RET持续一段高电平时间。当单片机已在运行中时,按下复位键也能使RET持续一段时间的高电平,从而实现上电且开关复位的操作。 4.2.2 时钟电路

单片机的时钟信号用来提供单片机内各种操作的时间基准。单片机的时钟信号通常用两种电路形式得到:内部振荡方式和外部振荡方式。在引脚XTAL1和XTAL2外接晶体振荡器,振荡方式所得的时钟信号比较稳定,所以在本设计中就是采用内部振荡方式。晶振选用11.0592MHz。内部振荡方式如图4-2中所示。 4.2.3 电源电路

电源设计部分如图4-3所示。因为单片机需要的是5V的电源,而输入的是9-12V的电源,所以需要这个稳压电路把9-12V稳压到5V,电源电路设计为采用7805线性稳压,图中电容是起到滤波的作用,一个发光二极管作电源指示灯。

第15页

发大型软件时更能体现高级语言的优势。下面详细介绍Keil C51开发系统各部分功能和使用。

Keil C51单片机软件开发系统的整体结构C51工具包的整体结构,如下图5-1所示,其中uVision与Ishell分别是C51 for Windows和for DOS的集成

u Vision/Ishell集成开发环境C51编译器A51编译器C库文件LIB51库管理RTX51实时操作系统BL51连接OH51转换器图5-1 C51工具包整体机构图

开发环境(IDE),可以完成编辑、编译、连接、调试、仿真等整个开发流程。开发人员可用IDE 本身或其它编辑器编辑C 或汇编源文件。然后分别由C51及A51编译器编译生成目标文件(.OBJ)。目标文件可由LIB51创建生成库文件,也可以与库文件一起经L51连接定位生成绝对目标文件(.ABS)。ABS文件由OH51转换成标准的Hex文件,以供调试器dScope51或tScope51使用进行源代码级调试,也可由仿真器使用直接对目标板进行调试,也可以直接写入程序存贮器如EPROM 中。

5.2.2 如何使用Keil软件开发

1.建立工程

打开Keil软件后,出现图5-2所示界面。当然,如果Keil在上次关闭时有打开的工程,再一次打开时它会自动加载上一次的工程文件。

第21页

图5-2 Keil软件主界面

首先选择“Project/New Project...”菜单,出现一个对话框,如下图5-3所示。

图5-3 “创建新工程”对话框

点击后,在出现的对话框中选择工程存在路径,单击“保存”后,出现如下图5-4所示界面。在此界面上选择系统所用的单片机型号,例如:Atmel AT89C52,单击“确定”。

第22页

图5-4 “选择目标器件”对话框

设置完成后,软件会提示“是否将8051上电初始化程序添加入工程?”如下图5-5所示,这个一般选择“否”。

图5-5 “是否将8051上电初始化程序添加入工程”对话框

这样,就建立了一个空的51工程。

接下来的事,就是在这个工程里面加入自己的程序代码。点击

,或者

“File”->“New”,便建立了一个空的文本框。现在,就可以开始在里面输入源程序代码了。

保存时注意:如果是用C语言写的程序,则将文本保存成*.c,如果是用汇编写的程序,则将文本存成*.asm ,本系统使用的是C语言,所以保存为lijian.C。到目前为步,我们已经建立了一个工程,也写了一个程序代码。但现在还不能开始编译。因为还没有将程序代码添加到工程里面去。

下一步就是将写完的程序添加到工程里面,如下图5-6所示,在左边“Project Workspace”工程窗口里的“Source Group1”上右击,选择“Add Files

第23页

to Group”‘Source Group1’。在打开的对话框中,选择刚存的文件路径和对应的扩展名。这样,程序就添加进了这个工程。

图5-6 工程中添加文件页面

下一步,就开始编译刚输入进去的代码。点击工具栏中的Keil会打出下面的提示:

创建目标 '目标 1' assembling led.asm... linking...

Program Size: data=8.0 xdata=0 code=100 \

按钮。接着,

其中“\”说明现在的工程编译通过,0个错误和0个警告。建立工程的时候,默认是不生成HEX文件的,得在编译做如下设置:单击

,出现如下图4-7所示对话框,选择“Output”所指的多选

框勾上,点“确定”。

现在再点击

重新编译,系统提示:“creating hex file from \”。

便会在工程所在文件夹里生成HEX文件。

第24页

图5-7 工程设置中的“Output”页面

2. 调试

Keil有很强大的调试功能,可以显示C程序的反汇编代码、可以计算代码运行的时间、可以显示程序中某一变量的值??能用好这个调试工具对编写单片机程序会有很大的帮助。同样的,在这里,只对Debug进行简单应用介绍。

图5-8 工程设置中的“Target”页面

第25页

首先,单击

,弹出如上图5-8所示对话框,在目标页面上设置对应的晶

,进入调试界面如下图5-9所示。

振频率。其他不作修改。设置完成后,单击

图5-9 调试界面

点击

中对应的工具按钮则可以开始调试。

5.3 Proteus仿真软件

Proteus软件是英国Lab Center Electronice公司开发的EDA工具软件。从1989年问世至今已有20年的历史,在全球得到广泛应用。Proteus软件除具有和其他EDA工具软件一样的原理编辑、印制电路板制作外,还具有交互式的仿真功能。它不仅是模拟电路、数字电路、模/数混合电路的设计与仿真平台,更是目前世界上最先进、最完整的多种型号微处理器系统的设计与仿真平台,真正实现了在计算机中完成电路原理图设计、电路分析与仿真、微处理器程序设计与仿真、系统测试与功能验证到形成印制电路板的完整电子设计、研发过程。

Proteus软件由ISIS(Intelligent Schematic Input System)和ARES(Advanced Routing and Editing Software)两个软件构成,其中ISIS是一款智能电路原理图输入系统软件,可作为电子系统仿真平台;ARES是一款高级布线编辑软件,用于制作印制电路板(PCB)。

第26页

Proteus电路原理图设计是在ISIS软件环境中进行绘制,该软件编辑环境具有友好的交互式人机界面,其设计功能强大,使用方便。

第27页

第6章 系统软件设计

6.1 系统流程

整个云台控制系统分为初始化,键盘扫描,串口中断,延时程序和步进电机运转五部分。主函数通过调用各子程序来实现键盘扫描,串口中断程序的调用来实现步进电机的控制。本设计的系统主程图如图6-1所示,中断子程序流程图如图6-2所示。

开始串口、定时器初始化自动运行标志位清零自动运行判断自动运行标志位按键扫描读取键值是否有键按下?是云台向上转动是是否等于1?否云台向下转动是否等于2?否云台向上左转动是是否等于4?否是云台向右转动是云台向上转动是否等于8?否是否等于16?

图6-1 系统主流程图

第28页

中断服务子程序读SBUF是云台向上转动是是否等于A?否云台向下转动是否等于B?否云台向上左转动是是否等于C?否是云台向右转动是云台向上转动是否等于D?否是否等于Z?否中断返回

图6-2 中断子程序流程图

6.2 初始化模块

所谓初始化就是在应用系统中,需要对软件进行初始化设置,以能够满足该系统的正常工作。在本系统中,如果没有初始化,则该系统无法正常工作。

本系统中初始化程序包括两部分,一部分是定时器初始化,另一部分是串口初始化。而这些都是通过设置相应的特殊功能寄存器来实现的。本设计中定时器初始化包括定时/计数器选择、定时/技术器工作方式、计数器装初值、打开定时器;串口初始化包括串口工作方式设置、打开串口、开总中断。和定时/计数器有关的特殊功能寄存器有TOMD、TCON,和串口相关的特殊功能寄存器有SCON、PCON。前面已经介绍了特殊功能寄存器,这里不再赘述。串口工作方式1的波特率由定时/计数器T1、T2的溢出速率和SMOD共同确定,计算公式为波特率=

第29页

(2SMOD/32)2(TI溢出率),TI溢出率=fosc/{12×[256—(TH1)]},本系统波特

率为9600bit/s,晶振频率为11.0592MHz,串口选择工作方式为1,所以初值等于0xfa。

定时计数器的初始化编程步骤:

1)根据定时时间要求或计数要求计算初值; 2)工作方式控制字送TMOD;

3)送计数初值到THx和TLx寄存器中; 4)启动定时/计数器,即将TRx置位。

6.3 延时模块

通过用C语言写一段循环程序,来占用CPU一段时间从而达到延时的目的。在该系统中,延时程序有至关重要的作用,一是作为普通的延时程序,而是产生步进电机的工作所需脉冲频率,延时的多少决定步进电机的转速,在本系统中,对步进电机的转速没有做过多要求,所以采用了for循环语句构成的比较简单的延时程序,如果对延时时间、步进电机转速有要求的系统中,则可以使用定时器定时,定时器的精度相当高。下面是采用普通延时的程序源代码: void delay(uint z)//延时

{ uint x,y;

for(x=z;x>0;x--) for(y=110;y>0;y--); }

6.4 串口中断模块

在本系统中,单片机通过串口向单片机发送远距离控制信号,一旦PC机发送控制信号后,单片机接受到信息产生中断,通过中断服务程序去控制步进电机动作。由于串口中断具有优先级别高的特点,所以不需要担心键盘和串口信息发生冲突。

第30页

本文来源:https://www.bwwdw.com/article/dgw6.html

Top