论文部分内容阅读
本文介绍使用AT89C51,利用DP51PRO单片机综合仿真试验仪的按键K1-K7作为电子琴按键,控 制蜂鸣器发声。通过编程实现,灵活方便。原理图如图1所示:
该电路利用方波谐波成份丰富的特点,编程采用计时器采用延迟法发音,即每个音的半周期 计时中断一次,而使输出P1.0(或其他I/O口)反相,重复执行产生某种频率的信号。例如 :中音DO的频率为523HZ,期周期为1912us,半后期为956us,若初始值P1.0=1,经956us后 应使P1.0=0,再经956us恢复P1.0=1,这样就发出中音DO。
若选频振荡频率为12MHZ,则机器周期为1us,计算器每1us计数一次。以中音DO(f=12MHz) 为例,只要计数956次即1912us的半周期,产生计时中断将输出反相,所以计数器的计数初 始值需设置为64580。其计算方法如下:
N=65536-半个周期数
由于每1us计数一次,若半周期(T/2)为956us,则半周期数为956,而N=65536-T/2=65536- (1912/2)=64580(T为该音节的周期)根据上述公式及各音阶频率表1,可以计算出各音阶 的计数初始值,设(f=12MHz)将该值列表存于ROM中,根据实际需要取出存入计数器(TH0, TL0),即可发出乐曲的声音。
该电路利用方波谐波成份丰富的特点,编程采用计时器采用延迟法发音,即每个音的半周期 计时中断一次,而使输出P1.0(或其他I/O口)反相,重复执行产生某种频率的信号。例如 :中音DO的频率为523HZ,期周期为1912us,半后期为956us,若初始值P1.0=1,经956us后 应使P1.0=0,再经956us恢复P1.0=1,这样就发出中音DO。
若选频振荡频率为12MHZ,则机器周期为1us,计算器每1us计数一次。以中音DO(f=12MHz) 为例,只要计数956次即1912us的半周期,产生计时中断将输出反相,所以计数器的计数初 始值需设置为64580。其计算方法如下:
N=65536-半个周期数
由于每1us计数一次,若半周期(T/2)为956us,则半周期数为956,而N=65536-T/2=65536- (1912/2)=64580(T为该音节的周期)根据上述公式及各音阶频率表1,可以计算出各音阶 的计数初始值,设(f=12MHz)将该值列表存于ROM中,根据实际需要取出存入计数器(TH0, TL0),即可发出乐曲的声音。