学海荡舟手机网
导航

主页 > 电子设备技术 > 电器电路基础 > > 详细内容

利用单片机控制自动演奏乐曲的程序

 通过控制定时器来产生不同的方波。驱动便发出不同音节的声音,再利用延迟来控制发音时间的长短,即可控制节拍。把乐谱中的音符和节拍做成表格存放,由程序查表得到再分别控制定时器和方波的持续时间,当延时结束,再查下一个音符和节拍。依次就可自动演奏乐曲。
  
  我们用定时器O方式1来产生方波,由P1.0输出驱动扬声器。节拍的控制通过调用200微秒延时子程序的次数来实现。一拍调用两次,半拍就是一次。列出列出音符和定时常数对应表:  

音符 1 2 3 4 5 6 7
频率 523 587 659 698 784 880 988
TO值 64580 64684 64777 64820 64898 64968 65030

 这里我们还要用到查表指令:MOVCA,@A+DPTR它是把表格的首地址存入DPTR,作为基本地址寄存器,把表格的项数(即所查表格元素在表格中的位置)送到累加器A中,两者相加所得的16位数作为程序的地址,取出该地址所对应单元的内容送到累加器A中。
  
  程序的开始还和以前一样。

  主程序开始先做初始化设置。

  下来就该着查表找音符,确定定时器初值。

  接着控制定时器工作,控制小车动作。

  然后调用延时子程序。

  最后按照简谱把定时值、节拍数和小车动作编成表格,比如《新年好》。

 

 


相关文章