应用电子技术毕业设计(论文)基于AT89S51单片机的电子琴_第1页
应用电子技术毕业设计(论文)基于AT89S51单片机的电子琴_第2页
应用电子技术毕业设计(论文)基于AT89S51单片机的电子琴_第3页
应用电子技术毕业设计(论文)基于AT89S51单片机的电子琴_第4页
应用电子技术毕业设计(论文)基于AT89S51单片机的电子琴_第5页
已阅读5页,还剩34页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、 电子工程学院毕业论文(设计)课 题 基于at89s51单片机的电子琴 教 研 室 电子工程学院 专 业 应用电子技术 班 级 08应用电子 学生姓名 学号 导师姓名 2010年12月 1 日目 录摘要1引言2第一章、方案论证31.1原理图31.2系统板硬件连线41.3主要芯片简介41.3.1at89s51简介41.3.2 lm38661.3.3led数码管7第二章、实现过程82.1 4x4行列式键盘识别及显示82.1.1硬件板上的系统连线设计92.1.2 程序设计内容102.1.3 i/o并行口直接驱动led显示112.2 音乐产生的方法132.2.1 原理132.2.2 程序框图16第三章

2、、总结与展望163.1全文总结163.2研究展望17结束语18参考文献19致谢20附录21摘 要随着社会的发展进步,音乐逐渐成为我们生活中很重要的一部分,有人曾说喜欢音乐的人不会向恶。我们都会抽空欣赏世界名曲,作为对精神的洗礼。本论文设计一个基于单片机的简易电子琴。我们对于电子琴如何实现其功能,如音色选择、声音强弱控制、节拍器、自动放音功能等等也很好奇。电子琴是现代电子科技与音乐结合的产物,是一种新型的键盘乐器。它在现代音乐扮演着重要的角色,单片机具有强大的控制功能和灵活的编程实现特性,它已经溶入现代人们的生活中,成为不可替代的一部分。本文的主要内容是用at89s51单片机为核心控制元件,设计

3、一个电子琴。以单片机作为主控核心,与键盘、扬声器等模块组成核心主控制模块,在主控模块上设有16个按键和扬声器。本系统运行稳定,其优点是硬件电路简单,软件功能完善,控制系统可靠,性价比较高等,具有一定的实用和参考价值。关键词:at89s51单片机 音色 节拍器 自动放音 引 言单片微型计算机是大规模集成电路技术发展的产物,属第四代电子计算机,它具有高性能、高速度、体积小、价格低廉、稳定可靠、应用广泛的特点。它的应用必定导致传统的控制技术从根本上发生变革。因此,单片机的开发应用已成为高科技和工程领域的一项重大课题。 电子琴是现代电子科技与音乐结合的产物,是一种新型的键盘乐器。它在现代音乐扮演着重要

4、的角色,单片机具有强大的控制功能和灵活的编程实现特性,它已经溶入现代人们的生活中,成为不可替代的一部分。本文的主要内容是用at89s51单片机为核心控制元件,设计一个电子琴。以单片机作为主控核心,与键盘、扬声器等模块组成核心主控制模块,在主控模块上设有16个按键和扬声器。 本文主要对使用单片机设计简易电子琴进行了分析,并介绍了基于单片机电子琴统硬件组成。利用单片机产生不同频率来获得我们要求的音阶,最终可随意弹奏想要表达的音乐。并且本文分别从原理图,主要芯片,各模块原理及各模块的程序的调试来详细阐述。 一首音乐是许多不同的音阶组成的,而每个音阶对应着不同的频率,这样我们就可以利用不同的频率的组合

5、,即可构成我们所想要的音乐了,当然对于单片机来产生不同的频率非常方便,我们可以利用单片机的定时/计数器t0来产生这样方波频率信号,因此,我们只要把一首歌曲的音阶对应频率关系弄正确即可。第一章 方案论证1.1原理图图1-1 电子琴电路图1.2系统板硬件连线 系统板硬件连线如图1-1所示,发生模块,键盘模块,及led显示模块连接如下1.把“单片机系统”区域中的p1.0端口用导线连接到“音频放大模块”区域中的spk in端口上;2.把“单片机系统”区域中的p3.0p3.7端口用8芯排线连接到“4x4行列式键盘”区域中的c1c4r1r4端口上;3.把“单片机系统”区域中的p0.0/ad0p0.7/ad

6、7端口用8芯排线连接到“四路静态数码显示模块”区域中的任一个ah端口上;要求:p0.0/ad0对应着a,p0.1/ad1对应着b,p0.7/ad7对应着h。1.3 主要芯片简介1.3.1 at89s51简介at89s51是一个低功耗,高性能cmos 8位单片机,片内含4k bytes isp(in-system programmable)的可反复擦写1000次的flash只读程序存储器,器件采用atmel公司的高密度、非易失性存储技术制造,兼容标准mcs-51指令系统及80c51引脚结构,芯片内集成了通用8位中央处理器和isp flash存储单元,功能强大的微型计算机的at89s51可为许多嵌

7、入式控制应用系统提供高性价比的解决方案。 at89s51具有如下特点:40个引脚(引脚图如图1-2所示),4k bytes flash片内程序存储器,128 bytes的随机存取数据存储器(ram),32个外部双向输入/输出(i/o)口,5个中断优先级2层中断嵌套中断,2个16位可编程定时计数器,2个全双工串行通信口,看门狗(wdt)电路,片内时钟振荡器。 此外,at89s51设计和配置了振荡频率可为0hz并可通过软件设置省电模式。空闲模式下,cpu暂停工作,而ram定时计数器,串行口,外中断系统可继续工作,掉电模式冻结振荡器而保存ram的数据,停止芯片其它功能直至外中断激活或硬件复位。同时该

8、芯片还具有pdip、tqfp和plcc等三种封装形式,以适应不同产品的需求。 图1-2 管脚图1.3.1.1 主要功能特性 兼容mcs-51指令系统 32个双向i/o口 2个16位可编程定时/计数器 全双工uart串行中断口线 2个外部中断源 中断唤醒省电模式 看门狗(wdt)电路 灵活的isp字节和分页编程 4k可反复擦写isp flash rom 4.5-5.5v工作电压 时钟频率0-33mhz 128*8bit内部ram 低功耗空闲和省电模式 3级加密位 软件设置空闲和省电功能 双数据寄存器指针1.3.2 lm3861.3.2.1 lm386内部电路lm386是美国国家半导体公司生产的音

9、频功率放大器,主要应用于低电压消费类产品。lm386特性:静态功耗低,约为4ma,可用于电池供电;工作电压范围宽,4v-12v或5v-18v;外围元件少;电压增益可调,20-200;低失真度。lm386是一种音频集成功放,具有自身功耗低、电压增益可调整、电源电压范围大、外接元件少和总谐波失真小等优点,广泛应用于录音机和收音机之中。图1-3 lm386内部电路原理图lm386内部电路原理图如图1-3所示。与通用型集成运放相类似,它是一个三级放大电路. 第一级为差分放大电路,t1和t3、t2和t4分别构成复合管,作为差分放大电路的放大管;t5和t6组成镜像电流源作为t1和t2的有源负载;t3和t4

10、信号从管的基极输入,从t2管的集电极输出,为双端输入单端输出差分电路。使用镜像电流源作为差分放大电路有源负载,可使单端输出电路的增益近似等于双端输出电容的增益 第二级为共射放大电路,t7为放大管,恒流源作有源负载,以增大放大倍数。 第三级中的t8和t9管复合成pnp型管,与npn型管t10构成准互补输出级。二极管d1和d2为输出级提供合适的偏置电压,可以消除交越失真。 引脚2为反相输入端,引脚3为同相输入端。电路由单电源供电,故为otl电路。输出端(引脚5)应外接输出电容后再接负载。 电阻r7从输出端连接到t2的发射极,形成反馈通路,并与r5和r6构成反馈网络,从而引入了深度电压串联负反馈,使

11、整个电路具有稳定的电压增益。图2.3 音频放大器电路1.3.3 led数码管图1-4 7段数码管 figure1-4 7 segment digital tube数码管(如图1-4所示)使用条件:a、段及小数点上加限流电阻b、使用电压:段:根据发光颜色决定;小数点:根据发光颜色决定c、使用电流:静态:总电流 80ma(每段 10ma);动态:平均电流 4-5ma 峰值电流 100ma上面这只是七段数码管引脚图,其中共阳极数码管引脚图和共阴极的是一样的。数码管使用注意事项说明:(1)数码管表面不要用手触摸,不要用手去弄引角;(2)焊接温度:260度;焊接时间:5s(3)表面有保护膜的产品,可以在

12、使用前撕下来。第二章 实现过程2.1 4x4行列式键盘识别及显示组成键盘的按键有机械式、电容式、导电橡胶式、薄膜式多种,但不管什么形式,其作用都是一个使电路接通与断开的开关。目前微机系统中使用的键盘按其功能不同,通常可分为编码键盘和非编码键盘两种基本类型。 编码键盘:键盘本身带有实现接口主要功能所需的硬件电路。不仅能自动检测被按下的键,并完成去抖动、防串键等功能,而且能提供与被按键功能对应的键码(如ascii码)送往cpu。所以,编码键盘接口简单、使用方便。但由于硬件电路较复杂,因而价格较贵。 非编码键盘:键盘只简单地提供按键开关的行列矩阵。有关按键的识别、键码的确定与输入、去抖动等功能均由软

13、件完成。目前微机系统中,一般为了降低成本大多数采用非编码键盘。 键盘接口必须具有去抖动、防串键、按键识别和键码产生4个基本功能。 (1)去抖动:每个按键在按下或松开时,都会产生短时间的抖动。抖动的持续时间与键的质量相关,一般为520mm。所谓抖动是指在识别被按键是必须避开抖动状态,只有处在稳定接通或稳定断开状态才能保证识别正确无误。去抖问题可通过软件延时或硬件电路解决。 (2)防串键:防串键是为了解决多个键同时按下或者前一按键没有释放又有新的按键按下时产生的问题。常用的方法有双键锁定和n键轮回两种方法。双键锁定,是当有两个或两个以上的按键按下时,只把最后释放的键当作有效键并产生相应的键码。n键

14、轮回,是当检测到有多个键被按下时,能根据发现它们的顺序依次产生相应键的键码。 (3)被按键识别:如何识别被按键是接口解决的主要问题,一般可通过软硬结合的方法完成。常用的方法有行扫描法和线反转法两种。行扫描法的基本思想是,由程序对键盘逐行扫描,通过检测到的列输出状态来确定闭合键,为此,需要设置入口、输出口一个,该方法在微机系统中被广泛使用。线反转法的基本思想是通过行列颠倒两次扫描来识别闭合键,为此需要提供两个可编程的双向输入/输出端口。 (4)键码产生:为了从键的行列坐标编码得到反映键功能的键码,一般在内存区中建立一个键盘编码表,通过查表获得被按键的键码。用at89s51的并行口p1接44矩阵键

15、盘,以p1.0p1.3作输入线,以p1.4p1.7作输出线;在数码管上显示每个按键的“0f”序号。图2-1 键盘识别模块2.1.1 系统板上硬件连线设计键盘模块硬件连线如图2-1所示:(1)把“单片机系统”区域中的p3.0p3.7端口用8芯排线连接到“4x4行列式键盘”区域中的c1c4r1r4端口上;(2)把“单片机系统”区域中的p0.0/ad0p0.7/ad7端口用8芯排线连接到“7段数码显示模块”区域中的任一个ah端口上;要求:p0.0/ad0对应着a,p0.1/ad1对应着b,p0.7/ad7对应着h。2.1.2 程序设计内容(1)44矩阵键盘识别处理,每个按键有它的行值和列值,行值和列

16、值的组合就是识别这个按键的编码。矩阵的行线和列线分别通过两并行接口和cpu通信。每个按键的状态同样需变成数字量“0”和“1”,开关的一端(列线)通过电阻接vcc,而接地是通过程序输出数字“0”实现的。(2)键盘处理程序的任务是:确定有无键按下,判断哪一个键按下,键的功能是什么;还要消除按键在闭合或断开时的抖动。两个并行口中,一个输出扫描码,使按键逐行动态接地,另一个并行口输入按键状态,由行扫描值和回馈信号共同形成键编码而识别按键,通过软件查表,查出该键的功能。电路图如下图2.1.1 行列式键盘电路2.1.3 i/o并行口直接驱动led显示led显示模块如图2-2所示,利用at89s51单片机的

17、p0端口的p0.0p0.7连接到一个七段数码管的ah的笔段上,数码管的公共端接地。在数码管上循环显示07数字,时间间隔0.2秒。图2-2 电路原理图系统板上硬件连线:(如图2-2所示) 把“单片机系统”区域中的p0.0/ad0p0.7/ad7端口用8芯排线连接到“七段数码显示模块”区域中的任一个数码管的ah端口上;要求:p0.0/ad0与a相连,p0.1/ad1与b相连,p0.2/ad2与c相连,p0.7/ad7与h相连。程序设计内容 (1)led数码显示原理: 七段led显示器内部由七个条形发光二极管和一个小圆点发光二极管组成,根据各管的极管的接线形式,可分成共阴极型和共阳极型。 led数码

18、管的ga七个发光二极管因加正电压而发亮,因加零电压而不以发亮,不同亮暗的组合就能形成不同的字形,这种组合称之为字形码,下面给出共阴极的字形码表(如表2-1所示)表2-1 字形码表“0”3fh“8”7fh“1”06h“9”6fh“2”5bh“a”77h“3”4fh“b”7ch“4”66h“c”39h“5”6dh“d”5eh“6”7dh“e”79h“7”07h“f”71h(2)由于显示的数字09的字形码没有规律可循,只能采用查表的方式来完成我们所需的要求了。这样我们按着数字09的顺序,把每个数字的笔段代码按顺序排好!建立的表格如下所示:tabledb 3fh,06h,5bh,4fh,66h,6dh

19、,7dh,07h,7fh,6fh。2.2 音乐产生的方法2.2.1 原理一首音乐是许多不同的音阶组成的,而每个音阶对应着不同的频率,这样我们就可以利用不同的频率的组合,即可构成我们所想要的音乐了,当然对于单片机来产生不同的频率非常方便,我们可以利用单片机的定时/计数器t0来产生这样方波频率信号,因此,我们只要把一首歌曲的音阶对应频率关系正确即可。若要产生音频脉冲,只要算出某一音频的周期(1/频率),再将此周期除以2,即为半周期的时间。利用定时器计时半周期时间,每当计时终止后就将p1.0反相,然后重复计时再反相。就可在p1.0引脚上得到此频率的脉冲。 利用at89c51的内部定时器使其工作计数器

20、模式(mode1)下,改变计数值th0及tl0以产生不同频率的方法产生不同音阶,例如,频率为523hz,其周期t1/5231912s,因此只要令计数器计时956s/1s956,每计数956次时将i/o反相,就可得到中音do(523hz)。 计数脉冲值与频率的关系式(如式2-1所示)是: nfi2fr 2-1式中,n是计数值;fi是机器频率(晶体振荡器为12mhz时,其频率为1mhz);fr是想要产生的频率。其计数初值t的求法如下: t65536n65536fi2fr 例如:设k65536,fi1mhz,求低音do(261hz)、中音do(523hz)、高音do(1046hz)的计数值。 t65

21、536n65536fi2fr6553610000002fr65536500000/fr 低音do的t65536500000/26263627 中音do的t65536500000/52364580 高音do的t65536500000/104665059单片机12mhz晶振,高中低音符与计数t0相关的计数值如表2-2所示表2-2 音符频率表音符频率(hz)简谱码(t值)音符频率(hz)简谱码(t值)低1do26263628# 4 fa#74064860#1do#27763731中 5 so78464898低2re29463835# 5 so#83164934#2 re#31163928中 6 la

22、88064968低 3 m33064021# 693264994低 4 fa34964103中 7 si98865030# 4 fa#37064185高 1 do104665058低 5 so39264260# 1 do#110965085# 5 so#41564331高 2 re117565110低 6 la44064400# 2 re#124565134# 646664463高 3 m131865157低 7 si49464524高 4 fa139765178中 1 do52364580# 4 fa#148065198# 1 do#55464633高 5 so156865217中 2 re

23、58764684# 5 so#166165235# 2 re#62264732高 6 la176065252中 3 m65964777# 6186565268中 4 fa69864820高 7 si196765283我们要为这个音符建立一个表格,单片机通过查表的方式来获得相应的数据 低音019之间,中音在2039之间,高音在4059之间 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

24、, 64684, 64777, 64820, 64898, 64968, 65030, 0, 0 dw 0, 64633, 64732, 0, 64860, 64934, 64994, 0, 0, 0 dw 0, 65058, 65110,65157, 65178, 65217, 65252, 65283, 0, 0 dw 0, 65085, 65134, 0, 65198, 65235, 65268, 0, 0, 0 dw 0音乐的音拍,一个节拍为单位(c调)(如表2-3所示)表2-3 曲调值表曲调值delay曲调值delay调4/4125ms调4/462ms调3/4187ms调3/494m

25、s调2/4250ms调2/4125ms对于不同的曲调我们也可以用单片机的另外一个定时/计数器来完成。琴键处理程序,根据检测到得按键值,查询音律表,给计时器赋值,发出相应频率的声音。对音调的控制:根据不同的按键,对定时器t1送入不同的初值,调节t1的溢出时间,这样就可以输出不同音调频率的方波。不同音调下各个音阶的定时器。在这个程序中用到了两个定时/计数器来完成的。其中t0用来产生音符频率,t1用来产生音拍。2.2.2 程序框图音乐发声程序框图如图2-4所示:图2-4 音乐发声程序框图第三章 总结与展望3.1全文总结通过这次毕业设计,我学到了不少课本上没有的知识,也锻炼了自己的动手能力,将以前学过

26、的零散的知识串到一起。首先在毕业设计刚开始的调研阶段,我学会了怎么通过各种方式查询相关的资料。通过对这些资料的学习,我大致了解了单片机的发展现状以及未来的发展趋势,认识到目前单片机方面的各种各样的发展,和它们之间的竞争。了解了单片机方面的先进技术,这些都为我的未来的学习指明了方向。我的毕业设计主要涉及硬件和软件两方面的内容,通过这些我的硬件和软件开发能力都获得了提高。首先硬件方面,基本了解了电子产品的开发流程和所要做的工作。基本掌握了protel99se原理图的方法,并设计了一个单片机最小系统。通过开发板的设计和硬件搭建的过程,使我对51系单片机的接口有了更深层次的理解,熟悉了一些单片机常用的

27、外围电路引脚和连接方法,如led数码管,键盘等。在软件方面,通过串行口调试工具的开发,使我加深了对累封装的理解,熟悉了51系列单片机内部的寄存器和编程规则,以及如何控制外围电路。3.2研究展望微型计算机的出现和大量使用将人类社会带入一个新的时代,单片微型计算机(简称单片机)在其中扮演着十分重要的角色。虽然它没有常见的pc那样大的体积和重量,不会在办公桌或控制台上占据一个显要的位置,但它就像小小的螺丝钉一样,镶嵌在人们工作、生活中需要计算、控制、测量等智能活动的各个角落。自20世纪70年代问世以来,单片机以其体积小、可靠性高、控制功能强、使用方便、性能价格比高、容易产品化等特点,在智能仪表、机电

28、一体化、实时控制、分布式多机系统、家用电器等各个领域得到了广泛应用,对各个行业的技术改造和产品的更新换代起着重要的推动作用,对人们生活质量的提高产生了深刻的影响。作为21世纪的工科大学生,学好单片机,一方面可以加深对计算机原理和结构的认识,另一方面也为自身在专业上的深入发展构筑了一个很好的平台其重要性怎么强调都不为过。结 束 语将程序烧入芯片,调试成功后,可任意弹奏自己想要的旋律。本研究通过制作电子琴,将几个模块很好的融合起来,对使用单片机设计简易电子琴进行了分析,并介绍了基于单片机电子琴统硬件组成。利用单片机产生不同频率来获得我们要求的音阶,最终可随意弹奏想要表达的音乐。说明一首音乐是许多不

29、同的音阶组成的,而每个音阶对应着不同的频率,这样我们就可以利用不同的频率的组合,即可构成我们所想要的音乐了,于是我们可以利用单片机的定时/计数器t0来产生这样方波频率信号,因此,我们只要把一首歌曲的音阶对应频率关系弄正确即可,然后我们利用功放电路来将音乐声音放大,同时通过显示模块来确知自己所弹的音符。 不足之处有:1.可弹奏的音符数较少,只能在一定范围内满足用户需要。可通过改进键盘识别模块和发生模块来增加其复杂度。 2.音量不可调。可通过改进功放电路,即在lm386的1脚和8脚间增加一直外界电阻和电容,将3脚与地之间的电阻换为10k的变阻,即可调节其放大增益。参考文献1 陈明荧8051单片机课

30、程设计实训教材m北京:清华大学出版社,2003年9月2 徐新艳单片机原理、应用与实践m北京:高等教育出版社,2005年3月3 吴金戌,沈庆阳,郭庭吉8051单片机实践与应用m第一版北京:清华大学出版社,2002年4 吴金戌,沈庆阳,郭庭吉,8051单片机实践与应用m清华大学出版社,20015 冯博琴,微型计算机原理与接口技术m清华大学出版社,20046 张毅刚,mcs-51单片机应用设计m哈尔滨工业大学出版社,20047 张淑清,姜万录等,单片微型计算机接口技术及应用m国防工业出版社,20038 吴金戌,沈庆阳,郭庭吉,8051单片机实践与应用m清华大学出版社,20019 冯博琴,微型计算机原

31、理与接口技术m清华大学出版社,200410 张毅刚,mcs-51单片机应用设计m哈尔滨工业大学出版社,200411 龙威林,杨冠声,胡山.单片机应用入门:at89s51和avrm.北京:化学工业出版社,2008. 12 黄鑫,马善农,赵永科.基于cpld的电子琴研究与设计j.科技广场,2007(5). 13 赵亮,侯国锐.单片机c语言编程与实例m.北京:人民邮电出版社,2003. 14 杨恢先,黄辉先.单片机原理及应用m.北京:人民邮电出版社,2006. 15 张虹.单片机原理及应用m.北京:中国电力出版社,2009. 16 李云钢,邹逢兴,龙志强. 单片机原理与应用系统计j.北京:中国水利水

32、电出版社,2008.致 谢 这次毕业论文能够得以顺利完成,是所有曾经指导过我的老师,帮助过我的同学,一直支持着我的家人对我的教诲、帮助和鼓励的结果。我要在这里对他们表示深深的谢意! 首先,要特别感谢我的指导老师高建党老师。高老师在我毕业论文的撰写过程中,给我提供了极大的帮助和指导。从开始选题到中期修正,再到最终定稿,高老师给我提供了许多宝贵建议。老师渊博的专业知识,严谨的治学态度,精益求精的工作作风,诲人不倦的高尚师德,朴实无华、平易近人的人格魅力对我影响深远。不仅使我树立了远大的学术目标、掌握了基本的研究方法,还使我明白了许多待人接物与为人处世的道理。 其次,要感谢所有曾经教我们电子信息的任

33、课老师,老师们教会我的不仅仅是专业知识,更多的是对待学习、对待生活的态度。 第三,感谢我的父母亲,你们是我力量的源泉,只要有你们,不管面对什么样的困难,我都不会害怕,谢谢你们对我的支持与鼓励! 再次,感谢我的室友及其他好友,因为有你们的帮助,我的论文得以顺利完成。感谢你们,大学三年给我了那么多的帮助与鼓励,在我不开心的时候,总能让我开心起来。不会忘记,大学三年里我们一起度过的欢乐时光,那些开心的日子,总是那么令人难以忘怀。 最后对老师,同学和家人再次致以我最衷心的感谢!教导过我的老师,你们的人格魅力永记我心间。身边的同学和朋友,有你们,我的大学才算完整。寝室的好友,你们的天赋犹如上天恩赐,有了

34、你们我的生活更加精彩。附 录电路原理图:程序框图程序框图如图所示:c语言源程序#includeunsigned char code table=0x3f,0x06,0x5b,0x4f,0x66, 0x6d,0x7d,0x07,0x7f,0x6f;unsigned char discount;void delay02s(void) unsigned char i, j, k; for(i=20;i0;i-) for(j=20;j0;j-) for(k=248;k0;k-);void main(void) while(1) for(discount=0;dispcount0;i-)for(j=20

35、0;j0;j-);temp=p3;temp=temp & 0x0f;if (temp!=0x0f)temp=p3;temp=temp & 0x0f;switch(temp)case 0x0e:key=7;break;case 0x0d:key=8;break;case 0x0b:key=9;break;case 0x07:key=10;break;temp=p3;p1_0=p1_0;p0=tablekey;temp=temp & 0x0f;while(temp!=0x0f)temp=p3;temp=temp & 0x0f;p3=0xff;p3_5=0;temp=p3;temp=temp & 0

36、x0f;if (temp!=0x0f)for(i=50;i0;i-)for(j=200;j0;j-);temp=p3;temp=temp & 0x0f;if (temp!=0x0f)temp=p3;temp=temp & 0x0f;switch(temp)case 0x0e:key=4;break;case 0x0d:key=5;break;case 0x0b:key=6;break;case 0x07:key=11;break;temp=p3;p1_0=p1_0;p0=tablekey;temp=temp & 0x0f;while(temp!=0x0f)temp=p3;temp=temp &

37、 0x0f;p3=0xff;p3_6=0;temp=p3;temp=temp & 0x0f;if (temp!=0x0f)for(i=50;i0;i-)for(j=200;j0;j-);temp=p3;temp=temp & 0x0f;if (temp!=0x0f)temp=p3;temp=temp & 0x0f;switch(temp)case 0x0e:key=1;break;case 0x0d:key=2;break;case 0x0b:key=3;break;case 0x07:key=12;break;temp=p3;p1_0=p1_0;p0=tablekey;temp=temp &

38、 0x0f;while(temp!=0x0f)temp=p3;temp=temp & 0x0f;p3=0xff;p3_7=0;temp=p3;temp=temp & 0x0f;if (temp!=0x0f)for(i=50;i0;i-)for(j=200;j0;j-);temp=p3;temp=temp & 0x0f;if (temp!=0x0f)temp=p3;temp=temp & 0x0f;switch(temp)case 0x0e:key=0;break;case 0x0d:key=13;break;case 0x0b:key=14;break;case 0x07:key=15;bre

39、ak;temp=p3;p1_0=p1_0;p0=tablekey;temp=temp & 0x0f;while(temp!=0x0f)temp=p3;temp=temp & 0x0f;程序框图 音乐发声程序框图如图所示:程序#includeunsigned char code table=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07, 0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71;unsigned char temp;unsigned char key;unsigned char i,j;unsigned char sth0;

40、unsigned char stl0;unsigned int code tab=64021,64103,64260,64400, 64524,64580,64684,64777, 64820,64898,64968,65030, 65058,65110,65157,65178;void main(void) tmod=0x01; et0=1; ea=1; while(1) p3=0xff; p3_4=0; temp=p3; temp=temp & 0x0f; if (temp!=0x0f) for(i=50;i0;i-) for(j=200;j0;j-); temp=p3; temp=temp & 0x0f; if (temp!=0x0f) temp=p3; temp=temp & 0x0f; switch(temp) case 0x0e: key=0; break; case 0x0d: key=1; break; case 0x0b: key=2; break; case 0x07: key=3; break; temp=p3; p1_0=p1_0; p0=tablekey; sth0=tabkey/256; stl0=tabkey%6; tr0=1; temp=temp & 0x0f; while(temp!=0x0f

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论