STC15F2K60S2 1_1关闭蜂鸣器

1.实验原理

74HC138译码器高三位P2^5,P2^6,P2^7,作为输入端,Y5作为输出口低电平,连接到74HC02或非门,或非门WR口与J13接地口连接为低电平,因此,两个输入端都为低电平,(先或后非) 输出高电平。

74HC573锁存器LE口接入高电平,使P0能正常输入命令,控制蜂鸣器/继电器的关断与开通。

138译码器→74HC02或非门→HC573锁存器→ULN2003芯片(反相器)→蜂鸣器/继电器

2.实验原图

3.各元器件原理图

74HC138译码器

HC573锁存器,ULN2003反相器

74HC02或非门

BUZZER蜂鸣器

继电器

4.代码部分

#include <STC15F2K60S2.H>
#include "intrins.h"

unsigned char buzzer;
unsigned char ctrl;
void Delay(unsigned int xms)		//延时函数
{
	unsigned char i, j;
	while(xms)
	{
		_nop_();
		_nop_();
		_nop_();
		i = 11;
		j = 190;
		do
		{
			while (--j);
		} while (--i);
		xms--;	
		}
}


void HC573(unsigned char i)//锁存器控制函数
{
	switch(i)
	{
		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;
		case 0:P2 = 0x1f;			 break;
		
	}
}

//蜂鸣器初始化引脚是P06,继电器初始化引脚是P04
void System_Init()
{
	
	buzzer = 0;	
	ctrl = 0;
	P0 = (buzzer<<6)|(ctrl<<4);
	HC573(5);
	HC573(0);
}

void main()
{
    System_Init();
	unsigned char i;
	while(1)
	{
		
		while(i<5)
		{
		buzzer = 1;
		P0 = (buzzer<<6)|(ctrl<<4);
        HC573(5);
		HC573(0);
		Delay(200);
		
		buzzer = 0;
		P0 = (buzzer<<6)|(ctrl<<4);
		HC573(5);
		HC573(0);
		Delay(1000);
		i++;	
		}
		
		ctrl = 1;
		P0 = (buzzer<<6)|(ctrl<<4);
		HC573(5);
		HC573(0);
		Delay(1000);

		ctrl = 0;
		P0 = (buzzer<<6)|(ctrl<<4);
		HC573(5);
		HC573(0);
		Delay(1000);
		i = 0;
		
	}
}

 个人学习笔记,仅供参考

  • 5
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值