当前位置:首页 > 单片机 > 单片机
[导读]   本节介绍使用AT89C2051制作的一种发音电路,各种声音通过编程实现,灵活方便。其原理图如图2 - 81所示。    该电路利用方波谐波成份丰富的特点,编程采用计时器延迟法发音,即每个音的半周期计

  本节介绍使用AT89C2051制作的一种发音电路,各种声音通过编程实现,灵活方便。其原理图如图2 - 81所示。


  
  该电路利用方波谐波成份丰富的特点,编程采用计时器延迟法发音,即每个音的半周期计时中断一次,而使输出Pl.0(或其他I/O口)反相,重复执行产生某种频率的信号。例如:中音DO的频率为523Hz,其周期为1 912 μs,若初始Pl. 0=1,经956 μS后,应使Pl.0=0,再经956 μs恢复Pl.0-1,这样就可发出中音DO。
  
  若选择振荡频率为12 Hz,则机器周期为1μs,计数器每1 μs计数一次。以中音DO(f=523 Hz)为例,只要计数956次即1 912 μs的半周期,产生计时中断将输出反相,所以计数器的计数初始值须设置为64 580。其计算方法如下:

N=65536一半个周期数
  
  由于每1 μS计数一次,若半周期(T/2)为956 μs,则半周期数为956,而

N=65536-T/2=65536-(1912/2)=64580(T为该音阶的周期)
  
  根据上述公式及各音阶频率(见表2 - 13),可以计算出各音阶的计数初始值(设f=12 MHz),将该值列表存于ROM中,根据实际需要取出存入计数器(THO、TLO),即可以发出报警声、电话铃声或乐曲等各种声音。

表2 -13 音阶、频率、计数初值对照表


  
  该电路无需译码电路,根据输入IN1、IN2选择发出声音的种类,根据跳线Sl、S2选择发出声音的长度即可(图中仅画出4种示意)。
  
  IN1、IN2=00时,发出报警(滴滴滴)声;
  
  IN1、IN2-01时,发出停机(滴滴一滴滴)声;
  
  IN1、IN2 =10时,发出开机(呜)声。
  
  该电路已应用于抽油机工作状态监视系统,成本低,调试简便,收到了很好的效果。
  
  发声源程序:
  
  ORG 00H


本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除( 邮箱:macysun@21ic.com )。
换一批
延伸阅读
关闭