- 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
单片机实验1︰音乐改编0606
实验1:将歌曲播放程序《两只老虎》改变为另一首歌曲 (如《Happy new year to you》) 一、编程指导:产生任意音频f /************************************************************** 音频播放:单片机用一根IO口线,向喇叭送出各种音符的频率-交替变化 的高、低电平,即可让喇叭获得音频方波-播放音乐。 欲产生某音符的频率f,只需在f的半周期C对IO口线取反一次即可! 如,喇叭接在I/O口线P3.7上: sbit sound=P3^7;//位定义:将sound为P3.7 sound=!sound; //将P3.7引脚输出电平取反,形成方波一个“沿” 【定时常数C】即定时器的“纯”定时时间=计数次数*机器周期【12*(1/CLK)】 定时常数C计算:【定时常数C=音符频率f的半周期C=(1/2f)s=(1000000/2f)us】 以定时/计数器的输入脉冲(机器周期)为单位时:【C=(1000000/2f)us/机器周期us】 【机器周期=12个主频时钟周期】单片机晶振主频时钟常为11.0592MHZ 【机器周期=12*(1/11.0592)us=1.085us】 以机器周期为单位的定时常数C=(1000000/2f)us/1.085us=460830/f,即: 产生任意频率定时常数C计算公式: 【定时常数C=460830/f】f为某音符频率 【定时初值N计算】定时初值写入定时计数器,即会产生期望的定时常数C,即定时宽度或输出频率f。 【定时初值N=模M - 定时常数C】模M=最大计数值=2^位数,即2的二进制位数次方 例: 【若T0为工作方式0,13位计数,其模=最大计数值=2^13=8192】 【方式0,13位计数 定时初值计算式】 【N=8192-C】 【定时初值N设置编程】 TL0=(8192-C)%32;//TL0每计数32次向TH0进位1次【13位计数器的低5位=TL0的低5位,TL0高3位未用】 TH0=(8192-C)/32;//TH0右移5位(2^5=32)【13位计数器的高8位】 ***************************************************************/ 二、如下为歌曲《两只老虎》的不完整C语言程序,请补充完整。 //1、将头文件改为reg51.h 【文件包含】 #includeat89x51.h //包含头文件:51单片机寄存器定义 //2、将驱动喇叭的I/O口改为P1.0 【数据定义】 sbit sound=P3^7; //位定义:将sound定义为P3.7【驱动喇叭】 unsigned int C; //变量定义:储存定时器的定时常数 //3、C调的简谱-频率表:【低音L,中音Z,高音H】 //简谱 频率 说明 #define L1 262 // L1=低音1=262Hz【周期=1/262=3826us,取半周期】 L2 286 // L2=低音2=286Hz L3 311 // L3=低音3=311Hz L4 349 // L4=低音4=349Hz L5 392 // L5=低音5=392Hz L6 440 // L6=低音6=440Hz L7 494 // L7=低音7=494Hz Z1 523 // Z1=中音1=523Hz//C调中音宏定义 Z2 587 // Z2=中音2=587Hz Z3 659 // Z3=中音3=659Hz Z4 698 // Z4=中音4=698Hz Z5 784 // Z5=中音5=784Hz Z6 880 // Z6=中音6=880Hz Z7 987 // Z7=中音7=523H H1 1046 // H1=高音1=1046Hz//C调高音宏定义 H2 1174 // H2=高音2=1174Hz H3 1318 // H3=高音3=1318Hz H4 1396 // H4=高音4=1396Hz H5 1567 // H5=高音5=1567Hz H6 1760 // H6=高音6=1760Hz H7 1975 // H7=高音7=1975Hz //用宏替换,将各频率替换为音符名称,如: #define L1 262 // L1=低音1=262Hz【周期=1/262=3826us,取半周期】 //4
文档评论(0)