老古开发网首页
导航:老古开发网首页文章索引文章分类单片机→[用单片机设计微型电子琴]
| -文章搜索 - 最新文章 - |

用单片机设计微型电子琴

发布时间:2006年6月28日 点击次数:3888
来源:   作者:
 
用单片机设计微型电子琴

                              作者:王兵 来源:现代电子技术

 】 介绍了用单片机设计微型电子琴的方法。给出了电路、程序框图及程序。
    关键词:单片机,电子琴,程序
  
  单片机因其体积小、功能强、价格低廉而得到广泛应用。本文介绍用AT89C51单片机设计微型电子琴的方法,仅需AT89C51最小系统,扩展一组小键盘(这里以4×4键盘为例,可按需要扩展),再加一片LM386做音频小功放,输出到扬声器。电源可由三节5号电池提供。

1设计原理
  乐音实际上是有固定周期的信号。我们可以用AT89C51的一个定时器(如T1)控制,在P3.4脚上输出方波周期信号,产生乐音。根据不同的按键,调节T1的溢出时间,可输出不同频率的乐音,这样就做出了一台微型电子琴。
  每个乐音的音高(频率)是固定的,表1列出了一个8度以及其上下共16个音的音名、频率及定时器T1初值对照(设晶体频率为6MHz),供参考。


2硬件电路设计
  微型电子琴的电原理图见图1,其中键盘可使用小按键,排成钢琴键盘状(键多时可分为几排),图中还增加了一只按键指示灯(D1)。
3软件设计
  软件由初始化程序、主程序、定时器1中断服务程序、键盘扫描程序和延时程序组成。
   (1)初始化程序如下:  


主程序框图见图2。
   (2)主程序:
 


    CJNE R4,#00H,
PLAYKEY;判断有无键按下  
  CLR TR1   ;无键按下关闭T1  
  SETBP3.2   ;无键按下熄灭指示灯  
  SJMPSTART  ;跳回开始位置
PLAYKEY:CJNE R4,#20H,K0;有键按下由键值给TIMER1L和TIMER1H赋值 

                             







   (3)定时器1中断服务程序框图见图3。
                                 
  定时器1中断服务程序:


   (4)键盘扫描程序框图如图4所示。


  键盘扫描程序:





4结束语
  本文介绍了用单片机设计微型电子琴的方法,只要依次将本文中各段程序连写,就是完整的16键微型电子琴程序,有兴趣的读者可以设计键数更多的微型电子琴,甚至可以给微型电子琴添加演奏示范曲的功能〔1〕。如果读者有更高的编程技巧,可以通过编程检测并记录按键的时间,做出具有录音功能的微型电子琴。


欢迎进入老古论坛进行讨论
[单片机] 相关文章:
[转载]初学者对51系列单片机选型的常见问题
简介:
问:网友常见问题:请问现在学习51系列单片机应该选择AT89C51还是89S51? 答:89C51和89S51内核相同,89S51针对89C51的明显的几个升级如下; 1.程序存储器写入方式:二者的写入程序的方式不同,89C51只支持并行写入,同时需要VPP烧写高压。89S51则支持ISP在线可编程写入技术!串行写入、速度更快、稳定性更好,烧写电压也仅仅需要4~5V即可。 2.电源范围:89S5*电源范围宽达4~5.5V,而89C5*系列在低于4.8V和高于5.3V的时候则无法正常工作。 3.工作频率:目前89S1*的性能远高......

[转载]GCC精彩之旅(2)
[转载]GCC精彩之旅(1)
s3c9228汇编写的I2C及一字节除法
SPI总线
基于WinCE的I2C驱动程序设计
P89LPC932的几种ISP编程方法
[转载]C8051F020中的ADC应用要素
基于普通单片机的LIN协议实现方案
[转载]AT89C2051控制LMX2332的频率合成器
 
下一个:[新闻热点]巴斯夫上海建厂,投资4,000万紧随IC生产市场
简介:
德国三大化工巨头之一巴斯夫集团(BASF Group)旗下的巴斯夫电子材料业务,将投资400万欧元 (4,000万人民币),在上海建立一座新工厂,从事纯化和配制电子化学品(即溶剂和蚀刻液)。新工厂将于2006年第三季度投产,以服务于迅猛发展的集成电路生产市场的本地客户。 巴斯夫电子材料全球副总裁Karl-Rudolf Kurtz博士表示:“巴斯夫对这家新工厂的投资再次强调了我们对中国客户的承诺,即以本地化生产为客户提供符合定制要求的可靠供应。” 巴斯夫的目标是,到2010年亚太地区化学品销售额的70%来自本地生产。 除了生产设施外,新工厂设有仓库、管理和营销办公室以......
 

上一个:[单片机]实时时钟DS1302程序列子

老古开发网版权所有 2006年9月 asp.Net V2.0 设计:老古
页面缓存:10分钟 执行时间:31毫秒