实验2:继电器控制LED灯实验

时间:2024.4.13

《物联网感知技术》实验报告

学院:交通与物流工程

实验组号:指导教师:张玲

实验地点:实验时间:

实验2:继电器控制LED灯实验

一、实验设备

CC2530单片机、计算机、仿真器、SRD-03VDC-SL-C继电器、USB数据线、串口小助手

二、实验内容

1.认识继电器。

2.了解继电器基本工作原理。

3.了解继电器的驱动原理。

4.烧写程序实现继电器控制开发板上2个LED灯的亮灭

三、实验原理

主要的中断程序:

#include "interrupt.h"

void ex_init(void)

{

EA = 1; //使能全局中断

IEN2 |= 0x02; //P2口中断使能打开 P2IEN |= 0x01; //将P2-0设置中断使能

PICTL |= 0x08;//下降沿触发

P2IFG = 0; //初始化中断标志位

P0IF = 0;//清除中断标志

}

void gpio_init(void)

{

P1DIR |= 0x3;

}

P1DIR |= 0x4; P0DIR |= 0x20;

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

四、实验过程

通过外部供电线与USB串口线将继电器,开发板和电脑连接起来,将CC2530按键控制程序烧录到CC2530芯片中。复位芯片,按下开关键,2个LED灯亮起,再次按下开关键,2个LED灯熄灭。过程中可以听到衔铁被吸附时的声音。

五、实验结果及分析

通过控制继电器可以实现对开发板LED灯的间接控制。继电器是一种电子控制器件,它具有输入回路和输出回路,通常应用于自动控制电路中,它实际上是用较小的电流去控制较大电流的一种“自动开关”,在电路中起着自动调节、安全保护、转换电路等

作用。当线圈引出脚两端加上电压或电流,线圈的激磁电流产生磁通,磁通通过铁心、轭铁、衔铁和工作气隙组成的磁路,并在工作气隙产生电磁吸力。当激磁电流上升达到某一值时,电磁吸力矩将克服动簧的反力矩使衔铁转动,带动推动片推动动簧,实现触点闭合,此时LED灯所在电路连通,LED亮起;当激磁电流减小到一定值时,动簧反力矩大于电磁吸力矩衔铁回到初始状态,触点断开,LED灯所在电路断开,LED熄灭。

六、个人总结

在本次实验中,了解了继电器的相关特性,学会了如何使用继电器和它的连接电路,学会了串口工具的程序烧录过程及通过代码控制高低电位产生电压,从而控制继电器衔铁和电路的导通与断开。明白了中断是单片机实时地处理内部或外部事件的一种内部机制。对其有了更深的认识。


第二篇:ARM裸机实验之用按键控制LED灯


ARM裸机实验之用按键 控制LED灯

嵌入式可以说是一门很复杂的学科,要想学透并不容易,初学者可以从裸机实验开始学起,所以我为大家准备了一些裸机实验,供大家学习参考,高手就不用看了,呵呵额。。。。。

想当初我学嵌入式时,觉的有点单片机的基础,学起ARM来应该不难,没想到事实并不是我想的那样,单片机相比ARM来说差的远了,呵呵,也并不是说ARM很不好学,只要找到合适的方法,肯下功夫,一段时间之后,你就会收到满意的效果的,好了,进入主题。。。。。。。

主机操作系统:linux redhat9.0

目标板 :TQ2440

ARM: S3C2440

SDRAM:64M

NOR FLASH : 2M

NAND FLASH:256M

记得当初刚开始学的时候,总是想先弄明白ARM是通过什么方式控制它的IO端口的,现在我还是先从这方面开始讲起吧。。。。。。

通过三星公司S3C2440的数据手册可知,它有9组GPIO端口,分别是GPA-GPJ(没有GPI),

它的每组端口的输入和输出都是通过配置相关的寄存器来实现的,比如说GPB这一组,GPB共有11个IO端口GPB0-GPB10,相应的控制寄存器为

GPBCON、GPBDAT、GPBUP。

GPBCON用来设置GPB端口是用来输出还是输入还是用来做第二功能,GPBDAT则是控制IO口的输出电平或从中得到输入电平,GPBUP是决定各个端口是否使用上拉电阻功能。

正因为这样给了我们很大方便,使得我们通过修改寄存器就可以控制端口。下面就来看看我们的程序吧。

首先说要实现的功能:用开发板上的4个按键来控制4个LED灯的亮灭,哪个键按下,相应的灯就亮起,键松开,灯就灭掉。

电路连接情况:4个按键分别接的是GPF0、GPF1、GPF2、GPF4

4个LED灯分别接的是GPB5、GPB6、GPB7、GPB8

先来一个简单的程序,让4个LED灯全亮,看一下整个程序的流程:

.text .global start _start: ldr r0,=0x56000010 mov r1,#0x15400 str r1,[r0] ldr r0,=0x56000014 mov r1,#0x0 str r1,[r0] main_loop: b main_loop

整个程序只有几行,下面咱们来一行一行分析:

ldr r0,=0x56000010 查看S3C2440数据手册可知其中0x56000010就是寄存器GPBCON的地址。这句意思

是把这个地址值赋给r0.

mov r1,#0x15400 这句是把要传到GPBCON中的值先赋给r1.

str r1,[r0]这句的意思就是把r1的值传给以r0中的值为地址所指向的存储空间中,这就完成了设置GPBCON的值。 ldr r0,=0x56000014 mov r1,#0x0 str r1,[r0] 后面这三行

就是给控制GPB端口高低电平的寄存器赋值,使引脚都输出低电平,根据电路图,这时4个LED灯就会全部点亮了。

这是源程序,放到linux系统里面,在同一文件夹下还要编写Makefile文件,这样编译起来比较省事。Makefile文件内容如下:

led.bin:led.S

arm-linux-gcc -g -c -o led.o led.S

arm-linux-ld -Ttext 0x0000000 -g led.o -o led_elf arm-linux-objcopy -O binary -S led_elf led.bin

clean:

rm -f led.bin led_elf *.o

这里暂不介绍Makefile文件的写法,以后会有专门章节讲解的。

下面是通过按键控制LED灯亮灭的程序,程序分为两部分,由于我们打算用C语言编写,所以要先用汇编

语言做一下初始化工作,包括关闭看门狗和设置堆栈。 汇编语言程序:

.text

.global start

_start:

ldr r0,=0x53000000

mov r1,#0 ;关闭看门狗

str r1,[r0]

ldr sp,=1024*4 ;设置堆栈

bl main ;跳转到main函数

main_loop:

bl main_loop

保存为 :led2.S

C语言程序:

/*定义各个端口寄存器,GPB用于LED灯的输出控制,GPF用于按键的输入控制*/

#define GPBCON *((volatile

*)0x56000010)

#define GPBDAT *((volatile

*)0x56000014)

#define GPFCON *((volatile

*)0x56000050)

unsigned unsigned unsigned long long long

#define GPFDAT *((volatile

*)0x56000054)

/*初始化各个端口寄存器*/

void IO_init()

{ unsigned long

GPBCON=0x55<<10;//将GPB5-8端口设为输出,用于控制LED灯的两灭

GPBDAT=0x0f<<5;//初始化LED灯,使其初始状态为熄灭

//GPF初始状态即为输入,可取默认值,不做更改

}

void LED1()

{

//////////////////////////////////在死循环中依次查询各个按键的状态,若键按下,相应的灯亮,若抬起,灭 while(1)

{

if(!(GPFDAT&0x02))

GPBDAT=GPBDAT&~(0x01<<5);

else

GPBDAT=GPBDAT|(0x01<<5); if(!(GPFDAT&0x10))

GPBDAT=GPBDAT&~(0x01<<6); else

GPBDAT=GPBDAT|(0x01<<6); if(!(GPFDAT&0x04))

GPBDAT=GPBDAT&~(0x01<<7); else

GPBDAT=GPBDAT|(0x01<<7); if(!(GPFDAT&0x01))

GPBDAT=GPBDAT&~(0x01<<8); else

GPBDAT=GPBDAT|(0X01<<8); }

}

/////////////////////////C语言主函数

void main()

{

IO_init();

LED1();

}

保存为main.c

如果上面那个让LED灯全亮的程序大家能理解的话,那这个程序也很好理解,它只不过是多了对GPF几个端口的电平读取,然后根据电平判断某个按键是否被按下,来决定让哪个LED灯点亮或是熄灭。

这个程序的功能是某个按键按下LED灯就点亮,等按键松开LED灯就熄灭,如果你能将这个程序理解了的话,为了加深印象,你可自己试着做做改动,比如某个按键按下后它控制的LED灯点亮,直到有另一个按键按下它才会熄灭,相应的LED灯又会点亮。 下面是本程序的Makefile文件:

led2.bin:led2.S main.c

arm-linux-gcc -g -c -o led2.o led2.S

arm-linux-gcc -g -c -o main.o main.c

arm-linux-ld -Ttext 0x0000000 -g led2.o main.o -o led2_elf

arm-linux-objcopy -O binary -S led2_elf led2.bin arm-linux-objdump -D -m arm led2_elf > led2.dis clean:

rm -f led2_elf *.o led2.dis

更多相关推荐:
继电器控制实验

包头师范学院信息科学与技术学院实验报告课程名称单片机原理及接口技术实验项目继电器控制实验指导老师陈静老师实验室物理楼四日期20xx56专业电子信息科学与技术班级08电子姓名刘宁学号0814830007一实验目的...

实验报告3(输入输出与继电器控制)

课程名称单片机原理与嵌入式系统实验名称输入输出与继电器控制实验报告班级姓名学号同组人姓名实验日期月日一实验目的通过实验加强对单片机内部计数器应用的了解与掌握包括硬件电路与软件控制程序二实验内容编程实现以下任务1...

单片机原理与应用技术实验报告(实验项目:控制继电器通断)

数学计算机科学系实验报告专业计算机科学与技术班级实验课程单片机原理与应用技术姓名学号实验室硬件实验室同组同学实验时间20xx年3月20日指导教师签字成绩实验项目控制继电器通断一实验目的和要求1控制继电器通断同时...

继电器控制实验

电气工程学院课程设计说明书设计题目继电器控制实验系别年级专业学号学生姓名指导教师教师职称电气工程学院课程设计任务书课程名称单片机原理及应用课程设计基层教学单位自动化仪表系指导教师说明1此表一式三份系学生各一份报...

机电传动与控制实验报告20xx (1)

机电传动与控制学院专业班级姓名学号实验报告机械工程学院机械设计制造及其自动化1目录实验一三相异步电动机点动与连动控制3实验二三相异步电动机的正反转控制5实验三实验四PLC基本指令操作7抢答器设计实验92实验一三...

继电保护实验报告

电力系统继电保护实验报告姓名学号指导教师专业班级学院:信息工程学院实验二:方向阻抗继电器特性实验一、实验目的1.熟悉整流型LZ-21型方向阻抗继电器的原理接线图,了解其动作特性;2.测量方向阻抗继电器的静态特性…

电器控制实验报告

实验报告现代电气控制技术电机正反转双重互锁学院:信息与电子工程学院班级:****指导老师:***小组成员:********一、仪器与工具仪器:胜利牌万用表VC890C+,三相交流电机。工具:十字螺丝刀(6MM)…

实验报告-电流继电器特性实验

电气工程及其自动化专业实验报告123

实验六 51单片机控制继电器实验

实验六51单片机控制继电器实验一实验目的1掌握用单片机控制继电器的原理和方法2学会编程并程序运行实现继电器控制过程二实验电路原理图三参考源程序主程序中按键key1吸合继电器按键key2释放继电器includel...

练习使用滑动变阻器实验报告

养德励志进取创新福泉市凤山初级中学练习使用滑动变阻器实验报告学校班级实验日期年月日同组人姓名一实验名称练习使用滑动变阻器二实验目的1学习正确使用滑动变阻器的方法2初步掌握有目的的用滑动变阻器改变电路中电流的方法...

变阻器的使用与控制

变阻器使用与电路控制实验目的1掌握制流电路的连接方法性能和特点2学习控制电路中变阻器选择的方法实验原理测量电路一般由电源控制电路和测量电路三部分组成其中控制电路是控制负载的电流和电压使其数值和范围达到预定的要求...

电机与运动控制系统_实验报告2

实验报告课程名称电机与运动控制系统实验第3次实验实验名称直流他励电动机在各种运行状态下的机械特性实验时间20xx年xx月xx日实验地点xxxxxxxxxx组号学号姓名指导老师xxxxxx评定成绩1实验三直流他励...

继电器控制实验报告(10篇)