⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 appearmusic.asm

📁 音频LCD显示报警器,有不明白的可以联系我.QQ64134703
💻 ASM
字号:
RS EQU P2.0;确定具体硬件的连接方式
RW EQU P2.1 ;确定具体硬件的连接方式
E EQU P2.2 ;确定具体硬件的连接方式

ORG 0000H
   JMP MAIN
   ORG 0003H                  ;外部中断0
  AJMP PLAYM
   ORG 000BH                   ;定时器t0
  AJMP TIM0
   ORG 0013H                  ;外部中断1
  AJMP PLAYM

   ORG 0060H
  MAIN:MOV TMOD,#01H
       MOV IE,#10000111B
       MOV IP,#00000010B
       CLR TR0

      MOV P0,#00000001B ;清屏并光标复位
      ACALL ENABLE;调用写入命令子程序
      MOV P0,#00111000B ;设置显示模式:8位2行5x7点阵
      ACALL ENABLE ;调用写入命令子程序
      MOV P0,#00001111B ;显示器开、光标开、光标允许闪烁
      ACALL ENABLE ;调用写入命令子程序
      
      MOV P0,#0C0H ;写入显示起始地址(第二行第一个位置)
      ACALL ENABLE ;调用写入命令子程序

       AJMP $

PLAYM :MOV 30H,#00H             ;30H用于音乐播放控制
  NEXT:JNB P3.2,MUSIC1
       JNB P3.3,MUSIC2
       AJMP EXT
MUSIC1:MOV DPTR,#TABLE1         ;TABLE1表头
       MOV P0,#0C0H ;写入显示起始地址(第二行第一个位置)
       ACALL ENABLE ;调用写入命令子程序
       MOV P0,#4AH
       ACALL XABLE
       MOV P0,#49H
       ACALL XABLE
       MOV P0,#4EH
       ACALL XABLE
       MOV P0,#47H
       ACALL XABLE
      
       MOV P0,#31H
       ACALL XABLE
       JMP CON
MUSIC2:MOV DPTR,#TABLE2
      MOV P0,#0C0H ;写入显示起始地址(第二行第一个位置)
       ACALL ENABLE ;调用写入命令子程序
       MOV P0,#4AH
       ACALL XABLE
       MOV P0,#49H
       ACALL XABLE
       MOV P0,#4EH
       ACALL XABLE
       MOV P0,#47H
       ACALL XABLE
       
       MOV P0,#32H
       ACALL XABLE
       JMP CON

   CON:MOV A,30H                 ;30H播放控制
       MOVC A,@A+DPTR            ;乐谱查表
       MOV R2,A

       JZ END0                   ;曲谱结束控制

       ANL A,#0FH                ;tablex低4位
       MOV R5,A                  ;R5低4位
       MOV A,R2
       SWAP A
       ANL A,#0FH                ;tablex高4位
       JNZ SING

       CLR TR0                   ;静音
       JMP D1

  SING:MOV DPTR,#TABLE0                  ;TABLE0
       DEC A
       MOV 22H,A                          ;22H存放音符号序号
       RL A

       MOVC A,@A+DPTR
       MOV TH0,A                          ;定时器高八位送值
       MOV 21H,A                          ;21H存放高八位
       MOV A,22H
       RL A
       INC A
       MOVC A,@A+DPTR
       MOV TL0,A                          ;定时器低八位送值
       MOV 20H,A                          ;20H存放低八位
       SETB TR0
    D1:ACALL DELAY                         ;节拍
       INC 30H                            ; @30H+1  播放控制
       JMP NEXT
  END0:CLR TR0                            ;曲谱结束控制
       JMP PLAYM
   EXT:CLR TR0
       RETI

  TIM0:PUSH ACC                            ;计时中断
       PUSH PSW
       MOV TL0,20H                         ;计时器,低八位重送
       MOV TH0,21H                         ;计时器,高八位重送

       CPL P1.6                            ;信号输出端

       POP PSW
       POP ACC
       RETI

XABLE: SETB RS ;RS=1
       CLR RW ;RW=0 准备写入数据
       CLR E ;E=0 ;执行显示命令
       ACALL MDELAY ;判断液晶模块是否忙?
       SETB E ;E=1 显示完成,程序停车
       RET
ENABLE:
       CLR RS ;写入控制命令的子程序
       CLR RW
       CLR E
       ACALL MDELAY
       SETB E
       RET
MDELAY:
       MOV P0,#0FFH ;判断液晶显示器是否忙的子程序
       CLR RS
       SETB RW
       CLR E
       NOP
       SETB E
       JB P0.7,MDELAY ;如果P1.7为高电平表示忙就循环等待
       RET

DELAY: MOV R7,#02                           ;节拍延时产生
D2:    MOV R4,#125
D3:    MOV R3,#248
       DJNZ R3,$
       DJNZ R4,D3
       DJNZ R7,D2
       DJNZ R5,DELAY
       RET

TABLE0:
       DW 64260,64400,64524,64580
       DW 64684,64777,64820,64898
       DW 64968,65030,65058,65110
       DW 65157,65178,65217
TABLE1:                                  ; 高4位频率选择,低4位节拍选择  三只小猫
       DB 84H,02H,82H,64H,54h
       DB 64H,54H,48H
       DB 64H,02H,52H,44H,24H
       DB 14H,24H,18H

       DB 24H,02H,22H,42H,24H
       DB 44H,54H,68H
       DB 54H,02H,52H,84H,84H
       DB 54H,64H,48H
       DB 00H

TABLE2:                                       ;不倒翁
       DB 84H,94H,88H
       DB 64H,54H,68H
       DB 84H,64H,54H,44h
       DB 62H,82H,42H,62H,58H

       DB 84H,94H,88H
       DB 64H,54H,68H
       DB 84H,64H,54H,44h
       DB 52H,42H,52H,62H,48H
       DB 00H
   END

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -