单片机课程设计方案.doc单片机课程设计简易电子琴课设要求所设计简易电子琴能够单曲循环,且能暂停播放,能够实现按键发音功能,,本实验主要依靠单片机开发板上的喇叭来发出声音,不同的音调对应不同的频率,喇叭发出声音需要正弦波驱动,由于单片机只能输出方波,所以不能用单片机直接驱动喇叭,但是开发板上有自带的喇叭驱动模块,能够将方波转换成同频率的正弦波,所以本次实验的核心模块是让单片机的两个定时器相互配合,改变单片机输出方波的频率和时间,让喇叭发出不同频率,不同节拍的声音,,按键发音功能也是靠两定时器相互配合实现,只是加了一个计算键值的模块,,、硬件连接:本次课设使用上海朗译科技公司的型号为LY-51S单片机开发板,(J42B1插针)(INT0)(INT1),,(数据输入),SRCLK(移位时钟),RCLK(锁存输出),,(数据输入),SRCLK(移位时钟),RCLK(锁存输出)、程序模块:(1)发音模块:,发音由定时器T0来完成,让定时器T0工作在方式1,每次定时器T0溢出中断时,,: MOVTH0,40H① MOVTL0,41H② POPPSW由于定时器0工作在方式一时不能自动装入初值,所以每次中断发生后需要装入初值,由于方式1是16位定时,所以初值需要两个存储单元,初值放在40H和41H存储单元中,这两个单元中的不同内容对应不同频率,初值对应频率表如下,高位在前,低位在后123DB0F8H,94h,0F9H,5CH,0FAH,15H,4567DB0FAH,68H,0FBH,05H,0FBH,90H,0FCH,0CH1234DB0FCH,4AH,0FCH,0AEH,0FDH,0AH,0FDH,34H,567DB0FDH,82H,0FDH,0C8H,0FEH,06H122232DB0FEH,25H,0FEH,57H,0FEH,,在下一个模块中介绍.(2)发音时长模块:发音时长有定时器T1决定,,,模块程序如下:TINT1: DJNZR1,REBACK① MOVR1,#40 DJNZR2,REBACK MOVR2,#25②LCALLDISP1③ MOVA,#00H④ CLRC MOVA,43H ADDA,#1 MOV43H,A MOVA,#00H ADDCA,42H MOV42H,A MOVA,#00H MOVDPH,42H MOVDPL,43H MOVCA,***@A+DPTR MOV44H,A⑤MOVR0,A⑩LCALLDISP⑪ CJNEA,#00H,STOP⑥ CLRTR0 AJMPREBACK CJNEA,#0FFH,GOON MOV42H,#1FHMOV43H,#0FFH AJMPREBACK⑦GOON:SETBTR0MOVA,44H⑧RLA MOVR7,A MOVDPTR,#PITCH MOVCA,***@A+DPTR MOV40H,A INCR7 MOVA,R7 MOVCA,***@A+DPTR MOV41H,A⑨REBACK:POPPSW RETI程序中第①行到第②行,保证了执行完这几行程序中,,,44H存放音调,④行到第⑤行为读取乐谱中下一个音调部分,42H和43H为音调指针,两者合看作一个16位寄存器,存储待装入DPTR的数据,这里定义为"DPTR",在上一个音调响完一个单位时间后,"DPTR"加1,指向下一个音调,并将"DPTR"中地址装入DPTR,并在表#SCORE(起始为2000H)中读出下一个音调,⑥行到第⑦行作用是,原歌曲中需要停顿的部分,在#score表中均为0,通过看A中内容是否为0,来判断是否需要停顿,如果为0,就停止定时器0,喇叭将不发声
单片机课程设计方案 来自淘豆网m.daumloan.com转载请标明出处.