学习笔记——蜂鸣器与继电器电路

一、任务简述

在CT107D单片机上实现蜂鸣器与继电器的基本控制,首先让8路LED指示灯闪烁3遍后熄灭,接着依次点亮LED指示灯,继电器吸合一会后断开,然后依次熄灭LED指示灯,蜂鸣器响一会后关闭,程序循环上述功能。

二、实现方法

逻辑路线:在LED跑马灯的基础上完成本次实验,首先完成跑马灯工程,初始化蜂鸣器与继电器,使其先处于关闭状态,然后因为要蜂鸣器与继电器打开,则需要两个低电平,即N_BUZZ和N_RELAY处于低电平,因为电平是通过ULN2003驱动管传输到OUT5和OUT7口,而OUT5和OUT7口是由P04和P06控制,又因为ULN2003驱动管输入和输出电平相反,所以P04和P06要输入两个高电平(即0x10和0x40)且Y5C处于高电平,而Y5C要处于高电平的话,则Y5需要处于低电平状态,则利用74HC138译码器使得P25,P26,P27为1,0,1,则三个输入端A,B,C为1,0,1。
在这里插入图片描述
在这里插入图片描述在这里插入图片描述

三、参考代码

#include "reg52.h" 


void initial_HC138(unsigned char n)
	
{
	switch(n)
	{
		case 4:
			P2 = (P2 & 0x1f) | 0x80;
		break;
		case 5:
			P2 = (P2 & 0x1f) | 0xa0;
		break;
		case 6:
			P2 = (P2 & 0x1f) | 0xc0;
		break;
		case 7:
			P2 = (P2 & 0x1f) | 0xe0;
		break;		
		
	}
}

void OutPutP0(unsigned char channel,unsigned char dat)
{
	initial_HC138(channel);
	P0 = dat;
}
void delay_ms(unsigned int nms)   //延时50us误差 0us
{
    unsigned int i, j;
	for(i = nms; i > 0; i--)
        for(j = 110; j > 0; j--);
}

void led_runing()
{

unsigned char i ;
 for(i = 0;i < 3;i++)
	{
		OutPutP0(4,0x00);
		delay_ms(200);
		delay_ms(200);
	
		OutPutP0(4,0xff);
		delay_ms(200);
		delay_ms(200);

	}
	for(i = 1;i <= 8;i++)
	{
		OutPutP0(4,0xff << i);
		delay_ms(200);
		delay_ms(200);
	}
	//继电器吸合
		OutPutP0(5,0x10);
		delay_ms(200);
		delay_ms(200);
	//关
		OutPutP0(5,0x00);
		delay_ms(200);
		delay_ms(200);
	for(i = 1;i <= 8;i++)
	{
		OutPutP0(4,~(0xff << i));
		delay_ms(200);
		delay_ms(200);
	}
	//蜂鸣器打开
		OutPutP0(5,0x40);
		delay_ms(200);
		delay_ms(200);
	//关
		OutPutP0(5,0x00);
		delay_ms(200);
		delay_ms(200);
}
void initial_system()
{
	OutPutP0(5,0x00); // Y5输出低电平,P0输出低电平,经过ULN2003驱动管为高电平,关闭蜂鸣器和继电器。 
}
void main()
{
		initial_system();
		while(1)
		{
			led_runing();
		}
	
}

学习来源于:https://www.bilibili.com/video/BV1Bt41187hw?p=3

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Born_toward

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值