采用目前较为流行的MCS-51单片机设计一款简易电子琴,制作方法如下。
一、系统原理
用电子琴可以演奏出各种美妙的音乐,而音乐是由音符组成。不同的音符是由相应频率的振动产生。由8051模拟产生音符,只需算出音频周期T=1/f,利用音频的变化产生不同电平驱动蜂鸣器,在同一周期内将输出脉冲反向,并利用8051内部自带定时器计时半周期时间,就可得到相应频率的脉冲,达到发声目的。
设8051中单片机晶振为12MHz。
例:频率为349Hz的音符FA.其T=2(18)-10(8)/2×349=64103
本系统采用的16个音符的频率和相应时间常数值如下表:
二、硬件电路设计
系统以8051单片机为核心,加上外围按键电路、蜂鸣器电路组成。
Intel公司的生产的8051单片机内部除CPU外,还包括128字节RAM.21个SFR,4个8位并行I/O口,1个全双工串行口,2个16位定时/计数器,片内集成4K字节ROM,具有低功耗,速度快等优点,完全满足本系统设计需要。系统电路下图所示:
1.键盘电路
本系统采用4×4矩阵式键盘,按键检查使用行列扫描方式,行设置低电平,同时读入列状态,如果列状态并非全为1.则此列与行为0相交的键就是按下的键。在本系统中,PO.3~PO.O接行线,P0.7~P0.4接列线。初始时先送P0.3~PO.O=1110,然后检测PO.7~P0.4,若有一位为零,则有键按下。
假设读到PO.7~PO.4≈1011.则PO.O和P0.6相交的键就是按下的键。若第一行没有检测到,继续检测第二行,这时PO.3~PO.O=1101.依次类推。
2.蜂鸣器电路
蜂鸣器电路用来发声。8051内部的P1.7引脚可以输出连续变化的矩形波驱动晶体管V1作为开关,使蜂鸣器输入相应频率的矩形波,发出不同的音符。当P1.7输出为低电平.V1饱和导通,蜂鸣器通电,反之V1截止,蜂鸣器掉电。
编程用事先存储的数字代替乐谱,让P1,7输出频率变化的矩形波,蜂鸣器就可以奏出相应的音符。
三、软件设计
本系统用MCS-51汇编语言编程。系统初始化后,通过调用按键子程序判断是否有键按下,通过按键来触发TO中断,查询相应的按键音符时间常数,以达到发声目的。音符相对应的定时时间常数存放在程序存储区。程序流程见下图。
上一篇:用P111G构成的程控灯