|
各种编程语言实现控制PC喇叭发声代码
编程语言包括51Asm 51C QB VB等
51Asm(演奏一首曲子,所以代码比较长): org 0000h ;MUSIC LJMP START ORG 000BH LJMP INTT0 START: MOV SP,#50H MOV TH0,#0D8H MOV TL0,#0EFH MOV TMOD,#01H MOV IE,#82H MUSIC0: NOP MOV DPTR,#DAT MOV 20H,#00H MUSIC1: NOP CLR A MOVC A,@A+DPTR JZ END0 CJNE A,#0FFH,MUSIC5 LJMP MUSIC3 MUSIC5: NOP MOV R6,A INC DPTR MOV A,#0 MOVC A,@A+DPTR MOV R7,A SETB TR0 MUSIC2: NOP CPL P1.0 MOV A,R6 MOV R3,A LCALL DEL MOV A,R7 CJNE A,20H,MUSIC2 MOV 20H,#00H INC DPTR LJMP MUSIC1 MUSIC3: NOP CLR TR0 MOV R2,#0DH MUSIC4: NOP MOV R3,#0FFH LCALL DEL DJNZ R2,MUSIC4 INC DPTR LJMP MUSIC1 END0: NOP MOV R2,#0FFH MUSIC6: MOV R3,#00H LCALL DEL DJNZ R2,MUSIC6 LJMP MUSIC0 DEL: NOP DEL3: MOV R4,#02H DEL4: NOP DJNZ R4,DEL4 NOP DJNZ R3,DEL3 RET NOP INTT0: INC 20H MOV TH0,#0D8H MOV TL0,#0EFH RETI DAT: DB 18H,30H,1CH,10H DB 20H,40H,1CH,10H DB 18H,10H,20H,10H DB 1CH,10H,18H,40H DB 1CH,20H,20H,20H DB 1CH,20H,18H,20H DB 20H,80H,0FFH,20H DB 30H,1CH,10H,18H DB 20H,15H,20H,1CH DB 20H,20H,20H,26H DB 40H,20H,20H,2BH DB 20H,26H,20H,20H DB 20H,30H,80H,0FFH DB 20H,20H,1CH,10H DB 18H,10H,20H,20H DB 26H,20H,2BH,20H DB 30H,20H,2BH,40H DB 20H,20H,1CH,10H DB 18H,10H,20H,20H DB 26H,20H,2BH,20H DB 30H,20H,2BH,40H DB 20H,30H,1CH,10H DB 18H,20H,15H,20H DB 1CH,20H,20H,20H DB 26H,40H,20H,20H
DB 2BH,20H,26H,20H DB 20H,20H,30H,80H DB 20H,30H,1CH,10H DB 20H,10H,1CH,10H DB 20H,20H,26H,20H DB 2BH,20H,30H,20H DB 2BH,40H,20H,15H DB 1FH,05H,20H,10H DB 1CH,10H,20H,20H DB 26H,20H,2BH,20H DB 30H,20H,2BH,40H DB 20H,30H,1CH,10H DB 18H,20H,15H,20H DB 1CH,20H,20H,20H DB 26H,40H,20H,20H DB 2BH,20H,26H,20H DB 20H,20H,30H,30H DB 20H,30H,1CH,10H DB 18H,40H,1CH,20H DB 20H,20H,26H,40H DB 13H,60H,18H,20H DB 15H,40H,13H,40H DB 18H,80H,00H END
51C:
#include <AT89X52.h>
void main() { unsigned int i;
while (1) { P1_1=1; for(i=0;i<=60000;i++); P1_1=0; for(i=0;i<=60000;i++); } }
TP:
{Delay.PAS}
{Sample code for the Delay, NoSound, and Sound procedures.}
uses Crt;
begin Sound(220); { Beep } Delay(200); { For 200 ms } NoSound; { Relief! } end.
QB:
FOR i% = 440 TO 1000 STEP 5 SOUND i%, i% / 1000 NEXT i%
VB:
Option Explicit Private Declare Function Beep Lib "kernel32" (ByVal dwFreq As Long, ByVal dwDuration As Long) As Long
Private Sub Form_Load() Const Duration As Integer = 500
'低低音组 Beep 131, Duration Beep 147, Duration Beep 165, Duration Beep 176, Duration Beep 196, Duration Beep 220, Duration Beep 247, Duration
'低音组 Beep 262, Duration Beep 296, Duration Beep 329.7, Duration Beep 349.2, Duration Beep 392, Duration Beep 440, Duration Beep 493.9, Duration
'中音组 Beep 523.3, Duration '中央C Beep 587.3, Duration Beep 659.3, Duration Beep 698.5, Duration Beep 784, Duration Beep 880, Duration Beep 987.8, Duration
'高音组 Beep 1046.5, Duration Beep 1174.7, Duration Beep 1318.5, Duration Beep 1396.9, Duration Beep 1568, Duration Beep 1760, Duration Beep 1975.5, Duration End Sub
上面都是播放一首小音乐,并不是一个音的代码,如果是一个音可自行简化。
|