单片机IO口播放乐曲.doc_第1页
单片机IO口播放乐曲.doc_第2页
单片机IO口播放乐曲.doc_第3页
单片机IO口播放乐曲.doc_第4页
单片机IO口播放乐曲.doc_第5页
已阅读5页,还剩5页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

单片机IO口播放乐曲日期:2006-2-27来源:文君阁 作者:xuwenjun字体:大 中 小 /标题:单片机IO口播放乐曲/-/源程序大公开/(c)Copyright20012002xuwenjun/AllRightsReserved/V1.00/-/标题:单片机IO口播放乐曲/版本:V1.00/文件名:xwj_lcd16.C/创建人:徐文军E-mail:/日期:02-11-5/描述:单片机利用T1中断在IO口P1.0输出乐曲/声明:/以下代码仅免费提供给学习用途,但引用或修改后必须在文件中声明出处./如用于商业用途请与作者联系.E-mail:/有问题请欢迎与我交流!/-/修改人:徐文军E-mail:/日期:02-11-5/说明:/单片机用T1中断在IO口P1.0输出乐曲(在P1.0口与VCC间接一喇叭即可听到)/1.由于输出的是方波,比较难听:-)你也可以将波形细分用DA输出正弦波/2.由于T1频繁中断,任何其他中断发生都会是乐曲打顿,只适合试验/3.优化音符编码:一个字节中包含节拍、音符、升降调,可区分数据和命令/同时人工将音符译为机器码非常容易。(格式看下面实例)/-/#include#include#defineFREQ11059200#definefreq_chn(f)255-f/24/147/256,256-f/24/147%256/音乐_编码2-存储器定义/unsignedcharcodemusic_tab1=/音符码格式:|D7|D6D5D4|D3|D2D1D0|/梁祝|变调|节拍|升降|音符|0xcb,/示例:0xcb=11001011B,即升调,4/16拍,3Mi低音0x35,0x16,0xb9,0x12,0x96,0x99,0xa5,0xbd,0x99,0x96,0x15,0x13,0x15,0x62,0x32,0x13,0xa7,0x26,0x25,0x16,0xa9,0x22,0xa3,0xa9,0x96,0x15,0x16,0x99,0xe5,0xbb,0x15,0xa7,0xaa,0x96,0x99,0xd5,0x13,0x15,0x23,0x15,0x16,0x17,0x9a,0xd6,0x15,0x16,0xb9,0x12,0x25,0x23,0x23,0x22,0x13,0x12,0x21,0x96,0x15,0x43,0xc9,0x96,0x99,0x96,0x15,0x13,0x15,0x16,0x99,0xd5,/功能码格式:|D7D6D5D4|D3D2D1D0|/|高4位=0时是功能码|根据低4位散转|0x00,/最后字节为功能码必须=0x00退出;unsignedcharcodemusic_tab2=/康定情歌0x23,0x25,0x26,0x16,0x15,0x36,0x13,0x42,0x23,0x25,0x26,0x16,0x15,0x26,0x53,0x23,0x25,0x26,0x16,0x15,0x26,0x23,0x42,0x25,0x23,0x12,0x13,0x12,0x11,0x22,0xd6,0x26,0xda,0x25,0x53,0x12,0x11,0xd6,0xad,0x23,0x12,0x13,0x12,0x11,0x22,0xd6,0x00,;unsignedcharcodemusic_tab3=/美酒加咖啡0x55,0x23,0x25,0x26,0xa9,0x22,0x73,0x45,0x25,0x26,0x23,0x22,0x21,0x23,0x72,0x52,0x23,0x45,0x43,0x22,0x21,0xa6,0x25,0x66,0xc9,0xa6,0x25,0x23,0x25,0x26,0xa9,0xf5,0x45,0x23,0x25,0x46,0xc9,0x22,0x13,0x12,0x21,0x22,0x63,0x22,0x23,0x25,0x26,0x25,0x23,0x22,0x21,0x72,0x52,0x23,0x45,0x43,0x22,0x21,0xa6,0x25,0x66,0xb9,0x12,0x23,0x25,0x22,0xa5,0xab,0x22,0x71,0x00,;unsignedcharcodemusic_tab4=/北国之春0x15,0x16,0x75,0x15,0x16,0x55,0x13,0x15,0x16,0x15,0x16,0x99,0x12,0x13,0x65,0x45,0x13,0x12,0x11,0x12,0x73,0x62,0x42,0x12,0x11,0x96,0x15,0x76,0x55,0x23,0x45,0xa9,0x22,0x53,0x12,0x13,0x65,0x52,0x22,0x42,0x21,0xa6,0xe9,0x91,0x12,0x13,0x12,0x13,0x15,0x99,0x12,/以上为过门0x20,0x23,0x23,0x23,0x63,0x22,0x23,0x23,0x22,0x41,0xa6,0x25,0x53,0x22,0x21,0xa9,0x21,0xa6,0x75,0x26,0xa9,0x21,0xa6,0xc9,0x12,0x11,0x96,0x15,0x23,0x25,0x25,0x26,0x45,0x21,0x22,0x13,0x35,0x25,0xa9,0xa6,0x25,0x23,0x22,0x71,0x52,0x25,0x45,0x13,0x15,0x13,0x12,0x21,0x41,0x22,0x43,0x45,0x23,0x25,0x26,0xa9,0x42,0x12,0x33,0x72,0x51,0x22,0x43,0x22,0x21,0xc6,0xc9,0x29,0xc6,0x45,0x23,0x23,0x53,0x25,0x26,0x25,0x13,0x12,0x21,0x62,0x42,0x23,0x25,0x55,0x26,0x25,0x23,0x45,0x26,0xa9,0x21,0x22,0x63,0x52,0x22,0x22,0x13,0x12,0x21,0xa6,0xf9,0x00,;unsignedcharcodemusic_l_tab8=0,1,2,3,4,6,8,16;/节拍延时单位unsignedcharcodemusic_freq_tab64=/音符定时器值表0xff,0xea,/0休止符freq_chn(131),/freq_chn(x/256/1do高字节/freq_chn(x%256/1do低字节freq_chn(147),/2refreq_chn(165),/3mifreq_chn(175),/4fafreq_chn(196),/5suofreq_chn(221),/6lafreq_chn(248),/7xi0xff,0xea,/0休止符freq_chn(262),/1dofreq_chn(294),/2refreq_chn(330),/3mifreq_chn(350),/4fafreq_chn(393),/5suofreq_chn(441),/6lafreq_chn(495),/7xi0xff,0xea,/0休止符freq_chn(525),/1dofreq_chn(589),/2refreq_chn(661),/3mifreq_chn(700),/4fafreq_chn(786),/5suofreq_chn(882),/6lafreq_chn(990),/7xi0xff,0xea,/0休止符freq_chn(1049),/1dofreq_chn(1178),/2refreq_chn(1322),/3mifreq_chn(1400),/4fafreq_chn(1572),/5suofreq_chn(1665),/6lafreq_chn(1869),/7xi;unsignedcharcodemusic_frequp_tab64=/升半音0xff,0xea,/0休止符freq_chn(139),/1do高字节freq_chn(156),/2refreq_chn(175),/3mifreq_chn(185),/4fafreq_chn(208),/5suofreq_chn(234),/6lafreq_chn(262),/7xi0xff,0xea,/0休止符freq_chn(278),/1dofreq_chn(312),/2refreq_chn(350),/3mifreq_chn(371),/4fafreq_chn(416),/5suofreq_chn(467),/6lafreq_chn(525),/7xi0xff,0xea,/0休止符freq_chn(556),/1dofreq_chn(624),/2refreq_chn(700),/3mifreq_chn(742),/4fafreq_chn(833),/5suofreq_chn(935),/6lafreq_chn(1049),/7xi0xff,0xea,/0休止符freq_chn(1112),/1dofreq_chn(1248),/2refreq_chn(1400),/3mifreq_chn(1484),/4fafreq_chn(1618),/5suofreq_chn(1764),/6lafreq_chn(1968),/7xi;unsignedchartemp_TH1;unsignedchartemp_TL1;/音乐_编码2-IO定义/sbitPIN_MSC=P10;/音乐输出端口/音乐_编码2-函数原型/voidmusic_delay(unsignedcharx);/音乐节拍延时voidmusic_play(unsignedchar*msc);/播放音乐子程序/音乐_编码2-函数/-/voidmusic_int_t1(void)interrupt3using1/定时中断1/PIN_MSC=PIN_MSC;TH1=temp_TH1;TL1=temp_TL1;/-/voidmusic_delay(unsignedcharn)/延时125*n毫秒unsignedchari=125,j;dodofor(j=0;j4;/-if(music_long!=0)/是音符if(*msc=128)/需升降调if(*msc)&0x08)=0)if(music_freq=16)music_freq-=16;/音高下降elseif(music_freq48)music_freq+=16;/音高上升/-if(music_up=1)/升半音temp_TH1=music_frequp_tab(music_freq+(music_data1);temp_TL1=music_frequp_tab(music_freq+(music_data1)+1);else/不升半音temp_TH1=music_freq_tab(music_freq+(music_data1);temp_TL1=music_freq_tab(music_freq+(music_data1)+1);/-if(music_break)/断奏music_delay(music_l_tabmusic_long&0x07-1);temp_TH1=0xff;temp_TL1=0xea;music_delay(1);else/连奏music_delay(music_l_tabmusic_long&0x07);/-else/是功能码switch(music_data)case0x04:music_up=0;/不升半音break;case0x05:music_up=1;/升半音break;case0x06:music_break=0;/断奏break;case0x07:music_break=1;/连奏break;default:break;/-msc+;ET1=0;/播放结束,关T1中断PIN_MSC=1;/关输出/temp_TH1=0xff;/temp_TL1=0xea;/关输出(输出超声波)/ET0=1;/开T0定时器中断/TMOD=0x51;/T0:16位定时器、T1:16位计数器/-/voidmain(void)/示例/设置定时器-TMOD=0x11;/TMOD:定时器1:模式1:16

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论