51单片机莫斯密码SOS调用代码

相关的注释全写进了代码里面,可以根据需求调整

蓝桥杯官方4T单片机绿板与蓝板可以直接烧录代码运行,其余开发板只需要根据原理图进行修改代码。

如果需要单独写你的板子代码,可以留言并附上板子内蜂鸣器的原理图,我会回复对应的代码内容。

//蜂鸣器循环产生SOS摩斯密码“... --- ...”信号音频
#include <reg51.h>
#include <intrins.h>
 
//根据原理图进行调整引脚位置

sbit HCB173_A = P2^5; //ABC三个为设置138译码器
sbit HCB173_B = P2^6; //如果硬件电路没有使用138译码器进行锁存器设置,可以直接删掉
sbit HCB173_C = P2^7; //如果原理图有138译码器,需要根据原理图重新设计引脚位置
sbit Relay = P0^4; //设置继电器所在的引脚,考虑有些开发板继电器与蜂鸣器使用同一个锁存器
sbit Buzz = P0^6; //设置蜂鸣器所在引脚
 
void Delay50ms()		//@11.0592MHz
{
	unsigned char i, j, k;
 
	_nop_();
	_nop_();
	i = 3;
	j = 26;
	k = 223;
	do
	{
		do
		{
			while (--k);
		} while (--j);
	} while (--i);
}
 
void Delay100ms()		//@11.0592MHz
{
	unsigned char i, j, k;
 
	_nop_();
	_nop_();
	i = 5;
	j = 52;
	k = 195;
	do
	{
		do
		{
			while (--k);
		} while (--j);
	} while (--i);
}
	
//初始化与继电器相关的锁存器,并让继电器在开始时处于断开状态
void Init_Y5C ()
{
	HCB173_A = 1; //根据原理图设置138译码器
	HCB173_B = 0; //101为设置译码器Y5输出低电平
	HCB173_C = 1; //使用时需要根据原理图实际进行调整
		
	Relay = 0; // 断开继电器
	Buzz = 0; //断开蜂鸣器
}
 
//定义短信号函数,即.........
void short_voice ()
{
	Buzz = 1; //.
	Delay50ms();
	Buzz = 0; 
	Delay50ms();
}
 
//定义长信号函数,即----------
void long_voice ()
{
	Buzz = 1; //-
	Delay100ms();	
	Buzz = 0; 
	Delay100ms();	
}
 
void main () //实际使用时,调整while()循环内的代码即可实现不同的信号
{
	
	Init_Y5C ();//初始化锁存器
	//
	while ( 1 )
	{
		short_voice ();	//S信号
		short_voice ();	
		short_voice ();	
		long_voice ();//O信号
		long_voice ();
		long_voice ();
		short_voice ();	//S信号
		short_voice ();	
		short_voice ();	
 
		Delay100ms();//延时三百毫秒发送下一次
		Delay100ms();
		Delay100ms();		
	}
}

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值