基于51单片机的激光竖琴设计

上传人:good****022 文档编号:116533272 上传时间:2022-07-05 格式:DOCX 页数:39 大小:2.40MB
返回 下载 相关 举报
基于51单片机的激光竖琴设计_第1页
第1页 / 共39页
基于51单片机的激光竖琴设计_第2页
第2页 / 共39页
基于51单片机的激光竖琴设计_第3页
第3页 / 共39页
点击查看更多>>
资源描述
基于51单片机的激光竖琴设计组长:赵唐橙组员:杜晨 杨霄 周凯龙2018年 07月 05 日目录基于51单片机的激光竖琴设计1背景与意义2设计要求3硬件电路设计与实现43.1 硬件设计方案43.2 相对应得模块电路的规划思路与实现方法53.2.1 单片机最小系统53.2.2 激光发射模块93.2.3 激光接收模块103.2.4 发声模块113.2.5 LED指示灯133.2.6 电源供电143.2.7 模式切换15软件设计与实现154.1 软件设计方案154.2 各模块程序设计与实现174.2.1 硬件资源配置174.2.2 端口信号检测2042.3 数据处理204.2.4音符输出214.2.5 LED音符与音区指示214.2.6 播放音乐部分224.2.7模式切换234.3 软件开发工具介绍24测试与分析25程序部分25硬件部分26实物图27总结与展望29附录29附录A 主程序29附录B 整体电路图38背景与意义在这个时代,科学技术的飞速前进带动了人们的生活水平的提升,使人类生活更加精彩。电子琴可以称得上是这两者融合的体现。MCU(Micro Unit Unit),我们用汉语来说,可以称之为微控制单元,亦叫做单片机(单片微型计算机)或单片机。它运用的时期并不长,但发展的速度确是非常的快。 在1971年这个时间点,美国英特尔公司有史以来第一个推出了4位微处理器,在接下来的过程中,演变通过了了以下五个进程:单片机开发的开端、低性能的单片机 、高性能的单片机,然后16位的面世。进而就是正在向更高的层次发展。单片机可构成单应用系统和多机应用系统。在现在的这个时期,它已广泛应用于测控系统、智能仪表、机电一体化产品、智能接口、智能化民用产品、功能分布式系统、并行多机控制系统、局域网络系统等方方面面。对于未来,我们始终相信随着MCU性能的不断提高,其应用将超出我们的想象。基于单片机的简易激光琴的设计与实现是可以帮助我们把我们所学的相关技术得意尝试和发挥。在整体设计规划中包括电路分析、数字电路、模拟电路、传感器原理及应用、C编程等。由此可以看出,大体上囊括了在现在学习水平上学到的主流课程。该系统设计原理简明,但样式多彩。通过这样一个流程,可以帮助我们把理论与实际相结合,除了我们上面所说的,也能提高我们的动手能力,使我们勇于创新,知识面也得到了大幅提升, 第一步我们可以在过程中找到问题所在、第二步对这个问题进行思考,这样使我们在以后的学习过程中碰到问题能更得心应手的应对。该系统可以对于MCU的相关功能进行进一步的扩大,在我们现在所了解的情况基下,可以具体的地读出中间和八个音符。可以逐步将其设计为电子琴,儿童玩具,并慢慢渗透进我们的生活。设计要求虚拟琴弦选择激光来完成,当手触碰到琴弦的时候,这个音节就会出现,这样就能够完成对于竖琴演奏简易的曲子的模仿在硬件电路上要各个模块清晰明确,对各模块进行具体分析,以及功能的说明。如激光发射以及接收,最小系统,还有发声模块,从而设计出整体的电路布局。在软件设计过程,要结合硬件电路具体分析,实现硬件资源的合理配置,端口信号的检测和数据的处理。实现手指拨动光束,就会发出对应音符,需要做到得心应手。这个过程要确保无误,有错误要及时发现改正,保证系统能够稳定地运行。程序的编写过程要注意细节,防止出现错误,影响系统的运行。硬件电路设计与实现3.1 硬件设计方案在实现设计的时候,我们必须得将外观的结构的尺寸标准融合来完成设计硬件电路,我们设计硬件系统的规划就是需要真实,有效、简易。对于运行整个系统的通过的关键一点就是可靠性,因此,在电路硬件方面的设计的时候的各个环节都对于系统的平稳以及抗干扰性深入的考虑,系统的简易以及有效其实说的就是硬件系统于很大可靠性的前提下,对于这个硬件的电路进行简易,将这个硬件的性能给提升起来,这样可以完成简易有效的规划。在真实,简易以及有效的原则条件下,不但在选择元器件是便利的,对设计硬件电路也是有益的,还能够降低有些不需要的电路,确保系统稳定。由五个部分所组成的电路的硬件系统,详细查看图3.1.单片机最小系统激光发射部分激光接收部分音频驱动部分电源部分图3-1 结构图(关于这个硬件系统的组成)3.2 相对应得模块电路的规划思路与实现方法对于上一部份全部硬件电路系统的构架已经初步的进行概述,在这个章节之中我们主要是对于构成硬件电路的各个子模块还有其性能以及PCB电路板设计进行详细的概述。接下来是对于整个系统的4部分来进行具体概述。3.2.1 单片机最小系统单片微型计算机其实又可以被简单的叫做单片机。是一个整体的微型计算机。创建一个单片机最小系统,在这个系统之中具有包括这四个层面:分别为STC89C51RC以及是复位电路,还有就是振荡电路I/O接口。图3-1 单片机最小系统构成图复位电路即让寄存器的值变回原始值,复位电路详细可以经有两个渠道,一个是上电复位,一个是外部复位。上电复位于单片机在将电源连接好的时候,复位单片机的功能可以自身达到,外部复位在这里说明,通俗来讲便是由外部手动来达成复位的功能。总的来说此电路其实就是能够自身上电复位(在这地位时),还能够选择运用外部手动的方式来达到复位的目的。实际手动复位很少用到,所以我们把手动复位按键去掉,让电路更简洁。图3-2 复位电路振荡电路众所周知片内的时钟电路还有定时电路可以帮助我们实现所要的定时控制作用,在片内,我们有两种渠道可以达到时钟产生,便是我们大家所说的内部时钟方法以及外部时钟方法这两种,当然我们也可以称为内部振荡器以及外部振荡器这两种。在我们需要选择内部时钟方法的时候,反馈元件的片外晶体振荡器其实是片内的高增益反相放大器经过XTAL1、XTAL2外接来完成的,具体是配合并联谐振回路(这里指过我们的电容所构成的回路)由此来帮助我们一起形成自激振荡器,从而为我们的内部时钟电路输送了一个重要条件。这个条件便是震荡时钟,我们知道震荡器的频率在极大程度上被我们的晶体振荡频率所决定,在通常的情况下,晶体能够在一点二到十二兆赫中选择,电容能够在五到三十pF间选取的,电容的大小其实是可以在一点的程度上小小的影响到振荡频率的,能够发挥频率微微调节的作用运用外部时钟方式时钟的时候,连接到内部时钟电路是经过XTAL2来完成外部振荡信号,这个时候关于我们的内部反相放大器中它的输入端,也就是所说的XTAL1端,它此刻的状态为接地。一般情况下外接振荡信号它的大小,也就是小于十二赫兹,而且信号是方波信号。此时,关于如何制定这个振荡电路,我们应该通过内部时钟,此外对于外部晶体振荡器选择使用十二赫兹,电泳选择的是三十pF。图3-3 振荡电路单片机和I/O接口我们运用的单片机型号是STC89C51RC型的,这个设计的企业是宏晶,它是一个在8051内核的前提下设计的,运用了CMOS生产方式,这个单片机存在低功耗的特征,它存在四个八位的并行输入输出I/O接口:一个是P0,一个是P1,一个是P2,一个是P3(线是三十二个),专门运用对数据进行输入以及输出,另外,它的串行I/O接口数量是一个,这个定时器/计数器是两个十六位,中断系统是五级等。对此,我们需要的片机条件是:首先它得带有一个定时器/计数器,位数为十六。其次便是一个输入输出I/O口,位数为八。在谈到定时器/计数器的时候,无论它是我们单个存在的定时器芯片,亦或是包括在单片机内部的那个所谓的定时器,一般都是存在这些突出点:关于我们的定时器/计数器,如果想要它的运行起来,是可以有多种渠道的,一方面可以是定时方法,另一方面可以是计数的方法。再者就是定时器/计数器的计算数值,毫无疑问它并不是死板的而是可变通,此外关于技术它的max值,自然而然是有限制的,这很大程度上是依靠级数器它的尾数的前提下明确的,计数的最高值将定时的最大值给限定了。能够根据要求的定时以及要求的计数值,在两种情况下,一是定时时间到,再者就是终止计数的这样一个时刻,给予中断这样一个申请指令,来达成我们的主要目的,也就是定时控制。在我们利用到的STC89C51RC单片机中,大家都知道它的定时器是能够编程的,即运作渠道亦或是开启以及终止等等都是能够用于编程来进行控制的,需要经过对于寄存器TMOD、TCON、TH0、TL0、TH1进行设立,并且设立TL1就能过实现的,在对于定时器的工作方法进行设立之后,并且将这个定时器工作开启直呼,定时器是能够对于这个工作方式的独立进行设置的,不会对于CPU进行占用,若是计数器记载满之后,就能过主动的朝着CPU中断系统进行一个操作,也就是请求终止,中断这样一个指令一旦传达下去毫无疑问会那把我们的CPU资源给占用了。图3-4 定时器/计数器结构图3.2.2 激光发射模块关于光敏电阻电路部分,当光线照到光敏电阻的光越强,电阻值就越小。通过给光敏电阻接一个10k的上拉电阻,两个引脚分别接到单片机io口与地。由于激光光束集中,激光照到光敏时,电阻值变小,流过的电流变大,超过上拉电阻,此时io口被拉低。信号为低电平0。图3-5图3-5 激光发射管 图3-6 激光发射电路电路原理图3.2.3 激光接收模块激光接收电路的效果是对我们的激光接收管来进行一个检查,看它是不是能够对于相应的激光束完成我们的接收这样一个操作,实质是经由这样的一个电路把高、低电平信号给我们的单片机P2口运送,这样就可以更好的对于这个蜂鸣器或小型的音响进行控制,完成对于相应频率音频信号这样的一个要求。因为在运用点对点的方法的时候,确切的来说就是一个激光接收管仅仅只可以对于一个激光发射器射出的激光束进行接收,所以若是人体对于一个激光发射器射出的激光束进行阻断的时候,和其对应的极光由于无法接收这个激光束而让电平处于很低的状态,排除这样的状况一般都是属于高电平,这样就形成所要的控制信号,同叫低电平信号。图3-7为激光接收电路原理图,效果其实就是表示这个激光接收电路是不是对于这个激光束可以接收,若是能够接收,那么对应这个发光二极管就不会亮,反之就会发亮。简单说,就是手指遮挡某一个激光束,那个相应的LED就会亮起同时发出相应的音符。图3-7激光接收电路原理图3.2.4 发声模块我们选择了16无源蜂鸣器,音频信号通过IO,经三极管放大后传到蜂鸣器,使蜂鸣器发出相对应的音符。同时在信号输出io口并接了一个3.5MM的音频座,可以由此连接到音箱,效果更佳。无源蜂鸣器图3-8 音频驱动及接口电路原理图如图3-8,J1代表3.5毫米音频接口。单片机P00按程序指令发出特定频率的方波信号,Q1三极管会按此频率导通或截止,将该方波信号传递到蜂鸣器或外接小型音箱带动小的音箱奏出音乐。 关于音区的切换,切换按键由轻触按键与上拉电阻组成。在没按下按键时由上拉电阻输入高电平信号,当按下按键时,电平信号被拉低,变为输入低电平信号。如图3-11所示:图3-113.2.5 LED指示灯 LED音符指示灯,我们在用于弹奏音符的7个激光的对应位置加入了LED作提示灯,当某一个“琴弦”被弹奏时,与之相对应的LED就会亮起。第8个激光作为音区切换功能,可以切换高、中、低三个音区,所以用三个LED分别显示当前处于的音区。”弹“一下就切换一个音区,哪一个LED亮起就说明当前处于哪一个音区。3.2.6 电源供电单片机电压为5V,激光也为5V,为方便供电,我们选择最常用的5V USB供电,使得整体电路更为简明。一个LED作为电源工作指示灯,为保护LED,需要给LED串连一个限流电阻。作为提示用,不用太大亮度,一般选用1K电阻。3.2.7 模式切换在通过模式切换按键,可以在弹奏模式、音乐播放模式自由切换,上电默认为弹奏模式,按动按键切换到音乐播放模式,可以播放内置的音乐。再按一次回到弹奏模式软件设计与实现4.1 软件设计方案按照上面概述的系统硬件的概述,我们这一章节按照系统的软件设计部门来进行概述。音符是怎样出现的呢?人耳朵可以听见的声音频率是处于二十赫兹和二十千赫兹,我们都知道51单片机本身的十六个我们所说的定时器,所以在设计中,为了实现不一样的频率的方波信号,我们运用了定时器中断这样一个渠道。程序包括三部分,并且对应相应的功能,首先是主函数,为的是检查到p2端口值,经由if语句,可以知道哪一位低电平触发,其次是初始化函数,毫无疑问是对我们的定时器进行初始化的一个操作,再者就是开中断,最后是定时器中断函数,意义是达到对对象的输出,这个对象指的是我们所说的不同频率方波。具体看表5.1,下为音符相应的频率和简谱码进行了罗列。在图5-1能看到,软件的设计可以归为3块,首先是硬件资源配置,再一个是端口信号检测,接着是数据处理,实施环节中,最开始为配置,对象就是我们的硬件资源,紧接着是对于它所对着的端口信号有没有转变进行我们的一个操作,也就是检测,要是这个单片机端口信号出现改变,就能按照端口的信号表来展开对应的处理数据,完成处理数据之后,又去到端口信号检测,最终等到端口信号出现转变。图5-1 程序结构图4.2 各模块程序设计与实现在上面的整体说明之后,我们会对这三块进行详细的介绍。4.2.1 硬件资源配置配置硬件资源实质意义上来讲,便是为配置单片机定时器各个寄存器的参数。对于STC89C52RC型单片机,我们大家都知道它是由有有两种十六位位定时器/计数器,也就是T0和T1,两个都是能够当成是定时器或计数器来运用的。关于我们的定时器工作方式寄存器TMOD,它作用便是选择定时器的工作方式,高4位用来控制我们的T1,同样低4位用来控制我们的T0。下面具体为我们TMOD各位的定义:门控到位,专门对于这个定时器的启动进行控制,是不是会被外部中断所影响到,当GATE时等于零的时候,这个和外部中断是没有任何的关联的,因为TCON寄存器中的TRx位对于启动进行控制,当GATE时等于一的时候,控制位TRx以及脚一起来对于启动进行控制,所以仅仅只有在外部中断请求信号的状况下,确切的来说就是外部中断引脚等于一的时候,才能够开启了这个定时器。TMOD寄存器(复位清零) TCON(定时器控制寄存器)TCON各个位的如下面所定义:在此:TF0/TF1:这便是我们所说的T0/T1定时器溢出中断标志位。在一种情况下,也就是T0/T1计数溢出时,让我们的硬件置位,而且在同意中断的条件下,此时发出中断请求信号。在另一种情况下,也就是CPU响应中断转向中断服务程序时,让我们的硬件自动将该位清零。TR0/TR1:为T0/T1运行控制位。当TR0/TR1=1时启动T0/T1;TR0/TR1=0时关闭T0/T1。这个位是被我们的软件所设定的。正如我们所知TCON的低4位跟外部中断息息相关,TCON寄存器会清零。,在我们将它复位的时候在上文中讲过STC89C51RC单片机,关于它的的定时器/计数器,我们知道是可编程的,启用之前进行初始化的设置。当我们开始在编写的时候:一方面要求我们能正确写入控制字;在另一方面要求我们能进行计数初值的计算。具体而言,分为以下顺序渠道:把我们的工作方式定下来,这便是对开始赋值于我们的TMOD寄存器。在我们计算计数初值之后,我们需要做到同时写入寄存器,也就是我们所说的TH0、TL0或TH1、TL1中。这时候通过对我们ETx置位进而允许T/C中断(必要条件下)。接下来通过对我们EA的置位进而让我们的CPU开中断(必要条件下)。最后通过对我们TRx置位进而启动计数器。现在讲关于计算方式(计数初值):定时器/计数器是以通过加1的方法来进行计数,代表与减1计数器我们之前用过的这种有异。当我们处于定时方式的时候:当认定时间常数为T(这里不做说明),然后同样认为定时时间T,这时候T= TT,于是我们可以知道也就是时间常数是 : T= (5-1)(在这里说明)T为机器周期(12/晶振频率)。应装入定时器/计数器的开始值为:X=2- T (n为计数器的位数)(5-2)在计数方式下:假设计数值为N,则应装入的计数开始值为: X=2-N(n为计数器的位数)(5-3)T0初始化程序 :/初始化函数/void init()TMOD=0 x01;/定时器0工作在方式1EA=1;/开总中断ETA=1;/ 代表了我们的开定时器0状态是中断fmq=1;/关音箱 可以看出没有把定时器T0也设成最开始的数值,也为于设计处于初始化的时候,定时器就能过运行,之所以这样,是确保定时器T0才得以运行,是在我们需要的条件下,此外还需要做到定时器T0在运用查表的情况下,对于不同的状况,可以设定不同的初始值。4.2.2 端口信号检测当我们的8个特定值都被定下来的条件下,如果单片机这个时候P2端口,它的值是特定值的话,便告诉我们它的某一位电平是低电平,剩余的便是高电平。同时意味着端口信号检测程序的确切为发现某一时刻P2端口中单独哪一位是低电平。所谓的端口信号检测,目的是确定8位P2并行输入/输出I / O端口的端口值。 在主函数中,我们可以借助if 语句,从而知道事先设定的值是否与p2端口一致,最终对变量music_note实现赋值。我们建立8个具体的价值。 当微控制器P2的端口值为特定值时,表示单片机P2的微计算机端口的一位为低电平,剩下的是高电平。42.3 数据处理在端口信号的检测完成之后,我们需要完成数据的处理,也就是根据执行数据处理操作后,我们所的得到的检测结果,关于处理后内容绝大一部分是基于检测端口信号的结果,并且它被计算并加载到微控制器的定时器,也就是我们所说的T0的初始值。 下面为详细说明:temp_THO=music_tabmusic_note/256; /为T0为高八位预装入初始值temp_TLO=music_tabmusic_note/256; /为T0为低八位预装入初始值当我们得到初始值后,不会把它装入定时器,而是暂时放到一个地方,这个地方指的是1个临时变量,也就是temp_TH0以及temp_TL0,取决于整体程序设计。借助查表这样一个步骤,经由我们的变量music_note,利用她它的的值来帮助我们找到数组music_tab的对应元素 与此同时让它分离后各自进入临时变量temp_TH0以及temp_TL0,这样做的意义是为了供定时器T0做初始值使用。4.2.4音符输出用位定义,定义一个io口,来作为音符频率信号输出sbit fmq=P00; /蜂鸣器用定时器来控制fmq产生不同周期的方波通过IO口输出到蜂鸣器或音箱弹奏不同激光,给定时器放入不同的音符频率周期。DSQ_T1=(65536*12*1000000/JINGZHEN-1000000/pl/2);4.2.5 LED音符与音区指示弹奏某一个音符时,相对应的LED就会亮起。在激光检测程序中,加入LED亮灯的程序,当某音符被弹奏,运行产生音符频率的程序的同时运行LED亮灯程序。用整个P1口驱动LED。音区切换的三个LED用了三个io口P01、P02、P03来驱动。用if判断语句来检测音区切换信号。音区在高、中、低顺序切换。如当前在中音区,当检测到一次信号后,音区变为低,对应LED也变为低音的指示灯。if(pSZ*2=0 x416)P1=keymode0;else if(pSZ*2=0 x496)P1=keymode1;else if(pSZ*2=0 x526)P1=keymode2;else if(pSZ*2=0 x574)P1=keymode3;else if(pSZ*2=0 x61f)P1=keymode4;else if(pSZ*2=0 x6e0)P1=keymode5;else if(pSZ*2=0 x7b7)P1=keymode6;/*中*/ else if(pSZ*2=0 x20b)P1=keymode0;else if(pSZ*2=0 x24b)P1=keymode1;else if(pSZ*2=0 x293)P1=keymode2;else if(pSZ*2=0 x2ba)P1=keymode3;else if(pSZ*2=0 x310)P1=keymode4;else if(pSZ*2=0 x370)P1=keymode5;else if(pSZ*2=0 x3db)P1=keymode6;/*低*/else if(pSZ*2=0 x106)P1=keymode0;else if(pSZ*2=0 x11e)P1=keymode1;else if(pSZ*2=0 x137)P1=keymode2;else if(pSZ*2=0 x15d)P1=keymode3;else if(pSZ*2=0 x188)P1=keymode4;else if(pSZ*2=0 x1b8)P1=keymode5;else if(pSZ*2=0 x1ee)P1=keymode6;4.2.6 播放音乐部分下图为程序中乐曲各音符所对应的定时器值与音符播放的时间具体组成如下:4.2.7模式切换整个程序由弹奏与播放音乐两大部分,由此加入了一个按键来切换模式。 if(k0=0)/【弹奏/播放】切换delay1ms(15);if(k0=0) zd=!zd;SZ=0;P1=0 x00;while(k0=0);P1=0 xff;当zd等于0时,为弹奏模式,当zd等于1时,为音乐播放模式,首次上电时为弹奏模式。if(zd=0)anjian();if(zd=1)yinyue();4.3 软件开发工具介绍利用的是Keil Software公司研发的uVision3,它的结构组成如图5-4所示。图5-4 结构组成(uVision)测试与分析在完成硬件系统设计和软件系统设计后,需要在具体实现之前进行相关测试,以检验硬件系统和软件系统的相关设计是否合理可行。确保最小风险能达到正常稳定运行的目标。程序部分硬件部分实物图总结与展望在系统调试的过程中,我们总结出影响系统正常稳定工作的两大因素是半导体激光发射器相互间的干扰和系统结构设计的稳定性。我们在如何增强系统抗干扰能力的问题上,指出传统设计采用模拟型器件光敏电阻作为激光光束接收单元传感器极易受到外部环境光线强度变化的影响而引发较大干扰的缺陷。由此展开探讨,决定使用受外部环境光线强度变化影响极小的数字型激光接收管替代光敏电阻,并采用半导体激光发射器与激光接收管点对点式发射与接收。以上所做设计及改进极大程度地增强了系统的抗干扰能力,确保了系统能够在任何光线强度的环境下正常稳定工作。这也是我们该设计的最大优点之处。此外,我们在发声部分也一改传统设计,用成品音响取代传统设计上的扬声器,使得系统可以获得极佳的、可调音量的音质。这也是我们该设计的又一具有创新性的亮点之处。反观我们整个设计,鉴于它设计原理的通用性、生产成本的逐步降低和产品稳定性的日益增强,相信它将会在新形电子乐器设计中得到进一步完善和发展。附录附录A 主程序#include/STC89c52单片机头文件#define JINGZHEN 12000000 /宏定义晶振的频率为12M#define uchar unsigned char#define uint unsigned int sbit k0=P32; /【手弹/播放】模式切换按键sbit k1=P20;/ 【 】 下一首的按键为P2.1,检测io口1为有效sbit k4=P33;/定义低/中/高音切换按键sbit fmq=P00; /蜂鸣器sbit LEDa=P10;/ 【 】 下一首 按键指示灯uchar i=0;uchar q=1;uchar XY=0,YINFU,YINCHANG,SZ,XQ=0;uint DSQ_T1;uint pl; /音符频率,延时计数变量/*/*音符*/uint code tone0=0 x106,0 x11e,0 x137,0 x15d,0 x188,0 x1b8,0 x1ee, /低音 0 x20b,0 x24b,0 x293,0 x2ba,0 x310,0 x370,0 x3db, /中音 0 x416,0 x496,0 x526,0 x574,0 x61f,0 x6e0,0 x7b7;/高音/*键值*/uchar code keymode=0 xfe,0 xfd,0 xfb,0 xf7,0 xef,0 xdf,0 xbf,0 x7f;/按键值,对应io:0,1,2,3,4,5,6,7uchar YANSHI=0,1,2,4,8,12,16;/*延时1ms函数*/void delay1ms(uchar a)/延时1msuchar x;while(a-) for(x=0;x=1)/【】下一首TR1=0;delay1ms(10);if(k3=1)SZ=0;XQ+;P1=0 xff;/清除其它显示的灯LEDc=0;/按键指示灯while(k3=1);LEDc=1;/*/if(kaishi=0) if(XY=0)XY=1;YINFU=YANSHIpSZ*2+1/16; YINCHANG=YANSHIpSZ*2+1%16;DSQ_T1=(65536*12*1000000/JINGZHEN-1000000/pSZ*2/2);/把频率装到定时器T1 /*LED灯*if(d=7) d=0;P1=keymoded;d+;/LED */*高*/if(pSZ*2=0 x416)P1=keymode0;else if(pSZ*2=0 x496)P1=keymode1;else if(pSZ*2=0 x526)P1=keymode2;else if(pSZ*2=0 x574)P1=keymode3;else if(pSZ*2=0 x61f)P1=keymode4;else if(pSZ*2=0 x6e0)P1=keymode5;else if(pSZ*2=0 x7b7)P1=keymode6;/*中*/ else if(pSZ*2=0 x20b)P1=keymode0;else if(pSZ*2=0 x24b)P1=keymode1;else if(pSZ*2=0 x293)P1=keymode2;else if(pSZ*2=0 x2ba)P1=keymode3;else if(pSZ*2=0 x310)P1=keymode4;else if(pSZ*2=0 x370)P1=keymode5;else if(pSZ*2=0 x3db)P1=keymode6;/*低*/else if(pSZ*2=0 x106)P1=keymode0;else if(pSZ*2=0 x11e)P1=keymode1;else if(pSZ*2=0 x137)P1=keymode2;else if(pSZ*2=0 x15d)P1=keymode3;else if(pSZ*2=0 x188)P1=keymode4;else if(pSZ*2=0 x1b8)P1=keymode5;else if(pSZ*2=0 x1ee)P1=keymode6;/ if(YINFU!=0) /音符响的时间 TR1=1;/开启蜂鸣器定时器T1 if(i=130) i=0;YINFU-; / if(YINFU=0) /停顿的时间 TR1=0;/关闭蜂鸣器定时器T1 if(YINCHANG!=0) if(i=130) i=0;YINCHANG-; / else if(YINCHANG=0) if(pSZ*2=0) SZ=0;XQ+;/音乐曲目选择标志 else SZ+; XY=0; / /*/*定时器初始化*/void Timer0Init(void)/10毫秒12.000MHzEA=1;/开启总中断/EX0=1;/允许使用外中断/IT0=1;/负跳变触发外中断ET0=1;/定时器T0中断允许TMOD|=0 x01;/使用定时器T0模式1TL0 = 0 xF0;/设置定时初值TH0 = 0 xD8;/设置定时初值TR0=1;/启动定时器T0TF0=0;/溢出标志位,清零/*T1设置*/PT1=1; /*定时器T1高优先级(把T1设为最优先级后杂音消失)TMOD|=0 x10; /使用定时器T1的模式1ET1=1;/定时器T1中断允许TR1=0;/不启动定时器T1TF1=0;/溢出标志位清零 /*/*定时器T0的中断服务程序*/void Time0() interrupt 1 TR0=0;i+;/音乐延时变量TL0 = 0 x18;/设置定时初值1msTH0 = 0 xFC;/设置定时初值1msTR0=1;/*/*定时器T1的中断服务程序*/void Time1(void) interrupt 3 fmq=fmq; /每进入一次中断就取反一次TH1=DSQ_T1/256;/定时器T1的高8位重新赋初值TL1=DSQ_T1%256;/定时器T1的低8位重新赋初值附录B 整体电路图基于51单片机的激光竖琴设计2
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 研究报告 > 家居行业


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!