当前位置:首页 > 单片机 > 单片机
[导读]MCU型号 STC 89C52RC#include#defineRldTmr(fr)65536-(11059200/12)/(fr

MCU型号 STC 89C52RC

#include

#defineRldTmr(fr)65536-(11059200/12)/(fr<<1)

#defineFuDian(n)(n<<1)/3//附点n分音符的换算

typedefunsignedcharUCHAR;

typedefunsignedintUINT;

typedefunsignedlongULONG;

sbitBUZZ=P1^6;

UINTcodenoteFreq[]={//中音1-7和高音1-7对应的频率列表

523,587,659,698,784,880,988,

1047,1175,1319,1397,1568,1760,1976

};

UINTcodetmrRld[]={//中音1-7和高音1-7对应的定时器重载值

RldTmr(523),RldTmr(587),RldTmr(659),RldTmr(698),RldTmr(784),RldTmr(880),RldTmr(988),

RldTmr(1047),RldTmr(1175),RldTmr(1319),RldTmr(1397),RldTmr(1568),RldTmr(1760),RldTmr(1976),

};

UCHARcodemusicNote[]={//音名

1,2,3,1,

1,2,3,1,

3,4,5,

3,4,5,

5,6,5,4,3,1,

5,6,5,4,3,1,

1,5,1,

1,5,1

};

UCHARcodenoteDuration[]={//音名对应的时值,4表示4分音符,8表示8分音符,16表示16分音符

4,4,4,4,

4,4,4,4,

4,4,2,

4,4,2,

FuDian(8),16,FuDian(8),16,4,4,

FuDian(8),16,FuDian(8),16,4,4,

4,4,2,

4,4,2

};

bitenable=1,tmrFlg=0;

UCHART0RH=0XFF,T0RL=0X00;

voidDelay(UINTn);

voidPlayMusic(UCHARspeed);//固定标准为4分音符的速度:例如speed=108表示一分钟扫过108个4分音符

voidmain(){

EA=1;

TMOD=0X01;

TH0=T0RH;

TL0=T0RL;

ET0=1;

TR0=1;

while(1){

PlayMusic(72);

Delay(40000u);

}

}

voidDelay(UINTn){

UINTi;

for(i=0;i

}

voidPlayMusic(UCHARspeed){

UCHARi;

UCHARidx;

UINTcnt=0;

UINTdurationCnt=0;//当前音符的时值对应的定时器计数

UINTsoundCnt=0;//当前音符的发声时值对应的计数值

for(i=0;i

while(!tmrFlg);

tmrFlg=0;

if(cnt==0){

idx=musicNote[i]-1;

T0RH=tmrRld[idx]>>8;

T0RL=tmrRld[idx];

durationCnt=(ULONG)240*(ULONG)noteFreq[idx]/((ULONG)noteDuration[i]*(ULONG)speed);

soundCnt=durationCnt-(durationCnt>>2);//当前音符时值的前3/4发声,后1/4静音

enable=1;

cnt++;

}

else{

if(cnt==durationCnt){

cnt=0;

i++;

}

else{

cnt++;

if(cnt==soundCnt){

enable=0;

}

}

}

}

}

voidInterruptTmr0()interrupt1{

TH0=T0RH;

TL0=T0RL;

tmrFlg=1;

if(enable)

BUZZ=~BUZZ;

else

BUZZ=1;

}


本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

这是一个很好的时钟,有很大的片段,你可以设置每个片段的颜色和强度。有三个按钮,蜂鸣器,光传感器和RTC与备用电池。时钟通过USB C供电,具有当前时间,计时器和秒表等功能。请随意添加您自己的功能!

关键字: 蜂鸣器 光传感器 RTC

Holtek新推出专为感烟报警器应用设计的Flash MCU - BA45F25752/BA45F25762,整合双通道感烟侦测AFE、红外/蓝光LED驱动、万年历与蜂鸣器驱动等功能。相较于先前的BA45F5750/BA...

关键字: 感烟报警器 MCU 蜂鸣器

HT16K24操作电压为2.4V~5.5V,内建I²C通信接口,提供三种LCD显示与按键模式:24SEG × 4COM + 24 KEY;22SEG × 6COM + 22 KEY;20SEG × 8COM + 20 K...

关键字: LCD MCU 蜂鸣器

Holtek新推出集成感烟探测AFE、双通道LED驱动及9 V蜂鸣器驱动的32-bit Arm® Cortex®-M0+ MCU HT32L62141,采用超低功耗ULP (Ultra-Low Power) 设计,并提供...

关键字: MCU 烟探测器 蜂鸣器

采用51单片机最小开发板,由8位自制独立按键控制。单片机芯片为STC89C52RC,晶振为@12.000 mhz。8X8LED点阵屏模块由MAX7219驱动,MAX7219包含一个自动扫描电路。你只需要把要显示的数据发送...

关键字: 51单片机 MAX7219 寄存器

这个项目是农业自动化的一个有趣的旋转:一个机器人松露嗅探器,可以自主导航一个空间,识别代表松露热点的AprilTags,并收集“松露”(用彩色球模拟)。灵感来源于现实生活中用猪和狗来定位地下的松露。

关键字: 机器人 蜂鸣器 计算机视觉

本项目将向您介绍来自Elecrow的新型1.28英寸圆形显示器,该显示器集成了ESP32C3芯片等!该项目将演示将设备固件更新到MicroPython并显示自定义消息的步骤。

关键字: 显示器 ESP32C3 蜂鸣器

把“G”分开是对吉尼斯啤酒饮用技巧的真正考验——准确地喝一口,液体的水平面要正好落在吉尼斯标志上“G”的中间。作为一个不喝酒的人,我想看看我是否能设计出一条通往成功的道路。所以,我做了一个设备,使用非接触式液体传感器和蜂...

关键字: 传感器 Arduino 蜂鸣器

在现代电子设备中,蜂鸣器作为一种能够发出声音信号的器件,被广泛应用于各种领域,如电子玩具、报警器、电子设备的提示音等。其中,有源压电式蜂鸣器以其只需接上额定直流电压即可发声的特点,受到了工程师们的青睐。那么,有源压电式蜂...

关键字: 蜂鸣器 器件 直流电压

我有很多魔方。有些很大;有些很小;有些花费了一大笔钱。两年前,我的弟弟把我的一个立方体扔在地上,毁了它,从那以后,我花了90美元升级了安全设备,以防止这种情况再次发生。但即使他没有破坏我的立方体,他也会在我展示的时候破坏...

关键字: Arduino Uno LCD 闪光灯 蜂鸣器
关闭