ImageVerifierCode 换一换
格式:DOCX , 页数:20 ,大小:68.52KB ,
资源ID:16332663      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/16332663.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(AT89S51单片机试验及实践教程之电子琴Word文档下载推荐.docx)为本站会员(b****5)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

AT89S51单片机试验及实践教程之电子琴Word文档下载推荐.docx

1、64934 #2 RE# 311 63928 中 6 LA 880 64968 低 3 M 330 64021 # 6 932 64994 低 4 FA 349 64103 中 7 SI 988 65030 370 64185 高 1 DO 1046 65058 低 5 SO 392 64260 # 1 DO# 1109 65085 415 64331 高 2 RE 1175 65110 低 6 LA 440 64400 # 2 RE# 1245 65134 466 64463 高 3 M 1318 65157 低 7 SI 494 64524 高 4 FA 1397 65178 中 1 DO

2、 523 64580 1480 65198 554 64633 高 5 SO 1568 65217 中 2 RE 587 64684 1661 65235 622 64732 高 6 LA 1760 65252 中 3 M 659 64777 1865 65268 中 4 FA 698 64820 高 7 SI 1967 65283 下面我们要为这个音符建立一个表格,有助于单片机通过查表的方式来获得相应的数据 低音 0 19 之间,中音在 20 39 之间,高音在 40 59 之间 TABLE: DW 0,63628,63835,64021,64103,64260,64400,64524,0,

3、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,65110,65157,65178,65217,65252,65283,0,0 DW 0,65085,65134,0,65198,65235,65268,0,0,0 DW 0 2 、音乐的音拍,一个节拍为单位( C 调) 曲调值 DELAY 调 4/4 125ms 62ms 调 3/4 187ms

4、94ms 调 2/4 250ms 对于不同的曲调我们也可以用单片机的另外一个定时 / 计数器来完成。下面就用 AT89S51 单片机产生一首“生日快乐”歌曲来说明单片机如何产生的。在这个程序中用到了两个定时 / 计数器来完成的。其中 T0 用来产生音符频率, T1 用来产生音拍。5 程序框图 6 汇编源程序 KEYBUF EQU 30H STH0 EQU 31H STL0 EQU 32H TEMP EQU 33H ORG 00H LJMP START ORG 0BH LJMP INT_T0 START: MOV TMOD,#01H SETB ET0 SETB EA WAIT:MOV P3,#0

5、FFH CLR P3.4 MOV A,P3 ANL A,#0FH XRL A,#0FH JZ NOKEY1 LCALL DELY10MS CJNE A,#0EH,NK1 MOV KEYBUF,#0 LJMP DK1 NK1: CJNE A,#0DH,NK2 MOV KEYBUF,#1 NK2: CJNE A,#0BH,NK3 MOV KEYBUF,#2 NK3: CJNE A,#07H,NK4 MOV KEYBUF,#3 NK4: NOP DK1:MOV A,KEYBUF MOV DPTR,#TABLE MOVC A,A+DPTR MOV P0,A MOV B,#2 MUL AB MOV TE

6、MP,A MOV DPTR,#TABLE1 MOV STH0,A MOV TH0,A INC TEMP MOV A,TEMP MOV STL0,A MOV TL0,A SETB TR0 DK1A: MOV A,P3 JNZ DK1A CLR TR0 NOKEY1:CLR P3.5 JZ NOKEY2 CJNE A,#0EH,NK5 MOV KEYBUF,#4 LJMP DK2 NK5: CJNE A,#0DH,NK6 MOV KEYBUF,#5 NK6: CJNE A,#0BH,NK7 MOV KEYBUF,#6 NK7: CJNE A,#07H,NK8 MOV KEYBUF,#7 NK8:D

7、K2:DK2A:JNZ DK2A NOKEY2:CLR P3.6 JZ NOKEY3 CJNE A,#0EH,NK9 MOV KEYBUF,#8 LJMP DK3 NK9: CJNE A,#0DH,NK10 MOV KEYBUF,#9 NK10: CJNE A,#0BH,NK11 MOV KEYBUF,#10 NK11: CJNE A,#07H,NK12 MOV KEYBUF,#11 NK12:DK3:DK3A:JNZ DK3A NOKEY3:CLR P3.7 JZ NOKEY4 CJNE A,#0EH,NK13 MOV KEYBUF,#12 LJMP DK4 NK13: CJNE A,#0D

8、H,NK14 MOV KEYBUF,#13 NK14: CJNE A,#0BH,NK15 MOV KEYBUF,#14 NK15: CJNE A,#07H,NK16 MOV KEYBUF,#15 NK16:DK4:DK4A:JNZ DK4A NOKEY4:LJMP WAIT DELY10MS:MOV R6,#10 D1: MOV R7,#248 DJNZ R7,$ DJNZ R6,D1 RET INT_T0:MOV TH0,STH0 MOV TL0,STL0 CPL P1.0 RETI DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H DB 7FH,6FH,77H,7CH,

9、39H,5EH,79H,71H TABLE1: DW 64021,64103,64260,64400 DW 64524,64580,64684,64777 DW 64820,64898,64968,65030 DW 65058,65110,65157,65178 END 7 C 语言源程序 include unsigned 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;u

10、nsigned char i,j;unsigned char STH0;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=

11、200;jj-);switch(temp) case 0x0e:key=0;break;case 0x0d:key=1;case 0x0b:key=2;case 0x07:key=3; P1_0=P1_0;P0=tablekey;STH0=tabkey/256;STL0=tabkey%256;TR0=1;while(temp!TR0=0;P3_5=0;key=4;key=5;key=6;key=7;P3_6=0;key=8;key=9;key=10;key=11;P3_7=0;key=12;key=13;key=14;key=15;void t0(void) interrupt 1 using 0 TH0=STH0;TL0=STL0;unsigned char code music_tab =0x30, 0x2B, 0x26 , 0x10, /格式为: 频率常数, 节拍常数, 频率常数, 节拍常数,0x20, 0x1C, 0x18 , 0x18,;

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1