单片机继电器控制

更新时间:2023-09-25 14:13:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

电 子 科 技 大 学

单片机最小应用系统

计 报 告

指导老师:

学 生:

学 号:

机电工程学院 2009年5月

单片机最小应用系统设计报告

一、设计题目………………………………………………………1 二、设计目的………………………………………………………1 三、系统硬件图……………………………………………………1 四、程序流程图……………………………………………………2 五、系统分析与说明

5.1系统主要组成部分………………………………………3 5.2继电器量部分……………………………………………4 5.3单片机最小系统部分……………………………………5 5.4可编程并行接口芯8255A部分…………………………10 5.5电路板的制作……………………………………………15 5.6系统连线说明分析.…………………………………….16

六、源程序 ………………………………………………………17 七、设计体会………………………………………………………20 八、参考文献 ……………………………………………………20

一、 设计题目

继电器控制。用8031单片机和8255控制继电器,实现外部电路转换。按一个按钮,第一条线通,再按一下,第一条线路断开,第二条线路通。

二、 设计目的

1、通过本次实验,掌握继电器的基本原理和特点。

2、掌握可编程通用并行接口芯片8255芯片的结构及编程方法。

3、搭建单片机最小应用系统,进一步加深对单片机应用的理解,提高处理实际问题的能力和独立分析思考的能力。

三、 系统硬件图

1、继电器控制的硬件电路原理图如下:

1234D下载线接口6P排针123456+5GNDGND+5+5VCCP00P01P02P03P04P05P06P07EAALEPSENP27P26P25P24P23P22P21P20P0.0P0.1P0.2P0.3P0.4P0.5P0.6P0.7+5P2.7P2.6P2.5P2.4P2.3P2.2P2.1P2.0+5D0D1D2D3D4D5D6D7P1.0P1.1P1.2P1.3P1.4P1.5P1.6P1.7RST8051P10P11P12P13P14P15P16P17RST30/RXD31/TXD32/INT033/INT134/T035/T136/WR37/RDXTAL2XTAL1VSSD0D1D2D3D4D5D6D7343332313029282743214039383718192021222324251415161713121110PA0PA1PA2PA3PA4PA5PA6PA7+5PB0PB1PB2PB3PB4RE1PA01KRE2PA1QS1PNP2RE31K1KP1.5P1.6P1.7RST267+5S1CFU复位按键22uRSTCQS2PNP2RE41K复位2.2KJ1PC0PC1PC2PC3PC4PC5PC6PC7继电器GNDJLED1LEDGNDJ2继电器JLED2LEDGNDXTA130P130pY112MHzGNDC30P230pXTA2RESETWRRDCSA1A0XTA1XTA2RDWRA0A1RESETCS53698356GNDGNDGNDU8255A8255ARS14.7kSS0PB3SW-PBGND电源电路+5BVCDC IN 12+5RS24.7kSS1PB4SW-PBGND滤波电容1VC1100U104P滤波电容7805GND电源输入+53R22.2KP0.0DD21LED稳压管VINVOUTGNDCxx2指示灯LEDC DIAN滤波电容GNDGND+5滤波电容 图1 电路原理图 A 2、PCB图如下:

1234

图2 PCB图

四、 程序流程图

继电器控制系统程序框图如下:

开始 两继电器断开 第一个按钮是否按下 Key_count++ 第二个继电器闭合,另一个断开 第一个继电器闭合 第二个按钮是否按下 Key_count=0 图3 程序流程图

五、系统分析与说明

5.1系统主要组成部分

继电器控制系统主要分为三个部分:单片机最小系统,继电器部分,可编程并行接

口芯片8255A部分。

所用主要元件有:AT89S51 ,SRD-05VDC-SL-C型继电器器, 8255A,发光二级管。 5.2继电器部分

5.2.1 继电器实物图与电气图

继电器是一种电子控制器件,它具有控制系统(又称输入回路)和被控制系统(又称输出回路),通常应用于自动控制电路中,它实际上是用较小的电流去控制较大电流的一种“自动开关”。故在电路中起着自动调节、安全保护、转换电路等作用。

图4 继电器实物图

图5 继电器电气图

5.2.2 继电器的工作原理和特性

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

5.2.3继电器的选用注意事项

①控制电路的电源电压,能提供的最大电流;

②被控制电路中的电压和电流;

③被控电路需要几组、什么形式的触点。选用继电器时,一般控制电路的电源电压可作为选用的依据。控制电路应能给继电器提供足够的工作电流,否则继电器吸合是不稳定的;

④注意器具的容积。若是用于一般用电器,除考虑机箱容积外,小型继电器主要考虑电路板安装布局。对于小型电器,如玩具、遥控装置则应选用超小型继电器产品。 5.3单片机最小系统部分

MCS-51系列单片机是一种高性能的8位机系列,广泛应用于各种小型控制系统中,其引脚图如图所示。本论文采用的AT89C51单片机是AMTEL公司生产的MCS-51系列的兼容产品,与MCS-51指令系统兼容,系统结构相同,CMOS工艺制造并带有非易失性Flash程序存储器。全部支持12时钟和6时钟操作。AT89C51包含128字节RAM、32条I/O 口线、3个16位定时/计数器、6输入4优先级嵌套中断结构、1个串行I/O 口(可用于多机通信I/O扩展或全双工UART以及片内振荡器和时钟电路)。

CPU ROM RAM 定时器/ 计数器 时钟 I/O接口 电路

图6 MCS-51引脚图 MCS-51系列单片机的并行I/O口

接口电路是微机必不可少的组成部分,并行输入确出接口是CPU和外部进行信息交换的主要通道。MSC-51系列单片有4个8位并行双向I/O口P0~P3,共32根I/O线。每一根线能独立用作输入或输出。单片机可以外接键盘、显示器等外围设备.还可以进行系统扩展,以解决硬件资源不足问题。4个并行口都是双向口,既可以输入又可以输出。P0、P2口经常作外部扩展存储器时的数据、地址线,P3口除作I/O口外,每一根都有第二功能。这4个I/O口结构基本相同,但仍存在差别。

(1) P1口是最常用的I/O口如图所示,因为不作数据地址线,其结构中没有数据地址线,也没有多路开关MUX,输出驱动电路接有上拉电阻。P1口输入输出时与P0作I/O时相似,输出数据时.先写入锁存器,经Q端反相,再经场效应管反相输出到引脚。输入时,先向锁存器写l,使v管截止.外部引脚信号由下方读缓冲器送入内部总线,完成读引脚操作。P1口也可以读锁存器。外部提升电阻将引脚拉升至高电平,但输人的低电平信号能将其拉低,不会影响低电平的输入。

图7 P1口一位结构

(2) P2口的位结构比P1多了一个控制转换部分如图5所示,结构与P0口基本相似,如下图所示。P2口改P0推拉式输出驱动电路为上拉电阻式,当控制信号s为低电平,作I/O口使用时,多路开关MUX使锁存器输出端Q与输出驱动输入端接通,构成一个准双向口。

此外,当外部扩展存储器时,P2口常做高8位地址线使用。

图8 P2口一位结构

下表中概括了单片机中使用到的并行口P1、P2功能:

D0D1D2D3D4D5D6D7A0A1CSRDWRRESETVccGND34 433 332 231 130 4029 3928 3827 37 18 8255A 199 208 216 225 2336 2435 25 14 15 16 17 1326 127 11 10PA0PA1PA2PA3PA4PA5PA6PA7PB0PB1PB2PB3PB4PB5PB6PB7PC0PC1PC2PC3PC4PC5PC6PC7A口B口C口

图13 8255A引脚分布图

8255A端口选择表

表2 8255A端口选择表

8255A的编程控制字

(1)工作方式控制字:用来设定通道的工作方式及数据的传送方向的。

(2)C口按位置位/复位控制字:向控制寄存器写入控制字,而使它的每一位置位或复位。

(3)两个控制字的差别

工作方式控制字放在程序的开始部分;按位置位/复位控制字可放在初始化程序以后的任何地方。

8255A的工作方式及应用 (1)方式0及其应用:系统连接 (2)方式1及其应用:

引脚配置、输出图、输出时序、状态字 (3)方式2及其应用:

引脚定义、输出时序、状态字、接口电路

图14 系统连接图

PA7~PA0INTEA数据总线D7~D0 CS PA7~PA0 8位开关 8位LED 指示灯 8255A PB7~PB0 RESET接系统RESET信号线 PC0 PC4 按钮 蜂鸣片 INTEBPB7~PB0PC4PC5 STBaIBFaPC2PC1STBbIBFbRDPC3 INTRaI/OPC0INTRbPC6, 7

RD(a)A通道方式1引脚配置 (b)B通道方式1引脚配置图6-14 8255A方式1输入

5.5电路板的制作

Protel99功能强大,为我们进行电子电路原理图和印制板图的设计提供了良好的操作环境。用Protell99进行电路设计分为两大部分:原理图的设计和电路板的设计。原理图的设计实在SCH系统中进行的,电路原理图是印刷板电路设计的基础,只有设计好原理图才有可能进行下一步的电路板设计。

用protel99进行电路板设计的第一步是其原理图的设计。显然,原理图决定整个电路的基本功能,也是接下来生成网表和设计印刷板电路的基础。具体步骤如下: (1)图面设置:

Protel99允许用户根据电路的规模设置图面的大小,按照偏好和习惯设置图面的样式。实际上,设置图面就是设置了一个工作平面,以后的工作就要在这个平面上进行。所以图面应该设置得足够大,为进一步工作提供一个足够大的工作空间。 (2)放置元件:

所谓放置元件就是从元件库中选取所需得元件,将其布置到图面上合适的位置,有时还要重定义元件的编号、封装。元件的封装很重要,要根据元件的实际尺寸和实际封装来决定,要是元件没封装好,将会给以后电路板的制作带来很大的麻烦。这些都是下一步工作的基础。Protel99为用户提供了一个非完备的元件库,并且允许用户对这个元件库进行编辑或者新建自己的元件库。 电路板的制作过程 (1) 打印:

将生成的PCB图打印到热转印纸上,需注意线不能太窄,墨要加重,否则制板时容易断线,如果在操作过程中断了线,可用电烙铁将锡带过。 (2) 熨烫:

将热转印纸覆在铜板上,用电熨斗进行熨烫,关键要注意熨烫的时间,不能太久,也不能时间太短,否则,太久会把铜板烫坏,不够的话墨迹覆不上去。 (3) 腐蚀:

把铜板放到三氯化铁溶液中腐蚀,需注意溶液浓度要较高,最好用热水配置,这样腐蚀更快,一般3分钟即可。如果时间过长,需剩下的铜线也可能被腐蚀。 (4) 打孔:

打孔时注意钻头尺寸,本次用的钻头大小是0.712mm的,最需注意的地方是集成块的管脚,如果打孔误差大,管座就很难插上。 (5) 放置元件:

放置前应先打磨一下打孔后留下的毛刺,并均匀地涂上松香水(目的是防止铜线氧化,易于焊锡覆着焊盘,但多涂会导致焊接时焊点变黑,影响美观)。放置元件时注意集成块的管脚,二极管和电解电容的正负,这些都是平时比较容易出错的地方。 (6) 焊接:

焊接技术比较难掌握,焊锡、烙铁与焊盘的位置关系,焊锡熔化时间 长短,松香水的浓度,烙铁的温度等等,都是影响焊点美观的因素。 (7) 检查:

检查是否有虚焊,集成块管脚位置是否正确,电源引线位置是否恰当等。检查完毕就能进行调试了。 5.6系统连线说明分析

在本系统中8255的PA0、PA1分别继电器上的串联电阻RE1和RE2相连,发光二极管一端与继电器触点相连,另一端接地,单片机的P1.0-P1.7连接到8255的D0、D1、D2、D3、D4、D5、D6、D7端子上,作为数据总线,单片机的P3.5与8255的片选信号CS端子相连,P3.4和P3.3与8255的RD和WR端子相连,用于读写信号,P3.6和P3.7与8255的A1和A0端子相连,选择8255的控制端口。 调试过程:

1、保证电路板连接正确后,接上电源。

2、保证正确的按钮次序及按下次数与要求的线路控制相符合。 实验过程中的问题及改进方法

1、制作电路板过程中由于焊接等原因,造成电路连接不通现象,浪费了调试时间。 2、由于8255的时序控制不好把握,在调试中花费了不少时间。

六、源程序

#include #define A0 P3_7 #define A1 P3_6 #define Rest P3_2 #define Read P3_4 #define Write P3_3 #define CS P3_5

#define WR_CLK() Read=1; Write = 0;Write =1 unsigned char Key_Count = 0,TM,set_key_flag; void Set_Adr(char Adr) {

if(Adr&0x01) A0=1; else

A0=0; if(Adr&0x02) A1=1; else

A1=0; }

void Wr_Data_At(unsigned char Data,unsigned char Adr) {

CS=1; CS=0;

Set_Adr(Adr); P1=Data; WR_CLK(); }

void Init_8255(void) {

Rest=1; Rest=0; CS=0; Read=1; Write=1;

Wr_Data_At(0x82,3); }

void Set_CH1(void) {

本文来源:https://www.bwwdw.com/article/0jnd.html

Top