基于单片机的继电器控制..
- 格式:doc
- 大小:359.50 KB
- 文档页数:15
一、实训目的本次单片机实训报告主要针对继电器控制实验进行总结。
通过本次实验,旨在:1. 理解继电器的工作原理及其在电路中的应用。
2. 掌握单片机如何通过编程控制继电器的工作状态。
3. 提高单片机硬件电路的设计和调试能力。
4. 增强理论与实践相结合的能力,提高解决实际问题的能力。
二、实验原理继电器是一种电控制器件,主要用于在电路中实现自动控制、远程控制等功能。
它主要由线圈、铁芯、衔铁、触点等部分组成。
当线圈中有电流通过时,线圈产生磁场,吸引衔铁,从而闭合或断开触点,实现电路的通断。
在本次实验中,我们使用的是一款基于51单片机的继电器控制电路。
该电路主要由单片机、继电器、驱动电路、电源等部分组成。
单片机通过编程控制驱动电路,驱动继电器线圈,从而控制继电器的通断。
三、实验步骤1. 电路搭建:根据实验原理图,搭建继电器控制电路。
主要包括单片机最小系统、继电器驱动电路、电源电路等。
2. 编程设计:使用C语言编写单片机程序,实现继电器控制功能。
程序主要分为以下几个部分:- 初始化:设置单片机IO口、定时器等。
- 主循环:读取按键状态,根据按键状态控制继电器通断。
- 中断服务程序:处理外部中断事件。
3. 调试与测试:将编写好的程序下载到单片机中,进行调试和测试。
观察继电器的工作状态,确保程序运行正常。
四、实验结果与分析1. 实验结果:在实验过程中,成功实现了继电器的控制。
当按下按键时,继电器吸合,电路通电;当释放按键时,继电器断开,电路断电。
2. 结果分析:- 单片机程序运行正常,能够根据按键状态控制继电器通断。
- 继电器驱动电路设计合理,能够满足实验要求。
- 实验过程中,注意了电源电压和电流的稳定,确保了实验的安全性。
五、实验总结通过本次继电器控制实验,我们掌握了以下知识和技能:1. 理解了继电器的工作原理及其在电路中的应用。
2. 掌握了单片机如何通过编程控制继电器的工作状态。
3. 提高了单片机硬件电路的设计和调试能力。
基于PIC12F675单片机的可编程多功能时间继电器的设计摘要:定时控制是最基本的自动控制方式,由单片机制作的定时控制,具有定时精确,电路简单等诸多优点,能够实现多种定时模式,利用MCU内部的多个TMR模块,可以设计成多个集成的时间继电器,利用MCU内部的多路ADC转换模块通过各自的电位器独立调整延时时间,而且各定时模块可以级联控制,实现电动机控制电路的简化,如果通过IO口连接外部信号,便于实现多种简单的自动控制。
关键词:MCU、定时器、AD转换、级联控制1、引言常用的电子时间继电器普遍使用CD4060振荡计数分频CMOS集成电流构成,一般采用外部RC振荡器,定时精度低、控制功能单一。
由于这种电子时间继电器内部带有小功率稳压电源模块,用引脚较少的单片机取代原数字电路芯片,可以实现多个定时器集成在一起,或者多个定时级联控制。
如果用较少引脚的单片机构成时间继电器,则提高定时精度,而且实现多个时间继电器的集成,通过编程可以实现多个时间继电器的级联控制。
从而可以大大简化控制电路,节省了线材。
2、单片机及选型单片机又称微控器MCU,生产厂家和品牌很多。
众所周知proteus是开发单片机产品最好用的仿真软件,不但能够进行单片机仿真,而且能够进行电路仿真和PCB电路设计,因此选型时首先考虑容易购置且在proteus中有仿真模型的MCU产品。
经典的普林斯顿构架的51单片机,内部资源少,引脚多,不适合单片机产品的开发。
PIC单片机虽然品种繁多,但是一个IDE软件可以通吃,而且在proteus仿真软件有丰富的仿真模型,这样便于电路研发设计。
其中有PIC12F675[1]单片机是PICF12系列单片机中内部资源较为丰富的品种。
其内部有两个可编程定时器模块TMR0和TMR1,还具有4路10位ADC转换模块和比较器模块,比较适合制作时间继电器的控制电路。
选用PIC单片机的另一个好处是有廉价的替代品,台湾的麦肯单片机质优价廉,可以直接取代。
基于单片机数字式继电器的设计安徽滁州技师学院 白 芹【摘 要】继电保护装置对高压电网的安全、稳定运行有重要作用。
随着计算机技术的迅速发展,单片机继电保护装置在高压电网中得到了广泛应用。
文章研究设计了单片机继电保护装置,研究数字继电器的设计与开发,提出了数字继电器的整体配置方案,从高压电网故障的暂态过程着手,阐述了单片机保护的硬件结构图、模拟量输入、算法等。
【关键词】继电保护 数字继电器 EEPROM AT89S52单片机继电保护装置是指由各种继电器按照一定的性能和要求连接在一起而组成的一种自动装置,它的主要任务是保证电力系统安全运行。
当系统中的任何电气元件发生故障时,它可以借助断路器自动切除;而当出现不正常工作状况时,则能自动发生预警信号。
在高、中、低压电力系统中,数字自动化装置越来越多,传统的电磁式继电保护已经逐步退出市场,晶体管保护、集成电路保护随着单片机保护的发展,也逐步被新型的保护装置所替代——数字继电器。
一、数字继电器的设计要求要求在传统继电保护理论的基础上,设计出一种新型的数字继电器,能够监测220V交流电网的实时运行状态,并能对它实现一定的保护功能,如电流保护、低电压保护等;同时还可通过人机界面进行保护定值的设定和实时状态的显示;并配有RS485通信接口,可与上位计算机通信,实现电网集中监控、集中管理。
要求设计出数字继电器的硬件平台和软件平台,并完成所有的程序调试。
在进行硬件电路和软件编程时,应使该数字继电器具有一定的电磁兼容性。
二、数字继电器的硬件设计数字继电器的硬件部分主要由模拟量调理电路、A/D转换电路、EEPROM扩展、AT89S52单片机、光耦隔离、LCD 显示、键盘电路、晶振电路、复位电路以及电源电路组成。
数字继电器的硬件结构框图如图1所示。
数字继电器的硬件系统设计主要有六大部分的设计,分别为最小系统电路的设计、模拟信号的采集和变换电路和设计、人机接口电路的设计、工作电源的设计以及串口通讯电路的设计。
stm32单片机控制继电器代码1.引言1.1 概述在本文中, 我们将探讨如何使用STM32单片机来控制继电器。
继电器是一种常见的电子元件,用于控制电路的打开和关闭。
它可以通过小电流控制大电流,并在电路中起到开关的作用。
本文的目的是介绍如何使用STM32单片机来实现对继电器的控制。
我们将通过编写相应的代码,实现STM32单片机与继电器的连接,并控制继电器的开关。
此外,我们还将介绍继电器的原理和应用,并提供一些实际的应用案例和展望。
通过阅读本文,读者将会了解到如何利用STM32单片机来控制继电器,并且可以将所学知识应用于各种实际情境中。
本文将以易于理解和实践的方式呈现相关内容,以帮助读者更好地理解和掌握这一技术。
1.2文章结构1.2 文章结构本文将分为三个主要部分进行讨论。
首先,引言部分将提供关于文章的背景和主要目标的概述。
其次,正文部分将介绍STM32单片机的基本概念和特性,以及继电器的原理和应用。
最后,结论部分将展示如何实现STM32单片机控制继电器的代码,并提供一些应用案例和展望。
在正文部分中,我们将首先详细介绍STM32单片机的基本知识,包括其架构、性能和应用领域。
随后,我们将探讨继电器的原理和工作方式,以及在各种电子系统中的广泛应用。
通过对继电器的深入理解,我们将能够更好地理解STM32单片机控制继电器的代码实现过程,并加深对其应用的认识。
在结论部分,我们将给出一份实现STM32单片机控制继电器的代码示例,以帮助读者更好地理解如何利用STM32单片机实现对继电器的控制。
此外,我们还将提供一些实际应用案例,展示继电器在各种领域中的重要作用,并展望未来其在智能控制系统中的潜在应用。
通过本文的阅读,读者将能够掌握STM32单片机控制继电器的基本技术,并了解其在各种实际场景中的应用前景。
通过以上的分析和讨论,本文将全面介绍STM32单片机控制继电器的相关知识和技术,为读者提供一份系统而全面的指南。
STM32单片机控制继电器原理1.继电器基本原理继电器是一种电控开关设备,通过控制小电流来开关大电流。
它主要由电磁线圈和触点组成,当电磁线圈通电时,产生磁场吸引触点闭合;当电磁线圈断电时,磁场消失,触点断开。
继电器的触点可以用于开关电路,实现对其他电器设备的控制。
2.STM32控制继电器的硬件连接要控制继电器,首先需要将单片机的GPIO引脚与继电器的控制端连接。
通常继电器的控制端有两个脚,一个是输入脚(IN),一个是公共脚(COM)。
将STM32单片机的GPIO引脚与继电器的IN脚相连接,然后将继电器的COM脚与单片机的地(GND)相连。
3.STM32控制继电器的软件实现在STM32的软件编程中,需要配置GPIO引脚的工作模式和控制输出状态。
3.1配置GPIO引脚工作模式使用STM32的CubeMX软件来进行图形化配置,选择对应的GPIO引脚作为输出模式。
3.2控制继电器的开关状态通过编程控制GPIO引脚的输出状态来控制继电器的开关动作。
在程序中,先对GPIO引脚进行初始化配置,然后通过设置引脚的电平来控制继电器的状态。
3.2.1控制继电器闭合设置GPIO引脚输出高电平,通过拉高继电器的控制端,使得继电器触点闭合,从而实现电路的通断控制。
3.2.2控制继电器断开设置GPIO引脚输出低电平,通过拉低继电器的控制端,使得继电器触点断开,从而实现电路的通断控制。
4.保护电路设计在使用继电器进行电路控制时,需要注意对继电器保护,以防止单片机输出引脚过流或者过压造成的损坏。
4.1使用电流放大器在单片机输出引脚和继电器之间加一个电流放大器,通过电流放大器放大单片机输出引脚的电流,以减小对单片机引脚的负载。
4.2使用继电器驱动模块引入继电器驱动模块来驱动继电器,该模块具有过流保护电路,可以有效保护继电器和单片机。
5.注意事项在使用STM32单片机控制继电器时,需要注意以下事项:5.1引脚设置确认GPIO引脚与继电器的连接正确,并将引脚配置为输出模式。
单片机控制强电继电器的原理单片机控制强电继电器的原理是利用单片机的控制信号来控制继电器的工作状态。
首先,了解单片机和继电器的基本原理是很重要的。
单片机是一种集成电路,它集成了中央处理器、内存、输入/输出接口和其他辅助电路。
它可以用来控制和处理各种数字和模拟信号。
继电器是一种电流电压转换设备,它能够在控制信号发生变化时,通过绝缘电磁原理来控制高电流的通断。
继电器通常由电磁继电器和固态继电器两种类型。
下面是单片机控制强电继电器的基本原理:1. 硬件连接:首先,将单片机的IO口与继电器的控制端相连接。
这样单片机就可以通过IO口输出高低电平的控制信号来控制继电器的工作。
2. 编程控制:在单片机的程序中,编写相应的代码来控制IO口的输出信号。
可以使用高级语言如C语言或汇编语言来编写程序代码。
3. 信号逻辑:根据实际应用的需求,确定IO口输出高低电平信号和继电器的工作状态之间的对应关系。
通常,可以设置IO口输出高电平信号来控制继电器的吸合,输出低电平信号来使继电器断开。
4. 电流保护:在控制继电器的电路中需要考虑电流保护。
继电器通常具有控制电流和工作电流的限制。
单片机的IO口有一定的驱动能力,但可能不足以直接驱动继电器,所以可以使用驱动电路来增加IO口的驱动能力。
5. 隔离保护:为了保护单片机免受强电干扰或电压反扑,通常在单片机与继电器之间加入隔离电路。
例如,可以使用光耦隔离器或继电器驱动芯片等来实现隔离保护。
6. 程序设计:在单片机的程序中,编写控制继电器的代码。
可以使用单片机的GPIO口或特殊功能寄存器来设置IO口的输出状态,从而控制继电器的工作。
7. 验证和调试:编写完控制继电器的代码后,需要进行验证和调试。
可以通过使用调试工具或示波器来监测IO口的信号,确保控制信号正确生成,并且继电器的工作符合预期。
在实际应用中,单片机控制强电继电器的原理可以应用于各种场合。
例如,可以利用单片机控制继电器来实现家庭自动化系统、工业自动化控制、电力系统的电气保护等。
单片机制作控制继电器的电路单片机是一种集成电路,可用于控制和管理各种电子设备。
通过编程,单片机能够对电路中的继电器进行控制,实现各种功能。
本文将介绍如何使用单片机制作控制继电器的电路,并编写相应的程序。
一、电路设计1.硬件部分控制继电器的电路中,主要需要以下元件:单片机、继电器、电源、电阻、电容等。
其中,单片机负责接收外部信号并控制继电器的开关,电源为整个电路提供电能,电阻用于限流,电容用于稳压。
以下是一个简单的电路设计作为示例:电路连接方式:-将单片机的IO口与继电器的控制端连接;-将电源的正极与继电器的电源端连接;-将电源的负极与继电器的地线连接;-将继电器的常开端与负载(例如灯泡、电机等)连接;-将继电器的常闭端与地线连接;2.软件部分对于单片机的程序设计,可以采用C语言或者汇编语言进行编写。
以下是一个使用C语言编写的控制继电器的程序框架:```c#include <reg52.h>void delay(unsigned int n)unsigned int i,j;for(i=0;i<n;i++)for(j=0;j<125;j++);void mainwhile(1)//控制继电器打开//将IO口输出高电平//延时一段时间//控制继电器关闭//将IO口输出低电平//延时一段时间}```二、功能实现在程序中,使用delay函数来产生延时,在第一部分中,我们可以调整延时时间来控制继电器的工作时间和停止时间。
同时,在控制继电器打开和关闭的部分,通过控制IO口的电平来实现。
```c#include <reg52.h>void delay(unsigned int n)unsigned int i,j;for(i=0;i<n;i++)for(j=0;j<125;j++);void mainwhile(1)//控制继电器打开P2=0xFF;//将P2口的所有引脚置高电平delay(500); //延时0.5秒//控制继电器关闭P2=0x00;//将P2口的所有引脚置低电平delay(500); //延时0.5秒}```通过以上的程序,单片机将会每0.5秒循环一次,控制继电器的开关动作。
单片机控制继电器的原理
单片机控制继电器的原理是通过单片机的IO口输出电平信号
来控制继电器的开关动作。
继电器是一种电磁开关,具有较大的电流和电压容量,可以实现对高功率设备的控制。
单片机通常通过GPIO(General Purpose Input Output)口来控
制继电器。
GPIO口可以通过配置寄存器来设置为输出模式。
在输出模式下,单片机可以将数字电平信号输出到GPIO口,
即可以控制高电平或低电平。
在控制继电器时,可以通过GPIO口输出高电平或低电平信号。
在某些型号的继电器中,高电平可以表示继电器的闭合状态,低电平表示继电器的断开状态;而在另一些型号的继电器中,情况恰好相反。
因此,在使用具体型号继电器时,需要根据其规格书来确定高低电平的含义。
当单片机的GPIO口输出电平与继电器的工作电平匹配时,继
电器将打开或关闭。
通过这种方式,单片机可以控制继电器的状态,从而控制与继电器相连的电路的通断。
需要注意的是,单片机的GPIO口一般只能提供较小的电流,
因此在连接继电器时,通常需要使用电流放大器或者继电器驱动电路来增加电流的驱动能力,以确保继电器可靠地工作。
此外,为了保护单片机的IO口,通常还会在继电器与单片机之
间加入保护电路,如继电器的阻抗匹配电路、电流限制电路等,以防止继电器产生的电压、电流冲击对单片机造成损坏。
使用51单片机控制继电器示例代码
51单片机(如Intel的8051或其相容的微控制器)常被用于各种嵌入式系统。
使用继电器进行控制时,可以通过51单片机的数字输出引脚来控制继电器的开关状态。
下面是一个简单的示例代码,用于演示如何使用51单片机控制继电器:
#include <reg52.h> // 包含51单片机的头文件
sbit relay = P1^0; // 定义P1.0口为继电器控制口
void main() {
while(1) {
relay = 0; // 关闭继电器
delay(1000); // 延时1秒
relay = 1; // 打开继电器
delay(1000); // 延时1秒
}
}
void delay(unsigned int t) { // 简单的延时函数
while(t--);
}
这个示例代码使用了一个简单的循环来交替打开和关闭继电器。
delay函数用于在操作继电器之后进行简单的延时,以避免过于频繁的开关切换。
请注意,这只是一个基本示例,实际应用中可能需要更复杂的逻辑和保护措施。
此外,还需要注意以下几点:
继电器的驱动能力:根据具体应用选择适当的继电器,以确保其可以承受所需的负载和电压。
电源和地线:为继电器提供适当的电源和地线,并确保连接牢固。
保护措施:在继电器控制电路中添加适当的保护措施,如限流电阻、二极管等,以避免过电
压或过电流对设备和人员造成伤害。
编程和调试:根据实际硬件配置和需求对代码进行适当的修改和调试。
目录0 前言 (1)1 总体方案设计 (1)2 硬件电路设计 (2)2.1单片机系统 (2)2.1.1 晶振时钟电路 (2)2.1.2 复位电路 (3)2.2电流驱动系统 (3)2.3发光二极管演示系统 (5)2.4独立键盘系统 (5)3 软件设计 (6)3.1软件执行过程 (6)3.2子程序模块 (6)4 调试分析 (8)5 结论及进一步设想 (9)参考文献 (9)课设体会 (10)附录1 电路原理图 (11)附录2 程序清单 (12)基于单片机的继电器控制系统设计胡启洋沈阳航空航天大学自动化学院摘要:本文设计了一种基于单片机的继电器控制系统,由单片机、继电器、驱动电路、发光二极管、独立键盘等部分组成,主要使用了单片机开发板上STC公司生产的89C54RD+型号单片机及其最小系统、ULN2003A达林顿管驱动芯片、JQC-3F-05VDC-1ZS 型号继电器、四个发光二极管,运用定时器精准定时对继电器开关进行控制,并在继电器输出端使用发光二极管显示。
在以上基础上,实现了8路继电器的循环控制功能。
关键词:单片机;继电器;驱动电路。
0 前言继电器是当输入量(如电压、电流、温度等)达到规定值时,使被控制的输出电路导通或断开的电器。
它可分为电气量(如电流、电压、频率、功率等)继电器及非电气量(如温度、压力、速度等)继电器两大类。
继电器具有动作快、工作稳定、使用寿命长、体积小等优点。
广泛应用于电力保护、自动化、运动、遥控、测量和通信等装置中。
继电器是一种电子控制器件,它具有控制系统(又称输入回路)和被控制系统(又称输出回路),通常应用于自动控制电路中,它实际上是用较小的电流去控制较大电流的一种“自动开关”。
故在电路中起着自动调节、安全保护、转换电路等。
电磁继电器一般由铁芯、线圈、衔铁、触点簧片等组成的。
只要在线圈两端加上一定的电压,线圈中就会流过一定的电流,从而产生电磁效应,衔铁就会在电磁力吸合的作用下克服返回弹簧的拉力吸向铁芯,从而带动衔铁的动触点与静触点(常开触点)吸合。
当线圈断电后,电磁的吸力也随之消失,衔铁就会在弹簧的反作用下返回原来的位置,使动触点与原来的静触点(常闭触点)吸合。
这样吸合、释放,可以这样来区分:继电器线圈为通电时处于断开状态的静触点,成为“常开触点”;处于接通状态的静触点称为“常闭触点”。
1 总体方案设计针对本课题的设计任务,进行分析得到:本次设计通过单片机I/O口输出高低电平控制继电器的输入端,采用ULN2003A型号的达林顿管驱动芯片加大输入电流,使用内部定时器中断进行精准计时,实现继电器通断时间分别为1秒、2秒的精准控制,并实现通过继电器进行八路发光二级管循环1秒的控制。
该继电器控制系统的设计,在总体上大致可分为以下几个部分组成:1.单片机及其最小系统电路,为了使单片机正常工作,需要加入晶振电路,为了使单片机方便使用,需要加入复位电路。
2.继电器驱动电路部分。
由于单片机输出的电流不足以使电磁继电器的线圈产生足够大的磁力,无法使衔铁与触点簧片吸合,就不能使继电器正常工作。
为了使继电器正常工作,需要加入放大电流的驱动电路。
该设计考虑了两种不同的驱动方案:(1)使用ULN2003A达林顿管驱动芯片进行驱动,此方案简单易用,只需一个芯片便可驱动7路继电器;(2)采用PNP型三极管放大电路,该方案目的明确,易于理解。
3.定时器计时部分。
该设计中采用了定时器1的工作方式1,装入的初值是(65535-50000),在计满50000个数之后,TF1置为1,产生中断,当使用晶振频率为12MHz时,定时器刚好每50ms产生一次中断,这个时间的20倍恰好是1秒中,这样便可实现1秒与2秒的精准控制。
图1 系统原理框图整个电路的工作原理是单片机首先定义定时器1的工作方式为1,使用晶振频率12MHz,装入初值(65535-50000),这样当开启定时器1时每50ms产生一次中断,累计20次便为1秒,1秒累计2次便为2秒,通过设置标志位flag的状态,区别继电器的通2秒与断1秒。
设置P2口为输出口,将P2口连接在ULN2003A的输入端,ULN2003的电源端接+5V电源,地端接地,输出直接接在继电器的一个输入端,继电器的另一个输入端接地。
这样便可通过控制P2口的高低电平,来控制继电器的通断。
2硬件电路设计2.1单片机系统2.1.1晶振时钟电路晶振是单片机正常工作的必要器件,他提供时钟周期,执行程序代码。
它的连接方式是XTAL1和XTAL2端分别接晶振的两端,再接两个小电容后接地,如图1所示。
单片机工作时,是一条一条地从ROM中取指令,然后一步一步地执行。
单片机访问一次存储器的时间,称之为一个机器周期,这是一个时间基准。
一个机器周期包括12个时钟周期。
为了实现精准定时,本设计中采用的晶振为12MHz,它的时钟周期是1/12us,它的一个机器周期是12×(1/12)us,也就是1us。
图2 单片机系统电路2.1.2复位电路单片机在启动时都需要复位,以使CPU及系统各部件处于确定的初始状态,并从初态开始工作。
89系列单片机的复位信号是从RST引脚输入到芯片内的施密特触发器中的。
当系统处于正常工作状态时,且振荡器稳定后,如果RST引脚上有一个高电平并维持2个机器周期(24个振荡周期)以上,则CPU就可以响应并将系统复位。
单片机系统的复位方式有:手动按钮复位和上电复位,此设计中采用手动按钮复位,需要人为在复位输入端RST上加入高电平,如图1所示。
一般采用的办法是在RST端和正电源Vcc之间接一个按钮。
当人为按下按钮时,则Vcc的+5V电平就会直接加到RST端。
手动按钮复位的电路如所示。
由于人的动作再快也会使按钮保持接通达数十毫秒,所以,完全能够满足复位的时间要求。
2.2 电流驱动系统本设计采用了两种不同的驱动方案:(1)方案一是直接采用达林顿管驱动芯片ULN2003A。
共7路输入和7路输出,每一路都相当于一个反相器,当输入为高电平时输出为低电平,相反,当输入为低电平时输出为高电平,每个反相器的内部结构为由两个三极管组合而成的达林顿管放大电路,该电路可以放大电流,提供给继电器足够大的电流以使其正常工作。
除了7个输入和7个输出外,还有两个引脚在使用时分别接地和5V电源即可。
如图4所示当单片机输出高电平1时,经过ULN2003A后变为低电平0这样在继电器的线圈两端就产生了电位差,产生较大电流,从而产生足够的磁场,吸引继电器的衔铁与静触点1吸合,相反,则与静触点2吸合。
图3 ULN2003A芯片内部结构图4 单片机通过ULN2003A驱动继电器(2)方案二是采用PNP型三极管放大电路,如图5所示,线圈两端的电流由三极管来提供,当单片机控制端给三极管的B极送低电平时,三极管导通,继电器线圈有电流通过,继电器吸合;相反,当单片机控制端给三极管的B极送高电平时,三极管截止,继电器线圈无电流通过,继电器断开。
在继电器两端接一个二极管是非常重要的,必须连接,因为,线圈通电正常工作时,二极管对电路不起作用。
当继电器线圈在断电的一瞬间会产生一个很强的反向电动势,在继电器线圈两端反响并联二极管就是用来消耗这个反向电动势的,如果不加这个反向二极管,反向电动势会直接作用在驱动三极管上,很容易将三极管烧坏。
图5 单片机通过PNP型三极管驱动继电器2.3发光二极管演示系统该设计中在继电器的输出端相当于一个单刀双掷开关,如图6所示,将动触点接地,将左静触点的连一个发光二极管后与电源相连。
若动触点与左侧的静触点相连,就会使发光二极管点亮。
在程序一中则以1秒亮与2秒灭交替进行在程序二中8路发光二级管左循环点亮。
图6 发光二极管演示电路2.4 独立键盘系统该设计由两个程序组成,其一是使继电器通电1秒断开2秒循环,在程序开始时使按下独立键盘的第一个按键即可;其二是使八路继电器以一秒的间隔左移循环,在程序开始时按下第二个按键即可。
图7 独立键盘电路3 软件设计根据设计方案,本设计使用了编程软件Keil uVision3,使用C语言进行编程,使用protues 7 professional进行了仿真,并且使用了单片机开发板实现了程序,实现了最终目的。
3.1软件执行过程本课题的软件设计采用了模块化设计的思想。
主程序流程如图8所示,在流程图中,K1、K2分别表示独立键盘的第一、第二个按键,程序开始运行时,先初始化数据,定义定时器的工作方式,装入定时器初值,打开定时器中断允许开关,打开总中断开关。
进入键盘扫描程序,若按下K1键,则进入程序1,开启定时器后进入while(1)的死循环等待定时器中断产生,每50毫秒产生一次中断,20次中断后时间到达1秒,继电器连通1秒后断开,再通过定时器计时2秒后,重新接通,如此往复循环;若按下K2键,则进入程序2,给P2口给0xfe,使得只有P2.0口控制的继电器处于接通状态,开启定时器后进入while(1)的死循环等待定时器中断产生,每隔一秒8个继电器的状态左移一位,如此循环往复。
3.2子程序模块在整个程序中,共包含了主程序、定时器1中断程序、独立键盘扫描程序。
主函数先定义定时器1的工作方式并装入初值,此处选用工作方式1,装入的初值是15536。
这里先解释一下装初值的问题,定时器一旦启动它便在原来的数值上加1计数,若在程序开始时没有设置TH1和TL1,他们的默认值就都是0,时钟频率为12MHz,12个时钟周期为一个机器周期,那么此时机器就是1us,计满TH1和TL1就需要216-1个数,图8 程序流程图再来一个脉冲计数器溢出,随即向CPU申请中断。
因此溢出一次共需要65536us,则我们要定时50ms的话,就需要给TH1和TL1装初值,在这个初值的基础上计50000个数后,定时器溢出,此时就是刚好50ms一次中断,TH1和TL1中要装入的总数为65536-50000=15536,把15536对256求模:15536\256=60装入TH1中,把15536对256求余:15536%256=176装入TL1中。
则当定时器工作在方式1,设机器周期为T,定时器产生一次中断的时间为t,那么需要计数的个数N=t/T,则装入THX和TLX中的数就分别为:THX=(65536-N)/256 (1)TLX=(65536-N)%256 (2) 在打开了中断总开关和定时器1的开关后,累计20次中断就成为1秒,这样就形成了1秒的精准定时。
在独立键盘扫描程序中,使用了2个if语句,分别表示检测K1键和K2键是否按下,通过给定义的pro赋不同的值来控制定时器中断子程序执行的语句,当pro为0时,以flag为标志,区别是接通1秒还是断开2秒,用if语句判断,若flag为0,为接通1秒,若flag为1,为断开2秒;当pro为1时,同样通过if语句实现其功能,先给输出P2赋值0xfe,1秒后按位左移1位,并将移动后的数与0x01作或运算,刚好得到0xfd,以后的每次运算都作这种处理,便可实现循环左移的功能,当循环8次后,经或运算的结果为0xff,并将永久保持下去,故需要重新给P2赋值0xfe,这样才保证了永久的循环。