资源描述
第1章 绪论1.1 课题背景步进电机作为执行元件,是机电一体化的关键产品之一, 广泛应用在各种自动化控制系统中。随着微电子和计算机技术的发展,步进电机的需求量与日俱增,在各个国民经济领域都有应用。上个世纪就出现了步进电动机,它是一种可以自由回转的电磁铁,动作原理和今天的反应式步进电动机没有什么区别,也是依靠气隙磁导的变化来产生电磁转矩。在本世纪初,由于资本主义列强争夺殖民地,造船工业发展很快,同时也使得步进电动机的技术得到了长足的进步。到了80年代后,由于廉价的微型计算机以多功能的姿态出现,步进电动机的控制方式更加灵活多样。原来的步进电机控制系统采用分立元件或者集成电路组成的控制回路,不仅调试安装复杂,要消耗大量元器件,而且一旦定型之后,要改变控制方案就一定要重新设计电路。计算机则通过软件来控制步进电机,更好地挖掘出电动机的潜力。因此,用计算机控制步进电机已经成为了一种必然的趋势,也符合数字化的时代趋势。 1.2 步进电机的发展 现在比较常用的步进电机包括反应式步进电机、永磁式步进电机、混合式步进电机和单相式步进电机等。其中反应式步进电机的转子磁路由软磁材料制成,定子上有多相励磁绕组,利用磁导的变化产生转矩。现阶段,反应式步进电机获得最多的应用。步进电机和普通电机的区别主要就在于其脉冲驱动的形式,正是这个特点进电机可以和现代的数字控制技术相结合。不过步进电机在控制的精度、速度化范围、低速性能方面都不如传统的闭环控制的直流伺服电动机。在精度不是需要特别高的场合就可以使用步进电机,步进电机可以发挥其结构简单、可靠性高和成本低的特点。使用恰当的时候,甚至可以和直流伺服电动机性能相媲美。步进电机广泛应用在生产实践的各个领域。它最大的应用是在数控机床的制造中,因为步进电机不需要A/D转换,能够直接将数字脉冲信号转化成为角位移,所以被认为是理想的数控机床的执行元件。早期的步进电机输出转矩比较小,无法满足需要,在使用中和液压扭矩放大器一同组成液压脉冲马达。随着步进电动机技术的发展,步进电动机已经能够单独在系统上进行使用,成为了不可替代的执行元件。比如步进电动机用作数控铣床进给伺服机构的驱动电动机,在这个应用中,步进电动机可以同时完成两个工作,其一是传递转矩,其二是传递信息。步进电机也可以作为数控蜗杆砂轮磨边机同步系统的驱动电动机。除了在数控机床上的应用,步进电机也可以并用在其他的机械上,比如作为自动送料机中的马达,作为通用的软盘驱动器的马达,也可以应用在打印机和绘图仪中。步进电动机以其显著的特点,在数字化制造时代发挥着重大的用途。伴随着不同的数字化技术的发展以及步进电机本身技术的提高,步进电机将会在更多的领域得到应用。1.3 步进电机的技术指标步进电机是一种将电脉冲转化为角位移的执行机构。当步进驱动器接收到一个脉冲信号,它就驱动步进电机按设定的方向转动一个固定的角度(称为“步距角”),它的旋转是以固定的角度一步一步运行的。可以通过控制脉冲个数来控制角位移量,从而达到准确定位的目的;同时可以通过控制脉冲频率来控制电机转动的速度和加速度,从而达到调速的目的。步进电机可以作为一种控制用的特种电机,利用其没有积累误差(精度为100%)的特点,广泛应用于各种开环控制。现在比较常用的步进电机包括反应式步进电机(VR)、永磁式步进电机(PM)、混合式步进电机(HB)和单相式步进电机等。永磁式步进电机一般为两相,转矩和体积较小,步进角一般为7.5度或15度;反应式步进电机一般为三相,可实现大转矩输出,步进角一般为1.5度,但噪声和振动都很大。反应式步进电机的转子磁路由软磁材料制成,定子上有多相励磁绕组,利用磁导的变化产生转矩。 混合式步进电机是指混合了永磁式和反应式的优点。它又分为两相和五相:两相步进角一般为1.8度而五相步进角一般为0.72度。这种步进电机的应用最为广泛,也是本次细分驱动方案所选用的步进电机。1、步进电机的一些基本参数: (1)电机固有步距角: 它表示控制系统每发一个步进脉冲信号,电机所转动的角度。电机出厂时给出了一个步距角的值,如86BYG250A型电机给出的值为0.9/1.8(表示半步工作时为0.9、整步工作时为1.8),这个步距角可以称之为电机固有步距角,它不一定是电机实际工作时的真正步距角,真正的步距角和驱动器有关。(2)步进电机的相数: 是指电机内部的线圈组数,目前常用的有二相、三相、四相、五相步进电机。电机相数不同,其步距角也不同,一般二相电机的步距角为0.9/1.8、三相的为0.75/1.5、五相的为0.36/0.72。在没有细分驱动器时,用户主要靠选择不同相数的步进电机来满足自己步距角的要求。如果使用细分驱动器,则相数将变得没有意义,用户只需在驱动器上改变细分数,就可以改变步距角。(3)保持转矩(HOLDINGTORQUE): 是指步进电机通电但没有转动时,定子锁住转子的力矩。它是步进电机最重要的参数之一,通常步进电机在低速时的力矩接近保持转矩。由于步进电机的输出力矩随速度的增大而不断衰减,输出功率也随速度的增大而变化,所以保持转矩就成为了衡量步进电机最重要的参数之一。比如,当人们说2N.m的步进电机,在没有特殊说明的情况下是指保持转矩为2N.m的步进电机。 (4)DETENTTORQUE: 是指步进电机没有通电的情况下,定子锁住转子的力矩。DETENTTORQUE在国内没有统一的翻译方式,容易使大家产生误解;由于反应式步进电机的转子不是永磁材料,所以它没有DETENTTORQUE。 2、步进电机的一些特点: (1)一般步进电机的精度为步进角的3-5%,且不累积。 (2)步进电机外表允许的最高温度。 步进电机温度过高首先会使电机的磁性材料退磁,从而导致力矩下降乃至于失步,因此电机外表允许的最高温度应取决于不同电机磁性材料的退磁点;一般来讲,磁性材料的退磁点都在摄氏130度以上,有的甚至高达摄氏200度以上,所以步进电机外表温度在摄氏80-90度完全正常。 (3)步进电机的力矩会随转速的升高而下降。当步进电机转动时,电机各相绕组的电感将形成一个反向电动势;频率越高,反向电动势越大。在它的作用下,电机随频率(或速度)的增大而相电流减小,从而导致力矩下降。 (4)步进电机低速时可以正常运转,但若高于一定速度就无法启动,并伴有啸叫声。步进电机有一个技术参数:空载启动频率,即步进电机在空载情况下能够正常启动的脉冲频率,如果脉冲频率高于该值,电机不能正常启动,可能发生丢步或堵转。在有负载的情况下,启动频率应更低。如果要使电机达到高速转动,脉冲频率应该有加速过程,即启动频率较低,然后按一定加速度升到所希望的高频(电机转速从低速升到高速)。步进电动机以其显著的特点,在数字化制造时代发挥着重大的用途。伴随着不同的数字化技术的发展以及步进电机本身技术的提高,步进电机将会在更多的领域得到应用。第2章 课题分析2.1步进电机工作原理步进电机是将电脉冲信号转变为角位移或线位移的开环控制元件。在非超载的情况下,电机的转速、停止的位置只取决于脉冲信号的频率和脉冲数,而不受负载变化的影响,通俗一点讲:当步进驱动器接收到一个脉冲信号,它就驱动步进电机按设定的方向转动一个固定的角度(即步进角)。这样就可以通过控制脉冲个数来控制角位移量,从而达到准确定位的目的;同时还可以通过控制脉冲频率来控制电机转动的速度,从而达到调速的目的。这一线性关系的存在,加上步进电机只有周期性的误差而无累积误差等特点,使得在速度、位置等控制领域用步进电机来控制变的非常的简单。但步进电机并不能象普通的直流电机,交流电机在常规下使用。它必须由双环形脉冲信号、功率驱动电路等组成控制系统方可使用。因此用好步进电机却非易事,它涉及到机械、电机、电子及计算机等许多专业知识。 步进电 机A+A-B+B- 图 2-1步进电机通电示意图下面以二相四拍的步进电机为例,如图2-1所示。它的通电顺序如下表2-1所示: 表2.1 步进电机励磁表A+A-B+反转方向B-01010101102010正转方向131001即按图中的通电顺序,每给一个脉冲,电机便相应地走一步,且步进电机正方转动的脉冲顺序为:0A 06 05 09 ;步进电机反方向转动的脉冲顺序为:09 05 06 0A 。所以,根据这样的脉冲递顺序,我们只要在实验中给步进电机传送这样的信息,步进电机就可以运转了,至于电机的具体运行规律,只要在程序中添入适当的控制规律就可以了。2.2 课题的总体思路构想本课题研究的是用单片机为核心器件,实现对步进电机的控制。其总体思路如框图2-2:单片机脉冲分配功率放大步进电机脉 冲信 号 图2-2 控制系统总体思路框图步进电机的控制系统实际上就是步进电机驱动器内部的环行分配器的设计。环行分配器是一种特殊的可逆循环计数器,这种计数器的输出不是一般的编码,而是根据步进电机的励磁状态编写的特殊编码。步进电机正常工作必须按照该种电机的励磁状态转换表和顺序对各相绕组进行通电和断电,环行分配器的功能就是把来自控制环节的时钟脉冲按一定的顺序分配给步进电机驱动器的各相输入端,由于电机有正转和反转的要求,所以环行分配器的输出既是周期的,又是可逆的。其框图如图2-3。 环 行分 配器时钟脉冲 输方向电平 出 使能输入 图2-3环行分配器环行分配器的构成可以用集成的现成产品,或用EPROM构成环行分配器,还可以用单片机单独实现。集成环行分配器现有产品有专门为三相步进电机设计的CH250芯片等,但这种产品仍然很少,不能满足需求。所以用户现在仍然较多的自己定义环行分配器。2.3 环行分配器的设计2.3.1 EPROM实现的环行分配器目前,在我国应用引进的单片机主流产品是MCS-48,MCS-51,MCS-96系列的,在应用中MCS-51又占据了绝大部分,而MCS-51的单片机多数没有片内ROM或EPROM,所以要用到外部程序存储器,所以EPROM也得到了较多的应用。EPROM是一种紫外线擦除的可编程只读存储器,现在市场有2716、2732、2764、27128、27256等型号,这种存储器个地址的内容可由用户自己编程定义,所以励磁状态表可编程完成,这样就把复杂的电路用程序代换,既提高了可读性,又提高了安全性。在EPROM芯片上有一个石英玻璃窗口,当需将片内信息擦掉时,只需用紫外线通过该窗口用1.2KW的紫外线灯光照射1530分钟,便可完成信息的擦洗。A串行控制的环行分配器具有串行功能的单片机系统与步进电机环行分配器之间只需两条控制线,一条用来发送时钟脉冲,另一条用来发送方向电平信号。由于单片机与环行分配器之间只有两条控制线,故结构简单。系统从CP脉冲控制线按电机旋转速度的要求发出相应周期的脉冲,即可使电机旋转,当需电机转速恒定时,只需发出恒定周期的脉冲串;当需电机加(减)速运行时,只需发出递增(减)的脉冲串;当需要停止运行时,只要停止发出脉冲就行了。由此可方便的对电机转速进行控制。图2.3简单画出了这种控制方法的接线图,图2-4中采用了8031的P1.0作为方向电平信号,P1.1作为CP脉冲信号。8031 P1.1 P1.0 环 行分配 器驱动器步进电机 图2-4 串行控制示意图B并行控制的环行分配器用单片机系统的I/O口直接去控制步进电机各相驱动线路的方法称为并行控制。环行分配器的功能必须由单片机系统完成。图2.3.2画出了电机控制口的接线图,8031的P1.0P1.3四条数据线直接接到一个EPROM2764的低四位地址线上,其他地址线均接地,这样P1口输出的数据最多可选通EPROM的十六个地址(00H0FH),2764的低四位数据线Q0Q3做步进电机A、B、C、D各相的控制线。2764的内存中存储各相励磁状态的转换表。如图2-5所示,在8031内部数据存储器中选一地址作为输出状态的计数器,成为状态字节。当需要正转一步时,只要把计数器内容加一送到P1口,当需要反转一步时,只需把计数器内容减一送到P1口。这种程序只需对计数器进行加1减1的操作,然后送到P1口就可以了。输出的数据实际上相当于环行分配器输出的代码。而代码的意义是由2764内存储的状态转换表完成,每个数据对应环行分配器的一个输出状态。8031 P1.0 P1.1 P1.2 P1.32764A0 D0A1 D1A2 D2A3 D3驱动器A步B进C电 D机 图2-5并行控制示意图2.3.2 单片机自身实现的环行分配器单片机自身实现的环行分配器就是用自身带有EPROM的高档单片机,代替2764程序存储器,直接接步进电机各相输入口,对步进电机进行控制.,从而也省下了一个程序存储器,也降低了成本。这种方法,系统用一个输出口的数据输出线直接控制步进电机各相的励磁信号。环行分配器的功能全靠系统内部软件来完成。图2-6为这种接口方法的示意图,AT89S52的P1.0P1.3四条数据输出线直接控制步进电机驱动器各相的输入信号,系统输出口对应电机的励磁状态字。这个方案需在单片机内部ROM区域开辟一个区域存储环行分配器的输出状态表,系统软件按照电机正反转的要求按正反转顺序依次将状态表的内容取出送到电机输出口,从而实现电机励磁状态的转换。虽然此种方法占据了一部分ROM空间,但是由于AT89S52系统寻址可达64K,所以占用一些空间不会对系统造成影响,而且要比外扩展芯片通信要快。AT89S52 P1.0P1.1P1.2P1.3驱动器A相B相C相D相 图2-6 软件替代的环行分配器2.4 方案确定对环行分配器,有软件的单片机控制和硬件的EPROM控制两种方法,对于环行分配器的EPROM实现方法,其中串行控制方法简单,但只能控制固定相数及拍数的步进电机,无法灵活选择步进电机,对于整个系统的灵活性有很大影响,使系统通用性降低,且对于8031输入输出口的利用率很低,无法形成复杂的操作,串行控制的CP脉冲需要延时,这样软件的消耗会增大。并行控制的方法,可以灵活选择步进电机的相数及拍数,只要改变EPROM的地址就可以了,系统形成后有较大的灵活性和通用性,所以并行控制较串行控制好,有利形成通用系统。但相比较起来,软件方法突出的优点是:节省硬件,降低了系统的成本,同时也免除了一些焊接与连线,也提高了系统的可靠性,而且程序更改灵活,有利于系统的小型化设计,但主要缺点是占用CPU时间较多,如果程序大了对于提高系统响应速度不利。但对于单片机高速发展的今天,没有片内存储器的单片机正逐渐被淘汰, 8031及其外扩芯片也正逐步被取代,所以为方便系统的小型化和嵌入式系统的开发,我们应使用高级单片机,从而用软件取代硬件也是理所当然的。因此,此课题选用的是软件控制的方法。第3章 硬件电路具体设计3.1 单片机概述单片机是在一块硅片上集成了微处理器(CPU),存储器(RAM,ROM,EPROM)和各种输入、输出接口(定时器/计数器,并行I/O口,串行口,A/D转换器以及脉冲调制器PWM等),这样一块芯片具有一台计算机的属性,因而被称为单片微型计算机,简称单片机。单片机主要应用于测控领域,用以实现各种测试和控制功能,为了强调其控制属性,在国际上,一般把单片机称为微控制器MCU(Micro Controller Unit)。而在我国则比较习惯于使用“单片机”这一名称。由于单片机应用时通常是处于被控系统的核心地位并嵌入其中,为了强调其“嵌入”的特点,也常常把单片机称为嵌入式控制器EMCU(Embedded Micro Controller Unit)。有8位、16位甚至32位机,但8位单片机仍以它的价格低廉、品种齐全、应用软件丰富、支持环境充分、开发方便等特点而占着主导地位。而INTEL公司凭着他们雄厚的技术,性能优秀的机型和良好的基础,目前仍是单片机的主流产品。只不过是九十年代中期,INTEL公司忙着开发他们个人电脑微处理器,已没有足够的精力继续发展自己创导的单片机技术,而由PHILIPS等公司继续发展C51系列单片机。现在可以说单片机是百花齐放,百家争鸣的时期,世界上各大芯片制造公司都推出了自己的单片机,从8位、16位到32位,数不胜数,应有尽有,有与主流C51系列兼容的,也有不兼容的,但它们各具特色,互成互补,为单片机的应用提供广阔的天地。3.2 单片机简介本次毕业设计用的是AT89S52单片机。AT89S52是一个低功耗,高性能CHMOS可反复擦写的8位单片机,片内含8k Bytes ISP(In-system programmable)的写1000次的Flash只读程序存储器,器件采用ATMEL公司的高密度、非易失性存储技术制造,兼容标准MCS-51指令系统及80C51引脚结构,芯片内集成了通用8位中央处理器和ISP Flash存储单元,功能强大的微型计算机的AT89S52可为许多嵌入式控制应用系统提供高性价比的解决方案。AT89S52具有如下特点:40个引脚,8k Bytes Flash片内程序存储器,256 bytes的随机数据存储器(RAM),32个外部双向输入/输出(I/O)口,5个中断优先级2层中断嵌套中断,2个16位可编程定时计数器,2个全双工串行通信口,看门狗(WDT)电路,片内时钟振荡器。此外,AT89S52设计和配置了振荡频率可为0Hz并可通过软件设置省电模式。空闲模式下,CPU暂停工作,而RAM定时计数器,串行口,外中断系统可继续工作,掉电模式冻结振荡器而保存RAM的数据,停止芯片其它功能直至外中断激活或硬件复位。同时该芯片还具有PDIP、TQFP和PLCC等三种封装形式,以适应不同产品的需求。其主要功能特性见表3-1:表3-1 AT89S52功能表 兼容MCS-51指令系统 8k可反复擦写(1000次)ISP Flash ROM 32个双向I/O口 4.5-5.5V工作电压 3个16位可编程定时/计数器 时钟频率0-33MHz 全双工UART串行中断口线 256x8bit内部RAM 2个外部中断源 低功耗空闲和省电模式 中断唤醒省电模式 3级加密位 看门狗(WDT)电路 软件设置空闲和省电功能 灵活的ISP字节和分页编程 双数据寄存器指针由于AT89S52完全兼容MCS-51系列单片机,而且市面上的单片机方面的是书籍多为MCS-51系列的,所以以下均介绍MCS-51系列单片机,代替介绍AT89S52单片机。3.2.1 MCS-51单片机的工作原理8051单片机包含中央处理器、程序存储器(ROM)、数据存储器(RAM)、定时/计数器、并行接口、串行接口和中断系统等几大单元及数据总线、地址总线和控制总线等三大总线。1. 中央处理器:中央处理器(CPU)是整个单片机的核心部件,是8位数据宽度的处理器,能处理8位二进制数据或代码,CPU负责控制、指挥和调度整个单元系统协调的工作,完成运算和控制输入输出功能等操作。2. 数据存储器(RAM):8051内部有128个8位用户数据存储单元和128个专用寄存器单元,它们是统一编址的,专用寄存器只能用于存放控制指令数据,用户只能访问,而不能用于存放用户数据,所以,用户能使用的的RAM只有128个,可存放读写的数据,运算的中间结果或用户定义的字型表。3. 程序存储器(ROM):8051共有4096个8位掩膜ROM,用于存放用户程序,原始数据或表格。4. 定时/计数器(ROM):8051有两个16位的可编程定时/计数器,以实现定时或计数产生中断用于控制程序转向。5. 并行输入输出(I/O)口:8051共有4组8位I/O口(P0、 P1、P2或P3),用于对外部数据的传输。6. 全双工串行口:8051内置一个全双工串行通信口,用于与其它设备间的串行数据传送,该串行口既可以用作异步通信收发器,也可以当同步移位器使用。7. 中断系统:8051具备较完善的中断功能,有两个外中断、两个定时/计数器中断和一个串行中断,可满足不同的控制要求,并具有2级的优先级别选择。8. 时钟电路:8051内置最高频率达12MHz的时钟电路,用于产生整个单片机运行的脉冲时序,但8051单片机需外置振荡电容。在MCS-51单片机内,有一个8位CPU,4K或8K字节的程序存储器,128字节的数据存储器21个特殊功能存储器,四个并行I/O口,一个全双工串行口,两个16位定时器/计数器,5个中断源,一个片内振荡器和一个时钟电路。对于MCS-51系列中不同型号的单片机,其内存配置有所不同,详见表3-2。表3-2 MCS-51内存配置芯片种类ROMEPROMRAM51803112880514K12887514K12852803225680528K25687528K2563.2.1 MCS-51单片机的管脚图按HMOS工艺做出的MCS-51单片机用40脚双列直插(DIP)方式封装,按CHMOS工艺制造的80C51/80C31有时还使用方形封装,它们的引脚情况见图3-1所示,用方形封装的MCS-51单片机有44个引脚。 图3-1 单片机管脚图引脚功能:(1)主电源引脚VCC和VSSVCC(40脚):接正5V电源VSS(20脚):接地(2)时钟电路引脚XLAT1和XLAT2XLAT1(19脚):接外部晶体的一端,在片内是内部振荡器的反相放大器的输入端。在使用外部时钟工作时,此脚接地。XLAT2(18脚):振荡器以内部方式工作时,此脚接晶振的另一端,用外部时钟工作时,此脚为外部振荡信号的输入端。(3)控制信号引脚RST/VPD、ALE、PSEN及EARST/VPD(9脚):此引脚用于单片机的上电复位或掉电保护。在此脚与VCC之间加一个20F的电容并通过10K的下拉电阻接地,即可做到上电复位。若在单片机工作时复位,此脚须加持续时间为两个机器周期(24个时钟周期)的高电平。在VSS掉电期间,此引脚可接入备用电源,以保护内部RAM的信息。当Vcc下降到低于规定的电压,且VPD接入备用电源时,VPD即可向内部RAM供电。ALE(30脚):ALE为地址锁存允许信号。在访问片外存储器时,ALE用于锁存出现在P0口的低入位地址信号。在不作外部RAM读/写操作时,ALE可用于定时。对于EPROM型单片机,在进行EPROM编程时,此脚用于输入编程脉冲。PSEN(29脚):在访问片外程序存储器时,该脚输出负脉冲作为程序存储器的读选通信号。CPU在向片外程序存储器读取指令期间,PSEN信号在每个机器周期两次有效。在访问外部数据存储器时,PSEN信号将不再出现。EA(31脚):对于内部有程序存储器的机型,EA应接低电平。当EA为低电平时,单片机访问片内程序存储器(低4KB地址)。若超出4KB地址时,单片机自动转去执行外部程序存储器中的程序。(4)输入/输出引脚P0、P1、P2、P3P0.0P0.7(3239脚):P0.0P0.7统称为P0口。在访问外部存储器时,为地址/数据复用口。它分时提供低8为地址线和8为双向数据总线。在EPROM编程时,从P0口输入指令字节,在检验程序时,则输出指令字节。P0口可以驱动8个TTL电路。P1.0P1.7(18脚):P1.0P1.7统称为P1口。对EPROM编程和进行程序验证时,P1口接低8为地址。在8051/8052之中,P1.0相当于定时器2的计数触发输入端,P1.1相当于定时器2的外部控制端。P1口可以驱动4个TTL电路。P2.0P2.7(2128脚):P2.0P2.7统称为P2口。在访问外部存储器时,P2口负责输出高8位地址。在对EPROM编程和进行程序验证时,P2口接收输入的高8位地址。P2口可以驱动4个TTL电路。P3.0P3.7(1017脚):P3.0P3.7统称为P3口。P3口为双功能口,她可以作为一般的双向口,也可以将每一位用于第二功能。P3.0为RXD串行口输入P3.1为TXD串行口输出P3.2为INT0外部中断0输入端P3.3为INT1外部中断1输入端P3.4为T0定时器0外部输入端P3.5为T1定时器1外部输入端P3.6为WR外部数据存储器写选通控制输出端P3.7为RD外部数据存储器读选通控制输出端3.3 单片机外围接口芯片8279Intel8279是一种通用的可编程的键盘/显示器接口器件,可对64个开关矩阵组成的键盘进行自扫描,接收键盘上的输入信息存入内部的FIFO RAM,并在有键输入时向CPU请求中断。8279内部有一个16*8的显示缓冲器,能对8位或16位LED自动扫描,使显示缓冲器的内容在LED上显示出来。8279还可以直接与MCS-51等单片机连接,使用它可简化系统的软件设计,提高CPU的工作效率。8279包括键盘输入和显示器输出两个部分,键盘部分提供的扫描方式,能自动消除开关抖动以及n键同时按下的保护;显示部分按扫描方式工作,可以显示8位或16位LED显示块。3.3.1 8279工作原理1、I/O口控制及数据缓冲器数据缓冲器是双向缓冲器,连接内、外总线,用于传送CPU和8279之间的命令或数据。I/O控制线是CPU对8279进行控制的引线。是8279的片选信号,当=0时,8279才被允许读出和写入信息。和为来自CPU的读、写控制信号。A0用于区别信息特性:A0=1时,表示数据缓冲器输入为指令,输出为状态字;A0=0时,输入输出皆为数据。2、控制与定时寄存器及定时控制控制与定时寄存器用来寄存键盘及显示的工作方式,以及由CPU编程的其它操作方式。这些寄存器一旦接收并锁存送来的命令,就通过译码产生相应的信号,从而完成相应的功能。3、扫描计数器扫描计数器有两种工作方式。按编码方式工作时,计数器作二进制计数。4为计数状态从扫描线SL0SL3输出,经外部译码器译码后,为键盘和显示器提供扫描线;按译码方式工作时,扫描计数器的最低二位被译码后,从SL0SL3输。因此,SL0SL3提供了4中取1的扫描译码。4、回复缓冲器、键盘去抖动及控制来自RL0RL7的8根回复线的回复信号,有回复缓冲器缓冲并锁存。在键盘工作方式中,回复线作为行列式键盘的行列输入线。在逐行列扫描时,回复线用来搜寻每一行列中闭合的键。当某一个键闭合时,去抖电路被置位,延时等待10ms后,在检验该键是否继续闭合,并将该键的地址和附加的移位、控制状态一起形成键盘数据送入8279内部FIFO(先进先出)存储器。5、FIFO/传感器机器状态寄存器FIFO/传感器RAM是一个双重功能的88RAM。在键盘或选通方式工作时,他是FIFO的工作状态。例如:RAM是满的还是空的;其中存放多少数据;是否操作出错等。当FIFO存储器不空,状态逻辑将产生IRQ=1信号向CPU申请中断。在传感器矩阵方式工作时,这个存储器有是传感器存储器。他存放着传感器矩阵中的每一个传感器状态。在此方式中,若检索出传感器的变化,IRQ信号变为高电平,向CPU申请中断。6、显示RAM和显示地址寄存器显示RAM用来存储显示数据。容量为168位。在显示过程中,存储的显示数据轮流从显示寄存器输出。显示寄存器分为A、B两组,OUTA0OUTA3和OUTB0OUTB3可以单独送数,也可以组成一个8位字。显示寄存器的输出与显示扫描配合,不断从显示RAM中读出显示数据,同时轮流驱动被选中的显示器件,以达到多路复用的目的,使显示器呈现稳定的显示状态。显示地址寄存器用来寄存由CPU进行读/写显示RAM的地址,他可以由命令设定,也可以设置成每次读出或写入之后自动递增。3.3.2 8279管脚、引线与功能8279采用40引脚封装,其管脚、引线与功能如图所示。其引脚功能分述如下:1、DB0DB7(数据总线):双向、三态总线和系统数据总线相连;用于CPU和8279间的数据、命令和状态的传送。2、CLK(系统时钟):输入线,为8279提供内部时钟的输入端。3、RESET(复位):输入线,当RESET=1时,8279复位,其复位状态为:10个字符显示左边输入;编码扫描键盘双键锁定;程序时钟编程为31。4、(片选):输入线,当=0时,8279被选中,允许CPU对其进行读、写,否则被禁止。5、A0(数据选择):输入线,A0=1时,表示数据缓冲器输入为指令,输出为状态字;A0=0时,输入输出皆为数据。 图3-2 8279管脚图6、(读、写信号):输入线,低电平有效,来自CPU的控制信号,控制8279的读写操作。7、IRQ(中断申请):输出线,高电平有效。在键盘工作方式中,当FIFO/传感器RAM存有数据时,IRQ为高电平,向CPU请求中断。CPU每次从RAM中读出数据时IRQ变为低电平。若RAM中仍有数据,则IRQ再次恢复为高电平,直至FIFO中数据被读完,IRQ才保持低电平。 在传感器工作方式中,每当检测到传感器状态变化时,IRQ就出现高电平。 8、SL0SL3(扫描线):输出线,用来扫描键盘、传感器矩阵和显示器。他们可以编程设定为编码(4中取1)或译码输出(16取1)。9、RL0RL7(回复线):输入线,他们是键盘矩阵或传感器矩阵的列(或行)信号输入线。这些输入线内部都有上拉高电路,使之保持为高电平,也可以由外部开关拉成低电平。在选通工作方式中,RL0RL7可作为8为数据线。10、SHIFT(移位信号):输入线,高电平有效。该输入信号是8279键盘数据的次高位(D6),通常用来扩充键开关的功能,可以用做键盘上下挡功能键。在传感器方式和选通方式中,SHIFT无效。SHIFT线内部也有上拉高电平,也可以被外部开关拉成低电平。11、CNTL/(控制/选通):输入线,高电平有效。在键盘工作方式时,该输入信号是键盘数据的最高位(D7),通常用来扩充键开关的控制功能,作为控制功能键用。在宣统输入方式时,该信号的上升沿将来自RL0RL7的数据存入FIFO RAM中。在传感器方式下,该信号无效。该线内部也有拉高电路使之保持高电平,也可被外部开关拉成低电平。12、OUTA0OUTA3(A组显示信号):输出线。13、OUTB0OUTB3(B组显示信号):输出线。14、(显示消隐):输出线,低电平有效。该信号在数字切换显示或使用消隐命令时,将显示消隐(暗)。3.4 键盘、显示器介绍单片机外扩8279是为了外接键盘和LED显示器,起具体接法请参看主电路图。1、键盘介绍将键盘分成两组,一组是控制键,一组是数字输入键,根据实际情况,将控制键和数字键分离,控制的五个键接在单片机的P2.0P2.4,而数字键接8279。之所以这么接,是因为程序的限定和8279中断方式特别的缘故。在程序方面,由于电机正反转的程序是死循环,所以当8279产生一次中断后,中断无法返回,因此导致下一次中断进不去。所以要控制键与输入键分离。5VX0X1Y0Y1Y2Y3Y4Y55.1K图3-3键盘结构图3-3为本次毕业设计的数字键接线图,其中行线接74LS138的输出端Y0和Y1,列线接8279的输入端RL0RL5。图中行线通过电阻接5V电源,当键盘上没有键闭合时,所有的行线和列线都断开,行线X1、X0呈高电平。当某一键闭合时,该键对应的行线和列线短路。例如3号键闭合时,行线X0与Y2短路,此时X0的电平由Y6的电平决定。如果把行线接输入口,列线接输出口,则在程序的控制下,使列线Y0为低电平,其余Y1Y5为高电平,然后通过输入口读行线的状态,如果X0、X1都为高电平,则Y0这一列上没有键闭合,如果读出的列线状态不完全为高电平,则为低电平的行线和Y0相交的键处于闭合状态,如果Y0这一列上没有键闭合,接着使列线Y1为低电平,其余列线为高电平,用同样的方法检查Y1这一列上有无键闭合,以此类推。这种逐行地检查键盘状态的过程称为对键盘的一次扫描。这只是键盘扫描的原理,而对于8279是不用编程扫描,8279有自动的键盘扫描功能,我们只要查对键盘码就可以了。2、LED显示器 图3-4是LED显示器的引脚及原理图,本次毕设用的就是这种共阴极的LED显示器,它的输入端分别为:a,b,c,d,e,f,g,dp,当输入端为高电平时,对应的发光二极管点亮,所以控制不同的发光二极管导通就能显示不同的字符。其中的dp为小数点为,当dp为高电平时,显示小数点,否则只显示数字。图中上下的两个GND是连通的,所以实际接电路时只接一端就可以了,它是LED的片选端,因为我们通常不只用到一个LED,当我们想要在某个LED 输出时,就得先选定LED,然后在将其数字码送过来,就能显示想要的数字了。 图3-4 (a) LED 管脚图 (b)共阴极LED原理图 它与键盘都是配合8279芯片使用的,而他们的具体接法请看主电路,这将在下一节介绍。3.5 主电路设计 1、时钟电路MCS-51单片机内部有一个用于构成震荡器的高增益反相放大器,引脚XTAL1和XTAL2分别为此放大器的输入端和输出端。这个放大器与作为反馈元件的片外晶体或陶瓷谐振器一起构成一个自激 图3-5 80510内部时钟电路震荡器。MCS-51的每个机器周期包含6个状态周期,每个状态周期划分为2个节拍,分别对应着2个节拍时钟有效期间。因此一个机器周期包含12个震荡器周期,每个节拍持续一个震荡周期,每个状态持续两个震荡周期。若采用12MHz的晶体震荡器, 则每个机器周期恰为1us。2、上电手动复位电路对于CHMOS型单片机,只要接一个电容到VCC即可,见图3.5.2。将一个200欧姆的限流电阻和一个开关并联于上电自动复位电路中,按一下开关就在RST端出现高 图3-6上电手动复位电路电平,在上电瞬间,RST端的电位与VCC相同,随着充电电流的减小,RST的电位逐渐下降。按图3-6中所示的电路参数,时间常数为:10108.210=82ms,上电复位所需的最短时间是VCC的上升时间和震荡器起震时间再加上2个机器周期,在这段时间内RST端的电平应维持高于斯密特的下阀值。VCC上升时间若为10ms,震荡器起振时间和频率有关,10MHz时约为1ms,1MHz时约为10ms,所以一般为了可靠地复位,RST的上电时间应保持20ms以上的高电平。图3-6中,RC时间常数越大,上电复位时间越长,图中这组时间常数足以保证完成复位操作。若复位电路失效,加电后CPU从一个随机的状态开始工作,系统就不能正常运行。 3、单片机与8279通讯电路在单片机与8279通讯中,采用三态门的8D锁存器74LS373作为地址锁存器。其功能如表3-3所示。表3-3 74LS373功能表 OEG功能01直通(Qi=Di)00保持(Qi保持不变)1输出高阻74LS373的OE为三态门的输出允许控制信号输入端,低电平有效。G为锁存信号输入端,高电平使74LS373接数,电平负跳时D0D7状态锁存起来。 图3-7 单片机与8279通讯图图3-7中,单片机的P0口接8279的DB0DB7,作为低8位地址线;P2.7接片选信号端,则P2口为高8为地址线。其控制总线由、和RESET构成,三者分别对应相连。8279的IRQ经一个74LS06(非门)接单片机的P3.2,也就是INT0端,它为键盘产生中断信号,当有键按下时,IRQ变为高电平,经非门后,在外部中断零处产生低电平信号,向CPU申请中断,CPU经判断执行后,IRQ变回低电平。按这种接法,在软件编制时有:(1)命令字、状态口地址为7FFFH;数据输入口地址为7FFEH。(2)CNTL,SHIFT接地,这时读取的键号不需要屏蔽高两位(D6,D7位)。4、主电路设计见附录4章 软件具体设计4.1 主程序设计根据毕业设计任务书中的要求,实现步进电机的正转或反转,且转速在一定范围内可调,由于步进电机主要是按步数进行控制,所以要加入步数的控制,比如说反向运行9步后停止,再正转运行6步,所以将正转(反转)的控制键分别嵌套在反转(正转)里,这样就方便即时控制了。同时把加速、减速的控制程序也嵌套在加、减速里,就可以对转速进行控制了。由于转动步数的控制是由键盘输入控制的,而输入部分来自8279的中断调用。所以在程序执行的开始部分要对8279进行初始化。在中断调用的时候,8279的IRQ端产生高电平,经反向器送到单片机的P3.2端,也就是INT0端,所以,当键盘按下时,即向CPU申请中断,CPU响应中断,便由中断口地址进入中断子程序了,从而也执行了对步进电机的控制。程序就这样一直循环下去,直至系统复位。其主程序框图如图4.1。开 始正反转判断正 转反 转判断暂停、反转、加、减速判断暂停、正转,加、减速延 时延 时 图4-1 主程序框图其主程序见附录14.2 子程序设计4.2.1 延时程序设计所谓延时其实就是浪费一小段时间,而目的是为了加长脉冲的宽度,从而让人的眼睛能够反应出电机的运行步数。又因为本课题要求对电机的转速进行控制,所以此延时程序更显的十分重要,因为它不仅是“浪费了时间”,同时也改变了时钟周期,所以在执行完这段程序后,脉冲的频率变了,也就对转速起到了控制作用。因此,要想加速,只要加快脉冲的频率;要想减速,只要减小脉冲的频率就可以了。延时子程序是很重要的一类子程序。由于机器周期12/晶振频率,因此必须首先确定晶振频率。本次毕设采用的是12MHZ的晶振,故机器周期1us。其程序执行流程图如下:开 始TIMER0、TIMER1进站保护TIMER0=R6TIMER0减1不等于0TIMER1=R7TIMER1减1不等于0TIMER0、TIMER1出站返 回Y N Y N 图4-2 延时子程序流程图延时子程序设计如下:DELAY0: PUSH TIMER1 PUSH TIMER0DELAY1: MOV TIMER0,R6 DELAY2: NOP DJNZ TIMER0,DELAY2 DJNZ TIMER1,DELAY1 POP TIMER0 POP TIMER1 RETDELAY: NOP PUSH TIMER1 MOV TIMER1,R7 LCALL DELAY0 LCALL DELAY0 LCALL DELAY0 LCALL DELAY0 POP TIMER1延时时间的长短主要看循环的次数的多少,以上延时子程序所做的处理是将R6、R7值分别赋给TIMER0和TIMER1,我们在DELAY中看到,四次调用延时,相当于每次延时的四倍。而一次延时的多少又R6和R7决定,例如我们给R6和R7都赋值为250,则在程序中我们看到,R6执行了250*4次,R7也执行了250*4次,而R6和R7总共执行了250*4*250*41m,所以这个延时为1m。但这个值并非精确值,因为程序在执行其它语句的同时,也浪费了机器周期,所以为了保证精确的延时,我们需要了解每条语句所占用的机器周期数,应将这些机器周期都考虑在延时的值设定之内,在去设定具体的延时数值,即可得到精确的延时。4.2.2 加、减速程序设计加、减速子程序的设计完全基于延时程序,只要改变延时程序中的R6和R7就可以改变时钟周期,也就改变了控制步进电机的脉冲频率了。其程序如下:JIANS: CALL DELAY JNB P2.3, $ ;等待减速按扭的松开 CALL DELAY MOV A,R6 ADD A,#10 MOV R6,A MOV R7,A RETJIAS: CALL DELAY JNB P2.2, $ ;等待加速按扭的松开 CALL DELAY MOV A,R6 SUBB A,#5 MOV R6,A MOV R7,A RET其流程图如下:开 始按键是否松开R6和R7均减5返 回 N Y 图4-3 加减速流程图4.2.3 正、反转程序设计要步进电机正反方向转动很简单,只要把它的控制脉冲序列正反方向输出就可以了,仅以正转为例,其主程序如下: ZZ:MOV DPTR,#TABLE ;表首地址 MOV B,#04H ;循环次数 D0:MOV A,#04H ;正转表首地址 MOVC A,A+DPTR ;查表 MOV P1,A ;送往P1 LCALL DELAY ;延时 INC DPTR ;表地址加1,指向下一个数据 JNB P2.1, FZ2 ;判断反转 JNB P2.2, JJS ;判断加速 JMP BB JJS:ACALL JIAS ;调用加速程序 BB:JNB P2.3, JSS ;判断减速 JMP CC JSS:ACALL JIANS ;调用减速程序 CC:CJNE R3,#01H,D00 ;不是运行N步则调到D00 DJNZ R2,D00 ;是运行N步,则步数减1,继续 LCALL INITIAL8279 ;8279初始化 JMP LOOP D00:DJNZ B,D0 JMP ZZ这段程序里也包含的更多的是一些旋转方式的判别,而真正正转的程序只有前面几句查表和送往P1口的,所以,流程图在此就步介绍了。4.2.4 8279初始化及中断初始化程序设计8279是我们键盘和显示器正常工作的重要芯片,而初始化程序也是保证其正常工作的前提。1、8279初始化程序如下:INITIAL8279: MOV DPTR, #7FFFH ;控制口地址 MOV A, #00H MOVX DPTR, A MOV A, #32H ;设置控制字 MOVX DPTR, A MOV A, #0DFH ;清屏 MOVX DPTR, A BUSY8279: MOVX A, DPTR JB ACC.7, BUSY8279RET2、中断初始化程序首先,我们应该先给定中断的入口地址,0003H是外部中断INT0的入口地址,当8279有键闭合时,程序自动跳到这各口地址,然后转去INT0执行真正的中断程序。ORG 0003HAJMP INT0当我们把中断口地址写好后,我们还要把中断允许位打开,再把外部中断INT0开放,这样外部中断才能进来,所以还需要设置下面两句。SETB EASETB EX04.2.5 键盘、显示器程序设计这两部分的程序很长,所以就不列举了,具体的请
展开阅读全文