《单片机应用与设计》课件项目六_第1页
《单片机应用与设计》课件项目六_第2页
《单片机应用与设计》课件项目六_第3页
《单片机应用与设计》课件项目六_第4页
《单片机应用与设计》课件项目六_第5页
已阅读5页,还剩53页未读 继续免费阅读

下载本文档

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

文档简介

项目六单片机外设控制

6.1单片机与继电器

6.2单片机与电机

6.3单片机I/O口的扩展本章知识总结

学习目标

了解ULN2003的特性;

掌握单片机控制继电器的原理;

掌握单片机控制直流电机的方法;

掌握单片机扩展I/O口的方法。

能力目标

掌握单片机常用外设的控制方法,并能够进行一定的扩展应用。

6.1单片机与继电器

继电器实际上是一个电磁开关,是一种电控制器件。单片机一般工作在中低电压、小电流的环境中,但在自动化控制电路中,对电动机等大功率器件的控制时,常常使用到继电器。它是用小电流去控制大电流的“开关”。

继电器具有动作快、工作稳定、使用寿命长、体积小等优点,被广泛应用于自动化、运动、遥控、测量和通信等装置中,是非常重要的控制元件之一。

1.继电器的分类

继电器可分为电磁继电器、固态继电器、时间继电器等。

1)电磁继电器

在输入电路内电流的作用下,由机械部件的相对运动产生预定响应的一种继电器称为电磁继电器。它包括直流电磁继电器、交流电磁继电器、磁保持继电器、极化继电器、舌簧继电器和节能功率继电器。

2)固态继电器

固态继电器是输入、输出功能由电子元件完成而无机械运动部件的一种继电器。

3)时间继电器

当加上或除去输入信号时,输出部分需延时或限时到规定的时间才闭合或断开其被控线路的继电器称为时间继电器。

此外还有温度继电器、风速继电器、加速度继电器、热继电器、光继电器等。

2.继电器的工作原理图

继电器内部结构如图6.1所示。

继电器工作原理如下。

当A、B两端通电时,电磁线圈产生磁场,把衔铁吸引下来。此时,D触点与C触点脱离,与E触点导通,用电器1停止工作,用电器2开始工作。当A、B两点失去电压时,D触点由于弹性的关系,回到C点,用电器1恢复工作,用电器2停止工作。图6.1继电器内部结构图

3.单片机驱动继电器

前面我们已经介绍过,单片机驱动能力较弱,需要相应的使用驱动芯片来提高其驱动能力。下面介绍一款高耐压、大电流复合晶体管——ULN2003。

ULN2003是高耐压、大电流复合晶体管阵列,由七个硅NPN复合晶体管组成,多用于单片机、智能仪表等控制电路中,并且可直接驱动继电器等负载。ULN2003的每一对达林顿管都串联一个2.7 kΩ的基极电阻,在5 V的工作电压下它能与TTL和CMOS电路直接相连,可以直接处理原先需要标准逻辑缓冲器来处理的数据。

ULN2003工作电压高,工作电流大,灌电流可达500 mA,并且能够在关态时承受50 V的电压,输出还可以在高负载电流并行运行。ULN2003内部还集成了一个消线圈反电动势的二极管,可用来驱动继电器。通常单片机驱动ULN2003时,上拉2 kΩ的电阻较为合适,同时,COM引脚应该悬空或接电源。ULN2003引脚图如图6.2所示。

引脚1:CPU脉冲输入端,端口对应一个信号输出端。

引脚2:CPU脉冲输入端。

引脚3:CPU脉冲输入端。

引脚4:CPU脉冲输入端。

引脚5:CPU脉冲输入端。

图6.2ULN2003引脚图引脚6:CPU脉冲输入端。

引脚7:CPU脉冲输入端。

引脚8:接地。

引脚9:该脚是内部7个续流二极管负极的公共端,各二极管的正极分别接各达林顿管的集电极。用于感性负载时,该脚接负载电源正极,实现续流作用。如果该脚接地,实际上就是达林顿管的集电极对地接通。

引脚10:脉冲信号输出端,对应7脚信号输入端。

引脚11:脉冲信号输出端,对应6脚信号输入端。

引脚12:脉冲信号输出端,对应5脚信号输入端。

引脚13:脉冲信号输出端,对应4脚信号输入端。引脚14:脉冲信号输出端,对应3脚信号输入端。

引脚15:脉冲信号输出端,对应2脚信号输入端。

引脚16:脉冲信号输出端,对应1脚信号输入端。

ULN2003的各项极限值如表6-1所示。

如果ULN2003的达林顿管输入端输入低电平使其截止,其驱动的元件是感性元件,则电流不能突变,此时会产生一个高压;如果没有二极管,达林顿管会被击穿,所以这个二极管主要起保护作用。

由于ULN2003是集电极开路输出,为了让这个二极管起到续流作用,必须将COM引脚(PIN9)接在负载的供电电源上,只有这样才能够形成续流回路。表6-1ULN2003的各项极限值

【例6.1】单片机控制继电器。使用一个按键,每按一次按键,继电器的状态就变化一次,以此来控制LED亮灭。

解析:

根据题意,可设计出电路如图6.3所示。

(1)原理分析。由于ULN2003是非门,而要想使继电器电磁铁得电,在ULN2003的19脚就要为低电平。由于单片机I/O口通过非门连接到ULN2003,而ULN2003本身也具有反向功能,所以当P2.0为低电平时,对应的ULN2003的16脚就为低电平,继电器得电吸合,LED发光,反之则不发光。因此,只需用按键控制P2.0的状态,就可以控制继电器的吸合的断开,以此来达到控制LED亮灭的目的。图6.3单片机控制继电器电路图

(2)程序代码如下:

#include<reg52.h>

sbitkey=P2^7;

sbitrel=P2^0;

voiddelay_10ms(unsignedintz)

{

unsignedintx,y;

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

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

}

voidmain()

{

rel=1;

while(1)

{

if(key==0)

{

delay_10ms(1);

if(key==0)

{

rel=~rel; //每按一次按键,rel就取反一次

while(!key);

delay_10ms(1);

while(!key);

}

}

}

}

6.2单片机与电机

1.直流电机简介

电动机简称电机,是应用电磁感应原理运行的旋转电磁机械,用于实现电能向机械能的转换。运行时从电系统吸收电功率,向机械系统输出机械功率。

在小电子设备中,一般是使用直流电机。

直流电机是将直流电能转换为机械能的转动装置。电动机定子提供磁场,直流电源向转子的绕组提供电流,换向器使转子电流与磁场产生的转矩保持方向不变。根据转速的不同,直流电机可分成直流高速、直流低速和直流减速电机等几种。直流电机外形如图6.4所示。它有一个转轴和两个接线端。在直流电机的两个接线端加入一定的电压,直流电机的转轴就会转动,交换极性后电机转轴转动方向将会改变。对于额定工作电压的直流电机,在耐压值允许的范围内,增加电压后电机转速也随之增加,降低电压后电机转速也随之降低。图6.4直流电机外形图

2.L298简介

L298是一种双全桥步进电机专用驱动芯片,内部包含4信道逻辑驱动电路,是一种二相和四相步进电机的专用驱动器,可同时驱动2个二相或1个四相步进电机,内含2个H-Bridge的高电压、大电流双全桥式驱动器,接收标准TTL逻辑准位信号,可驱动46 V、2 A以下的步进电机,且可以直接透过电源来调节输出电压。此芯片可直接由单片机的I/O端口来提供模拟时序信号。芯片的基本参数如下:

(1)类型:半桥;

(2)输入类型:非反相;

(3)输出数:4;

(4)电流-输出/通道:2A;

(5)电流-峰值输出:3A;

(6)电源电压:4.5V~46V;

(7)工作温度:-25°C~130°C;

(8)安装类型:通孔。

L298可接受标准TTL逻辑电平信号VSS,VSS可接4.5V~7V电压。4脚VS接电源电压,VS电压范围VIH为+2.5V~46 V。输出电流可达2.5 A,可驱动电感性负载。1脚和15脚下管的发射极分别单独引出以便接入电流采样电阻,形成电流传感信号。L298可驱动2个电动机,OUT1、OUT2和OUT3、OUT4之间可分别接电动机。EnA、EnB接控制使能端,控制电机的停转。L298控制可参考表6-2。表6-2L298控制表

【例6.2】用单片机控制直流电机正反转。

解析:

我们可以通过控制L298来控制直流电机正反转,原理如图6.5所示。

用两个按键进行控制,一个控制启动,一个控制正反转,使用L298的ENA和IN1、IN2来控制电机。图6.5单片机控制电机原理图程序代码如下:

#include<reg52.h>

sbitENA=P2^4;

sbitIN1=P2^0;

sbitIN2=P2^1;

sbitstart=P1^7;

sbitturn=P1^4;

voiddelay_10ms(unsignedintz)

{

unsignedintx,y;

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

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

}

voidmain()

{

ENA=1; //初始设置L298,使电机停止

IN1=0;

IN2=0;

while(1)

{

if(start==0) //判断启动按钮是否按下

{

delay_10ms(1);

if(start==0) {

IN1=1; //让电机正转

IN2=0;

while(!start);

delay_10ms(1);

while(!start);

}

}

if(turn==0) //判断正反转按钮是否按下

{

delay_10ms(1);

if(turn==0) //如果按下正反转按钮,则对IN1、IN2的状态取反 {

IN1=~IN1;

IN2=~IN2;

while(!start);

delay_10ms(1);

while(!start);

}

}

}

}

6.3单片机I/O口的扩展

当我们使用单片机控制外设较多时,就会出现一个非常突出的一个问题,I/O口不够用,给设计带来很多不便。下面介绍两种常用I/O扩展芯片。

1.串行数据输入芯片—74LS165芯片

当我们利用单片机做数据采集时,会遇到I/O口不够用的情况,此时可以选择并行输入串行输出的芯片,来解决51单片机I/O口较少的问题。

1) 74LS165芯片简介

74LS165芯片的封装形式如图6.6所示。图6.674LS165的封装形式当移位/置入控制端(SH/

)为低电平时,并行数据(A~H)被置入寄存器,而与时钟(CLK、CLKINH)及串行数据(SER)均无关。当SH/为高电平时,并行置数功能被禁止。

CLK和CLKINK在功能上是等价的,可以交换使用。当CLK和CLKINK有一个为高电平时,另一个时钟可以输入。当CLK和CLKINK有一个为低电平并且SH/有一个为高电平时,另一个时钟被禁止。只有在CLK为高电平时CLKINK才可变为高电平。74LS165引脚功能,见表6-3所示。表6-374LS165引脚功能表

2) 74LS165的应用

在设计系统之前,通过查看扩展芯片的引脚的功能图可以完成硬件部分的设计。对于程序的编写,除了要查看扩展芯片的基本功能和引脚外,应查看真值表或时序图。74LS165时序图如图6.7所示。

图6.774LS165时序图从时序图可以分析出74LS165芯片的工作过程如下:

(1) CLK引脚上要加载方波,推荐工作频率为25 MHz。在数据传送过程中,CLK引脚上每产生一次上升沿,数据传送一位。程序如下:

CLK1_165=0; //产生上升沿CLOCK脉冲

数据组合程序块

CLK1_165=1;

(2) INHIBIT阶段为数据传送的准备过程。在这个过程中CLKINH引脚需为高电平,SH/LD引脚需产生一低电平方波。数据传送准备阶段的程序如下:

CLKINH_165=1; //CLK引脚加载高电平

SL_165=1; //在SH/LD引脚上产生负跳沿方波

delay0();

SL_165=0;

delay0();

SL_165=1;

(3) SERIALSHIFT阶段为数据传送过程。在这个过程中只需将CLKINH引脚的高电平转换为低电平。程序如下:

CLKINH_165=0; //数据发送

(4) A~H引脚的状态均通过QH引脚一位位地传送给单片机。因此写程序时需要将8位数进行整合。程序如下:

rbuff<<=1;

if(DATA_165)

{

rbuff=rbuff|0x01; //最低位置1

}

【例6.3】利用74LS165芯片,其输入端分别连接8个按钮,每个按钮控制1个LED的亮灭。LED由P2口控制。

解析:

根据题目要求和74LS165特性,可以设计出硬件电路,如图6.8所示。

程序代码如下:

#include<reg52.h>

#defineucharunsignedchar

#defineuintunsignedint

#defineI_NUM1 //级联74LS165芯片的个数

sbitSL_165=P1^0;

sbitCLK1_165=P1^1;

sbitCLKINH_165=P1^2;

sbitDATA_165=P1^3;

voiddelay0()

{;;}

voiddelayms(uintxms)

{

uinti,j;

for(i=xms;i>0;i--) //i=xms即延时约x毫秒

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

}

voidmain()

{

uchari,j,rbuff;

while(1)

{

CLKINH_165=1; //CLK引脚加载高电平

SL_165=1; //在SH/LD引脚上产生负跳沿方波

delay0();

SL_165=0;

delay0();

SL_165=1;

delay0();

CLKINH_165=0; //数据发送

for(i=0;i<8;i++) //读入一个字节的数据

{

CLK1_165=0; //产生上升CLOCK沿脉冲

rbuff<<=1;

if(DATA_165)

{

rbuff=rbuff|0x01;//最低位置1

}

CLK1_165=1;

}

P2=rbuff;

}

}图6.8硬件电路图

2.并行数据输出芯片——74LS595

当我们利用单片机做数字量输出控制的时候,常常会遇到I/O口不够用的情况,此时可以选择串行输入并行输出的芯片,来解决51单片机I/O口较少的问题。

1.74LS595芯片简介

74LS595是一个八位串行输入,并行输出的位移缓存器;三态输出;兼容低电压TTL电路。移位寄存器和存储器是分别的时钟。

数据在SCHcp的上升沿输入,在STcp的上升沿进入存储寄存器中去。如果两个时钟连在一起,则移位寄存器总是比存储寄存器早一个脉冲。其封装如图6.9所示。

74LS595的引脚功能见表6-4所示。

图6.974LS595封装图表6-474LS595引脚功能表

2. 74LS595的应用

74LS595时序图如图6.10所示。

通过时序图我们可以得出74LS595芯片的工作过程如下:

(1)将要准备输入的位数据移入74HC595数据输入端上(SER)。程序如下:

if(wbuff&0x01)//判断当前所传位数据是0还是1;

{

SER_595=1;

}

else

{

SER_595=0;

}图6.1074LS595时序图

(2)将位数据逐位移入74HC595,即数据串入。在移位时钟脉冲引脚(SCK)产生一上升沿,将数据输入引脚上的数据从低到高移入74HC595中。程序如下:

wbuff>>=1;

SCK_595=0; //单个BIT移位输出

delay0();

SCK_595=1;

(3)并行输出数据,即数据并出。输出锁存器控制引脚(RCK)产生一上升沿,将由数据输入引脚上已移入数据寄存器中的数据送入到输出锁存器。程序如下:

RCK_595=1; //寄存器锁存数据输出

delay0();

RCK_595=0;

【例6.4】利用74LS595芯片串入并出的特点,控制8位LED中的VD1~VD4灯的亮灭。

解析:

结合74LS595特性,可以设计出硬件电路,如图6.11所示。

程序代码如下:

#include<reg52.h>

#defineucharunsignedchar

#defineuintunsignedint

sbitSER_595=P2^0;

sbitSCK_595=P2^1;

sbitRCK_595=P2^2;

voiddelay0()

{;;}

voidmain()

{

uchari,j,wbuff;

whi

温馨提示

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

评论

0/150

提交评论