计算机控制技术课程配套教材习题解答(第1、2、3章)

pdf版下载地址:http://pan.baidu.com/s/1hrKoza8

文件名:ccsa1_3

第一章

1-1 计算机控制系统的硬件由哪几部分组成?各部分的作用是什么?

硬件包括计算机、过程输入输出通道及接口、人机联系设备及接口、外部存储器等。计算机的关键部件是中央处理器(CPU),CPU通过接口接收人的指令和工业对象的各种参数,并向系统各部分发送各种命令数据,完成巡回检测、数据处理、控制计算、逻辑判断等工作。

过程输入通道把工业对象的参数转换成计算机可以接受的数字信号,过程输出通道及接口把计算机处理结果转换成可以对被控对象进行控制的信号。过程输入输出通道既可以传输数字量信号,也可以传输模拟量信号。

人机联系设备及接口包括显示操作台、屏幕显示器(CRT)或数码显示器、键盘、打印机、记录仪等,它们是操作人员和计算机进行联系的工具。

外部存储器(外存)包括磁盘、光盘、磁带,主要用于存储系统大量的程序和数据。它是内存储容量的扩充,可根据要求决定外存的选用。

1-2 计算机控制系统的软件由哪几部分组成?各部分的作用是什么?

软件是能够完成各种功能的计算机程序的总和,由系统软件和应用软件组成。系统软件是由计算机生产厂家提供的专门用来使用和管理计算机的程序,具有一定的通用性,包括操作系统、程序设计软件、编译软件、系统诊断软件等。

应用软件是根据用户要解决的实际问题而编写的各种程序,包括控制程序、数据采集及处理程序、巡回检测程序和数据管理程序等。

在常规模拟控制系统中,系统的控制规律是用硬件电路实现的,改变控制规律需要改变硬件;而在计算机控制系统中,控制规律程序化了,改变控制规律和被控参数,只需改变程序即可。

1-3 计算机控制系统的结构有哪些形式?各形式的含义和工作原理是什么?

与传统的控制系统类似,计算机控制系统也可分为开环控制和闭环控制两种结构,采用哪种控制结构取决于被控对象的类型以及对控制性能的要求。一般来讲,开关量(顺序)控制采用开环控制结构,模拟量控制采用闭环控制结构;对控制性能要求低的控制系统可采用开环控制结构,对控制性能要求高的系统采用闭环控制结构。

1.开环控制结构

开环控制结构,是指控制系统按照给定的输入信号对被控对象进行单向控制而没有对被控对象进行测量和反馈,或者只进行数据采集与测量而不直接参与控制的控制方式。如图1-2所示的计算机顺序控制和图1-3所示的计算机数据采集及处理系统。顺序控制只根据人们事先设计的逻辑关系驱动执行机构动作,完成设定的工序;数据采集及处理系统只对被控制对象的各物理量经计算机处理后进行显示和打印,给操作者提供参考值,两者都不形成回路,因此属于开环控制。在实际工业应用中,自动机床、自动洗衣机、公路交通管理系统、铁路信号检测系统等,都是开环控制系统。

图1-2  计算机顺序控制系统结构图

      图1-3  计算机数据采集与处理系统结构图

2.闭环控制结构

对于按偏差进行调节的传统模拟闭环负反馈控制系统,如果把控制器用计算机来代替,就构成了计算机闭环控制系统,如图1-4所示。计算机把通过测量元件、变送单元和A/D转换接口送来的数字信号,直接反馈到输入端与设定值进行比较,然后对其偏差按某种控制算法进行计算,所得数字量输出信号经D/A转换接口直接驱动执行装置,对控制对象进行调节,使其保持在设定值上。

计算机闭环控制系统的工作过程可归纳为以下三个步骤:①实时数据采集,对来自测量元件和变送单元的被控量的瞬时值进行检测和输入;②实时数据处理,对采集到的被控量进行分析和处理,按一定的控制规律运算,进行控制决策;③实时控制输出,根据控制决策,适时地对执行装置发出控制信号,完成工作任务。工程实际中上述过程不断重复。“实时”,是指信号的输入、运算处理和输出能在一定的时间内完成,即要求计算机对输入信号要以足够快的速度进行测量与处理,并在一定的时间内作出反应或产生相应的控制。超过这个时间,就会失去控制时机。“实时”概念不能脱离具体过程,如炼钢的炉温控制,由于时间惯性很大,输出延迟几秒仍然是“实时”的;而轧钢机的拖动电机控制,一般需在几毫秒或更短的时间内完成对电流的调节,否则,电流失控将造成事故。

图1-4  计算机闭环控制结构

1-4 与传统的模拟控制系统相比,计算机控制系统有哪些特点?

与传统的模拟控制系统相比,计算机控制系统有如下突出特点:

(1)技术集成和系统复杂程度高。计算机控制系统是计算机、控制、通信、电子等多种高新技术的集成,是理论方法和应用技术的结合。由于信息量大、速度快和精度高,因此能实现复杂的控制规律,从而达到较高的控制质量。计算机控制系统实现了常规系统难以实现的多变量控制、智能控制、参数自整定等。

(2)可靠性高和可维护性好,这两个因素决定着系统的可用程度。由于采取有效的抗干扰、冗余、可靠性技术和系统的自诊断功能,计算机控制系统的可靠性高,而且可维护性好。如有的工控机,一旦出现故障,能迅速指出故障点和处理办法,便于立即修复。

(3)环境适应性强。工业环境恶劣,要求工业控制机适应高温、高湿、腐蚀、振动、冲击、灰尘等环境。工业环境电磁干扰严重,供电条件不良,一般的工业控制机有较高的电磁兼容性。

(4)控制的多功能性。计算机控制系统具有集中操作、实时控制、控制管理、生产管理等多种功能。

(5)应用的灵活性。由于软件功能丰富,编程方便和硬件体积小,重量轻以及结构设计上的模块化、标准化,系统在配置上有很强的灵活性。如一些工控机有操作简易的结构化、组态化控制软件,硬件的可装配性、可扩充性也很好。

此外技术更新快、信息综合性强、内涵丰富、操作便利等,也都是计算机控制系统的一些特点。

1-5 根据应用特点、控制功能和系统结构,计算机控制系统的分类有哪些类型?

计算机控制系统种类繁多,命名方法也各有不同。根据应用特点、控制功能和系统结构,计算机控制系统主要可分为六种类型:计算机操作指导控制系统、直接数字控制系统、监督计算机控制系统、集散型控制系统、现场总线控制系统、计算机集成制造系统。

1-6 计算机控制系统的发展趋势如何?

由于微处理器成本的下降以及网络通信技术的进步,目前32位微处理器已普遍应用于计算机控制系统,其功能更强,速度更快,存储器容量也不断增大;交互图形、复合窗口及触摸屏幕等技术的应用,使人机交互更为便捷;专用集成电路和表面安装技术在硬件设计上的使用,使板级上的元件数量更少,硬件的可靠性大大提高;直接数字传感器、光纤传感器和智能执行器等智能仪表应用到工业现场;标准化的数据通信链路和通信网络技术的应用改进了计算机控制系统的网络体系结构。另外,各种公共网络体系的建立和通信网络技术的普及,在网络环境下新的各类控制系统已成为可能。

在整个计算机控制系统的发展过程中,应该说DDC和DCS最具代表性。DDC实现了真正意义上的闭环控制,确立了计算机控制的基本结构;DCS将计算机网络引入到了控制系统,确立了计算机控制系统的分层结构,为企业实现厂级自动化奠定了基础,FCS和CIMS可以看作是DCS向基础控制级和上层管理级的进一步延伸。因此,这里主要介绍DCS的发展前景:开放化,小型化,智能化。

第二章

2-1  什么是人-机接口?该接口有何作用?

计算机控制系统要完成对生产过程进行检测和控制的任务,首先需配置与操作人员进行信息交换的输入、输出设备或器件,这种人机联系的设备或器件称为人—机接口。由人—机接口完成各种控制操作,显示生产过程的工艺状况与运行结果。人—机接口的典型装置是一个操作显示台或操作显示面板。由于生产过程要求控制和管理的内容不同,操作显示台或操作显示面板也有较大差异。

操作台除开关、旋钮、拨盘及各种打印机、绘图仪类的I/O设备以外,一般必不可少的是键盘与LED显示器或LCD显示器或CRT显示器。

显示器件是计算机控制系统的重要组成部分,用于显示各种参数的值,以便现场工作人员能够及时掌握生产过程。工业控制系统常用的显示器件有LED、LCD、CRT等,CRT体积较大,可以进行字符和画面显示,能方便地实现生产过程的管理和监视,适合与板卡、PLC、智能仪表等相结合,进行计算机控制系统的集成。LED和LCD体积小,功耗低,与基于单片机的控制系统易于匹配,应用广泛。本章主要讲述LED显示器数码显示和液晶显示器(LCD)数码显示。

键盘是计算机控制系统中不可缺少的输入设备,是人机对话的纽带,只有通过键盘,操作人员才能对系统状态进行干预。本章通过讲述键盘接口及程序,使读者了解键盘管理的原理和方法,在编码式键盘接口电路一节,介绍既能管理键盘又能管理LED显示器的集成芯片Intel8279。

2-2  LED显示器的发光二极管有几种接法?各有何特点?

LED显示器由7个发光二极管组成显示字段,并按“曰”字形排列,这7段发光管分别称为a、b、c、d、e、f、g,有的还带有一个小数点dp,7段LED由此得名,将7段发光二极管阴极都连在一起,称为共阴极接法,当某个字段的阳极为高电平时,对应的字段就点亮。共阳极接法是将LED显示器的所有阳极并接后连到+5V电源上,当某一字段的阴极为0时,对应的字段就点亮,如图2-1所示。

图2-1  7段LED显示器件

2-3  简述LED动态显示方式与静态显示方式的工作原理及其特点。

点亮LED显示器有两种方式:静态显示和动态显示。下面以共阴极接法为例说明:

⑴LED静态显示方式

所谓静态显示就是将N位共阴极LED显示器的阴极连在一起接地,每一位LED的8位段选线与一个8位并行口相连,当显示某一个字符时,相应的发光二极管就恒定地导通或截止。一个4位静态显示电路如图2-2所示。

图2-2 4位静态LED显示电路

在图中,每一位LED可独立显示。由于每一位LED由一个8位输出口控制段选码,故在同一时间里每一位显示的字符可以各不相同。静态显示的优点是所需驱动电流较小,可以由8155或8255直接驱动,显示稳定。缺点是N位LED要求有N×8位I/O口线,占用I/O口线太多,故多在显示位数较少时使用。

⑵LED动态显示方式

所谓动态显示就是用扫描方式轮流点亮LED显示器的各个位。特点是:将多个7段LED显示器同名端的段选线复接在一起,只用一个8位I/O控制各个LED显示器的公共阴极轮流接地,逐一扫描点亮,使每位LED显示该位应当显示的字符。恰当地选择点亮LED的时间间隔(1ms~5ms),会给人一种视觉暂停效应,似乎多位LED都在“同时”显示。图2-3是一个8位动态显示原理图。

在图中,控制每个LED显示位轮流接地点亮的代码称为“位选码”。由I/O(2)口输出8位代码控制。特点是,每次输出只有一位是0(点亮),其余7位均为1(熄灭),因此每一位LED都有一个唯一的8位“位选码”。按图2-3从左向右轮流显示8位LED的位选码为:从左1开始,依次是7FH→BFH→DFH→EFH→F7H→FBH→FDH→FEH,循环往复。

用8031右移循环指令可实现:

MOV      A,#7FH               ;点亮左1LED的位选码

LOOP: MOVX   @DPTR,A ;从I/O(2)口输出位选码

RR       A                            ;右移一位,指向下一个LED位

LCALL   DELAY               ;调延时3ms子程序

LJMP     LOOP               ;返回显示下一位LED

图2-3   8位LED动态显示原理图

动态显示的操作由软件完成。每次由I/O(1)口输出段选码、再由I/O(2)口输出位选码,经过延时,以获得稳定的显示效果。

2-4  请根据图2-8所示电路,编写程序显示自己学号的后8位。

显示“CPUready”的程序如下。

图2-8  用8155实现8位动态LED显示器  

DISP:ORL   P1,#80H           ;选择8155为I/O口

      MOV  R1,#0F8H          ;置8155命令/状态寄存器地址

      MOV  A,#0F3H

      MOVX  @R1,A           ;送8155工作方式命令字

START:MOV  DPTR,#TAB

        MOV  R0,#00H         ;字型码地址偏移量

MOV   R2,#80H;选择第1位显示

SCAN:MOV   R1,#0FAH       ;置8155PB口地址

MOV   A,#00H

MOVX  @R1,A         ;熄灭显示器

MOV   A,R0

MOVC  A,@A+DPTR   ;取字型码

DEC    R1;置8155PA口地址

MOVX  @R1,A        ;送字型码

MOV   A,R2

INC    R1

MOVX  @R1,A        ;送位选码

ACALL  DLlms          ;延时lms

INC     R0             ;指向下一字型码

MOV  A,R2

CLR   C

RRC   A                ;指向下一位

MOV   R2,A

XRL   A,#00H         ;8位未完,扫描显示下一位

JNZ   SCAN

AJMP   START          ;开始下一轮扫描

DLlms:SETB   D3H

MOV   R2,#83H

LL0:NOP

NOP

DJNZ   R2,LL0

CLR    D3H

RET

TAB:DB   0C6H,8CH,0C1H,0CEH,86H,88H,0A1H,91H;对应显示字型:CPU ready

                                         ;软件译码格式:

h

g

f

e

d

c

b

a

表2-1  LED段选码和显示字符之间的关系

显示字符

共阴极段选码

共阳极段选码

显示字符

共阴极段选码

共阳极段选码

0

3FH

C0H

4

66H

99H

1

06H

F9H

5

6DH

92H

2

5BH

A4H

6

7DH

82H

3

4FH

B0H

7

07H

F8H

8

7FH

80H

E

79H

86H

9

6FH

90H

F

71H

8EH

A

77H

88H

P

73H

82H

B

7CH

83H

·

80H

7FH

C

39H

C6H

C8H

37H

D

5EH

A1H

“全灭”

00H

FFH

2-5  什么是键盘和按键?请简述计算机监测一个按键是否闭合的工作原理。

键盘是一组按键的集合。按键是一种按压式或触摸式常开型按钮开关。平时(常态)按键的两个触点处于断开状态,当按压或触摸按键时两个触点才处于闭合连通状态。

按键闭合时能向微型机输入数字(0~9或0~F)的键称为数字键,能向微型机输入命令以实现某项功能的键称为功能键或命令键。键盘上的按键是按一定顺序排列在一起的,每个按键都有各自的命名。为了便于CPU区分各个按键,必须给键盘上的每个按键赋以一个独有的编号,按键的编号或编码称为键号或键值。CPU知道了按键的键号或键值,就能区分这个键是数字键还是功能键。如果是数字键,就直接将该键值送到显示缓冲区进行显示;如果是功能键则由该键值找到执行该键功能的程序的入口地址,并转去运行该程序即执行该键的命令。因此,确定按键的键值是执行该键功能的前提。

键盘接口与键盘程序的根本任务就是要监测有没有键按下?按下的是哪个位置的键?这个键的键值是多少?这个任务叫做键盘扫描。键盘扫描可以用硬件来实现,也可以用软件来实现。带有键盘扫描硬件电路的键盘称为编码键盘,不带键盘扫描硬件电路的键盘称为非编码键盘,非编码键盘的扫描靠软件实现。为了节省成本起见,一般的计算机控制系统多采用非编码键盘。

为了能让CPU监测按键是否闭合,通常将按键开关的一个触点通过一个电阻(称上拉电阻)接+5V电源(这个触点称为“测试端”),另一个触点接地或接低电平(这个触点称“接零端”),这样当按键开关未闭合时,其测试端为高电平,当按键开关闭合时,其测试端便为低电平。

2-6  计算机监测键盘的工作方式有哪些?简述独立式键盘和行列式键盘的按键识别方法。

根据按键开关与CPU的连接方式不同,键盘又可分为独立式和行列式(或矩阵式)两大类。

独立式键盘的特点是:各按键相互独立,每个按键的“接零端”均接地,每个按键的“测试端”各接一根输入线,如图2-13所示,一根输入线上的按键工作状态不会影响其他输入线上的工作状态。这样,通过检测输入线的电平状态就可以很容易地判断哪个按键被按下了,因此操作速度高而且软件结构很简单。但是,由于独立式键盘每个按键需占用一根输入口线,在按键数量较多时,输入口浪费大,故此种键盘只适用于按键较少或操作速度较高的场合。

                          (a)                                  (b)

图2-13  独立式键盘接口电路

行列式键盘的特点是:行线、列线分别接输入线、输出线,按键设置在行、列线的交叉点上,每一行线(水平线)和列线(垂直线)的交叉处不相通,而是通过按键来连通,利用这种矩阵结构只需m根行线和n根列线就可组成m×n个按键的键盘,因此矩阵式键盘适用于按键数量较多的场合。由于矩阵键盘中行、列线为多键共用,所以必须将行、列线信号配合起来并作适当处理,才能确定闭合键的位置,因此,软件结构较为复杂。

2-7  键输入中会产生哪些问题?任何解决?

键输入中存在的问题及解决办法

(1)键抖动  通常的按键所用开关为机械弹性开关,当机械触点断开、闭合时,电压信号波形如图2-16所示。由于机械触点的弹性作用,一个按键开关在闭合时不会马上稳定地接通,在断开时也不会一下子断开。因而在闭合及断开的瞬间均伴随有一连串的抖动。抖动时间的长短由按键的机械特性决定,一般为5~10ms,这是一个很重要的时间参数,在很多场合都要用到。

图2-16  按键时的抖动

按键稳定闭合时间的长短则是由操作人员的按键动作决定的,一般为零点几秒至数秒。

键抖动会引起一次按键被误读多次,为了确保CPU对键的一次闭合仅作一次处理,必须去除键抖动,在键闭合稳定时取键状态,并且必须判别到键释放稳定后再作处理。按键的抖动,可用硬件或软件两种方法消除。

通常在键数较少时,可用硬件方法消除键抖动,其工作原理如图3-3(b)所示。如果按键较多,则常用软件方法去抖动,即检测出键闭合后执行一个延时程序产生5~10ms的延时,等前沿抖动消失后再一次检测键的状态,如果仍保持闭合状态电平则确认为真正有键按下。当检测到按键释放后,也要给5~10ms的延时,待后沿抖动消失后才能转入该键的处理程序。

(2)重键  有时由于操作不慎,可能会同时按下几个键,这种问题称为重键,有三种处理办法:

①“两个键同时按下”最简单的处理办法是,当只有一个键按下时才读取键盘的输出,并且认为最后仍被按下的键是有效的正确按键。这种方法常用于软件扫描键盘的场合。另一种方法是当第一个键未松开时,按第二个键不起作用。这种方法常借助于硬件来实现。

②“n键同时按下”处理这种情况时,或者不理会所有被按下的键,直至只剩下一个键按下时为止;或者将按键的信息存入内部键盘输入缓冲器,逐个处理。这种方法成本较高。

③“n键锁定”技术 即只处理一个键,任何其他按下又松开的键不产生任何码。通常第一个被按下或最后一个松开的键产生键码。这种方法最简单也最常用。

⑶按键持续时间的长短不一  按键稳定闭合时间的长短是由操作人员的按键动作决定的,一般为零点几秒至数秒。为了保证无论按键持续时间长短,CPU对键的一次闭合,仅作一次键输入处理,必须等待按键释放之后,再进行按键功能的处理操作。

2-8  采用AT89C51单片机、发光二极管(红、绿、黄各一支)、按键3个和电阻等元器件,设计独立式键盘管理电路和程序,要求:

⑴按1#键后红灯点亮,其余灯熄灭;按2#键后绿灯点亮,其余灯熄灭;按3#键后黄灯点亮,其余灯熄灭;

⑵刚上电时,3个LED灯全部点亮,5秒钟后熄灭;

⑶画出电路原理图,并编写相应程序(具备去抖动功能)。

#include<reg52.h>

#defineuchar unsigned char

#defineuint unsigned int

voiddelay(uint z)

{

         uint x,y;

         for(x=z;x>0;x--)

                   for(y=110;y>0;y--);

}

voidmain()

{

         uint temp;

         uint i;

         P1=0xff;

         delay(100);

         P0=0xf8;

         delay(5000);

         P0=0xff;

         while(1)

         {

                   temp=P1 & 0xff;

                   if(temp!=0xff)

                   {

                            for(i=0;i<10;)

                            {

                                     temp=P1& 0xff;

                                     if(temp!=0xff)

                                     {

                                               i++;

                                               delay(200);

                                     }

                            }

                            if(i>9)

                            {

                                     P0=temp;

                                     i=0;

                            }       

                   }

                   else

                   {

                            i=0;

                            P0=0xff;

                   }

                   delay(20);

         }

}

附编程题: 计算机控制技术动态显示编程题

单片机与数码管的接口电路如图所示,请读懂原理图,指出74LS245与7407有何作用;并编程实现显示后六位学号。

第三章

3-1 什么是开关量输入通道?它是由哪些部分组成的?

电气控制系统的继电器触点具有闭合与断开两种状态,这种信号形式称为开关量。在计算机控制系统中,二进制数的每一位有“0”和“1”两种状态,都可以代表被控对象的一种状态。开关触点的断开或闭合、设备的安全状况等,这些状态都要被转换成二进制数送往计算机作为控制时的依据。负责将生产过程中的开关信号、脉冲信号和数字编码等,传递给计算机的连接通道称为数字量输入通道,简称DI(Digital Input)。在计算机控制系统中,继电器的接通与断开,电动机的启动与停止,阀门的打开与关闭等,需要靠计算机发出相应命令。负责将计算机的控制命令传递给开关类执行机构的的连接通道称为数字量输出通道,简称DO(Digital Output)。

数字量输入通道主要由输入信号调理电路、光电耦合隔离电路和计算机I/O接口电路组成,如图3-1所示,其功能是将生产现场开关信号转换成计算机能够接收的电平信号。

   计算机控制系统的数字量输入形式具有多样性,如生产现场开关触点的通断、编码器的脉冲、各类数字传感器产生的数码等。这些信号需经过放大、防抖、整形和电平转换等措施,转换成计算机能够接收的逻辑电平信号,这个过程称为信号调理。为了对计算机接口进行保护,采用光电耦合隔离电路将强电部分和弱电部分隔离。

图3-1 数字量输入通道结构图

3-2 根据R-S触发器的功能,分析图3-3(b)电路消除开关抖动的工作原理。

在计算机控制系统中,从现场送来的许多开关量都是通过触点输入电路输入的。图3-3所示为从开关、继电器等接点输入开关信号的硬件连线图。

图3-3中,各种开关信号通过接口电路被转换成计算机所能接收的TTL信号,由于机械触点在接触时有抖动会引起电路振荡,因此,在电路中加入了具有较大时间常数的电路来消除这种振荡。图3-3(a)为采用积分电路消除开关抖动的方法,图3-3(b)为采用R-S触发器消除开关多次反跳的方法。

----

RS触发器一般用来抵抗开关的抖动。图1

为了消除开关的接触抖动,可在机械开关与被驱动电路间接的接入一个基本RS触发器,如图1所示838电子。S为 =0, R=l,可得出A=l, A‘=0。当按压按键时,S=l,R=0,可得出 A=0,A’=1,改变了输出信号A的状态。若由于机械开关的接触抖动,则R的状态会在0和1之间变化多次,若 R=l,由于A=0,因此G2门仍然是“有低出高”,不会影响输出的状态。同理,当松开按键时, S端出现的接触抖动亦不会影响输出的状态。因此,图1所示的电路,开关每按压一次,A点的输出信号仅发生一次变化。

3-3 分析图3-4大功率开关信号输入电路具备哪些功能,说明其工作过程。

图3-4  大功率开关信号输入硬件连线图

大功率的开关电路一般采用电压较高的直流电源,在输入开关状态信号时,可能对计算机控制系统带来干扰和破坏,因此,这种类型的开关信号应经光电隔离后才能与计算机相连。图3-4所示为大功率开关信号输入的硬件连线图,图中开关信号经光电隔离后才与计算机相连,这样能使计算机系统不会受到大功率电路部分带来的干扰和破坏,确保计算机系统的正常运行。

3-4 在计算机控制系统中,为什么大功率输入输出接口电路需要加入光电隔离器?而光电隔离器的输入与输出端的电源为什么要相互独立?

为了隔断外界电信号对计算机控制系统的干扰,通常采用光电隔离技术,以阻断外界电信号对电路的串扰。光电隔离器的种类很多,常用的有:发光二极管/光敏三极管、发光二极管/光敏复合晶体管、发光二极管/光敏电阻及发光二极管/光触发可控硅等。其原理图如图3-2所示。

  图3-2  光电隔离器原理图

光电隔离器由GaAs红外发光二极管和光敏三极管组成。当发光二极管有正向电流流过时,就产生红外光,其光谱范围为700~1000nm。光敏三极管接收到发光二极管产生的红外光以后便导通。而当发光二极管上电流撤去时,发光二极管熄灭,于是三极管便截止。由于这种特性,开关信号可通过它传送。该器件是通过电—光—电转换来实现开关量的传送的,器件两端之间的电路没有电气连接,因而起到隔离作用。隔离电压范围与光电隔离器的结构形式有关,双列直插式塑料封装形式一般为2500V左右,陶瓷封装形式一般为5000~10000V。不同型号的光电隔离器件,要求输入的电流也不同,一般为10mA左右。其输出电流的大小与普通的小功率三极管相当。

3-5 根据图3-21带光电隔离器的步进电机控制接口原理图,分析步进电机六拍工作方式的控制代码。

图3-21  带光电隔离器的步进电机控制接口原理图

六拍控制方式:通电顺序为A→AB→B→BC→C→CA→A(正转)或A→AC→C→CB→B→BA→A(反转)。

若要求在现场开关S1闭合时,电动机正转;S2闭合时,电动机反转;S1、S2断开时,电动机停转。电动机停转正、反转可由8031的P1口输入开关的通、断状态,经软件处理后,再由该端口输出控制信号。

图中A、B、C是三相电动机的三个绕组,分别由功放电路1、2、3通以驱动脉冲。现采用六拍控制方式,端口输出位的代码和相应的通电绕组如表3-1所列。

表3-1 输出代码和相应的通电绕组

输出代码

通电绕组

×××××001 ×××××011 ×××××010 ×××××110 ×××××100 ×××××101

A     AB      B BC C     CA

由表可知,若电路按一定的节拍依次送出×1H、×3H、×2H、×6H、×4H和×5H输出代码,则步进电动机正转;若电路依次送出×1H、×5H、×4H、×6H、×2H和×3H则步进电动机反转。采用查表法可方便地编制出三相电机的控制程序。  

以下是与单片机8031接口的控制程序。

STEP:

MOV

R7,#06H

;06H→R7

LOOP:

JNB

P1.6,POS

;若P1.6=0转POS

JNB

P1.7,NEG

;若P1.7=0转NEG

AJMP

LOOP

POS:

MOV

DPTR,#TABLE1

LOOP1:

MOVX

A,@DPTR

MOV

P1,A

;输出表格1代码

INC

DPTR

ACALL

DELAY

;延时

DJNZ

R7,LOOP1

AJMP

STEP

NEG:

MOV

DPTR,#TABLE2

LOOP2:

MOVX

A,@DPTR

MOV

P1,A

;输出表格2代码

INC

DPTR

ACALL

DELAY

;延时

DJNZ

R7,LOOP2

AJMP

STEP

TABLE1:

DB

0F1H,0F3H,0F2H,0F6H,0F4H,0F5H

TABLE2:

DB

0F1H,0F5H,0F4H,0F6H,0F2H,0F3H

3-6 根据图3-22控制步进电动机正反转的开关量输入输出电路,设计程序及其流程图,实现 如下功能:当开关S1闭合时,电动机可转动,此时若开关S2闭合,电动机正转,若开关S2断开,电动机反转;当开关S1断开时,无论S2为何种状态,电动机停转。

图3-22  控制步进电动机正反转的开关量输入输出电路

/***************   code  ******************/

#include<reg52.h>

#defineuint unsigned int

#defineuchar unsigned char

ucharcode FFW[]=

{

        0x01,0x03,0x02,0x06,0x04,0x0c,0x08,0x09

};

ucharcode REV[]=

{

        0x09,0x08,0x0c,0x04,0x06,0x02,0x03,0x01

};

sbit K1 =P3^0;

sbit K2 =P3^1;

sbit K3 =P3^2;

sbit S1 =P3^4;

sbit S2 =P3^5;

sbit S3 =P3^6;

voidDelayMS(uint ms)

{

        uchari;

         while(ms--)

         {

                 for(i=0;i<120;i++);

         }

}

voidSETP_MOTOR_FFW(uchar n)

{

        uchari,j;

         for(i=0;i<5*n;i++)

         {

                 for(j=0;j<8;j++)

                   {

                           if(K3== 0)         break;

                            if(S1 == 1) break;     

                            P1 = FFW[j];

                            DelayMS(25);

                   }

         }

}

voidSETP_MOTOR_REV(uchar n)

{

        uchari,j;

         for(i=0;i<5*n;i++)

         {

                 for(j=0;j<8;j++)

                   {

                           if(K3== 0)         break;

                            if(S1 == 1) break;     

                            P1 = REV[j];

                            DelayMS(25);

                   }

         }

}

voidmain()

{

        ucharN = 3;

         while(1)

         {

                 if(K1 == 0)

                   {

                           P0= 0xfe;

                            SETP_MOTOR_FFW(N);

                            if(K3 == 0) break;

                   }

                   else if(K2 == 0)

                   {

                           P0= 0xfd;

                            SETP_MOTOR_REV(N);

                            if(K3 == 0) break;

                   }

                   else

                   {

                           P0= 0xfb;

                            P1 = 0x03;

                   }

                   if(S1 == 0)

                   {

                            if(S2 == 0)

                            {

                                    P0= 0xfe;

                                     SETP_MOTOR_FFW(1);

                                     if(S1 == 1)break;                        

                            }

                            else

                            {

                                    P0= 0xfd;

                                     SETP_MOTOR_REV(1);

                                     if(S1 == 1)break;                                          

                            }

                   }

                   else

                   {

                           P0= 0xfb;

                            P1 = 0x03;                          

                   }

         }

}

3-7 根据图3-14双向电动机控制接口电路,分析直流电动机工作状态的控制代码,在该图的基础上,自行设计以单片机为主控制器的电动机控制电路图,并设计程序及其流程图,使直流电动机依次循环实现:正转—刹车—反转—自由滑行。

/***************   code  ******************/

#include<reg52.h>

#include<intrins.h>

#defineuint unsigned int

#defineuchar unsigned char

sbit K1   = P3^0;

sbitK2   = P3^1;

sbitK3   = P3^2;

sbit LED1= P0^0;

sbit LED2= P0^1;

sbit LED3= P0^2;

sbitMA   = P1^0;

sbitMB   = P1^1;

sbitS1   = P1^4;

voidDelayMS(uint ms)

{

        uchari;

         while(ms--)

         {

                 for(i=0;i<120;i++);

         }

}

voidmain(void)

{

         LED1 = 1;

         LED2 = 1;

         LED3 = 0;

         while(1)

         {

                   if(S1 == 0)

                   {

                            MA   = 0;

                            MB   = 1;

                            DelayMS(4444);

                            MA   = 1;

                            MB   = 0;

                            DelayMS(4444);

                            MA   = 0;

                            MB   = 0;

                            DelayMS(4444);                

                   }

                   else

                   {

                 if(K1 == 0)

                   {

                           while(K1== 0);

                            LED1 = 0;

                            LED2 = 1;

                            LED3 = 1;

                            MA   = 0;

                            MB   = 1;

                   }

                   if(K2 == 0)

                   {

                           while(K1== 0);

                            LED1 = 1;

                            LED2 = 0;

                            LED3 = 1;

                            MA   = 1;

                            MB   = 0;

                   }

                   if(K3 == 0)

                   {

                           while(K1== 0);

                            LED1 = 1;

                            LED2 = 1;

                            LED3 = 0;

                            MA   = 0;

                            MB   = 0;

                   }                

                   }

         }

}

附编程题:

单片机控制直流电机正反转的电路如上所示,请读懂原理图,并编程实现当K1按下时电机实现正转,同时发光二极管D1亮;当K2按下时电机实现反转,同时发光二极管D2亮;当K3按下时电机停转,同时发光二极管D3亮。