Sound Library
The mikroBasic PRO for 8051 provides a Sound Library to supply users with routines necessary for sound signalization in their applications. Sound generation needs additional hardware, such as piezo-speaker (example of piezo-speaker interface is given on the schematic at the bottom of this page).
External dependencies of Sound Library
The following variables must be defined in all projects using Sound Library: | Description: | Example : |
---|---|---|
dim Sound_Play_Pin as sbit bdata sfr external |
Sound output pin. | dim Sound_Play_Pin as sbit at P0_3_bit |
Library Routines
Sound_Init
Prototype |
sub procedure Sound_Init() |
---|---|
Returns |
Nothing. |
Description |
Configures the appropriate MCU pin for sound generation. |
Requires |
|
Example |
' Initialize the pin P0.3 for playing sound dim Sound_Play_Pin as sbit at P0_3_bit ... Sound_Init() |
Sound_Play
Prototype |
sub procedure Sound_Play(dim byref freq_in_Hz as word, dim byref duration_ms as word) |
---|---|
Returns |
Nothing. |
Description |
Generates the square wave signal on the appropriate pin. Parameters :
Note: frequency range is limited by Delay_Cyc parameter. Maximum frequency that can be produced by this function is |
Requires |
In order to hear the sound, you need a piezo speaker (or other hardware) on designated port. Also, you must call Sound_Init to prepare hardware for output before using this function. |
Example |
' Play sound of 1 kHz in duration of 100ms Sound_Play(1000, 100) |
Library Example
The example is a simple demonstration of how to use the Sound Library for playing tones on a piezo speaker.
program Sound ' Sound connections dim Sound_Play_Pin as sbit at P0_3_bit ' End Sound connections sub procedure Tone1() Sound_Play(659, 250) ' Frequency = 659Hz, duration = 250ms end sub sub procedure Tone2() Sound_Play(698, 250) ' Frequency = 698Hz, duration = 250ms end sub sub procedure Tone3() Sound_Play(784, 250) ' Frequency = 784Hz, duration = 250ms end sub sub procedure Melody() ' Plays the melody "Yellow house" Tone1() Tone2() Tone3() Tone3() Tone1() Tone2() Tone3() Tone3() Tone1() Tone2() Tone3() Tone1() Tone2() Tone3() Tone3() Tone1() Tone2() Tone3() Tone3() Tone3() Tone2() Tone2() Tone1() end sub sub procedure ToneA() ' Tones used in Melody2 function Sound_Play(880, 50) end sub sub procedure ToneC() Sound_Play(1046, 50) end sub sub procedure ToneE() Sound_Play(1318, 50) end sub sub procedure Melody2() ' Plays Melody2 dim i as byte i = 1 for i = 1 to 9 ToneA() ToneC() ToneE() next i end sub main: P1 = 255 ' Configure PORT1 as input Sound_Init() ' Initialize sound pin Sound_Play(2000, 1000) ' Play starting sound, 2kHz, 1 second while TRUE ' endless loop if (P1_7_bit = 0) then ' If P1.7 is pressed play Tone1 Tone1() while ( P1_7_bit = 0) nop ' Wait for button to be released wend end if if ( P1_6_bit = 0) then ' If P1.6 is pressed play Tone2 Tone2() while ( P1_6_bit = 0) nop ' Wait for button to be released wend end if if ( P1_5_bit = 0) then ' If P1.5 is pressed play Tone3 Tone3() while ( P1_5_bit = 0) nop ' Wait for button to be released wend end if if ( P1_4_bit = 0 ) then ' If P1.4 is pressed play Melody2 Melody2() while ( P1_4_bit = 0 ) nop ' Wait for button to be released wend end if if ( P1_3_bit = 0) then ' If P1.3 is pressed play Melody Melody() while ( P1_3_bit = 0 ) nop ' Wait for button to be released wend end if wend end.
HW Connection
Example of Sound Library connection
What do you think about this topic ? Send us feedback!