• 回答数

    4

  • 浏览数

    319

屠夫糖糖
首页 > 期刊论文 > 单片机电子琴论文文献

4个回答 默认排序
  • 默认排序
  • 按时间排序

胖子9451

已采纳

你爽了,我正好有!这是一款用51单片机控制的玩具电子琴,用到了51的定时器和键盘技术,它的汇编程序流程如下,很适合初学者学习制作。 说明:由单片机的口输出音频信号,在口接三极管以驱动喇叭,最好用两个三极管构成达林顿结构。P2口连接8个一端接地的按键作为输入,当然也需要连接8只10K的电阻至电源作为上拉电阻。依次为Do、Re、Mi、Fa、So、La、Si、Do(高)音。 BUZZ EQU ORG 0000H LJMP MAIN ORG 000BH LJMP INT_T0 ORG 0100HMAIN: MOV SP,#60H ;初始化堆栈指针 MOV 30H,#00 ;定时器初值清零 MOV 31H,#00 MOV P1,#0FFH ;设置P1口为输入模式 MOV TMOD,#01H ;设置定时器0为工作模式1 SETB ET0 ;开定时器0中断 SETB EA ;开总中断 CLR TR0 ;关闭定时器0 START: MOV R0,P2 CJNE R0,#0FFH,KEY1 ;键盘扫描 CLR TR0 SJMP STARTKEY1: CJNE R0,#0FEH,KEY2 ;K1键按下 MOV 30H,#0FBH ;设置音阶1 MOV 31H,#0E9H LJMP SET_TIMERKEY2: CJNE R0,#0FDH,KEY3 ;K2键按下 MOV 30H,#0FCH ;设置音阶2 MOV 31H,#5CH LJMP SET_TIMERKEY3: CJNE R0,#0FBH,KEY4 ;K3键按下 MOV 30H,#0FCH ;设置音阶3 MOV 31H,#0C1H LJMP SET_TIMERKEY4: CJNE R0,#0F7H,KEY5 ;K4键按下 MOV 30H,#0FCH ;设置音阶4 MOV 31H,#0EFH LJMP SET_TIMERKEY5: CJNE R0,#0EFH,KEY6 ;K5键按下 MOV 30H,#0FDH ;设置音阶5 MOV 31H,#045H LJMP SET_TIMERKEY6: CJNE R0,#0DFH,KEY7 ;K6键按下 MOV 30H,#0FDH ;设置音阶6 MOV 31H,#92H LJMP SET_TIMERKEY7: CJNE R0,#0BFH,KEY8 ;K7键按下 MOV 30H,#0FDH ;设置音阶7 MOV 31H,#0D6H LJMP SET_TIMERKEY8: CJNE R0,#7FH,NOKEY ;K8按下 MOV 30H,#0FDH ;设置音阶8 MOV 31H,#0FBHSET_TIMER: SETB TR0 ;发声 SJMP STARTNOKEY: CLR TR0 ;无键按下 SJMP STARTINT_T0: ;T0中断服务程序 MOV TH0,30H ;定时器赋初值 MOV TL0,31H CPL BUZZ ;输出方波 RETI END

205 评论

我是梅干啊

22. 电子琴 1. 实验任务 (1. 由4X4组成16个按钮矩阵,设计成16个音。 (2. 可随意弹奏想要表达的音乐。 2. 电路原理图 图 3. 系统板硬件连线 (1. 把“单片机系统”区域中的端口用导线连接到“音频放大模块”区域中的SPK IN端口上; (2. 把“单片机系统“区域中的-端口用8芯排线连接到“4X4行列式键盘”区域中的C1-C4 R1-R4端口上; 4. 相关程序内容 (1. 4X4行列式键盘识别; (2. 音乐产生的方法; 一首音乐是许多不同的音阶组成的,而每个音阶对应着不同的频率,这样我们就可以利用不同的频率的组合,即可构成我们所想要的音乐了,当然对于单片机来产生不同的频率非常方便,我们可以利用单片机的定时/计数器T0来产生这样方波频率信号,因此,我们只要把一首歌曲的音阶对应频率关系弄正确即可。现在以单片机12MHZ晶振为例,例出高中低音符与单片机计数T0相关的计数值如下表所示 音符 频率(HZ) 简谱码(T值) 音符 频率(HZ) 简谱码(T值) 低1 DO 262 63628 # 4 FA# 740 64860 #1 DO# 277 63731 中 5 SO 784 64898 低2 RE 294 63835 # 5 SO# 831 64934 #2 RE# 311 63928 中 6 LA 880 64968 低 3 M 330 64021 # 6 932 64994 低 4 FA 349 64103 中 7 SI 988 65030 # 4 FA# 370 64185 高 1 DO 1046 65058 低 5 SO 392 64260 # 1 DO# 1109 65085 # 5 SO# 415 64331 高 2 RE 1175 65110 低 6 LA 440 64400 # 2 RE# 1245 65134 # 6 466 64463 高 3 M 1318 65157 低 7 SI 494 64524 高 4 FA 1397 65178 中 1 DO 523 64580 # 4 FA# 1480 65198 # 1 DO# 554 64633 高 5 SO 1568 65217 中 2 RE 587 64684 # 5 SO# 1661 65235 # 2 RE# 622 64732 高 6 LA 1760 65252 中 3 M 659 64777 # 6 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,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 曲调值 DELAY 调4/4 125ms 调4/4 62ms 调3/4 187ms 调3/4 94ms 调2/4 250ms 调2/4 125ms 对于不同的曲调我们也可以用单片机的另外一个定时/计数器来完成。 下面就用AT89S51单片机产生一首“生日快乐”歌曲来说明单片机如何产生的。 在这个程序中用到了两个定时/计数器来完成的。其中T0用来产生音符频率,T1用来产生音拍。 5. 程序框图 贴不了. 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; unsigned 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;i>0;i--) for(j=200;j>0;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=table[key]; STH0=tab[key]/256; STL0=tab[key]%256; TR0=1; temp=temp & 0x0f; while(temp!=0x0f) { temp=P3; temp=temp & 0x0f; } TR0=0; } } P3=0xff; P3_5=0; temp=P3; temp=temp & 0x0f; if (temp!=0x0f) { for(i=50;i>0;i--) for(j=200;j>0;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=7; break; } temp=P3; P1_0=~P1_0; P0=table[key]; STH0=tab[key]/256; STL0=tab[key]%256; TR0=1; temp=temp & 0x0f; while(temp!=0x0f) { temp=P3; temp=temp & 0x0f; } TR0=0; } } P3=0xff; P3_6=0; temp=P3; temp=temp & 0x0f; if (temp!=0x0f) { for(i=50;i>0;i--) for(j=200;j>0;j--); temp=P3; temp=temp & 0x0f; if (temp!=0x0f) { temp=P3; temp=temp & 0x0f; switch(temp) { case 0x0e: key=8; break; case 0x0d: key=9; break; case 0x0b: key=10; break; case 0x07: key=11; break; } temp=P3; P1_0=~P1_0; P0=table[key]; STH0=tab[key]/256; STL0=tab[key]%256; TR0=1; temp=temp & 0x0f; while(temp!=0x0f) { temp=P3; temp=temp & 0x0f; } TR0=0; } } P3=0xff; P3_7=0; temp=P3; temp=temp & 0x0f; if (temp!=0x0f) { for(i=50;i>0;i--) for(j=200;j>0;j--); temp=P3; temp=temp & 0x0f; if (temp!=0x0f) { temp=P3; temp=temp & 0x0f; switch(temp) { case 0x0e: key=12; break; case 0x0d: key=13; break; case 0x0b: key=14; break; case 0x07: key=15; break; } temp=P3; P1_0=~P1_0; P0=table[key]; STH0=tab[key]/256; STL0=tab[key]%256; TR0=1; temp=temp & 0x0f; while(temp!=0x0f) { temp=P3; temp=temp & 0x0f; } TR0=0; } } } } void t0(void) interrupt 1 using 0 { TH0=STH0; TL0=STL0; P1_0=~P1_0; } 根据自己的情况稍微改改就好了

192 评论

小嘉菜菜子

电子信息工程的 毕业 论文写作中,论文的题目起着画龙点睛的作用,要重视论文的题目。下面是我带来的关于电子信息工程毕业论文题目的内容,欢迎阅读参考!电子信息工程毕业论文题目(一) 1. 基于80C51的智能汽车自控系统的设计 2. PLC实现十字路交通灯自动控制 3. 智能型充电器的电源和显示设计 4. 基于单片机的电子时钟设计及应用 5. 基于单片机的智能电子时钟的设计及应用 6. 超外差中波调幅收音机组装及调试 7. 基于USB接口的步进电机控制的研究与实现 8. 基于单片机的电子琴设计 9. 基于FPGA的直序扩频通信研究与设计 10. 基于单片机的发射机控制系统 11. 声光报警器的设计与研究 12. 单片机电源 13. 基于P87LPC768的电机控制系统 14. 基于单片机的LCD电子钟设计 15. 音响放大器的设计 16. 超外差收音机制作及分析研究 17. 2DPSK频带传输系统的设计与实现 18. 基于单片机智能电子钟的设计 19. USB与串行接口转换器的设计 20. 基于FPGA的数字频率计的设计 电子信息工程毕业论文题目(二) 1. 家庭防盗报警系统 2. 单片机实现单步进电机及8位流水灯控制的设计 3. 篮球 竞赛计时系统 4. 单片机89C51在直流调速控制系统中的应用 5. 八路数字抢答器 6. 基于51机的直流电机设计 7. 基于51单片机的步进电机控制系统 8. 基于一种DC-DC模块电源系统的设计 9. 基于555定时器闪光灯的设计 10. 多功能稳压电源的制作 11. 直流稳压电源的制作 12. 步进电机的单片机控制系统 13. 单片机交通灯管理系统 14. AT89S51单片机交通灯控制系统制作 15. 基于单片机的步进电机系统设计 16. 基于WML的学生网站开发 17. 基于单片机的电子密码锁 18. 单片机驱动步进电机控制系统的设计 19. 基于单片机的流水灯设计 电子信息工程毕业论文题目(三) 1. 基于单片机的火灾报警器设计 2. 基于NE555的触摸式报警器 3. 数字密码锁设计 4. 基于单片机智能电子时钟设计及应用 5. 流水灯控制电路设计 6. 简易单片机控制电路实验开发板 7. 全自动洗衣机自动控制电路部分设计 8. 基于单片机的八路抢答器的设计及PCB板的设计 9. 基于单片机的数字温度计的设计 10. 仓库温湿度的监测系统 11. 电子门铃的设计 12. 基于单片机的步进机电路设计 13. 交通灯控制电路设计 猜你喜欢: 1. 电子信息毕业论文范文 2. 电子信息工程论文范文 3. 电子信息工程发展现状 4. 最新版网络工程专业毕业论文题目 5. 电子信息工程毕业论文范文 6. 电子信息工程论文题目大全

127 评论

小袅袅09

一般用4*4键盘实现比较节约资源,我在实现的时候和你一样,用8个按键输入,效果很好,程序可以到我Q空间查看。。。。

276 评论

相关问答

  • 电子温度计单片机毕业论文

    毕业设计(论文)报告 系 别: 电子与电气工程学院 专 业: 电子信息工程 班 号: 电子 0 8 5 学 生 姓 名: 傅浩 学 生 学 号: 0800122

    tomoyasaki 5人参与回答 2023-12-09
  • 基于单片机电子秤毕业论文

    电子信息工程大学毕业论文 (张清卓)从21世纪开始,无线传感器网络就开始引起了学术界,军事界和工业界的极大关注。美国和欧洲相继启动了许多关于无线传感器网络的研

    超级吃货两枚 8人参与回答 2023-12-06
  • 单片机电子称毕业论文

    以下均可参考,从参考网址进入,合适的话,给我加分!谢谢1.基于labVIEW虚拟滤波器的设计与实现 2.双闭环直流调速系统设计3.单片机脉搏测量仪

    AstrophelandStella 5人参与回答 2023-12-09
  • 单片机电子钟毕业论文

    我这里有,不过你的分太低了。

    逍遥无涯子 6人参与回答 2023-12-11
  • 单片机电子打铃毕业论文

    提供一些电子信息工程专科毕业论文的题目,供参考。精密检波器的设计简易电子血压计的设计电子听诊器的设计简易数码相机的设计直流电机转动的单片机控制高频功率合成网络的

    咩~咩~羊 5人参与回答 2023-12-08