单片机音乐播放器程序设计_第1页
单片机音乐播放器程序设计_第2页
单片机音乐播放器程序设计_第3页
单片机音乐播放器程序设计_第4页
单片机音乐播放器程序设计_第5页
已阅读5页,还剩9页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、实验报告  51单片机设计音乐播放器  随着科技的发展,音乐播放功能随处都会用到,如,在开发儿童智力的玩具中,等等。目前单片机以其体积小、价格低、编程灵活等特点在这一领域独领风骚。一、系统功能要求:1、具有自动循环播放所有乐曲功能。2、具有单独选择某首乐曲循环播放功能。3、具有顺序查找乐曲循环播放功能。4、具有停止播放功能。二、系统整体方案提示:利用AT89S52产生乐曲音符,再把乐普翻译成计算机音乐语言,由单片机进行信息处理,在经过信号放大,由喇叭放出乐曲声。由于音符和节拍是由计算机产生的,所以发音音符和节拍准确。1、循环播放:按下K1键即可实现。2、顺序查找乐

2、曲循环播放:按下K2键即可实现。3、停止播放:按下K3键即可实现。4、单独选择某首乐曲循环播放:按下K4K7键即可实现。系统整体方案框图如下:利用AT89C51产生乐曲音符,再把乐普翻译成绩算计音乐语言,由单片机进行信息处理,在经过信号放大,由喇叭放出乐曲声。由于音符和节拍是由计算机产生的,所以发音音符和节拍准确。整体框图如图图一所示。 三、硬件系统原理图:硬件系统原理图如下页图:1)单片机:选择AT89S52,由于AT89S52是一个低电压,高性能CMOS8位单片机,内含4k bytes的可反复擦鞋的制度程序存储器(PEROM)和128bytes的随机存取数据存储器(RAM),器件

3、采用ATMEL公司的高密度、非易失性存储技术生产,兼容标准MCS51指令系统,片内置通用8位中央处理器和Flash存储单元,内置功能强大的微型计算机AT89S52提供了高性价比的解决方案。其内部有足够本系统对存储器的要求,不用外扩。2)按键控制电路:如图由P1口作为输入,构成矩阵式按键接口方式。 3)输出控制:此部分的放大电路简单容易实现。主要采用了一个小功率PNP型硅管9012,利用“分压偏置式工作点稳定直流通路”,达到了对静态工作点的稳定。分压电阻分别选择1K和5.5K。嗡宁器一端接+5V电压,一端接晶体管的发射极。由P3.0 输出预定的方波,加到晶体管进行放大, 再输出到蜂鸣器,很好的实

4、现了频率、声音的转换。4)复位:复位是由外部的复位电路来实现的。四、系统软件设计1、 单片机演奏乐曲的原理通过控制定时器的定时时间来产生不同频率的方波,驱动喇叭发出不同音阶的声音,再利用延迟来控制发音时间的长短,即可控制音调中的节拍。把乐谱中的音符和相应的节拍变换为定常数和延迟常数,作为数据表格存放在存储器中。由程序查表得到定时常数和延迟常数,分别用以控制定时器产生方波的频率和发出该频率方波的持续时间。当延迟时间到时,再查下一个音符的定时常数和延迟常数。依次下去,就可以自动演奏乐曲。单片机所用的晶振的频率为6MHz,琴键所对应音符、频率及定时常数三者之间的对应关系如下所示。C调音符712345

5、67频率(Hz)494524588660698784880988半周期(ms)1.010.950.850.760.720.640.570.51定时值FE07FE25FE57FE84FE98FEC0FEE3FF012、程序执行流程图1)说明:l软件执行顺序:先识别按键,再计算键值,根据键值执行相应的音乐播放程序。2乐曲存放约定:连续两个单元的内容为0FFH,0FFH作为上一首乐曲结束标志。2)系统程序流程图:         3、乐演奏程序清单      &

6、#160;              ORG  0000H                     LJMP KEY1              &#

7、160;      ORG  001BH                     MOV  TH1,R1                     MO

8、V  TL1,R0                     CPL  P3.0                     RETI      

9、               ORG  300H  AJMP  KEY1KS1:                MOV   A,#FFH             

10、;                MOV   P1,A                           MOV      A,P1;读P1口键值 

11、                 CPL  A;A取反,无键按下则全“0”                    ANL     A,0FH;屏蔽A高半字节        

12、;          RETKEY1:           ACALL   KS1;检查是否有键闭合                 JNZ   LK1;A非“0”则转移      

13、;           ACALL   D10ms;显示一次(延时10 ms)                 AJMP    KEY1LK1:            ACALL   

14、60;    D10ms;有键闭合二次消抖延时20 ms                 ACALL        D10ms                 ACALL 

15、;  KS1;再检查有键闭合否                 JNZ   LK2;有键闭合,转LK2                 ACALL          D10ms&#

16、160;                AJMP  KEY1;经去抖动确认无键闭合,延时10 ms后转KEY1LK2:             MOV   R2,#0EH;扫描初值进R2         

17、60;      MOV   R4,#00H;扫描列号送R4 LK4:           MOV  P1,A;扫描初值送P1口                 MOV      A,P1;读P1口  

18、0;                 JB      ACC.0,LONE;ACC.0=1,第0行无键闭合,转LONE                    MOV    A,#00H;装第0行行值&

19、#160;                  AJMP    LKPLONE:           JB     ACC.1,LTWO;ACC.1=1,第1行无键闭合,转LTWO            

20、;     MOV    A,#04H;装第1行行值                  AJMP    LKPLTWO:          JB   ACC.2,LTHR;ACC.2=1,第2行无键闭合,转LTHR  &

21、#160;              MOV    A,#08H;装第2行行值                 AJMP   LKPLTHR:            JB   AC

22、C.3,NEXT;ACC.3=1,第3行无键闭合则转NEXT                  MOV   A,#0CH;装第3行行值    LKP:            ADD   A,R4;计算键值       &

23、#160;          PUSH   ACC;保护键值,将键值入栈    LK3:            ACALL   D10ms;延时10ms消抖                  ACALL 

24、60; KS1;查键是否继续闭合,若闭合再延时                  JNZ    LK3                   POP   ACC;若键起,则键码送A     &

25、#160;             RET    NEXT:            INC   R4;扫描列号加1                MOV    

26、 A,R2                JNB    ACC.3,KND;笫3位为“0”,已扫完最高列则转KEND                    RLA    A;循环左移一位   

27、;                 MOV    R2,A                    AJMP    LK4;进行下一列扫描   KEND:     

28、0;        AJMP   KEY1;扫描完毕,开始新的一轮   LONE:               JB     ACC.1,LTWO                  

29、;       MOV    A,#04H                         AJMP    LKP   LTWO:           

30、;   JB    ACC.2,LTHR                      MOV    A,#08H                      

31、60; AJMP   LKPLTHR:               JB   ACC.3,NEXT                     MOV   A,#0CH       LKP:&#

32、160;            ADD   A,R4                            PUSH   ACC       

33、0;   LK3:             ACALL   D10ms                          JNZ    LK3     

34、0;            POP   ACC       RET    NEXT:            INC   R4              

35、;            MOV     A,R2                JNB    ACC.3,KND                  

36、        RLA    A                             MOV    R2,A        &

37、#160;           AJMP    LK4             KEND:           AJMP   KEY1          

38、60;    K1:          MOV  DPTR,#TAB1                    LJMP  START       K2:        &

39、#160;  MOV  DPTR,#TAB2                     LJMP  START       K3:           MOV  DPTR,#TAB3   &#

40、160;                 LJMP  START       K4:           MOV  DPTR,#TAB4             

41、;        LJMP  START       K5:           MOV  DPTR,#TAB5                     LJMP

42、0; START       START:        MOV  TMOD,#10H                     MOV  IE,#88H          

43、0;          MOVC  A,A+DPTR                     MOV  R0,A                

44、60;    INC  DPTR                     CLR  A                     MOVC  A,A+DPTR&#

45、160;                    MOV  R0,A                     ORL  A,R1       

46、              JZ   NEXT0                     MOV  R0,A             

47、60;       ANL  A,R1                     CJNE  A,#0FFH,NEXT                  

48、0;  SJMP  KEY       NEXT:          MOV  TH1,R1                     MOV  TR1,R0      &

49、#160;              SETB  TR1                     SJMP  NEXT1       NEXT0:      &

50、#160; CLR   TR1       NEXT1:        CLR  A                     INC  DPTR         

51、;            MOVC  A,A+DPTR                     MOV  R2,A       LOOP1:        LCALL &

52、#160;D200                     DJNZ  R2,LOOP1                     INC   DPTR   &#

53、160;                 LJMP  LOOP       D200:        MOV  R4,#81H       D200B:        MOV

54、60; A,#0FFH       D200A:        DEC  A                     JNZ  D200A            

55、;         DEC  R4                     CJNE  R4,#00H,D200B                 &

56、#160;   RET       D10ms:       MOV  R7,#05H       LP1:          MOV  R6,#0F9H              

57、;       NOP                     NOP       LP2:          DJNZ  R6,LP2     &#

58、160;               DJNZ  R7,LP1                     RET              &

59、#160;      RETITAB1:     DB  0FEH,25H,02H,0FEH,25H,02H          DB  0FEH,25H,04H,0FDH,80H,04H          DB  0FEH,84H,02H,0FEH,84H,02H   

60、       DB  0FEH,84H,04H,0FEH,25H,04H          DB  0FEH,25H,02H,0FEH,84H,02H          DB  0FEH,0C0H,04H,0FEH,0C0H,04H        &

61、#160; DB  0FEH,98H,02H,0FEH,84H,02H          DB  0FEH,57H,08H,00H,00H,04H          DB  0FFH,0FFHTAB2:     DB  0FEH,0E3H,01H,0FEH,0E3H,02H,0FEH,0E3H,01H   &

62、#160;      DB  0FEH,033H,01H,0FEH,0C0H,01H,0FEH,84H,02H          DB  0FEH,84H,02H,0FEH,57H,02H          DB  0FEH,57H,04H        &#

63、160; DB  0FEH,57H,01H,0FEH,57H,01H,0FEH,57H,01H,0FEH,57H,01H          DB  0FEH,57H,01H,0FEH,57H,02H,0FEH,84H,01H,0FDH,0C8H,01H          DB  0FEH,57H,04H       &

64、#160;  DB  00H,00H,04H          DB  0FFH,0FFHTAB3:       DB  0FEH,0C0H,04H,0FEH,0C0H,04H,0FEH,0C0H,04H,          DB  0FEH,0E3H,03H,0FEH,57H,02H ,0FEH,0C0H,04H,0

65、0H,00H                         DB  01H,00H,00H,01H,00H,00H,01H,0FEH,0C0H,04H,0FEH,0C0H,02H          DB  0FEH,0E3H,02H,0FEH,84H,04H

66、,0FEH,84H,04H,0FEH,57H,02H          DB  0FEH,25H,04H,00H,00H,01H,00H,00H,01H,00H,00H,01H          DB  0FEH,0E3H,04H,0FEH,0E3H,04H,0FEH,0C0H,04H,0FEH,0C0H,04H       &

67、#160;  DB  0FEH,57H,04H,0FEH,84H,04H,0FEH,01H,04H,0FEH,0E3H,04H          DB  0FEH,0E3H,04H,0FEH,0C0H,04H,0FEH,0E3H,04H,0FEH,84H,04H          DB  0FEH,0C0H,04H,00H,00H,02H,00H,00H,02H,00H,00H

68、,02H          DB  0FFH,0FFHTAB4:     DB  0FEH,84H,04H,0FEH,84H,02H,0FEH,84H,02H          DB  0FEH,0C0H,02H,0FEH,0C0H,04H,0FEH,0E3H,04H       

69、;   DB  0FEH,0C0H,04H,0FEH,57H,02H,0FEH,84H,02H          DB  0FEH,25H,04H,00H,00H,04H          DB  0FEH,57H,04H,0FEH,57H,02H,0FEH,57H,02H        

70、  DB  0FEH,57H,02H,0FEH,57H,04H,0FEH,25H,02H          DB  0FEH,07H,04H,0FEH,57H,02H,0FDH,0C6H,02H          DB  0FDH,80H,04H,00H,00H,04H         

71、DB  0FEH,25H,04H,0FEH,25H,02H,0FEH,25H,02H          DB  0FEH,25H,02H,0FEH,25H,04H,0FEH,57H,04H          DB  0FEH,0E3H,04H,0FEH,0E3H,04H          DB

72、60; 0FEH,0E3H,02H,0FEH,0C0H,02H,0FEH,98H,04H          DB  0FFH,0FFHTAB5:     DB  0FEH,25H,02H,0FEH,25H,02H          DB  0FEH,25H,04H,0FDH,80H,04H     

73、     DB  0FEH,84H,02H,0FEH,84H,02H          DB  0FEH,84H,04H,0FEH,25H,04H          DB  0FEH,25H,02H,0FEH,84H,02H          DB 

74、 0FEH,0C0H,04H,0FEH,0C0H,04H          DB  0FEH,98H,02H,0FEH,84H,02H          DB  0FEH,57H,08H,00H,00H,04H          DB  0FEH,0E3H,01H,0FEH,0E3H,02H,0FE

75、H,0E3H,01H          DB  0FEH,033H,01H,0FEH,0C0H,01H,0FEH,84H,02H          DB  0FEH,84H,02H,0FEH,57H,02H          DB  0FEH,57H,04H          DB  0FEH,57H,01H,0FEH,57H,01H,0FEH,57H,01H,0FEH,57H,01H          DB  0FEH,57H,01H,0FEH,57H,02H,0FEH,84H,01H,0FDH,0C8H

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论