基于51单片机的电子琴设计附原理图、PCB和程序-课程设计说明书.doc
《基于51单片机的电子琴设计附原理图、PCB和程序-课程设计说明书.doc》由会员分享,可在线阅读,更多相关《基于51单片机的电子琴设计附原理图、PCB和程序-课程设计说明书.doc(32页珍藏版)》请在咨信网上搜索。
课程设计说明书 题 目: 基于单片机的电子琴设计 院 (系): 电子工程与自动化学院 专 业: 测控技术与仪器(卓越) 2013 年 9 月 21 日 目 录 1 摘要 …………………………………………………………………… 1 2 关键字 ………………………………………………………………… 1 3 设计任务及要求 ……………………………………………………… 1 4 方案可行性论证 ……………………………………………………… 1 5 程序框图 ……………………………………………………………… 2 6 关键单元电路与程序介绍 …………………………………………… 3 6.1 复位与震荡电路 ……………………………………………… 3 6.2 4x4矩阵键盘 ………………………………………………… 3 6.3数码管与LED灯 ……………………………………………… 4 6.4 蜂鸣器 ………………………………………………………… 6 6.5 音乐相关知识 ………………………………………………… 7 7 调试过程 ……………………………………………………………… 11 8 总结与体会 …………………………………………………………… 11 9 参考文献 ……………………………………………………………… 11 10 附录 …………………………………………………………………… 12 10.1 设备与仪器 …………………………………………………… 12 10.2 软件 …………………………………………………………… 12 10.3 原件清单 ……………………………………………………… 12 10.4原理图与PCB图 ……………………………………………… 13 10.5 总程序…………………………………………………………… 14 10.6 实物图 …………………………………………………………… 31 【摘要】: 打造一个多功能电子琴,核心是一块单片机。单片机读取键值,为内置定时器赋初值,定时器每溢出一次,驱动蜂鸣器的引脚电平就取反一次,产生相应频率的方波,即音调;设好键值与数码管段码表的对应关系,键按下时,数码管显示对应音调。 一首音乐储存在一个表中,表中的数据是音调与节拍,单片机读取音符的音调与节拍,根据音调赋予定时器初值,根据节拍决定定时器工作的时间,也就是蜂鸣器响的时间,一个接一个地读取音符,即可播放一首歌曲。 节拍用led灯的点亮个数表示。单片机读取音乐表中的节拍,控制led灯的点亮个数,达到显示节拍的效果。 特别要注意的是:该方案采用了两个定时器,T0、T1。T0作为驱动蜂鸣器的定时器,要给予高优先级,不然会被T1干扰,音质变差。 【关键字】:单片机、stc89c52、电子琴、C51、keil。 【设计任务及要求】: 1.通过按键能够发出相应的音符并播放产生乐音,实现演奏; 2.演奏的同时可数字显示当前的音调,利于培养乐感 3.可以选定播放固定乐曲自动演奏,演奏时LED进行节拍指示; 4.在自动演奏和奏乐的过程中按停止键则中断演奏; 5.可以选择调节音或小。 【方案可行性论证】: 本课题采用stc89c52单片机作为核心器件,实现基本的音乐弹奏、音乐播放、音调显示和音乐节拍指示的功能。 1. 音乐弹奏:通过程序识别4x4矩阵键盘中按下的键的坐标(x,y), 然后根据(x,y)从计数初值表中读取对应的计数初值,赋值给定时器0,定时器产生对应频率的方波,达到播放对应音调的功能。 2. 音乐播放:先建立一个包含一首音乐的音调与节拍的表。其中,音调就是0x01(低音、do)、0x12(中音、re)、0x23(高音、mi)之类的数;节拍就是0x02(半拍),0x04(一拍)之类的数。然后,根据音调读取计数初值,再将计数初值赋给定时器T0 -> 开启定时器T0 -> 读取节拍并延时 -> 关闭定时器T0 。这样就发出了一个音,然后再读下一个音的初值与节拍,重复上一个操作即可。(具体实现方法见附录总程序) 3. 数码管显示音调: ① 按键:读出按键坐标(x,y),用if语句来判断(x,y)该给数码管赋什么值,然后从uchar code num[] 表中读取这个值赋给数码管(例如P0)。 ② 播放歌曲时:读入音调,根据音调的值来判断num[i]这个表中的i,再把num[i]赋给P0口。 4.led灯的节拍指示:采用定时器1来控制,作为节拍指示。 ①按键时:根据按下的时长来控制led的点亮个数,并且是按一定的时间间隔逐个点亮;释放按键时,led灯按一定的时间间隔逐个熄灭,从而达到一种比较简单的节拍指示效果。 ②播放音乐时:根据音符的节拍,控制点亮到哪一个灯,在点亮那个灯之前,前面的灯逐个等时距点亮。音符结束后,led灯全部一起熄灭。这样,达到了一个精确显示节拍的效果。 开始 【程序框图】: 扫描键盘 根据音调给T0赋初值 开启T0 T1 是否停止播放 读下一个音符 关闭T0 T1数码管与led 数码管显示音调 Led指示节拍 否 按节拍延迟 算出音符的音调、节拍 是否结束符 关闭定时器 P0口置0 否 否 是 按键是否释放 开启定时器,并赋初值,蜂鸣器发声 算出定时器初值 数码管显示音调 识别按键 有矩阵键按下 否 否 播放键按下 读取歌曲 是 是 是 【复位与震荡电路】: 原件的参数如图所示。 C1,C2 可采用30pF 无极性陶瓷电容;C3可采用10µF记性电解质电容。 值得注意的是,晶振不能随便摸!尤其在通电工作的时候,触摸容易损坏。自从摸过一次后,震荡频率变得不稳定,蜂鸣器声音时好时坏。 【4x4矩阵键盘】: 键盘扫描的基本思路是:先得出触发按键的“行”,即横坐标x,再得出他的“列”,即纵坐标y。 以下是获取横坐标x的代码: uchar key_x() /*P1口高位接纵坐标(P1.7 - P1.4) 低位接横坐标(P1.3 - P1.0)*/ { uchar i; P1 = 0x0f; /*有按键按下后 对应按键的横坐标电位被拉低( 注意低电位引脚不能被高电位引脚抬高,只能是低电位拉低高电位)*/ if(P1_0 == 0) { delayms(5); //延时5ms 去抖动 if(P1_0 == 0) i = 1; } else if(P1_1 == 0) { delayms(5); if(P1_1 == 0) i = 2; } else if(P1_2 == 0) { delayms(5); if(P1_2 == 0) i = 3; } else if(P1_3 == 0) { delayms(5); if(P1_3 == 0) i = 4; } else i = 0; return (i); //0表示按键未按下 } 获取y的方法与获取x的方法类似,具体可以参考附件总程序。 得到触发按键的坐标(x,y)之后,可以通过x,y的值来确定按键的功能。例如 x==1,y==1时(S1按下),可以让数码管显示1: if(x == 1 && y == 1) P0 = led_table[1]; 或者更方便一点:if(x == 1) P0 = led_table[y]; 就能显示第一行的所有的数了。 【数码管与LED灯】: 数码管: 在本课题中,数码管要显示A - G , 1 - 7, 1. - 7. ,所以段码比较另类。num[0]的值是没用到的,起占位作用。 uchar code num[]={0x00, //共阴极数码管段选码 0x77,0x7c,0x39,0x5e,0x79,0x71,0x3d, //a - g 0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07, //1 - 7 0x86,0xdb,0xcf,0xe6,0xed,0xfd,0x87 //1. - 7. }; 编写程序时,要根据实际情况来编写: 比如16个按键不能够把低中高音都全部表示完全,只能选取合适的部分。 我让第一行的按键 触发低音 4 - 7,第二行触发中音1 - 4,第三行触发中音5 - 7和高音1,第四行触发高音2 - 5。这样设置能弹奏大部分曲目。 以下是控制数码管的代码片段: if(x == 1) P0 = num[3 + y] ; //低音4 - 7 else if(x == 2) P0 = num[7 + y]; //中音1 - 4 else if(x == 3) P0 = num[11 + y]; //中音5 - 7 和 高音 1 else if(x == 4) P0 = num[15 + y]; //高音2 - 5 LED灯: 因为LED灯要按一定的时间逐个点亮或者逐个熄灭,所以我用定时器1来控制它。 定时器1每溢出一次并满足一定条件时flash变量就+1或者-1,然后从led_table[]这个表中读出相应的数赋给P2口。 表: uchar code led_table[]={0xff,0x7f,0x3f,0x1f,0x0f,0x07,0x03,0x01,0x00};/*发光二极管闪烁表*/ 代码: if(x != 0 && y != 0 && flash < 8 ) //最大加到8 ++flash; else if(x == 0 && y == 0 && flash >0 ) //最小减到0 --flash; P2 = led_table[flash]; 播放音乐时又有所不同: 播放音乐时,led灯要精确地显示当前音符的节拍,所以if语句里加了一条限制语句:flash < jiepai) 代码: if(out == 1 && flash < 8 && flash < jiepai) /*out ==1 表示有歌曲发声时,(flash<jiepai)使 led灯刚好指示节拍*/ ++flash; else if(out == 0 && flash > 0) --flash; P2 = led_table[flash]; 这样做,就能看得出音符的节拍了。只是,由于led灯的个数有限,所以大于二分音符(2拍)的节拍就无法看到了。因为8个灯全亮才表示二分音符。如果当初采用16个灯的话,就没有这个窘境了。 【蜂鸣器】: 蜂鸣器采用一个s8550 NPN三极管驱动,一个可变电阻改变音量。三极管的选用要注意放大倍数,放大倍数太小会导致蜂鸣器声音很小。最初采用8050就造成了这个问题。 另外,采用P3.0口连接接蜂鸣器是一个错误。因为P3.0、P3.1是烧写程序用到的接口。倘若连接了其他器件,每次调试都要拔下烧写线,很不方便。 【音乐相关知识】: 【表6.5.1】音符频率对照表 音符 频率(HZ) 简谱码(T值) 音符 频率(HZ) 简谱码(T值) 低1 DO 262 63628 0xf88c # 4 FA# 740 64860 #1 DO# 277 63731 中 5 SO 784 64898 0xfd82 低2 RE 294 63835 0xf95b # 5 SO# 831 64934 #2 RE# 311 63928 中 6 LA 880 64968 0xfdc8 低 3 M 330 64021 0xfa15 # 6 932 64994 低 4 FA 349 64103 0xfa67 中 7 SI 988 65030 0xfe06 # 4 FA# 370 64185 高 1 DO 1046 65058 0xfe22 低 5 SO 392 64260 0xfb04 # 1 DO# 1109 65085 # 5 SO# 415 64331 高 2 RE 1175 65110 0xfe56 低 6 LA 440 64400 0xfb90 # 2 RE# 1245 65134 # 6 466 64463 高 3 M 1318 65157 0xfe85 低 7 SI 494 64524 0xfc0c 高 4 FA 1397 65178 0xfe9a 中 1 DO 523 64580 0xfc44 # 4 FA# 1480 65198 # 1 DO# 554 64633 高 5 SO 1568 65217 0xfec1 中 2 RE 587 64684 0xfcac # 5 SO# 1661 65235 # 2 RE# 622 64732 高 6 LA 1760 65252 0xfee4 中 3 M 659 64777 0xfd09 # 6 1865 65268 中 4 FA 698 64820 0xfd34 高 7 SI 1967 65283 0xff03 音调、节拍以及编码的确定方法: 一般说来,单片机演奏音乐基本都是单音频率,它不包含相应幅度的谐波频率,也就是说不能像电子琴那样能奏出多种音色的声音。因此单片机奏乐只需弄清楚两个概念即可,也就是“音调”和节拍。其中节拍表示一个音符唱多长的时间。 音调的确定: 不同音高的乐音是用C、D、E、F、G、A、B来表示,这7个字母就是音乐的音名,它们一般依次唱成DO、RE、MI、FA、SO、LA、SI,即唱成简谱的1、2、3、4、5、6、7,相当于汉字“多来米发梭拉西”的读音,这是唱曲时乐音的发音,所以叫“音调”,即Tone。把C、D、E、F、G、A、B这一组音的距离分成12个等份,每一个等份叫一个“半音”。两个音之间的距离有两个“半音”,就叫“全音”。在钢琴等键盘乐器上,C–D、D–E、F–G、G–A、A–B两音之间隔着一个黑键,他们之间的距离就是全音;E–F、B–C两音之间没有黑键相隔,它们之间的距离就是半音。通常唱成1、2、3、4、5、6、7的音叫自然音,那些在它们的左上角加上﹟号或者b号的叫变化音。﹟叫升记号,表示把音在原来的基础上升高半音,b叫降记音,表示在原来的基础上降低半音。例如高音DO的频率(1046Hz)刚好是中音DO的频率(523Hz)的一倍,中音DO的频率(523Hz)刚好是低音DO频率(266 Hz)的一倍;同样的,高音RE的频率(1175Hz)刚好是中音RE的频率(587Hz)的一倍,中音RE的频率(587Hz)刚好是低音RE频率(294 Hz)的一倍。 1)要产生音频脉冲,只要算出某一音频的周期(1/频率),然后将此周期除以2,即为半周期的时间。利用定时器计时这半个周期时间,每当计时到后就将输出脉冲的I/O反相,然后重复计时此半周期时间再对I/O反相,就可在I/O脚上得到此频率的脉冲。 2)利用stc89c52的内部定时器使其工作在计数器模式MODE1下,改变计数值TH0及TL0以产生不同频率的方法。 此外结束符和休止符可以分别用代码00H和FFH来表示,若查表结果为00H,则表示曲子终了;若查表结果为FFH,则产生相应的停顿效果。 3)例如频率为523Hz,其周期T=1/523=1912us,因此只要令计数器计时956us/1us=956,在每次计数956次时将I/O反相,就可得到中音DO(523Hz)。 计数脉冲值与频率的关系公式如下: N=Fi2Fr N:计算值; Fi:内部计时一次为1us,故其频率为1MHz; 4) 其计数值的求法如下: T=65536-N=65536-Fi2Fr 例如:设K=65536,F=1000000=Fi=1MHz,求低音DO(261Hz)。中音DO(523Hz)。高音的DO(1046Hz)的计算值 T=65536-N=65536-Fi2Fr=65536-10000002Fr=65536-500000/Fr 低音DO的T=65536-500000/262=63627 中音DO的T=65536-500000/523=64580 高音DO的T=65536-500000/1047=65059 5) C调各音符频率与计数值T的对照表如表1.6.5.2所示。 低音 频率 T 参数 中音 频率 T 参数 高音 频率 T 参数 Do 262 1908 229 Do 523 956 115 Do 1046 57 57 Do﹟ 277 1805 217 Do﹟ 554 903 108 Do﹟ 1109 54 54 Re 294 1701 204 Re 587 852 102 Re 1175 51 51 Re﹟ 311 1608 193 Re﹟ 622 804 97 Re﹟ 1245 48 48 Mi 330 1515 182 Mi 659 759 91 Mi 1318 45 45 Fa 349 1433 172 Fa 698 716 86 Fa 1397 43 43 Fa﹟ 370 1351 162 Fa﹟ 740 676 81 Fa﹟ 1480 41 41 So 392 1276 153 So 784 638 77 So 1568 38 38 So﹟ 415 1205 145 So﹟ 831 602 72 So﹟ 1661 36 36 La 440 1136 136 La 880 568 68 La 1760 34 34 La﹟ 464 1078 129 La﹟ 932 536 64 La﹟ 1865 32 32 Si 494 1012 121 Si 988 506 61 Si 1976 30 30 表6.5.2 C调各音符频率与计数值T的对照表 节拍的确定: 若要构成音乐,光有音调是不够的,还需要节拍,让音乐具有旋律(固定的律动),而且可以调节各个音的快满度。“节拍”,即Beat,简单说就是打拍子,就像我们听音乐不自主的随之拍手或跺脚。若1拍实0.5s,则1/4 拍为0.125s。至于1拍多少s,并没有严格规定,就像人的心跳一样,大部分人的心跳是每分钟72下,有些人快一点,有些人慢一点,只要听的悦耳就好。音持续时间的长短即时值,一般用拍数表示。休止符表示暂停发音。 一首音乐是由许多不同的音符组成的,而每个音符对应着不同频率,这样就可以利用不同的频率的组合,加以与拍数对应的延时,构成音乐。了解音乐的一些基础知识,我们可知产生不同频率的音频脉冲即能产生音乐。对于单片机来说,产生不同频率的脉冲是非常方便的,利用单片机的定时/计数器来产生这样的方波频率信号。因此,需要弄清楚音乐中的音符和对应的频率,以及单片机定时计数的关系。 音乐的编码: 每个音符采用2个字节。第一个字节表示音调,第二个字节表示节拍。 音调字节中,高四位表示低中高音,0表示低音,1表示中音,2表示高音;低四位表示“音调”。比如:0x11表示中音do。 节拍字节中,数值i表示代表着延迟i个十六分音符。比如:0x04,表示延时4个16分音符,即延时1个四分之一音符。在以四分音符为一拍的歌曲中,0x04就代表一拍。底下没有横线,右侧也没有横线的数字(音调),就用0x04表示他的延时。底下有一横线:0x02;右侧有一横:0x08;右侧两横:0x0c;右侧三横:0x10;右下角有一点:加上当前延时的一半。 由于不同的歌曲有不同的播放速度,即曲速(单位——拍每分钟)。所以音乐编码表中的第0和第1元素用来表示曲速。 我们可以找到任意歌曲的简谱图,然后根据上述规则编写出单片机识别的简谱表。 例如: 可以翻译成: uchar code ymt[]={//玉满堂 0x96,0x00, //曲速 0x96表示 150拍/分 0x00,0x0a,0x05,0x02,0x15,0x02,0x12,0x02, 0x13,0x04,0x13,0x02,0x15,0x02,0x12,0x04,0x12,0x02,0x13,0x02, 0x12,0x10, 0x13,0x04,0x13,0x02,0x12,0x02,0x13,0x04,0x15,0x02,0x16,0x02, 0x15,0x0c,0x13,0x02,0x15,0x02, 0x16,0x04,0x16,0x02,0x21,0x02,0x16,0x04,0x15,0x02,0x13,0x02, 0x15,0x0c,0x15,0x02,0x16,0x02, 0x21,0x04,0x21,0x02,0x22,0x02,0x23,0x04,0x22,0x02,0x21,0x02, 0x22,0x10, 0x23,0x08,0x15,0x02,0x16,0x02,0x21,0x02,0x22,0x02, 0x23,0x04,0x23,0x02,0x22,0x02,0x21,0x06,0x21,0x02, 0x16,0x04,0x16,0x02,0x21,0x02,0x16,0x04,0x13,0x04, 0x15,0x10, 0x16,0x04,0x16,0x02,0x21,0x02,0x16,0x04,0x21,0x02,0x22,0x02, 0x23,0x04,0x23,0x02,0x22,0x02,0x21,0x06,0x21,0x02, 0x16,0x02,0x21,0x02,0x16,0x02,0x21,0x02,0x22,0x02,0x23,0x02,0x25,0x02,0x23,0x02, 0x22,0x0c,0x21,0x02,0x22,0x02, 0x23,0x06,0x15,0x02,0x16,0x02,0x21,0x02,0x22,0x02, 0x23,0x04,0x23,0x02,0x22,0x02,0x21,0x06,0x21,0x02, 0x16,0x04,0x16,0x02,0x21,0x02,0x16,0x02,0x21,0x02,0x15,0x02,0x13,0x02, 0x15,0x0c,0x13,0x02,0x15,0x02, 0x16,0x04,0x16,0x02,0x21,0x02,0x16,0x04,0x16,0x02,0x21,0x02, 0x22,0x04,0x22,0x02,0x23,0x02,0x22,0x04,0x22,0x02,0x23,0x02, 0x25,0x02,0x26,0x02,0x23,0x02,0x25,0x02,0x22,0x02,0x23,0x02,0x21,0x02,0x16,0x02, 0x21,0x10, 0xff }; 【调试过程】: 编写程序阶段,一个功能、一个模块地编写。先写好键盘扫描程序,然后再到数码管显示、蜂鸣器发声、led节拍指示。分部进行,个个击破。 【总结体会】: 本课题让我更深刻地认识到了单片机这种器件,特别是对单片机里面的定时器收获最多。 而且这是我第一次焊双面板,意义不同凡响。有了这次经验,对以后做板子定有深远的影响。 制作过程中,感触最深的是解决杂音问题。在弹奏与播放时,蜂鸣器声音不纯,有颤音,影响音乐美感。为此,我煞费苦心,花了很多时间找原因。想到了精简定时器中断程序里的代码和运算,但效果甚微。直到最后,忽然想到了定时器有优先级的说法。试了一下,将控制蜂鸣器的定时器T0设为高优先级。终于问题解决了!而且是如此的简单,但是过程却是又如此的艰辛,让人感觉不太值得。。不过,终归是值得的! 【参考文献】: 《单片微机原理、汇编与C51及接口技术》(朱定华 戴颖颖 李川香 著) 序 号 名 称 数 量 备 注 1 四脚开关 18 6x6 mm 2 12Mhz晶振 1 3 30pF陶瓷电容 2 4 10µF无极性电容 1 5 10K 2.2K电阻 9 10K x9 ;2.2K x1 6 240电阻 10 7 NPN 三极管 1 s8550 8 七段共阴极数码管 2 9 无源蜂鸣器 1 10 电位器 1 11 发光二极管 10 红色 x8 黄x1 绿 x1 12 排针 3排 13 双面覆铜铜板 1 15x10 cm 14 40P杜邦线 1 15 单片机底座 2 16 电源开关 1 17 Stc89c52单片机 1 【附录】: 设备与仪器:电脑、单片机开发板(或者单片机烧写器) 软件:Keil uVision4 、DXP 09 原件清单: 原理图与PCB图: 总程序: #include<reg52.h> #include<intrins.h> #define uchar unsigned char #define uint unsigned int #define allsong 4 //歌曲总数 按实际写 sbit P1_0 = P1^0; sbit P1_1 = P1^1; sbit P1_2 = P1^2; sbit P1_3 = P1^3; sbit P1_4 = P1^4; sbit P1_5 = P1^5; sbit P1_6 = P1^6; sbit P1_7 = P1^7; sbit beep = P3^0; sbit key_play = P3^1; uchar x = 0; /*矩阵键盘横坐标 从1开始 0为未按下的标志 */ uchar y = 0; /*矩阵键盘纵坐标 从1开始 0为未按下的标志 */ uchar flash = 0; //控制led灯显示 的变量 */ uchar f_l; /*按键发出音调的初值(低位)*/ uchar f_h; //高位 uchar song_l; /*歌曲音调的初值(低位)*/ uchar song_h; //高位 uchar out = 0; /*声音输出变量 1表示有输出 0表示无输出 */ uchar yindiao; /*音调 定义为全局变量 为了在播放时数码管能显示当前音调*/ uchar yindiao_h; //音调的高四位 uchar yindiao_l; //音调的低四位 uchar jiepai; /*节拍(简而言之就是一个音调响的时间长度)*/ uchar song_id = 1; //歌曲序号变量 uchar temp_id = 1; //歌曲临时序号 uint which = 2; /*简谱表里的第几个音 从第2个开始 第0个用来存曲速,第1个占位*/ uchar same = 0; /*在暂停时选了同一首歌曲,用于跳出暂停循环*/ uchar key_x(); //获取键盘横坐标 函数 uchar key_y(); //获取键盘纵坐标 函数 void play(); //播放歌曲 函数 void delayms(uint ms);//延时xx ms 函数 void delay(uint pai);//节拍延时 函数 void key_check(); //检查按键状态 函数 void display(); //数码管显示对应音调 函数 void speak(); /*按键后 给定时器0赋对应音调的初值 从而发出声音*/ uchar choose(); /*播放状态下 选歌函数 释放按键后才跳出函数,返回歌曲序号*/ uchar choose2(); /*暂停状态下 选歌函数 不用释放按键即可跳出函数,返回歌曲序号 */ void play(); //播放歌曲 函数 uchar code num[]={0x00, //数码管段选码 0x77,0x7c,0x39,0x5e,0x79,0x71,0x3d, //a - g 0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07, //1 - 7 0x86,0xdb,0xcf,0xe6,0xed,0xfd,0x87 //1. - 7. }; uchar code led_table[]={0xff,0x7f,0x3f,0x1f,0x0f,0x07,0x03,0x01,0x00};/*发光二极管闪烁表*/ uchar code chuzhi[]={ //音调对应的计数初值 0xff,0xff,//占0位 0xf8,0x8c,//低1 (0x01) a -数码管显示方式 0xf9,0x5b,// 2 b 0xfa,0x15,// 3 c 0xfa,0x67,// 4 d 0xfb,0x04,// 5 e 0xfb,0x90,// 6 f 0xfc,0x0c,//低7(0x07)g 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, /*占位 0x08 - 0x0b (8 - 11)*/ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,/*占位 0x0c - 0x10 (12 - 16)*/ 0xfc,0x44,//中1 (0x11) (17) 0xfc,0xac,// 2 0xfd,0x09,// 3 0xfd,0x34,// 4 0xfd,0x82,// 5 0xfd,0xc8,// 6 0xfe,0x06,//中7 (0x17) (23) 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, /*占位 0x18 - 0x1b (24 - 27)*/ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, /*占位 0x1c - 0x20 (28 - 32)*/ 0xfe,0x22,//高1 (0x21)1. (33) 0xfe,0x56,// 2 2. 0xfe,0x85,// 3 3. 0xfe,0x9a,// 4 4. 0xfe,0xc1,// 5 5. 0xfe,0xe4,// 6 6. 0xff,0x03 //高7 (0x27)7. (39) }; uchar code ymt[]={//玉满堂 0x96,0x00, //曲速 0x96表示 150拍/分 0x00,0x0a,0x05,0x02,0x15,0x02,0x12,0x02, 0x13,0x04,0x13,0x02,0x15,0x02,0x12,0x04,0x12,0x02,0x13,0x02, 0x12,0x10, 0x13,0x04,0x13,0x02,0x12,0x02,0x13,0x04,0x15,0x02,0x16,0x02, 0x15,0x0c,0x13,0x02,0x15,0x02, 0x16,0x04,0x16,0x02,0x21,0x02,0x16,0x04,0x15,0x02,0x13,0x02, 0x15,0x0c,0x15,0x02,0x16,0x02, 0x21,0x04,0x21,0x02,0x22,0x02,0x23,0x04,0x22,0x02,0x21,0x02, 0x22,0x10, 0x23,0x08,0x15,0x02,0x16,0x02,0x21,0x02,0x22,0x02, 0x23,0x04,0x23,0x02,0x22,0x02,0x21,0x06,0x21,0x02, 0x16,0x04,0x16,0x02,0x21,0x02,0x16,0x04,0x13,0x04, 0x15,0x10, 0x16,0x04,0x16,0x02,0x21,0x02,0x16,0x04,0x21,0x02,0x22,0x02, 0x23,0x04,0x23,0x02,0x22,0x02,0x21,0x06,0x21,0x02, 0x16,0x02,0x21,0x02,0x16,0x02,0x21,0x02,0x22,0x02,0x23,0x02,0x25,0x02,0x23,0x02, 0x22,0x0c,0x21,0x02,0x22,0x02, 0x23,0x06,0x15,0x02,0x16,0x02,0x21,0x02,0x22,0x02, 0x23,0x04,0x23,0x02,0x22,0x02,0x21,0x06,0x21,0x02, 0x16,0x04,0x16,0x02,0x21,0x02,0x16,0x02,0x21,0x02,0x15,0x02,0x13,0x02, 0x15,0x0c,0x13,0x02,0x15,0x02, 0x16,0x04,0x16,0x02,- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 51 单片机 电子琴 设计 原理图 PCB 程序 课程设计 说明书
咨信网温馨提示:
1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前自行私信或留言给上传者【快乐****生活】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时私信或留言给本站上传会员【快乐****生活】,需本站解决可联系【 微信客服】、【 QQ客服】,若有其他问题请点击或扫码反馈【 服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【 版权申诉】”(推荐),意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4008-655-100;投诉/维权电话:4009-655-100。
1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前自行私信或留言给上传者【快乐****生活】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时私信或留言给本站上传会员【快乐****生活】,需本站解决可联系【 微信客服】、【 QQ客服】,若有其他问题请点击或扫码反馈【 服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【 版权申诉】”(推荐),意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4008-655-100;投诉/维权电话:4009-655-100。
关于本文