基于AT89C2051的电子琴方案设计

发布者:纯真年代最新更新时间:2012-01-20 关键字:AT89C2051  电子琴 手机看文章 扫描二维码
随时随地手机看文章

  声音的频谱范围约在几十到几千赫兹,若能利用程序来控制单片机某个口线不断的输出“高”“低”电平,则在该口线上就能产生一定频率的方波,将该方波接上喇叭就能发出一定频率的声音,若再利用程序控制“高”“低”电平的持续时间,就能改变输出波形的频率,从而改变音调。
 


 

  乐曲中,每一音符对应着确定的频率,表1给出C调时各音符频率。如果单片机某个口线输出“高”“低”电平的频率和某个音符的频率一样,那么将此口线接上喇叭就可以发出此音符的声音。

  本系统就是根据此原理设计,对于AT89C2051单片机来说要产生一定频率的方波大致是先将某口线输出高电平然后延时一段时间再输出低电平,如此循环的输出就会产生一定频率的方波,通过改变延时的时间就可以改变输出方波的频率,而单片机延时主要有两种方法:

  第一种方法是使用循环语句来实现延时,让单片机循环的执行某条指令然后根据单片机每条指令运行的时间以及循环的次数来计算延时时间。如下所示:
 


 

  在上面的延时程序中可以看出:DJNZ指令执行时间为2个机器周期,MOV指令执行时间为1个机器周期,对于单片机的晶振频率为12MHz时机器周期为1 μ s。因此可以根据这些指令的执行时间和每条指令的循环次.数计算出以上的延时程序延时时间大约为50ms。但这种方法的计算的延时时间不是很准确并且为达到一定的延时时间先必须进行很复杂的运算。所以在延时时间要求不严格的时候才采用这种方法。但对于电子琴电路由于每个音符的频率值要求比较严格,变化范围不能太大,因此产生方波的频率也要求比较严格,不能采用延时程序来产生此方波。

  第二种方法是使用单片机的定时/计数器延时。AT89C2051单片机内部有两个16位的定时/计数器T0和T1,单片机的定时/计数器实际上是个计数装置它既可以对单片机的内部晶振驱动时钟计数也可以对外部输入的脉冲计数,对内部晶振计数时称为定时器,对外部时钟计数时称为计数器。当对单片机的内部晶振驱动时钟计数时,每个机器周期定时/计数器的计数值就加1,当计数值达到计数最大值时计数完毕并通知单片机的CPU;对外部输入的时钟信号计数时,外部时钟的每个时钟上升沿定时/计数器的计数值就加1,当计数值达到计数最大值时计数完毕并通知单片机的CPU。因此,如果知道单片机的机器周期或者外部输入时钟信号的周期,单片机就可以根据定时器的计数值计算出定时的时间。用此方法定时十分准确,想得到多大的延时时间就可以给定时器赋一定的计数初值,定时器从预先设置的计数初值开始不断增1当增加到计数最大值时计数完毕,调整计数初值的大小就可以调整定时器定时的时间,从而达到准确的延时。本系统中就采用第二种方法通过定时/计数器延时。

  本系统的具体电路如右图所示。图中P1.1-P1.7分别接7个按键对应着乐曲中的1、2、3、4、5、6、7七个音符。P3.6口通过功率放大芯片 LM386与喇叭相连。当P1.1~P1.7中有一个按键按下时单片机便执行相应的子程序对定时器赋一个计数初值同时使P3.6口输出高电平。当定时器定时结束时将P3.6口的值取反并重新赋计数初值继续计数,再次计完时再将P3.6口的值取反再赋初值计数,如此循环便在P3.6口产生一定频率的方波, LM386将此方波经过功率放大后通过喇叭输出便产生对应音符的声音。按不同的按键单片机便执行不同的子程序给定时器赋不同的初值得到不同频率的方波从而输出不同的声音,因此按一个按键输出一种音符。

  在单片机的特殊功能寄存器中有6个寄存器(TH1、TH0、TL1、TL0、TMOD、TCON)是用来控制单片机的定时器的,通过编程对这些特殊功能寄存器的读写就可以控制单片机的两个定时器T0、T1。当单片机复位时这6个寄存器默认值都是00H。

  (一)定时/计数器的工作方式及控制字

  特殊功能寄存器中TMOD和TCON是定时器的方式控制寄存器。图2为TMOD寄存器的内部结构,图3为TCON寄存器的内部结构。TMOD和TCON是寄存器的名称,我们在写程序时就可以直接用这个名称来指定它们,当然也可以直接用它们的地址89H和88H来指定它们(其实用名称也就是直接用地址,汇编软件帮你翻译一下而已)。

  从图2中可以看出,TMOD被分成两部份,每部份4位。分别用于控制T1和T0。

  从图3中可以看出,TCON也被分成两部份,高4位用于定时/计数器,低4位则用于中断。

  单片机定时/计数器有四种工作方式,方式0、方式1、方式2、方式3,除方式3外,T0和T1有完全相同的工作状态,下面以T1为例,分述各种方式的特点和用法。图4为定时/计数器T1在工作方式0下的内部结构图。

  从图4中可以看出计数脉冲要进入计数器TR1(或TR0)要为1,开关才能合上,脉冲才能过来。因此,TR1(O)称之为运行控制位,可用指令SErB来置位以启动计数器,定时器运行,用指令CLR来关闭定时/计数器的工作。当计数脉冲进入计数器后,计数脉冲加到TL1的低5位,从预先设置的计数初值开始不断增1。TL1计满后,向THl进位。当TL1和TH1都计满后,置位T1的定时器回零标志TF1,从此表明定时时间或计数次数已到,单片机可以根据标志位判断定时器的状态,从而执行相应的程序。

  1.工作方式0

  定时器,计数器的工作方式O称之为13位定时/计数方式。它由TL(1/0)的低5位和TH(0/1)的8位构成13位的计数器,此时TL(1/0)的高3位未用。

  对于定时器的工作模式可以根据定时器的寄存器TMOD来设置:

  ①M1M0:定时/计数器共有四种工作方式,就是用M1M0来控制的,2位正好是四种组合。

  ②C/T:定时/计数器即可作定时用也可用计数用,如果C/T为O就是用作定时器(开关往上打),如果C/T为1就是用作计数器(开关往下打)。一个定时/计数器同一时刻要么作定时用,要么作计数用,不能同时用的。

  ③GATE:当我们选择了定时或计数工作方式后,定时/计数脉冲却不一定能到达计数器端,中间还有一个开关,显然这个开关不合上,计数脉冲就没法过去,那么开关什么时候过去呢? 有两种情况

  GATE=0,分析一下逻辑,GATE非后是1,进入或门,或门总是输出1,和或门的另一个输入端INT1无关,在这种情况下,开关的打开、合上只取决于TR1,只要TR1是1,开关就合上,计数脉冲得以畅通无阻,而如果TR1等于0则开关打开,计数脉冲无法通过,因此定时/计数是否工作,只取决于TR1。

  GATE=1,在此种情况下,计数脉冲通路上的开关不仅要由TR1来控制,而且还要受到INT1引脚的控制,只有TRl为1,且INT1引脚也是高电平,开关才合上,计数脉冲才得以通过。这个特性可以用来测量一个信号的高电平的宽度。[page]

  2.工作方式1

  工作方式1是16位的定时/计数方式,将M1M0设为01即可,其它特性与工作方式0相同。

  3:工作方式2

  8位自动装入时间常数方式。由TL1构成8位计数器,TH1仅用来存放时间常数。看图5所示,每当计数溢出,就会打开T(0/1)的高、低8位之间的开关,计预置数进入低8位。这是由硬件自动完成的,不需要由人工干预。通常这种式作方式用于波特率发生器,用于这种用途时,定时器就是为了提供一个时间基准。计数溢出后不需要做事情,要做的仅仅只有一件,就是重新装入预置数,再开始计数,而且中间不要任何延迟,可见这个任务用工作方式2来完成是最妙不过了。

  4.工作方式3

  2个8位的计数器,只适合于定时器0。这种式作方式之下,定时/计数器0被拆成2个独立的定时/计数器来用。其中,TL0可以构成8位的定时器或计数器的工作方式,而THO则只能作为定时器来用。我们知道作定时、计数器来用需要控制位TR0,计满后溢出需要有溢出标记TF0。T0被分成两个来用,那就要两套控制及溢出标记,TLO还是用原来的T0的标记,而TH0则借用T1的标记。如此T1就无标记、控制可用因此一般只有在T1以工作方式2运行(当波特率发生器用)时,才让T0工作于方式3的。

  (二)定时器/计数器的定时/计数范围

  工作方式O:13位定时/计数方式,因此,最多可以计到2^13,也就是8192次。对于12MHz的晶振,单片机的机器周期是1us。则工作方式0最大定时时间是8.192us。

  工作方式1:16位定时/计数方式,因此,最多可以计到2^16,也就是65536次。对于12MHz晶振,工作方式1最大定时时间是65536 μ s。

  工作方式2和工作方式3,都是8位的定时/计数方式,因此,最多可以计到2^8,也说是256次。对于12MHz晶振,工作方式1最大定时时间是256 μ s。

  计数初值的计算方法:用最大计数量减去需要的计数次数即可。例:如果T0运行于定时状态,单片机的晶振是12MHz,要求定时lOOus,那么定时器要计 100个机器周期,当TO工作在工作方式O时计数初值应该是8192—100=8092;工作在方式1时的计数初值应该是65536-100= *36;工作在方式2,3时的计数初值应该是256—100=156。

  系统软件流程图如图所示。
 


 

  开机时。第一步是对定时器T0进行初始化,设定它的工作状态(对于本系统将T0设定为工作方式O);然后判断是否有键按下,如果没有按键按下,继续判断,如果有按键按下,则判断是哪个键按下;再根据按键的功能将计数初值装入定时器T0中中并启动T0,当T0定时完毕后,重新装入计数初值继续定时并将P3. 6取反,再次定时完毕后再一次的装入计数初值继续定时并将P3.6取反,一直循环此操作直到按键释放为止,按键释放后停止T0工作并再次判断是否又有按键按下,并继续执行以前的过程。
 


 

  定时器T0工作在方式0,13位计数方式所以最大的计数次数为2^13=8192次,由于单片机的晶振是12MHz则机器周期是1 μ s,即定时器最大可以定时8192 μ s。各个音符周期的一半即高电平或低电平持续的时间就是定时器需要定时的时间,所以对于各个音符的计数初值计算方法如下:

  设音符的频率为f,则计数初值=8192一各个音符的周期=8192-
 

  计数初值如表2所示:
 

 

关键字:AT89C2051  电子琴 引用地址:基于AT89C2051的电子琴方案设计

上一篇:基于8051单片机的电阻成型机设计
下一篇:一款由89C2051设计的电子钟

推荐阅读最新更新时间:2024-03-16 12:51

采用AT89C2051单片机实现数字电容表的设计
设计任务 设计并制作一个数字电容表,系统实现的功能及要求如下: (1)设计的电容表可测量容量小于2μF的电容。 (2)设计的电容表采用3位半数字显示,最大显示值为1 999。 (3)设计的电容表读数单位统一采用nF,量程分4档,实际电容值为读数乘以相应的倍率。 2 方案论证 2.1 电路方案 (1)方案一:基本电路搭建 用基本电路来实现数字显示的电容表,电路结构复杂,故障系数大,不易调试,误差也较大。 (2)方案二:单片机编程 用单片机设计电路,由于使用软硬件结合的方式,所以电路结构简单、调试也相对方便。与第一种方案比较优点是非常明显的。 2.2 显示方案 (1)方案一:静态显示 静态显示,显示驱动电路具有输出锁存功能,单
[单片机]
采用<font color='red'>AT89C2051</font>单片机实现数字电容表的设计
工程师的乐趣:20元打造超级PC遥控器
  那是一个带有4路立体声输入,一路输出的红外遥控音源切换器兼PC遥控器的DIY制作。因其带有音源切换功能所以要用的元件较多,电路也较复杂,对于一般缺乏电子制作经验的PCDIYer来说是有一定难度的。其实在国外的DIY网站也有很多款PC红外遥控的方案,有用PIC芯片的,有用数字电路的,有最简单的只用一个接收头和几个稳压元件的,这么多的的电路各有其特点和优缺点,今天再为大家介绍一款简单好用的PC红外遥控,所用的元器件也很少,购买方便价格也只在20元左右,而且有很好的扩展性,下面就把这篇好东东介绍给广大的DIYer。   电路的基本原理就是通过红外接收头收集红外信号,当有红外信号进来时,单片机AT89C2051软件执行中断并对采集
[单片机]
工程师的乐趣:20元打造超级PC遥控器
AT89C2051单片机双路路灯照明控制器
  通常我们常见的路灯、通道灯、广告灯箱等公共场所用照明灯具往往彻夜通明,或者说在白天不应照明时工作了,造成了电能的浪费。还有些因为采用了定时控制方式,随着季节的变化未能及时设置好控制器,造成了控制不适时,如天已暗灯未明等现象,影响了照明效果。本文介绍采用AT89C2O5l 单片机 制作的双路路灯照明控制器,仍然采用光控式,但与一般的光控开关相比由于采用了单片机,具有较强  的抗干扰性能,一路为夜间全明,另一路可设置晚上照明时间,到时自动关闭。 iframe id="iframeu2163852_0" src="http://pos.baidu.com/ycmm?conwid=250&conhei=250&rdid=216
[单片机]
<font color='red'>AT89C2051</font>单片机双路路灯照明控制器
基于单片机AT89C2051的触摸屏控制器设计方案
随着信息技术的飞速发展,人们对电子产品智能化、便捷化、人性化要求也不断提高,触摸屏作为一种人性化的输入输出设备,在我国的应用范围非常广阔,是极富吸引力的多媒体交互没备。目前,触摸屏的需求动力主要来自于消费电子产品,随着触摸屏技术的不断发展,它在其他电子产品中的应用也会得到不断延伸。电子产品以电子管为核心。四十年代末世界上诞生了第一只半导体三极管,它以小巧、轻便、省电、寿命长等特点,很快地被各国应用起来,在很大范围内取代了电子管。五十年代末期,世界上出现了第一块集成电路,它把许多晶体管等电子元件集成在一块硅芯片上,使电子产品向更小型化发展。集成电路从小规模集成电路迅速发展到大规模集成电路和超大规模集成电路,从而使电子产品向着高效能低
[单片机]
基于单片机<font color='red'>AT89C2051</font>的触摸屏控制器设计方案
基于FM的双音频通信方案
  阐述双音频通信的基本工作原理;结合FM有线/无线遥控广播系统中的具体应用,介绍一种适合单片机系统的双音频通信方案,设计具体的硬件接口电路,说明其工作原理;给出应用于双音频的程序流程及在工作中应注意的一些问题。   1 遥控广播系统的基本原理   基本原理如图1所示。   遥控广播系统的通信是电话拨号收发的一种双音频通信方式,是一项可靠、成熟的通信技术。它取代了传统的电话拨号脉冲通信方式,成为现代电话通信拨号的主要通信方式。它对传输电路的要求低,传送的距离远,而且具有通用多种型号的双音频元器件以备选用,通过普通的电话就可以获得发送信号和编码。再经过FM捷变频立体声调频调制器的调制,采用立体声的两个声道,左声道输入广播音频信
[单片机]
基于FM的双音频通信方案
基于51的电子琴设计
下面我们要为这个音符建立一个表格,有助于单片机通过查表的方式来获得相应的数据 低音0-19之间,中音在20-39之间,高音在40-59之间 TABLE: DW 0,63628,63835,64021,64103,64260,64400,64524,0,0 DW 0,63731,63928,0,64185,64331,64463,0,0,0 DW 0,64580,64684,64777,64820,64898,64968,65030,0,0 DW 0,64633,64732,0,64860,64934,64994,0,0,0 DW 0,65058,6511
[单片机]
基于51的<font color='red'>电子琴</font>设计
基于AT89C2051的智能型汽车防撞报警器硬件电路原理
简介:介绍了AT89C2051单片机的性能及特点,及以其为核心的一种低成本、高精度、微型化、数字显示的汽车防撞报警器。该防撞报警器利用超声波及集成霍尔元件实现对汽车的测距和测速,利用单片机的实时控制和数据处理功能,完成系统的控制。文章给出了汽车防撞报警器的硬件电路原理及软件设计。 随着现代生活节奏的加快,交通事故发生的频率也在增加,为提高汽车运行的安全性,本文介绍一种单片机控制的汽车防撞报警系统。该装置将单片机的实时控制及数据处理功能,与超声波的测距技术、传感器技术相结合,可检测汽车运行中后方障碍物与汽车的距离及汽车车速,通过数显装置显示距离,并由发声电路根据距离远近情况发出警告声。 1超声波测距原理 超声波测距的原理是,通
[单片机]
基于<font color='red'>AT89C2051</font>的智能型汽车防撞报警器硬件电路原理
51单片机制作电子琴
#include reg52.h unsigned char tone; unsigned char op; sbit led=P1^1; sbit spk=P1^0; sbit key1=P3^2; //两只老虎演奏按键 sbit key2=P3^3; //1~i演奏按键 unsigned char code shuma ={ 0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90}; //用于使定时器初值变化以产生相应频率的定时 unsigned char code yinfu_H = {0xfb
[单片机]
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
  • 学习ARM开发(16)
    ARM有很多东西要学习,那么中断,就肯定是需要学习的东西。自从CPU引入中断以来,才真正地进入多任务系统工作,并且大大提高了工作效率。采 ...
  • 学习ARM开发(17)
    因为嵌入式系统里全部要使用中断的,那么我的S3C44B0怎么样中断流程呢?那我就需要了解整个流程了。要深入了解,最好的方法,就是去写程序 ...
  • 学习ARM开发(18)
    上一次已经了解ARM的中断处理过程,并且可以设置中断函数,那么它这样就可以工作了吗?答案是否定的。因为S3C44B0还有好几个寄存器是控制中 ...
  • 嵌入式系统调试仿真工具
    嵌入式硬件系统设计出来后就要进行调试,不管是硬件调试还是软件调试或者程序固化,都需要用到调试仿真工具。 随着处理器新品种、新 ...
  • 最近困扰在心中的一个小疑问终于解惑了~~
    最近在驱动方面一直在概念上不能很好的理解 有时候结合别人写的一点usb的例子能有点感觉,但是因为arm体系里面没有像单片机那样直接讲解引脚 ...
  • 学习ARM开发(1)
  • 学习ARM开发(2)
  • 学习ARM开发(4)
  • 学习ARM开发(6)
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved