




已阅读5页,还剩9页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
附一:#include config.h /决定是否播放 ,全局变量/uint16 *p;/歌曲选择指针 uint8 list=0;/歌曲选择变量 uint8 input=1; uint8 pause=1; uint8 state=0,stop=1,play=1,key; uint8 MUSIC_DATA502; uint8 i=0,length=50,key_buffer;/i 歌曲播放指针 /6 7 1 2 3 5 6 7 1flash uint16 Mode_Data16=440,494,523,587,659,698,784, 880,998,1046,1156,1318,1396,1568,0;/存放声音的频率/* 音乐产生函数 * 功能:输出频率为x的方波,延时y MS* 范围:x:100-20000Hz,0:不发声 * y:0-65536 MS */extern void sound(uint16 i) /uint16 x;/x=music_datai0; /取音乐的频率数据if(i!=0) /x=; /1M时钟数据计算OCR1A=500000/i; /比较值赋值TCCR1A = 0x40; /允许比较反转输出elseTCCR1A = 0x00; /频率为0,休止符,不发声/* 延时函数:1M时钟时为MS */extern void delay_ms(uint16 i) uint8 a;for(;i;i-) for (a = 220; a; a-) /倍率 原来220 ;flash uint16 kaqiusha2= 440,600,494,200,523,600,443,200,523,400,494,200,440,200,494,400,330,400,494,600,523,200,578,600,494,200,578,400,523,200,494,200,440,800,659,400,880,400,784,400,880,200,784,200,698,400,659,200,578,200,659,400,440,400, 0,200,698,400,578,200,659,600,523,200,494,200,330,200,523,200,494,200,440,800,659,400,880,400,784,400,880,200,784,200,698,400,659,200,578,200,659,400,440,400, 0,200,698,400,578,200,659,600,523,200,494,200,330,200,523,200,494,200,440,800,0,0; void kaqiusha_sing(void) sound(kaqiushai0); /输出音符 / PORTA=seg7_data(i%16); delay_ms(kaqiushai1);/节拍延时 TCCR1A = 0x00; /奏完一个音符停止 PORTD|=15) list=0; flash uint16 moscow_night2= 440,400,523,400,659,400,523,400,587,800,523,400,494,400,659,800,587,800,440,1600,523,400,659,400,784,400,784,400,880,800,784,400,698,400,659,1600,740,800,831,800,988,400,880,400,659,1200,494,800,440,400,659,400,587,400,698,1600,784,400,698,400,659,800,587,400,523,400,659,800,587,800,440,1600,740,800,831,800,988,400,880,400,659,1200,494,800,440,400,659,400,587,400,698,1600,784,400,698,400,659,800,587,400,523,400,659,800,587,800,440,3200,0,0; void moscow_night_sing(void) sound(moscow_nighti0); /输出音符 / PORTA=seg7_data(i%16); delay_ms(moscow_nighti1);/节拍延时 TCCR1A = 0x00; /奏完一个音符停止 PORTD|=15) list=0; flash uint16 super_mario2= 659,200,659,200,0,200,659,200,0,200,523,200,659,200,0,200,784,400,0,400,392,400,0,400,523,200,0,400,392,400,0,400,330,200,0,400,440,200,0,200,494,200,0,200,466,200,440,200,0,200,392,266,659,266,784,266,880,200,0,200,698,200,784,200,0,200,659,200,0,200,523,200,587,200,494,200,0,400,523,200,0,400,392,400,0,400,330,200,0,400,440,200,0,200,494,200,0,200,466,200,440,200,0,200,392,266,659,266,784,266,880,200,0,200,698,200,784,200,0,200,659,200,0,200,523,200,587,200,494,200,0,800,784,200,740,200,698,200,622,200,0,200,659,200,0,200,415,200,440,200,523,200,0,200,440,200,523,200,587,200,0,400,784,200,740,200,698,200,622,200,0,200,659,200,0,200,1047,200,0,200,1047,200,1047,200,0,800,784,200,740,200,698,200,622,200,0,200,659,200,0,200,415,200,440,200,523,200,0,200,440,200,523,200,587,200,0,200,622,200,0,400,587,200,0,400,523,200,0,600,392,200,392,200,0,200,262,200,0,400,784,200,740,200,698,200,622,200,0,200,659,200,0,200,415,200,440,200,523,200,0,200,440,200,523,200,587,200,0,400,784,200,740,200,698,200,622,200,0,200,659,200,0,200,1047,200,0,200,1047,200,1047,200,0,800,784,200,740,200,698,200,622,200,0,200,659,200,0,200,415,200,440,200,523,200,0,200,440,200,523,200,587,200,0,200,622,200,0,400,587,200,0,400,523,200,0,600,392,200,392,200,0,200,262,200,0,400,0,0;/ super mario void super_mario_sing(void) sound(super_marioi0); /输出音符 / PORTA=seg7_data(i%16); delay_ms(super_marioi1);/节拍延时 TCCR1A = 0x00; /奏完一个音符停止 PORTD|=15) list=0; flash uint16 butterfly_lovers2= 247,800,294,600,330,200,392,600,440,200,330,200,392,200,294,200,0,200,587,600,784,200,659,200,587,200,494,200,587,200,440,1400,0,200,440,400,440,200,494,200,370,400,330,400,294,600,330,200,392,400,440,400,247,400,392,400,330,200,294,200,330,200,392,200,294,1400,0,200,494,600,587,200,370,400,440,400,330,200,392,200,294,1200,247,300,294,100,247,400,294,300,330,100,370,200,440,200,330,1200,294,200,330,200,392,600,440,200,587,400,494,400,440,400,494,200,440,200,392,400,330,200,294,200,247,400,0,400,392,400,0,400,330,300,392,100,330,200,294,200,247,200,294,200,330,200,392,200,294,1400,0,0; /梁祝歌曲 void butterfly_lovers_sing(void) sound(butterfly_loversi0); /输出音符 / PORTA=seg7_data(i%16); delay_ms(butterfly_loversi1);/节拍延时 TCCR1A = 0x00; /奏完一个音符停止 PORTD|=15) list=0; flash uint16 Sdu_Song2= 698,300,698,100,698,200,698,200,698,200,698,200,659,200,587,200,587,200,523,1000,349,400,440,400,523,400,523,200,466,400,440,200,466,400,440,400,392,800,392,300,392,100,392,200,392,200,392,200,370,200,392,200,440,200,466,200,523,200,587,200,659,200,698,200,784,600,880,600,784,200,784,200,523,600,698,1600,0,0;/song of SDUvoid Sdu_Song_sing(void) sound(butterfly_loversi0); /输出音符 / PORTA=seg7_data(i%16); delay_ms(Sdu_Songi1);/节拍延时 TCCR1A = 0x00; /奏完一个音符停止 PORTD|=15) list=0; flash uint16 music_data2=440,400,440,400,659,400,659,400,740,400,740,400,659,800,587,400,587,400,554,400,554,400,494,400,494,400,440,800,659,400,659,400,587,400,587,400,554,400,554,400,497,800,659,400,659,400,587,400,587,400,554,400,554,400,497,800,440,400,440,400,659,400,659,400,740,400,740,400,659,800,587,400,587,400,554,400,554,400,494,400,494,400,440,800,0,0;/ abcdefgvoid music_data_sing(void) sound(music_datai0); /输出音符 / PORTA=seg7_data(i%16); delay_ms(music_datai1);/节拍延时 TCCR1A = 0x00; /奏完一个音符停止 PORTD|=15) list=0; /* 端口初始化函数 */void port_init(void)DDRD|=0xa0; /D5口配置为输出,驱动蜂鸣器PORTD|=0x0f;DDRB=0xf0;PORTB=0X0F;DDRA=0xff;Seg7_Led_Init();MCUCR=0x00;GICR = 0x40;SEI();/*name: list_deal();function: deal with many songs of the machine*/extern void list_deal(void) switch(list) case 0: butterfly_lovers_sing();break; case 1: moscow_night_sing();break; case 2: Sdu_Song_sing();break; case 3: super_mario_sing();break; case 4: kaqiusha_sing();break; case 5: music_data_sing();break; /*name: key_deal();function: deal with states of the machine*/extern void key_deal(void)if(state=0)/播放状态 while(play&pause) list_deal(); /* sound(music_datai0); /输出音符 delay_ms(music_datai1);/节拍延时 TCCR1A = 0x00; /奏完一个音符停止 PORTD|=15; if(!music_datai+1) i=0; */调试用 /播放选择的音乐 /播放modeelse while(play&pause&(input) sound(Mode_DataMUSIC_DATAi0); /输出音符 PORTA=seg7_data(i%16); delay_ms(400);/节拍延时 TCCR1A = 0x00; /奏完一个音符停止 PORTD|=1length) break;else i+=2;break; if(!play) if(+list5)list=0;break; case BACK: if(play=1) if(i2)i=0;break;else i-=2;break; if(!play) if(-list0)list=5;break; default :break; ; Seg7_Data_Port=seg7_data(i); else if(state) if(key=8)&input) add(key); MUSIC_DATAi+0=key;MUSIC_DATAi-11=400; sound(Mode_Datakey); delay_ms(200); TCCR1A = 0; /奏完一个音符停止 PORTD|=18) switch(key) case PAUSE:pause=0;break; case PLAY: if(input) /不是输入模式 play=1;pause=1;break;/* if(i!=0) /输入模式 MUSIC_DATAi0=0; MUSIC_DATAi1=0;/clear i=0,play=1,pause=1;input=0;break; */ case DEL: if(input) del(i4?MUSIC_DATAi-50:16); if(i0) i-;break; case OVER: if(input)/输入模式 MUSIC_DATAi0=0; MUSIC_DATAi1=0;/clear play=0;i=0,input=0,pause=1;break; ; case STOP: if(input)play=0,pause=1,i=0;break;/输入模式 case RST: if(input) i=0,pause=1,play=0;break;/如果正在输入, if(input&play&pause)/没有输入 i=0,pause=1;state=0;break; if(input&pause) /没有输入且暂停 切换模式 input=1,i=0,play=0,pause=1;break;/则case STOP
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024届平谷区高三零模语文试题及答案
- 丧尸病毒答题题库及答案
- 2025年中国可视对讲机行业市场全景分析及前景机遇研判报告
- 园区五经普阶段性工作情况汇报和下步工作安排
- 智能化与自动化在装配式机电安装中的应用
- 企业预算管理信息化建设中的难题及解决思路
- 年产450万平方米医用地板项目环境影响报告表
- 新媒体助力大学生就业创业信息获取与精准匹配
- 禁毒知识竞赛真题及答案
- 人工智能在审计中的应用面临的技术与法规挑战
- 三级筑路工(高级)职业技能鉴定考试题库(含答案)
- 基本不等式课件-高三数学一轮复习
- 中职英语第三版第一册Unit1-Lesson1-课件
- DL∕T 2568-2022 电力行业数字化审计平台功能构件与技术要求
- 窗帘订购合同范本简单
- 部编人教版《道德与法治》六年级上册第9课《知法守法 依法维权》精美课件(第1课时)
- 消防喷淋系统设计合同范本
- DB32-T 4757-2024 连栋塑料薄膜温室建造技术规范
- 山西省太原三十七中2023-2024学年九年级上学期月考物理试卷(10月份)
- 抖音洗浴按摩足浴商家本地团购短视频直播运营策划方案【抖音本地生活运营】
- 深水井施工方案
评论
0/150
提交评论