m0_63366309 2023-12-17 23:30 采纳率: 52.9%
浏览 20
已结题

MSP430G2553蜂鸣器的问题

这个程序我的板子上运行不出来,感觉是连接蜂鸣器的问题,网上完全找不到用这种G2开发板的
还有麻烦帮我改进成能通过一个按键控制三首歌循环切歌的

img


#include<MSP430G2553.h>
//音乐播放
//     by   wys
void P_Onclick(int n,int j);
//7个基本音的子函数
void jby_1(int s);
void jby_2(int s);
void jby_3(int s);
void jby_4(int s);
void jby_5(int s);
void jby_6(int s);
void jby_7(int s);
void main(void)
{
     WDTCTL = WDTPW + WDTHOLD;
     if(CALBC1_1MHZ==0xFF||CALDCO_1MHZ==0xFF)
     {
         while(1);
     }
     BCSCTL1=CALBC1_1MHZ;
     
     DCOCTL=CALDCO_1MHZ;   //校准时钟频率1MHZ
     
     //按照《两只老虎》的简谱对7个基本音进行调用
     
     jby_1(400);
     jby_2(400);
     jby_3(400);
     jby_1(400);
     _delay_cycles(3000); //每个完整的拍后接一个延时
     
     jby_1(400);
     jby_2(400);
     jby_3(400);
     jby_1(400);
    _delay_cycles(3000);
    
     jby_3(400);
     jby_4(400);
     jby_5(800);
    _delay_cycles(3000);
    
     jby_3(400);
     jby_4(400);
     jby_5(800);
     _delay_cycles(3000);
     
     jby_5(200);
     jby_6(200);
     jby_5(200);
     jby_4(200);
     jby_3(400);
     jby_1(400);
     _delay_cycles(3000);
     
     jby_5(300);
     jby_6(100);
     jby_5(300);
     jby_4(100);
     jby_3(400);
     jby_1(400);
     _delay_cycles(3000);
     
     jby_2(400);
     jby_5(400);
     jby_1(800);
     _delay_cycles(3000);
     
     jby_2(400);
     jby_5(400);
     jby_1(800);




}

//输入每个音调的频率对应的n和持续时间j

void P_Onclick(int n,int j)
{
    P1DIR |= BIT6;
                        ///延时每个音调的时长
                      for ( ;j>0;j--)                                  
                      {
                        volatile unsigned int i;                
                        P1OUT ^= BIT6;                          
                        i = n;                             
                        do
                        {
                            i--;                                // 自减操作
                            _NOP();                             // 空操作
                        }while (i != 0);                        // 标准的do……while语句,注意别漏掉了括号后面的分号
                      }
}
// do
void jby_1(int s)   
{
    P_Onclick(95,s);
}
//re
void jby_2(int s)  
{
    P_Onclick(85,s);
}

//mi
void jby_3(int s)   
{
    P_Onclick(75,s);
}

//fa
void jby_4(int s)  
{
    P_Onclick(71,s);
}

//sol
void jby_5(int s)   
{
    P_Onclick(63,s);
}

//la
void jby_6(int s)  
{
    P_Onclick(56,s);
}

//si
void jby_7(int s)    
{
    P_Onclick(50,s);
}





  • 写回答

0条回答 默认 最新

    报告相同问题?

    问题事件

    • 系统已结题 12月25日
    • 创建了问题 12月17日