3.蓝桥杯大赛单片机系列—蜂鸣器与继电器

 一,设计目标:

         熟练掌握蜂鸣器和继电器操控,之所以把这两者放到一块去讲,是因为对于蓝桥杯大赛单片机来说,它们的配置都在同一频道(Y5C)的M74HC573M1R锁存器P0口上,而且蓝桥杯大赛单片机也经常考蜂鸣器与继电器的操作,虽然配置起来简单,但至关重要。


二,设计思路:

   不说废话,首先老规矩,需要对74HC138译码器的P2口进行配置(频道5 Y5C),由下图可以看出蜂鸣器配置在P06,继电器配置在P04,而且这里是按(1开0关);所以如果我们要单独开蜂鸣器的话,可以直接配置P0 = 0x40(0100 0000);都开蜂鸣器和继电器的话,可以直接配置P0 = 0x50(0101 0000);

3.蓝桥杯大赛单片机系列—蜂鸣器与继电器_第1张图片

三,代码实现:

(1)开关蜂鸣器和继电器;
#include "reg52.h"
#include "intrins.h"


void initHC138(unsigned char n)
{
	switch(n)
	{
		case 0:
            P2=(P2 & 0x1f)|0x00;break;//0000 0000 
		case 4: 
			P2=(P2 & 0x1f)|0x80;break;//1000 0000  
		case 5: 
			P2=(P2 & 0x1f)|0xa0;break;//1010 0000  蜂鸣器与继电器
		case 6: 
			P2=(P2 & 0x1f)|0xc0;break;//1100 0000 
		case 7: 
			P2=(P2 & 0x1f)|0xe0;break;//1110 0000 
	}
}

void Delay1000ms()		//@11.0592MHz   1000ms延时
{
	unsigned char i, j, k;

	_nop_();
	i = 8;
	j = 1;
	k = 243;
	do
	{
		do
		{
			while (--k);
		} while (--j);
	} while (--i);
}


void main(){ 
	initHC138(5); //先关蜂鸣器和继电器
	P0 = 0x00;
 
	while(1){

		initHC138(5);
	    P0 = 0x50;      //开关蜂鸣器和继电器
		Delay1000ms();  //等待1000ms 
		initHC138(5);  
	    P0 = 0x00;      //关蜂鸣器和继电器
		Delay1000ms();

	}
}
 (2)温故知新;

        LED灯每次流水一遍开始前蜂鸣器响一下,结束后继电器闭合;

#include "reg52.h"
#include "intrins.h"

void initHC138(unsigned char n)
{
	switch(n)
	{
		case 0:
             P2=(P2 & 0x1f)|0x00;break;//0000 0000 
		case 4: 
			P2=(P2 & 0x1f)|0x80;break;//1000 0000  
		case 5: 
			P2=(P2 & 0x1f)|0xa0;break;//1010 0000 
		case 6: 
			P2=(P2 & 0x1f)|0xc0;break;//1100 0000 
		case 7: 
			P2=(P2 & 0x1f)|0xe0;break;//1110 0000 
	}
}

void Delay1000ms()		//@11.0592MHz
{
	unsigned char i, j, k;

	_nop_();
	i = 8;
	j = 1;
	k = 243;
	do
	{
		do
		{
			while (--k);
		} while (--j);
	} while (--i);
}

void main(){ 
	unsigned int i=0;
	initHC138(5);
	P0 = 0x00;   
	initHC138(4);
	P0 = 0xff;    
 
	while(1){
		initHC138(5); 
		P0 = 0x40;
		Delay1000ms();  //开关蜂鸣器
		P0 = 0x00;
		
		initHC138(4);
	  for(i=0;i<=8;i++)
		{
			P0 = ~(0x01<

你可能感兴趣的:(蓝桥杯,单片机,嵌入式硬件,学习方法)