单片机C语言程序设计 教学课件 ppt 作者 侯殿有 3.7

上传人:E**** 文档编号:89376559 上传时间:2019-05-24 格式:PPT 页数:38 大小:220KB
返回 下载 相关 举报
单片机C语言程序设计 教学课件 ppt 作者  侯殿有 3.7_第1页
第1页 / 共38页
单片机C语言程序设计 教学课件 ppt 作者  侯殿有 3.7_第2页
第2页 / 共38页
单片机C语言程序设计 教学课件 ppt 作者  侯殿有 3.7_第3页
第3页 / 共38页
单片机C语言程序设计 教学课件 ppt 作者  侯殿有 3.7_第4页
第4页 / 共38页
单片机C语言程序设计 教学课件 ppt 作者  侯殿有 3.7_第5页
第5页 / 共38页
点击查看更多>>
资源描述

《单片机C语言程序设计 教学课件 ppt 作者 侯殿有 3.7》由会员分享,可在线阅读,更多相关《单片机C语言程序设计 教学课件 ppt 作者 侯殿有 3.7(38页珍藏版)》请在金锄头文库上搜索。

1、第七章 MCS-51单片机并行输入输出接口,MCS-51单片机的内部资源主要有并行I/O口、定时器/计数器、串行接口以及中断系统,MCS-51单片机的大部分功能就是通过对这些资源的利用来实现的。下面分别对其介绍,并用C语言分别给出相应例子。,7.1 并行输入/输出接口,MCS-51单片机有四个8位的并行输入输出接口:P0、P1、P2、和P3。这四个口既可以并行输入输出数据,也可以按“位”方式使用,并行端口是MCS-51单片机控制外部设备的主要通道 用C51编写控制程序,对I/O口的内部结构不用了解的太多,只要能正确使用就可以。,7.1.1 P0口的操作,和IBM_PC机不同,MCS-51单片机

2、的程序存储器和数据存储器是分开的,用户程序固化在EEPROM或FLASH为介质的程序存储器中,运行中的数据存放在RAM中,它们各占64K的地址空间,由于访问指令和控制信号不同,对程序存储器和数据存储器的访问地址不会混淆。访问64K的地址空间,地址线必需有16条。MCS-51把P0做为地址总线的低8位(A0A7),P2做为地址总线的高8位(A8A15),由于单片机体积小,出线困难,MCS-51把P0也做为8位数据线(D0D7)。在程序执行过程中,P0上先出现地址线,然后通过一个控制信号(ALE)将此地址总线的低8位(A0A7)锁存在一个锁存器(74373)中,通过锁存器输出提供给外部地址总线,之

3、后P0上出现的信号就是8位数据线(D0D7)。,用C51编写控制程序,对这种分时使用P0的细节可不用知道,我们只要正确使用C51语言编写程序,编译器和MCS-51单片机硬件会自动完成这些操作,我们把MCS-51数据线和地址线理解成是和IBM_PC一样也行。 如果嵌入式控制系统很简单,不需要P0参于地址译码,P0口就只用来做数据线。 如图7.1所示液晶显示器T6963C控制电路,T6963C片选用P2.7,P0只做数据线。 还有许多简单场合,嵌入式控制系统不需要地址线和数据线,P0口也可以做8位I/O口使用。此时P0口具有驱动8个TTL门电路的负载能力。 由于P0口的输出是漏电极开路(相当集电极

4、开路),外输出电路应加上拉电阻。 由于P0口的结构,做输入时应先向P0口写“1”。 P0口在输出时具有锁存功能,输入时具有缓冲功能。,7.1.2 P1口的操作,P1口的操作基本同P0口,但它只能做通用I/O口使用,也是在简单嵌入式控制系统中用的最多的并行口。 它与P0口不同点是内部有上拉电阻,做输出时不用再加上拉电阻,P0口具有驱动4个TTL门电路的负载能力。 由于P1口的结构,做输入时应先向P1口写“1”。 P1口在输出时具有锁存功能,输入时具有缓冲能。,7.1.3 P2口的操作,P2口的操作基本同P0口和P1口,当外围设备、主要是程序存储器或数据存储器需要地址总线高8位时,P2口只能做地址

5、总线使用,否则,它也可以做I/O口,此时,它的用法同P1口。,7.1.4 P3口的操作,P3口除做普通I/O口外,它的每一位还具有第二功能,具体见表7 当系统复位或上电时,P3口处于第二功能状态;当执行I/O操作指令时又变回普通I/O口,此时,它的用法和负载能力同P1口。,7.2.1 光电隔离输入输出,在简单的嵌入式控制系统中,并行口特别是P1口可以直接与外围设备相连做输入和输出。但由于并行口负载能力弱,同时为了保护微处理器,这种连接一般需经光电隔离器件来完成,光电隔离器件如TLP521-4,它的工作电压范围550V,工作电流550mA,因此除了做光电隔离外,还可以起到功率转换作用。并行口的输

6、入和输出是8位并行的,但实际使用是按“位”的,它的1“位”可以控制1个外围设备或输入1路外部状态信号。,如P1.0经光电隔离器件做输出,控制一个工作电压为24V的中间继电器,具体电路可按图7.2设计,当P1.0输出高电平时,发光二极管有电流流过并发光,三极管側导通并饱和,集电极和发射极接通,集电极输出低电平给中间继电器;当P1.0输出低电平时,光电隔离器件发光二极管无电流流过,集电极和发射极截止,集电极输出高电平给中间继电器。 P1.1经光电隔离器件做输入,输入信号是一个24V的开关量,具体电路可按图7.3设计,原理同上,只是限流电阻不同。,7.2.2 输入输出程序编写,上面已说过,并行口的输

7、入和输出是8位并行的,但实际使用是按“位”的,它的1“位”可以控制1个外围设备或输入1路外部状态信号。因此,在输入和输出时,特别是输出时对一个设备的控制不能影响其它设备的工作,常用的方法是用一个字节的变量记录一个端口的输入输出状态,当某位输出高电平时(1),就用一个相应位为1的字节与这个变量相位“或”,然后把或的结果输出出去;当某位输出低电平时,就用一个相应位为0的字节与这个变量位“与”,然后把与的结果输出出去。具体见例7.1。,例7.1 图7.4中P1.0P1.3各位分别接4个发光二极管,P1.4P1.7接什么外围设备不清楚,二极管的阴极接P1口引脚,阳极经电阻接5V电源,P1.0P1.3口

8、某位输出低电平,相应发光二极管亮;输出高电平,相应发光二极管灭,现编写程序,先使发光二极管全亮;然后LED1、LED3灭,LED2、LED4亮。,控制程序如下: #include main() unsigned char port1;/定义一个字节型变量,记录P1口状态 P1= 0xff;/P1口先送1,准备读 port1= P1;/读P1状态送port1 port1 通过以上简单例子可以看出:,1,在并行口按位控制输出时不能影响其它位,程序较长,容易产生误操作时,可以向上例一样,用一个字节的变量记录一个端口的输入输出状态,利用“与”,“或”操作来进行位控。 2,上例中,二极管的阴极接P1口引

9、脚,阳极经电阻接5V电源,当某口低电平时,电流从电源流向并行端口;当然二极管的阳极接P1口引脚,阴极经电阻接5V地,某口高电平时相应二极管亮也可以,但向例子这样做可以减轻CPU负担。电流“倒灌”是工程上减轻CPU负担的常用方法。 3,本例中,并口只接一个二极管,负载很小,采用直接相连,在实际嵌入式控制系统中,这种情况很少,一般都应加光电藕合元件隔离或晶体管放大电路。如图7.5 P1.1通过晶体管放大电路控制蜂鸣器,图7.6 P1.1通过固态继电器控制大功率设备.,7.2.3 步进电机控制电路,步进电机也叫脉冲电机,是工业和各种实验系统上常用的功率驱动设备。它可以通过功率转换设备、即驱动源或驱动

10、芯片接收计算机发来的脉冲信号,使电机旋转一定角度。每一个脉冲信号电机旋转一步,一步旋转3.6或1.8,利用驱动源角度还可以细分,利用机械结构很容易将转动变成平动,进而达到机械运动的精确定位。 通过控制脉冲频率,可以控制电机转速。,步进电机根据其线卷绕组数量,分为二相、三相或四相。比如三相步进电机,其线卷绕组分为A,B,C三相,它的控制方式有多种,比如使用最多的三相六拍控制方式 ,通电顺序:A-AB-B-BC-C-CA-A,电机正转;,通电顺序:A-AC-C-CB-B-BA-A电机反转。 由于步进电机定位精确、调速容易、方向控制方便,在自动控制系统中使用较多。 例7.2 通过P1口控制4相步进电

11、机42BYGH602以单/双八拍、双四拍、单四拍工作方式工作,加速启动。 42BYGH602是4相小功率步进电机,工作电流0.4A,步距角1.8,我们采用驱动芯片L298N,通过P1.0P1.3控制,具体电路如图7.7所示。如果现场条件复杂,P1.0P1.3和IN1IN4之间应加光电隔离。,程序如下: #define Astep 0x01 #define Bstep 0x02 #define Cstep 0x04 #define Dstep 0x08 unsigned char dly_c; void delay() unsigned char tt,cc; cc = dly_c; tt =

12、0x0; do do while(-tt); while(-cc); void main() unsigned char mode; mode = 2; dly_c = 0x10; / 单/双八拍工作方式,if(mode = =1) while(1) P1|= Astep; delay(); P1|= Astep+Bstep; delay(); P1|= Bstep; delay(); P1= Bstep+Cstep; delay(); P1|= Cstep; delay(); P1|= Cstep+Dstep; delay(); P1|= Dstep; delay(); P1|= Dstep

13、+Astep; delay(); if(dly_c2) dly_c -; ; / 双四拍工作方式,if(mode = 2) while(1) P1|= Astep+Bstep; delay(); P1|= Bstep+Cstep; delay(); P1|= Cstep+Dstep; delay(); P1|= Dstep+Astep; delay(); if(dly_c3) dly_c -; ; / 单四拍工作方式,if(mode =3) while(1) P1|= Dstep; delay(); P1|= Cstep; delay(); P1|= Bstep; delay(); P1|=

14、Astep; delay(); if(dly_c4) dly_c -; while(1); ,例7.3 单片机在在数控机床上的运用 在上例中,步进电机在MCS-51单片机控制下,可以正转、反转、调速和精确定位。因此在简易数控设备上应用很广。 我们知道,单片机只能进行数字运算,那么它是如何通过步进电机控制机床加工出直线、圆弧、和各种形状的零部件呢? 我们以两坐标机床为例来做简单介绍,两坐标机床有两个拖板,由两台步进电机驱动,分别带动拖板夹具上的被加工零部件在X轴和Y轴方向正向或反向运动。机床上还有一个主轴电机,它带动刀具只旋转不运动。被加工零部件在X轴和Y轴方向电机的驱动下,走出各种平面曲线,零

15、部件和刀具相交的轨迹就是我们的加工曲线。,由于三相步进电机工作在三相六拍方式下有许多优点,故数控设备上多采用这种控制方式。 在加工时我们把零件分成许多段,每段都是由直线或圆弧组成。 我们先来看圆弧段加工,走圆弧段控制也叫圆弧插补。 见图7.8,加工圆弧,圆心在坐标原点,起点A(6,0)、终点B(0,6),半径为6。,加工时,先从A点向-X方向走一步,到(5,0)点。这一点在圆弧内部,如果第二步继续向-X走,离圆弧距离会越来越远。为了接近圆弧,第二步应向+Y方向走,到(5,1)点,此点还在圆弧内,第三步继续向+Y方向走,如图所示,第十二步走到B点,结束加工。 综上述,圆弧插补的工作过程分四步,1

16、位置判别,加工开始,通过位置判别决定工作台走向。 位置判别可通过判别函数F=+-来计算,X和Y是刀具位置坐标,R是圆半径。F0,刀具位置坐标在圆上或圆外;F0,刀具位置坐标在圆内。 2进给加工,向相应方向发一个进给脉冲,工作台走一步。一个进给脉冲工作台位移的距离叫脉冲当量,一般机床脉冲当量=0.0010.0005mm。 3偏差计算,加工一步后,对新的加工点计算新的加工偏差,做为下一步位置判别的依据。加工过程中,每走一步都要进行偏差计算。这种方法也叫逐点比较法。,因为每一步都要计算偏差,新偏差可以利用上一步计算的结果推导,避免乘方。在此例中,加工是逆时针方向,当向-X走一步:F=F-2X+1;向+Y走一步,F=F+2Y+1。 4终点判别,到达终点结束加工。X、Y方向发的总脉冲数等于X和Y坐标和,就可以结束加工。 逐点比较法直线插补运算: 根圆弧加工一样,逐点比较法直线插补加工也分4步。,2进给加工,如果点在直线上方,下一步向+X

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 高等教育 > 大学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号