首页 > 其他分享 >无源蜂鸣器播放小星星

无源蜂鸣器播放小星星

时间:2024-11-27 20:47:26浏览次数:9  
标签:蜂鸣器 M4 MIndex 小星星 unsigned M5 RELOAD 无源 define

#define    L1    63628
#define    L1_S    63731
#define    L2    63835
#define    L2_S    63928
#define    L3    64021
#define    L4    64103
#define    L4_S    64185
#define    L5    64260
#define    L5_S    64331
#define    L6    64400
#define    L6_S    64463
#define    L7    64528
#define    M1    64580
#define    M1_S    64633
#define    M2    64684
#define    M2_S    64732
#define    M3    64777
#define    M4    64820
#define    M4_S    64860
#define    M5    64898
#define    M5_S    64934
#define    M6    64968
#define    M6_S    65000
#define    M7    65030
#define    H1    65058
#define    H1_S    65085
#define    H2    65110
#define    H2_S    65134
#define    H3    65157
#define    H4    65178
#define    H4_S    65198
#define    H5    65217
#define    H5_S    65235
#define    H6    65252
#define    H6_S    65268
#define    H7    65283
#define SPEED 500
#include <REGX52.H>
#include "Timer0.h"
#include "SKey.h"
#include "Nixie.h"
#include "Delay.h"


void sing(unsigned int t , unsigned int  speed);

sbit BEEP = P2^5;

unsigned char KeyN = 0;
unsigned int MIndex = 0;
unsigned int YYF;
unsigned int SPE;

unsigned char  RELOAD[]  = {0x00,0x00};


unsigned int code MUSIC[] = {
    M1,4,
      M1,4,
      M5,4,
      M5,4,  
      M6,4,
      M6,4,
      M5,4+4,   
      M4,4,
      M4,4,
      M3,4,
      M3,4,
      M2,4,
      M2,4,
      M1,4+4,
     
      M5,4,
        M5,4,
        M4,4,
        M4,4,
        M3,4,
        M3,4,
        M2,4+4,
        
      M5,4,
        M5,4,
        M4,4,
        M4,4,
        M3,4,
        M3,4,
        M2,4+4,

    M1,4,
      M1,4,
      M5,4,
      M5,4,  
      M6,4,
      M6,4,
      M5,4+4,   

      M4,4,
      M4,4,
      M3,4,
      M3,4,
      M2,4,
      M2,4,
      M1,4+4,

        
    
      0xFF};







 


void main(){
    
         Timer0Init();
       while(1){
             

              
              YYF = MUSIC[MIndex];
              MIndex++;
              SPE = MUSIC[MIndex];
              if(YYF==0xFF || SPE==0xFF){
                      MIndex = 0;
                      continue;
                }
                sing(YYF,SPE);
              MIndex++;
         
     }


}


void sing(unsigned int t , unsigned int  speed){
 
        RELOAD[0]  =   t%256;
              RELOAD[1]  =   t/256;
              Delay(speed/4 * SPEED);
              RELOAD[0] = 0x00;
              RELOAD[1] = 0x00;
              Delay(5);
          //停止定时器
         // TR0 = 0;

}



void Timer0_Routine() interrupt 1
{
    
     
 
      if(RELOAD[0] != 0x00){
                        
                TL0 = RELOAD[0];        //设置定时初值
                TH0 = RELOAD[1];        //设置定时初值
                BEEP = !BEEP;
        
        }else{
                TL0 = 0xF5;        //设置定时初值
                TH0 = 0xFF;        //设置定时初值
            
        }
    
 }

 1、采用51单片机的Timer0定时器根据改变周期来给蜂鸣器振荡电压。

 2、不同的声调有不同的振动频率。将振动频率转换为计数器的重载值,实现播放音符。

 3、根据每个小节的每个音符的持续时间来确定播放速度。






 

void main(){ Timer0Init();   while(1){ 
    YYF = MUSIC[MIndex];  MIndex++;  SPE = MUSIC[MIndex];  if(YYF==0xFF || SPE==0xFF){  MIndex = 0;  continue;}sing(YYF,SPE);  MIndex++;          }

}

void sing(unsigned int t , unsigned int  speed){         RELOAD[0]  =   t%256;  RELOAD[1]  =   t/256;  Delay(speed/4 * SPEED);  RELOAD[0] = 0x00;  RELOAD[1] = 0x00;  Delay(5);      //停止定时器     // TR0 = 0;
}


void Timer0_Routine() interrupt 1{    if(RELOAD[0] != 0x00){TL0 = RELOAD[0];//设置定时初值TH0 = RELOAD[1];//设置定时初值BEEP = !BEEP;}else{TL0 = 0xF5;//设置定时初值TH0 = 0xFF;//设置定时初值} }

标签:蜂鸣器,M4,MIndex,小星星,unsigned,M5,RELOAD,无源,define
From: https://www.cnblogs.com/javatiandi/p/18573063

相关文章

  • Android14 如何更改无源码应用图标
    没有源码的Android应用一般就是在解析该APK时就要替换图标,如果只在Launcher替换,那么Settings中很多地方都要进行适配,修改比较麻烦,现在提供一种在源头就替换的涉及修改的文件frameworks/base/services/core/java/com/android/server/pm/pkg/parsing/ParsingPackageUtils.java......
  • 正点原子阿尔法ARM开发板-IMX6ULL(八)——串口通信(寄存器解释)(补:有源蜂鸣器)
    文章目录一、蜂鸣器(待,理解)1.1第一行1.2第二行1.3第三行二、串口原理2.1通信格式2.2UART寄存器一、蜂鸣器(待,理解)1.1第一行对于第一行,首先先到fsl_iomuxc文件里面寻找IOMUXC_SetPinMux这个函数其次确定了SNV_TAMPER1并且复用为GPIO模式之后查看,IM6ULL的参考手册,看到第32章......
  • 无源蜂鸣器简介
        无源蜂鸣器是一种电子发声元件,主要由永磁体、线圈、振荡片和外壳等组成。它没有内置的振荡源,需要外部输入一定频率的信号才能发声。一、工作原理:    无源蜂鸣器的工作原理是利用电磁感应现象,为音圈接入交变电流后形成的电磁铁与永磁铁相吸或相斥而推动振膜......
  • 高压开关柜中无源无线测温监测系统的作用
    高压开关柜是发电厂、变电站中确保电力系统安全可靠运行的重要设备,而柜内导线连接处的接触特性将直接影响开关柜工作的可靠性。随着使用年限的增加,因制造、安装不良或材料质量等问题都会导致接触不良而使接触电阻变大,进而导致温度升高,如不能及时发现和处理,就会导致严重的事故。......
  • 51单片机 - 蜂鸣器按键提示音代码
    作者:王开心main.c#include<REGX52.H>#include"Delay.h"#include"Key.h"#include"Nixie.h"#include"Timer0.h"#include"Buzzer.h"unsignedcharKeyNum;voidmain(){ Nixie(1,0); while(1) ......
  • 微波无源器件 4 基于高阶定向耦合器的双极化波束形成网络
    摘要:    一种Ka频段的双极化3dB定向耦合器被设计用于波束形成网络应用。所提出的解决方案对于紧凑Nolen网络。Nolen结构优于器平面和无损特别具有吸引力。两个平行方波导通过口径阵列耦合,设计用于获得两个正交极化之间的所需耦合和高隔离度。索引词:    阵列......
  • 1289、仿真-51单片机垃圾分类处理电机控制手自动模式蜂鸣器报警设计
    毕设帮助、开题指导、技术解答(有偿)见文末。目录一、设计功能二、Proteus仿真三、程序源码四、资料包括一、设计功能1、单片机型号:STC89C52/51、AT89C52/51、AT89S52/51都可通用。2、分为手动模式和自动模式,通过按键“模式”切换。 3、当在手动模式下,按下......
  • 我敢说,很多硬件工程师和射频工程师没有真正理解有源器件和无源器件,三分钟钟带你吃透!
    在电子电路中,我们经常会遇到两种基本类型的器件:有源器件和无源器件。这两种器件在电路中的工作方式、能量来源以及功能特性上有着本质的区别。有源器件是指那些在工作时需要外部电源提供能量的器件。这类器件能够控制、放大或产生电能,常见的例子包括晶体管、集成电路、运算放......
  • 消灭星星游戏程序设计【连载十】——小星星的残影轨迹
    消灭星星游戏程序设计【连载十】——小星星的残影轨迹大家每次都可以在页面中下载本节内容的实现代码,一步一步从简单开始,逐步完成游戏的各种功能,如果大家有任何问题也欢迎留言交流。游戏整体效果展示:1、本节要达到的效果这一节课,我们需要添加小星星的残影轨迹效果,也......
  • android studio 调用第三方无源代码so
    androidstudio调用第三方无源代码so在AndroidStudio中调用第三方无源码的SO(共享库),你需要遵循以下步骤:将SO文件放置在项目中合适的位置。配置app的build.gradle文件,确保Gradle在构建应用时知道SO文件的位置。在Java/Kotlin代码中使用JNI接口加载SO库。......