一个用beep函数写出来的带字母和歌词的演奏程序

一个运用Beep函数实现的弹奏出音乐的小程序。

#include<windows.h>
#include<conio.h>
#include<stdio.h>
void main()
{
    char ch;
    int a=523,b=578,c=659,d=698,e=784,f=880,g=988,a1=a*2,b1=b*2,c1=c*2,d1=d*2,e1=e*2,f1=f*2,g1=g*2,a2=a/2,b2=b/2,c2=c/2,d2=d/2,e2=e/2,f2=f/2,g2=g/2;//音调参数
    char j[1000]={"两只老虎爱跳舞,小兔子乖乖拔萝卜,我和小鸭子学走路,童年是最美的礼物。小螺号呀嘀嘀地吹,我学海鸥展翅飞,不怕风雨不怕累,快快把本领都学会。宝贝,星星为你指路,哦?宝贝,月亮为你祝福,哦!成长是快乐的旅途,勇敢迈开你的脚步。宝贝,妈妈怀里安睡,妈妈。宝贝,爸爸是你椅背,爸爸。你是我们的心肝宝贝,爸爸妈妈的爱永相随。"};//输入歌词;
    char h[1000]={'1','2','3','1','2','5','5','0','3','N','N','6','6','M','K','5','3','0','1','1','1','N','N','5','3','5','0','J','2','K','K','J','I','K','2','2','G','F','E','J','1','2','3','1','2','5','5','0','3','6','6','A','7','6','5','0','1','I','1','6','5','5','3','0','J','2','K','K','J','I','J','1','1','I','J','K','M','A','C','C','M','K','C','7','7','0','K','6','N','N','M','N','O','5','5','0','0','3','M','M','5','A','B','D','6','6','M','M','M','N','O','N','O','C','B','B','B','M','A','C','C','M','K','C','7','7','0','K','6','N','N','M','N','O','5','5','0','0','3','M','M','5','A','B','D','6','6','M','M','M','N','O','N','O','C','B','B','B'};//输入乐谱
    for (int i=0;i<1000;i++)
    {
        ch=h[i];
        printf("%c",j[i]);
    
    switch(ch)
    {
    case '0':Beep(0,500);break;
    case '1':Beep(a,500);break;
    case '2':Beep(b,500);break;
    case '3':Beep(c,500);break;
    case '4':Beep(d,500);break;
    case '5':Beep(e,500);break;
    case '6':Beep(f,500);break;
    case '7':Beep(g,500);break;
    case 'A':Beep(a1,500);break;
    case 'B':Beep(b1,500);break; 
    case 'I':Beep(a,250);break;
    case 'J':Beep(b,250);break;
    case 'K':Beep(c,250);break;
    case 'L':Beep(d,250);break;
    case 'M':Beep(e,250);break;
    case 'N':Beep(f,250);break;
    case 'O':Beep(g,250);break;
    case 'C':Beep(a1,250);break;
    case 'D':Beep(b1,250);break;
    case 'G':Beep(e2,250);break;
    case 'F':Beep(f2,250);break;
    case 'E':Beep(g2,250);break;


    default:break;
    }
    }
}
 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
#include "stm32f10x.h" #include "GPIOLIKE51.h" #define uint unsigned int #define uchar unsigned char #define CLOCK 72/8 //时钟=72M //函数声明 void GPIO_Configuration(void); /**************************************************************************** * 名 称:delay_us(u32 nus) * 功 能:微秒延时函数 * 入口参数:u32 us * 出口参数:无 * 说 明: * 调用方法:无 ****************************************************************************/ //void delay_us(u32 us) //{ // u32 temp; // SysTick->LOAD = 9*us; // SysTick->VAL=0X00;//清空计数器 // SysTick->CTRL=0X01;//使能,减到零是无动作,采用外部时钟源 // do // { // temp=SysTick->CTRL;//读取当前倒计数值 // }while((temp&0x01;)&&(!(temp&(1<CTRL=0x00; //关闭计数器 // SysTick->VAL =0X00; //清空计数器 //} /**************************************************************************** * 名 称:delay_ms(u16 ms) * 功 能:毫秒延时函数 * 入口参数:u16 nms * 出口参数:无 * 说 明: * 调用方法:无 ****************************************************************************/ void delay_ms(u16 ms) { u32 temp; SysTick->LOAD = 9000*ms; SysTick->VAL=0X00;//清空计数器 SysTick->CTRL=0X01;//使能,减到零是无动作,采用外部时钟源 do { temp=SysTick->CTRL;//读取当前倒计数值 }while((temp&0x01;)&&(!(temp&(1<CTRL=0x00; //关闭计数器 SysTick->VAL =0X00; //清空计数器 } //============================================================================= //文件名称:main //功能概要:主函数 //参数说明:无 //函数返回:int //============================================================================= int main(void) { GPIO_Configuration(); while (1) { // GPIO_SetBits(GPIOB,GPIO_Pin_9); // delay_ms(500);// 100=0.1S GPIO_ResetBits(GPIOB,GPIO_Pin_9); delay_ms(500); } } //============================================================================= //文件名称:GPIO_Configuration //功能概要:GPIO初始化 //参数说明:无 //函数返回:无 //============================================================================= void GPIO_Configuration(void) { GPIO_InitTypeDef GPIO_InitStructure; RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB,ENABLE&#4

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

夏日寒风Zoey

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值