相关的注释全写进了代码里面,可以根据需求调整
蓝桥杯官方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();
}
}