当前位置:文档之家› 光电隔离多路继电器

光电隔离多路继电器

单片机课程设计报告书

课题名称 光电隔离多路继电器控制

姓 名

学 号 院 系 专 业 指导教师

2012年 6月12日

※※※※※※※※※ ※

※ ※※ ※

※※※※※※※※※

2009级学生单片机

课程设计

光电隔离多路继电器控制

1 设计目的

(1)熟悉Proteus 的操作环境,能够使用keil u-vision 和proteus 对单片机程序进行联合调试的方法

(2)学习汇编语言的编程与调试的方法。

(3)学习C51语言的程序设计方法,已经其编程与调试方法。

(4)掌握用继电器的基本方法和编程。

2 设计的主要内容和要求

此次所设计的是一个光电隔离器多路继电器控制的系统,利用P1口输出高低电平,控制继电器的开合,以实现对外部的控制。

3 整体设计方案

主要由单片机AT89C51,光耦隔离器OPTOCOUPLER,电磁继电器RTE24005F,按键、灯泡以及一些其他相关元件设计而成。总体框图如下图3.1:

图3.1 总体框图

4 硬件电路的设计

本设计的硬件电路只要包括最小系统、开关电路、信号部分。最小系统只要是为了使单片机正常工作。控制电路只要由开关和按键组成,由操作者根据相应的工作需要进行操作。驱动电路主要由光耦隔离器和继电器组成,控制灯泡的亮和熄灭。

4.1最小系统

单片机(如图4.1):本次设计使用单片机芯片AT89C51

AT89C51的工作特性:

·内含4KB的FLASH存储器檫写次数1000次;

·内含128字节的RAM;

·具有32根可编程I/O线;

·具有2个16位编程定时器;

·具有6个中断源,5个中断矢量,2级优先权的中断结构;

·具有1个全双工的可编程串行通信接口;

·具有1个数据指针DPTR;

·具有可编程3级程序锁定位;

·AT89C51的工作电源为5(1±0.2)V且典型值为5V;

·AT89C51最高工作频率为24MHZ;

·AT89C51的编程频率为3~24MHZ,编程启动电流和启动电压分别为1mA、5或12V。

图4.1 AT89C51

4.2开关电路设计

根据系统的控制要求,设置3个开关S1、S2、S3,从而控制驱动电路的驱动。利用P1口输出高低电平,控制继电器的开合,以实现对外部的控制。

图4.2 开关电路

4.3驱动电路的设计

4.3.1光电隔离器介绍

光电隔离器(optical coupler,英文缩写为OC)亦称光耦合器,简称光耦。光耦合器以光为媒介传输电信号。它对输入、输出电信号有良好的隔离作用,所以,它在各种电路中得到广泛的应用。目前它已成为种类最多、用途最广的光电器件之一。光耦合器一般由三部分组成:光的发射、光的接收及信号放大。输入的电信号驱动发光二极管(LED),使之发出一定波长的光,被光探测器接收而产生光电流,再经过进一步放大后输出。这就完成了电—光—电的转换,从而起到输入、输出、隔离的作用。由于光耦合器输入输出间互相隔离,电信号传输具有单向性等特点,因而具有良好的电绝缘能力和抗干扰能力。又由于光耦合器的输入端属于电流型工作的低阻元件,因而具有很强的共模抑制能力。所以,它在长线传输信息中作为终端隔离元件可以大大提高信噪比。大大增加计算机工作的可靠性。光电隔离器可以组成多种多样的应用电路。如组成光电隔离电路,长传输线隔离器,TTL电路驱动器,CMOS电路驱动器,脉冲放大器等。目前,在A /D模拟转换开关,光斩波器,交流、直流固态继电器等方面也有广泛应用。光

或CMOS数字电路驱动。

图4.3.1 光耦隔离器

4.3.2电磁继电器的介绍

电磁式继电器一般由铁芯、线圈、衔铁、触点簧片等组成的。只要在线圈两端加上一定的电压,线圈中就会流过一定的电流,从而产生电磁效应,衔铁就会在电磁力吸引的作用下克服返回弹簧的拉力吸向铁芯,从而带动衔铁的动触点与静触点(常开触点)吸合。当线圈断电后,电磁的吸力也随之消失,衔铁就会在弹簧的反作用力返回原来的位置,使动触点与原来的静触点(常闭触点)吸合。这样吸合、释放,从而达到了在电路中的导通、切断的目的。对于继电器的“常开、常闭”触点,可以这样来区分:继电器线圈未通电时处于断开状态的静触点,称为“常开触点”;处于接通状态的静触点称为“常闭触点”。

图4.3.2 电磁继电器

4.4 总体电路图

把各个部分的电路图组合成总电路图,就是一个完整的由单片机控制的光电隔离器多路继电器控制的系统,利用P1口输出高低电平,控制继电器的开合,实现灯泡的亮和熄灭。

图4.4 总体电路图

5 软件设计

主程序中要完成的工作主要有系统初始值的设置、系统状态的显示以及开关状态的检测判断等。利用P1口的开关S1、S2、S3输出高低电平,分别来控制光耦导通输出高低电平,从而来控制继电器的吸合,控制灯泡的亮和灭。

程序流程图:

图5.1 程序流程图

6 系统仿真

创建文件步骤1)新建项目文件。新建项目文件。选择弹出的下拉式菜单中的New Project。新建项目文件点击Project 菜单,在“文件名”中输入您的第一个C 程序项目名称,“*****.uv2”。“保存”后的文件扩展名为uv2,这是KEIL uVision2 项目文件扩展名,以后可以直接点击此文件以打开先前做的项目。2)选择所要的单片机选择所要的单片机,常用Ateml 公司的AT89C51。选择所要的单片机3)在项目中创建新的程序文件创建新的程序文件。点击新建文件的快捷按钮,出现一个新的文字创建新的程序文件编辑窗口,这个操作也可以通过菜单File-New 或快捷键Ctrl+N 来实现。好了,现在可以编写程序了。4)点击保存新建的程序保存新建的程序,*****.c,保存在项目所在的目录中,这时会发现程序保存新建的程序单词有了不同的颜色,说明KEIL的C 语法检查生效了。5)将程序文件加到项目中。在屏幕左边的Source

Group1 文件夹图标上右击弹将程序文件加到项目中。将程序文件加到项目中出菜单,在这里可以做在项目中增加减少文件等操作。选“Add File to Group “1’‘Source Group 1’”弹出文件窗口,选择刚刚保存的文件,按ADD 按钮,关闭文件窗,程序文件加到项目中。这时在Source Group1 文件夹图标左边出现了一个小+号说明,文件组中有了文件,点击它可以展开查看。6)设定创建HEX 文件选项。设定创建HEX文件选项。设定创建HEX文件选项上一步建立了单片机C语言项目,但为了让编译好的程序能通过编程器写入51芯片中,要先用编译器生成HEX文件。

如图所示,按下电源按键S1、S2、S3后使得仿真左侧的电路导通,从而使继电器吸合,分别使灯泡L1、L2、L3亮起。

图6.1 电路仿真图

7 使用说明

这一次设计的单片机仿真电路操作起来非常的简单,只要在仿真图中用鼠标点击图中右侧的电源按键1、2、3,按键第一次按下去是,电路即被开启,立即

便能看见仿真图中左侧的灯L1、L2、L3能够亮起,再次按下电键,灯便会熄灭。右侧的按键1、2、3分别对应控制图中左侧的灯L1、L2、L3。

8 设计总结

通过这次单片机设计,我们在多方面都有所提高。通过这次单片机设计,综合运用本专业所学课程的理论和生产实际知识进行一次单片机设计工作的实际训练从而培养和提高学生独立工作能力,巩固与扩充了单片机课程所学的内容,掌握单片机设计的方法和步骤,掌握单片机设计的基本的技能懂得了怎样分析电路,了解了单片机的基本结构,提高了计算能力,绘图能力,熟悉了规范和标准,同时各科相关的课程都有了全面的复习,独立思考的能力也有了提高。

在设计的过程中,通过请教老师和同学,上网或上图书馆查资料将这些问题解决。这样不仅巩固了以前所学过的知识,加深了我对所学知识的理解,而且学到了很多在书本上未涉及的知识,锻炼了搜集有用信息的能力。软件编程过程中,由于采用C语言编程,以前虽然有过接触,但并不是很熟练,所以参考了别人的设计思路,琢磨研究弄懂后,又试着修改程序。在出现错时候,研究错误出在哪里,经过不懈努力,最终找出错误所在,满足了基本的设计要求。

本次设计是在李老师密切关心和悉心指导下完成的。老师在设计期间给予了我许多指导,老师总是以认真负责、一丝不苟的工作态度阅读并修改文章中不足的地方,老师的优良的作风和严谨治学的态度深深影响着我,至此,向恩师致以最真挚的感谢和最崇高的敬意!

参考文献

[1] 袁庆龙,候文义.Ni-P合金镀层组织形貌及显微硬度研究[J].太原理工大学学报,2001,32(1):51-53.

[2] 刘国钧,王连成.图书馆史研究[M].北京:高等教育出版社,1979:15-18,31.

[3] 孙品一.高校学报编辑工作现代化特征[C].中国高等学校自然科学学报研究会.科技编辑学论文集(2).北京:北京师范大学出版社,1998:10-22.

[4] 张和生.地质力学系统理论[D].太原:太原理工大学,1998.

附录:

源程序代码:

#include

#define uint unsigned int

#define uchar unsigned char int i;

sbit S1=P1^0;

sbit LAMP1=P2^0;

sbit S2=P1^1;

sbit LAMP2=P2^1;

sbit S3=P1^2;

sbit LAMP3=P2^2;

void main()

{

while(S1==0)

{

for(i=1;S2==0;i++);

LAMP1=~LAMP1;

}

if(S2==0)

{

for(i=1;S2==0;i++);

LAMP2=~LAMP2;

}

if(S3==0)

{

for(i=1;S3==0;i++);

LAMP3=~LAMP3;

}

}

相关主题
文本预览
相关文档 最新文档