完美者(wmzhe.com)网站以软件下载为基础,改版后的网站对功能性板块进行扩充,以期能够解决用户在软件使用过程中遇见的所有问题。网站新增了“软件百科”、“锦囊妙技”等频道,可以更好地对用户的软件使用全周期进行更加专业地服务。
音乐代码生成器,可方便51及PIC单片机的开发,支持C语言代码生成,方便实用,适合初学者增加兴趣。
使用很简单,对照音乐简谱输入音符和节拍即可。
"锦囊妙技"栏目是聚合全网软件使用的技巧或者软件使用过程中各种问题的解答类文章,栏目设立伊始,小编欢迎各路软件大神朋友们踊跃投稿,在完美者平台分享大家的独门技巧。
本站文章素材来源于网络,大部分文章作者名称佚失,为了更利于用户阅读和使用,根据需要进行了重新排版和部分改编,本站收录文章只是以帮助用户解决实际问题为目的,如有版权问题请联系小编修改或删除,谢谢合作。
软件大小:43.39 KB
设计的相关音乐说明要产生音频脉冲,只要算出某一音频的周期(1/频率),然后将此周期除以2,即为半周期时间。利用半周期时间定时这个半周期时间,每当计时到后就将输出的I/O反向,然后重复计时此半周期再对I/O反向,就可以在I/O脚上得到此频率的脉冲。记数脉冲值与频率的关系公式如:N=Fi/2/Fr。N:记数值;Fi:内部计时依次为1us,故其频率为1 MHZ;Fr:要产生的频率。其记数值的求法如:T=65536-N=65536-Fi/2/Fr。例:设K=65536,F=1000000=Fi=1 MHZ。求低音DO(26HZ),中音DO(523HZ),高音DO(1046HZ)的记数值。每个音符使用1个音节,字节的高四位代表音符的高低,低四位代表音符的节拍。如果1拍为0.4秒,1/4拍为0.1秒,假设1/4拍为 DELAY,则1拍为4 DELAY。扩展资料:功能特性1,可以仿真63K程序空间,接近64K 的16位地址空间;2,可以仿真64Kxdata 空间,全部64K 的16位地址空间;3,可以真实仿真全部32 条IO脚;4,完全兼容keilC51 UV2 调试环境,可以通过UV2 环境进行单步,断点, 全速等操作;5,可以使用C51语言或者ASM汇编语言进行调试 ;6,可以非常方便地进行所有变量观察,包括鼠标取值观察,即鼠标放在某 变量上就会立即显示出它此的值;7,可选 使用用户晶振,支持0-40MHZ晶振频率;8,片上带有768字节的xdata,您可以在仿真时选 使用他们,进行xdata 的仿真;9,可以仿真双DPTR 指针;10,可以仿真去除ALE 信号输出. ;11,自适应300-38400bps 的所有波特率通讯;12,体积非常细小,非常方便插入到用户板中.插入时紧贴用户板,没有连接电缆,这样可以有效地减少运行中的干扰,避免仿真时出现莫名其妙的故障;13,仿真插针采用优质镀金插针,可以有效地防止日久生锈,选择优质园脚IC插座,保护仿真插针,同时不会损坏目标板上的插座. ;14,仿真时监控和用户代码分离,不可能产生不能仿真的软故障;15,RS-232接口不计成本采用MAX202集成电路,串行通讯稳定可靠,绝非一般三极管的简易电路可比。参考资料来源:百度百科-51单片机
试了一下,感觉速度很正常,没有快很多的感觉。 这个软件应该是以12M晶振的51单片机为基础,针对那些以四分之一音符为一拍的音乐而设计的,如果晶振频率过快,或者音乐以二分之一音符为一拍的,那样设计结果都会比预想的快。 如果想让他慢下来有两个方法,一个是修改晶振频率,另一个就是找到程序中void delay(uchar p)函数,修改函数内i,j变量的类型并且修改循环的参数,让这个延时函数的时间变长。 符号的输入要看符号的含义了,这种软件不可能面面俱到的。
#include sbit speaker=P1^6; //(单片机音乐代码生成器中的蜂鸣接口,就是一个IO脚) unsigned char timer0h,timer0l,time; //生日歌,这三个字节一组,分别定义:旋律(1234567)、高低音(低音、中音、高音)、节奏(长度) code unsigned char sszymmh[]={5,1,1, 5,1,1, 6,1,2, 5,1,2, 1,2,2, 7,1,4, 5,1,1, 5,1,1, 6,1,2, 5,1,2, 2,2,2, 1,2,4, 5,1,1, 5,1,1, 5,2,2, 3,2,2, 1,2,2, 7,1,2, 6,1,2, 4,2,1, 4,2,1, 3,2,2, 1,2,2, 2,2,2, 1,2,4}; // 音阶频率表 高八位,也就是发音对应频率的高八位 code unsigned char FREQH[]={0xF2,0xF3,0xF5,0xF5,0xF6,0xF7,0xF8, 0xF9,0xF9,0xFA,0xFA,0xFB,0xFB,0xFC,0xFC, //1,2,3,4,5,6,7,8,i 0xFC,0xFD,0xFD,0xFD,0xFD,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFF,} ; // 音阶频率表 低八位,也就是发音对应频率的低八位 code unsigned char FREQL[]={0x42,0xC1,0x17,0xB6,0xD0,0xD1,0xB6,0x21,0xE1,0x8C,0xD8,0x68,0xE9,0x5B,0x8F, //1,2,3,4,5,6,7,8,i 0xEE,0x44, 0x6B,0xB4,0xF4,0x2D,0x47,0x77,0xA2,0xB6,0xDA,0xFA,0x16, }; void delay(unsigned char t) //延时程序 { unsigned char t1; unsigned long t2; for(t1=0;t1 评论0 0 加载更多
把简谱中每个唱名对应的频率找出来,比如C调的1对应264Hz左右。 然后把这些频率通过公式转换成初值再换算成十六进制。 比如你用的是定时的工作方式1,则可以这位算:(假设晶振是12MHz) X=2^16-10^6/(264*2)=63642因为要计算的是半周期对应的初值,所以频率就是2倍。 十六进制就是:F89A 好像没有什么软件吧,有的话告诉我一声哦。