介绍了用单片机设计微型电子琴的方法。给出了电路、程序框图及程序。
关键词:单片机,电子琴,程序
单片机因其体积小、功能强、价格低廉而得到广泛应用。本文介绍用AT89C51单片机设计微型电子琴的方法,仅需AT89C51最小系统,扩展一组小键盘(这里以4×4键盘为例,可按需要扩展),再加一片LM386做音频小功放,输出到扬声器。电源可由三节5号电池提供。
1设计原理
乐音实际上是有固定周期的信号。我们可以用AT89C51的一个定时器(如T1)控制,在P3.4脚上输出方波周期信号,产生乐音。根据不同的按键,调节T1的溢出时间,可输出不同频率的乐音,这样就做出了一台微型电子琴。
每个乐音的音高(频率)是固定的,表1列出了一个8度以及其上下共16个音的音名、频率及定时器T1初值对照(设晶体频率为6MHz),供参考。
![](http://www.21ic.com/d/file/201208/46e2311c2511946b057c162b9a9c9be4.jpg)
2硬件电路设计
微型电子琴的电原理图见图1,其中键盘可使用小按键,排成钢琴键盘状(键多时可分为几排),图中还增加了一只按键指示灯(D1)。
3软件设计
软件由初始化程序、主程序、定时器1中断服务程序、键盘扫描程序和延时程序组成。
(1)初始化程序如下:
![](http://www.21ic.com/d/file/201208/3e3db39f513c3bd18b0c19922d8f99b6.jpg)
![](http://www.21ic.com/d/file/201208/dfb3450c4808c09b0a3ae19aa29ce065.jpg)
主程序框图见图2。
(2)主程序:
![](http://www.21ic.com/d/file/201208/94cfd60c299025b0e0143f715ed9fa23.jpg)
![](http://www.21ic.com/d/file/201208/2038841b08040eed2845ed68305f552a.jpg)
CJNE R4,#00H,
PLAYKEY;判断有无键按下
CLR TR1 ;无键按下关闭T1
SETBP3.2 ;无键按下熄灭指示灯
SJMPSTART ;跳回开始位置
PLAYKEY:CJNE R4,#20H,K0;有键按下由键值给TIMER1L和TIMER1H赋值
![](http://www.21ic.com/d/file/201208/b38e3bb06bdf85dab6a678ce79020242.jpg)
![](http://www.21ic.com/d/file/201208/980c16764fc90882e0934fa9cb8da9a5.jpg) ![](http://www.21ic.com/d/file/201208/8d83133c3b393e296d12a3e1c76c6f02.jpg)
![](http://www.21ic.com/d/file/201208/03035dc860143721edb8e4d42c3f98a5.jpg)
![](http://www.21ic.com/d/file/201208/b38e3bb06bdf85dab6a678ce79020242.jpg)
![](http://www.21ic.com/d/file/201208/f9385e1b59e43927855a276f1dba658d.jpg)
![](http://www.21ic.com/d/file/201208/6a35217ca84e1267f2305ef3db40a2ba.jpg)
![](http://www.21ic.com/d/file/201208/d529ccdb156df745bce716fc2f05ace1.jpg)
![](http://www.21ic.com/d/file/201208/4af2dd3992d7c239bb47d36bd6d153b0.jpg)
(3)定时器1中断服务程序框图见图3。
定时器1中断服务程序:
![](http://www.21ic.com/d/file/201208/f6fda1aaa4efd19f5950d87f03dbed29.jpg)
(4)键盘扫描程序框图如图4所示。
![](http://www.21ic.com/d/file/201208/f98d80a21f6f992af7c21be0d4c1f8bb.jpg)
键盘扫描程序:
![](http://www.21ic.com/d/file/201208/f35d4395aeb33f03a6eab478b6496227.jpg)
![](http://www.21ic.com/d/file/201208/6f65c60f58f6cf8cb840dc5927b477b4.jpg)
![](http://www.21ic.com/d/file/201208/09ca49114f6409e5f83c8f76fadd0467.jpg)
![](http://www.21ic.com/d/file/201208/d50397ec0870d7ca1ea31778da29938a.jpg)
![](http://www.21ic.com/d/file/201208/54fec820e66ecbef40ccb9a4fd169bf3.jpg)
4结束语
本文介绍了用单片机设计微型电子琴的方法,只要依次将本文中各段程序连写,就是完整的16键微型电子琴程序,有兴趣的读者可以设计键数更多的微型电子琴,甚至可以给微型电子琴添加演奏示范曲的功能〔1〕。如果读者有更高的编程技巧,可以通过编程检测并记录按键的时间,做出具有录音功能的微型电子琴。 |