我是靠谱客的博主 专注铃铛,最近开发中收集的这篇文章主要介绍蓝桥杯模块显示部分Part3:蜂鸣器&继电器蜂鸣器&继电器,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

   九层妖塔 起于垒土
在这里插入图片描述

蓝桥杯模块显示部分Part3:蜂鸣器&继电器

  • 蜂鸣器&继电器
    • 1、原理图:
    • 2、Template:

蜂鸣器&继电器

1、原理图:

在这里插入图片描述

2、Template:

sbit Relay_Switch = P0^4;
sbit Buzz_Switch = P0^6;
bit Relay_S,Buzz_S;     //继电器、蜂鸣器状态值

void Relay_Buzz();  

void Relay_Buzz()  
{
	Relay_Switch = Relay_S;  //开关继电器
	Buzz_Switch = Buzz_S;   //开关蜂鸣器
	
	P2 = P2&0X1F|0XA0; 
	P2&=0X1F;  //关573
}	

Notes:
 ●继电器驱动引脚为P04,蜂鸣器驱动引脚为P06。P0口经过U9锁存器,和达林顿管来间接驱动继电器和蜂鸣器。
 ●达林顿管为放大器+反相器。
 ●若开U9锁存器对其中之一操作,必须对另一个也进行操作。 若只操作继电器,则由于P0口的值无法确定,蜂鸣器的状态也无法确定。整体赋值则更不好确定上一次的状态。
 ●其实只要打开锁存器,无论人为操作几个I/O口,实际上,P0口的所有值都被送入锁存器。
 ●使用全局变量Relay_S,Buzz_S分别来保存继电器和蜂鸣器的状态值。
 ●对继电器和蜂鸣器的操作与动态数码管,动态LED不同。
 ●简单就好,形参,静态局部变量,现态,次态没有必要。
例:
分别按下按键S4,S5蜂鸣器和继电器的状态就取反一次。

void main(void)
{
	All_Init();  //开发板初始化
	
	while(1)
	{
		if(P33==0)
		{
		   Delay10ms();
		   if(P33==0)
			{
			  Relay_S=!Relay_S;  //次态
              Relay_Buzz();  
		      while(!P33);
			}
		}
		
		if(P32==0)
	     {
			Delay10ms();
			if(P32==0)
			{
	    	Buzz_S=!Buzz_S;   //次态
	    	Relay_Buzz(); 
		    while(!P32);
			}
		}	

	}
}

最后

以上就是专注铃铛为你收集整理的蓝桥杯模块显示部分Part3:蜂鸣器&继电器蜂鸣器&继电器的全部内容,希望文章能够帮你解决蓝桥杯模块显示部分Part3:蜂鸣器&继电器蜂鸣器&继电器所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(56)

评论列表共有 0 条评论

立即
投稿
返回
顶部