(1)键盘键值读取程序
键盘键值读取程序包括键盘扫描、消除抖动、键译码等内容。按键的识别主要有两种方法:行反转法和行扫描法。因为键盘为机械开关,容易引入抖动。为了消除抖动干扰,在程序中要加入消除抖动的部分。
(2)中断计时
 中断部分,中断定时器1主要负责输出不同频率的方波,产生声音,中断定时器1主要是计时按键时间及按键间隔时间的功能,在播放音乐的时候,还担任着播放音乐的节拍的任务。
(3)音乐播放
音乐播放部分主要是播放音乐,实现按键重播和播放程序里面的音乐的功能。
(4)主程序
主程序主要是随时发出按键的声音功能,并且通过不同P口的扫描,判断是否是播放按键声音还是播放音乐,还是继续发出按键声音。
七、实验源程序
汇编程序:
/*SB1 1音  SB2 2音   SB3 3音  SB4 4音 SB1SB2  5音   SB2SB3  6音   SB3SB4  7音   SB1SB4  i音   SB1SB3 第一首歌  SB2SB4  第二首歌 */
ORG 0000H
 LJMP KEYP0
KEYP0: MOV R0,#00H   
      CLR TR0
      SETB P2.4     ;关蜂鸣器
     SETB P2.3      ;关数码管
WU:  MOV R0,P3  ;扫描键盘输入
    CJNE R0,#0FFH,KEYPO1  ;有输入时跳转
   JMP WU
KEYPO1:CJNE R0,#0FBH,KEYPO2  ;输入1音,非1音跳转
  SETB P2.4     ;蜂鸣器置于高电平
    MOV R3,#200
MAIN01:MOV TMOD,#01H    ;初始化,工作方式1
       MOV TL0,#21H     ;写入计数初值
       MOV TH0,#0F9H
       SETB TR0         ;启动计数
   
WAIT1:JNB TF0,WAIT1     
     CLR TF0          
     CPL P2.4             ;蜂鸣器响
   CLR P2.3             ;数码管显示1
   MOV A,#11111001B
   MOV P0,A
     DJNZ R3,MAIN01
   LJMP KEYP0         ;返回程序KEYP0
   
KEYPO2:CJNE R0,#0F7H,KEYPO3  ; 输入2音,非2音跳转
SETB P2.4        ;蜂鸣器置于高电平
 MOV R3,#200  
MAIN02:MOV TMOD,#01H    
       MOV TL0,#0E1H         ;写入计数初值
       MOV TH0,#0F9H
       SETB TR0
WAIT2:JNB TF0,WAIT2
     CLR TF0
     CPL P2.4            ;蜂鸣器响
   CLR P2.3            ;数码管显示2
   MOV A,#10100100B 
   MOV P0,A
     DJNZ R3,MAIN02
 LJMP KEYP0
KEYPO3:CJNE R0,#0EFH,KEYPO4  ; 输入3音,非3音跳转
SETB P2.4         ;蜂鸣器置于高电平
 MOV R3,#200
MAIN03:MOV TMOD,#01H      
       MOV TL0,#08CH
       MOV TH0,#0FAH
       SETB TR0
WAIT3:JNB TF0,WAIT3
     CLR TF0
     CPL P2.4
   CLR P2.3
   MOV A,#10110000B
   MOV P0,A
     DJNZ R3,MAIN03
 LJMP KEYP0
KEYPO4:
CJNE R0,#0DFH,KEYPO5           ; 输入4音,非4音跳转
SETB P2.4
 MOV R3,#200
MAIN04:MOV TMOD,#01H             
       MOV TL0,#0D8H
       MOV TH0,#0FAH
       SETB TR0
WAIT4:JNB TF0,WAIT4
     CLR TF0
     CPL P2.4
   CLR P2.3
   MOV A,#10011001B
   MOV P0,A
     DJNZ R3,MAIN04
 LJMP KEYP0
KEYPO5: CJNE R0,#
上一页 [1] [2] [3] [4] [5] [6] 下一页