Sound Library
The mikroC 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 : |
|---|---|---|
extern sfr sbit bdata Sound_Play_Pin; |
Sound output pin. | sbit Sound_Play_Pin at P0_3_bit; |
Library Routines
Sound_Init
| Prototype |
void Sound_Init(); |
|---|---|
| Returns |
Nothing. |
| Description |
Configures the appropriate MCU pin for sound generation. |
| Requires |
|
| Example |
// Initialize the pin P0.3 for playing sound sbit Sound_Play_Pin at P0_3_bit; ... Sound_Init(); |
Sound_Play
| Prototype |
void Sound_Play(unsigned freq_in_hz, unsigned duration_ms); |
|---|---|
| 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.
// Sound connections
sbit Sound_Play_Pin at P0_3_bit;
// End Sound connections
void Tone1() {
Sound_Play(659, 250); // Frequency = 659Hz, duration = 250ms
}
void Tone2() {
Sound_Play(698, 250); // Frequency = 698Hz, duration = 250ms
}
void Tone3() {
Sound_Play(784, 250); // Frequency = 784Hz, duration = 250ms
}
void 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();
}
void ToneA() {
Sound_Play( 880, 50);
}
void ToneC() {
Sound_Play(1046, 50);
}
void ToneE() {
Sound_Play(1318, 50);
}
void Melody2() {
unsigned short i;
for (i = 9; i > 0; i--) {
ToneA(); ToneC(); ToneE();
}
}
void main() {
P1 = 255; // Configure PORT1 as input
Sound_Init(); // Initialize sound pin
Sound_Play(2000, 1000); // Play starting sound, 2 kHz, 1 second
while (1) { // endless loop
if (!(P1_7_bit)) // If P1.7 is pressed play Tone1
Tone1(); //
while (!(P1_7_bit)) ; // Wait for button to be released
if (!(P1_6_bit)) // If P1.6 is pressed play Tone2
Tone2(); //
while (!(P1_6_bit)) ; // Wait for button to be released
if (!(P1_5_bit)) // If P1.5 is pressed play Tone3
Tone3(); //
while (!(P1_5_bit)) ; // Wait for button to be released
if (!(P1_4_bit)) // If P1.4 is pressed play Melody2
Melody2(); //
while (!(P1_4_bit)) ; // Wait for button to be released
if (!(P1_3_bit)) // If P1.3 is pressed play Melody
Melody(); //
while (!(P1_3_bit)) ; // Wait for button to be released
}
}
HW Connection

Example of Sound Library connection
What do you think about this topic ? Send us feedback!



