已阅读5页,还剩2页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
单片机电子琴源代码及PCB板电路图设计-论文单片机电子琴源代码及PCB板电路图设计目 录电子琴的设计(摘要) 1第一章 设计目的 2第二章 设计介绍 3结束语 14参考文献 15电子琴的设计【摘要】单片机因其体积小、功能强、价格低廉而得到广泛应用。本文介绍用8051单片机设计微型电子琴的方法,仅需8051最小系统,扩展一组按键,再加一片LM386做音频小功放,将音频输出到扬声器,放出动听的音乐,用单片机设计微型电子琴的方法.给出了电路、程序框图及程序。【关键词】 单片机,电子琴,程序第一章 设计目的1、能够对电子电路、电子元器件、印制电路板等方面的知识有进一步的认识,独立对其进行测试与检查。2、熟悉8051单片机的内部结构和功能,合理使用其内部寄存器,能够完成相关软件编程设计工作。3、为实现预期功能,能够对系统进行快速的调试,并能够对出现的功能故障进行分析,及时修改相关软硬件。4、对软件编程、排错调试、焊接技术、相关仪器设备的使用技能等方面得到较全面的锻炼和提高。 第二章 设计介绍单片机因其体积小、功能强、价格低廉而得到广泛应用。本文介绍用8051单片机设计微型电子琴的方法,仅需8051最小系统,扩展一组按键,再加一片LM386做音频小功放,将音频输出到扬声器,放出动听的音乐。电源可由三节5号电池。1、设计原理: 音乐实际上是有固定周期的信号。我们可以用8051的一个定器(如T0)控制,在P1.0脚上输出方波周期信号,产生乐音。根据不同的按键,调节T0的溢出时间,可输出不同频率的音乐,这样就做出了一台微型电子琴。2、具体内容介绍如下:1)、要产生音频脉冲,只要算出某一音频的周期,然后将此周期除以2,即为半周期的时间,利用定时器计时这个半周期时间,每当计时到后就将输出脉冲的I/O反相,然后重复计时此半周期时间再对I/O反相,就可以在I/O脚上得到此频率的脉冲。2)、利用8051的内部定时器使其工作在计数器模式MODE1下,改变计数值TH1及TL1以产生不同频率的方法。3)、例如频率为523HZ,其周期T=1/523=1912us,因此只要令计数器计时956us/1us=956,在每计数956次时将I/O反相,就可以得到中音DO(523HZ)。计数脉冲值与频率的关系公式如下:N=Fi2Fr N:计数值; Fi:内部计时一次为1us,故其频率为1MHZ;Fr:要产生的频率;4)、其计数值的求法如下:T=65536N=65536Fi2Fr例如:设K=65536, F=1000000=Fi=1MHZ,求低音DO(261HZ),中音DO(523HZ),高音DO(1046HZ)的值计数值。T=65536N=65536Fi2Fr=6553610000002Fr=65536500000Fr低音DO的T=65536500000/262=63627中音DO的T=65536500000/523=64580高音DO的T=65536500000/1047=650595)、每个音乐的音高(频率)是固定的,表1列出了C调每个音的音名、频率及定时器T1初值对照(设晶体频率为12MHz),供参考。C调各音符频率与计数值的对照表如表1所示。表1 C调各音符频率与计数值T的对照表音符频率(HZ)简谱码(T值)音符频率(HZ)简谱码(T值)低1DO26263628#4 FA374064860#1DO#27763731中5 SO78464898低2 RE29463835中6 LA83164934#2 RE#31163928# 688064968低3 M33064021中7 SI93264994低4 FA34964103高1 DO 98865030#4 FA#37064185#1 DO#104665058低5 SO39264260高2 RE110965085#5 SO#41564331#2 RE #117565110低6 LA44064400#2 RE #124565134# 646664463高3 M131865157低7 SI49464524高4 FA139765178中1 DO52364580#4 FA #148065198#1 DO#55464633高5 SO156865217中 2 RE58764684#5 SO #166165235# 2 RE#62264732高6 LA176056252中3 M65964777#6186565268中4 FA69864820高7 SI196765283 753单片机电子琴源代码及电路图设计2、 七个音符流程图: 七个音符的工作流程图本流程图是讲解七个音符按键的具体工作过程。根据不同的频率计算出应该赋给定时器的计数值,列出不同音符与单片机计数T0相关的计数值如下表2所示:表2 七个音符频率与计数值的对照表音符频率(HZ)简谱码(T值)中 1 DO52364580中 2 RE58764684中 3 M65964777中 4 FA69864820中 5 SO78464898中 6 LA88064968中 7 SI98865030采用查表程序进行查表时,可以为这个音符建立一个表格,有助于单片机通过查表的方式来获得相应的数据:TABLE DW 64580,64684,64777,64820,64898,64968,650303、歌曲:兰花草:表3 歌曲音符频率与计数值的对照表音符简谱码T值低音M164021低音FA264103低音SO364260低音LA464400低音TI564524中音DO664580中音RE764684中音M864777中音FA964820中音SOA64898中音LAB64968中音TIC65030#5 831D65934不发音04、软件设计如下:ORG00H ;主程序起始地址JB P2.0 , START ;键盘与歌曲选择为“1”选择歌曲为“0”键盘JMPMAIN ;跳至键盘主程序 ORG 000BH ;TIMER0中断起始地址 LJMP BREAK ;跳至TIMER0中断子程序 ORG01BH ;TIMER0中断起始地址 LJMP TIM0 ;跳至TIMER1中断子程MAIN: MOV TMOD,#01H ;设置TIMER0在MODE1 SETB EA ;中断使能 SETB ET0 ;设置定时器0中断 SETB TR0 ; 启动定时器0WAIT1: LCALL KEY ;调用KEY子程序,判断有键按下否?第几个键? CLR EA ;屏蔽中断 CJNE R3,#00H,WAIT1 ;如果R3=0,表示有键按下 MOV A,22H ;将22H里存放的按键号送给A RL A ; 因为查表里都是字,所以得乘2查得数据 MOV DPTR,#TABLE2 ;指向表头 MOVC A,A+DPTR ; 查表 MOV TH0,A ;将数据高位送TH0 MOV 21H,A ; 将高位备份 MOV A,22H ;将22H里存放的按键号送给A RL A ;因为查表里都是字,所以得乘2查得数据 INC A ;取低位数据 MOVC A,A+DPTR MOV TL0,A MOV 20H,AWAIT2: LCALL KEY SETB EA CJNE R3,#00H,WAIT1 JMP WAIT2单片机电子琴源代码及电路图设计KEY: MOV R3,#00H ; KEY子程序,判断有键按下否?第几个键? MOV R1,#0FFH MOV R0,#00H MOV A,R1 MOV P2,A MOV A,P2 CLR C CPL C ;利用标志位CY来判断是哪个键按下 MOV R2,#08HWAIT3: RLC A ;移位判断 JNC STORE INC R0 DJNZ R2,WAIT3STORE: MOV 22H,R0 ;将按键号存22H,R3=0有键按下 MOV R3,#00H RETBREAK: PUSH ACC ; 中断产生方波,从P1.0口输出 PUSH PSW MOV TL0,20H MOV TH0,21H CPL P1.0 POP PSW POP ACC RETITABLE2: DW 65030,64968,64898,64820,64777,64684,64580 ; 7,6,5,4,3,2,1 ENDSTART : MOVTMOD,#00010000B ;设TIMER1在MODE1 SETB EA ;中断使能 SETB ET1 ; 设置定时器1中断 SETB TR1 ; 启动定时器1START0: MOV30H,#00 ;取简谱码指针NEXT: MOVA,30H ;简谱码指针载入A MOVDPTR,#TABLE0 ;至TABLE0取简谱码 MOVCA,A+DPTR MOVR2,A ;取到的简谱码暂存于R2 JZEND0 ;是否取到00(结束码)? ANLA,#0FH ;不是,则取低4位(节拍码) MOV R5,A ;将节拍码存入R5 MOV A,R2 ;将取到的简谱码再载入A SWAP A; ;高低4位交换 ANL A,#0FH ;取低4位(音符码) JNZ SING ;取到的音符码是否为0? CLR TR1 ;是,则不发音 JMP D1 ;跳至D1SING: DEC A ;取到的音符减1(不含0) MOV22H,A ;存入(22H) RLA ;乘2 MOVDPTR,#TABLE1 ;至TALE1取相对的高位字节计数值 MOVCA,A+DPTR MOV TH1,A ;取到的高位字节存入TH1 MOV21H,A ;取到的高位字节存入(21H) MOV A,22H ;再载入取到的音符码 RLA ;乘2 INCA ;加1 MOVCA,A+DPTR ;至TABLE1取相对的低位字节计数值 MOV TL1,A ;取到的低位字节存入TL1 MOV 20H,A ;取到的低位字节存入(20H) SETB TR1 ;启动TIMER1 D1: CALL DELAY ;基本单位时间1/4拍187毫秒 INC 30H ;取简谱码指针加1 JMP NEXT ;取下一个码END0: CLR TR1 ;停止TIMER1 JMP START0 ;重复循环TIM0: PUSH ACC ;将A的值暂存于堆栈 PUSH PSW ;将PSW的值暂存于堆栈 MOV TL1,20H ;重设计数值 MOV TH1,21H CPLP1.0 ;将P1.0位反相 POP PSW ;至堆栈取回PSW的值 POP ACC ;到堆栈取回A的值 RETI ;返回主程序DELAY: MOV R7,#02 ;125毫秒D2: MOV R4,#125单片机电子琴源代码及电路图设计D3: MOV R3,#248 DJNZ R3, DJNZR4,D3 DJNZ R7,D2 DJNZ R5,DELAY ;决定节拍 RETTABLE1: DW 64021,64103,64260,64400 DW 64524,64580,64684,64777 DW 64820,64898,64968,65030 DW 64934TABLE0: ;1 DB 42H,82H,82H,82H,84H,02H,72H DB 62H,72H,62H,52H,48H, DB 0B2H,0B2H,0B2H,0B2H,0B4H,02H,0A2H ;2 DB 12H,0A2H,0D2H,92H,88H DB 82H,0B2H,0B2H,0A2H,84H,02H,72H DB 62H,72H,62H,52H,44H,02H,12H ;3 DB 12H,62H,62H,52H,44H,02H
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 加油站反恐督导奖惩制度
- 区企业信用联合奖惩制度
- 卫生委员如何写奖惩制度
- 危爆物品管理奖惩制度
- 商业地产公司奖惩制度
- 四年级语文老师奖惩制度
- 地下矿山安全奖惩制度
- 安全生产目标奖惩制度
- 安防技术人员奖惩制度
- 客房查房奖惩制度
- 2026春牛津译林版英语八年级下册Unit+8+Reading+(同步课件)
- 第一单元(单元测试 基础夯实)-高二语文人教统编版选择性必修下册
- 产品工业设计外观规范手册
- 2025山西中煤一局集团有限公司应届高校毕业生招聘20人笔试历年典型考点题库附带答案详解2套试卷
- 安徽能源集团秋招面试题及答案
- 2026年沈阳职业技术学院单招职业技能测试模拟测试卷附答案解析
- 新安全生产法宣讲课件
- AI养鱼:智慧渔业新模式
- 2025年《三级公共营养师》考试练习题库及答案
- 煤矿调度专项培训课件
- 法院安全保密教育培训课件
评论
0/150
提交评论