Sound
is a function of frequency. This concept has been used to generate sound
from the microcontroller. Different types of sounds can be produced by
varying the frequency.
This article explains the concept behind generating sound from the PIC microcontroller .
This concept can be used to generate sound with any MCU. It can be used
to generate specific sounds or alarms. This circuit has wide
applications like in cars to produce sound while reversing, in
electronic piano to generate different tones, or in electronic toys to
generate tones.
Sound Library
The mikroC PRO for PIC 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).
Library
Routines
Sound_Init
Prototype
|
void Sound_Init(char *snd_port, char snd_pin);
|
Returns
|
Nothing.
|
Description
|
Configures the appropriate MCU pin
for sound generation.
Parameters :
|
Requires
|
Nothing.
|
Example
|
// Initialize the pin RC3 for playing sound
Sound_Init(&PORTC, 3);
|
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 Freq_max = Fosc/(80*3). Minimum frequency is Freq_min = Fosc/(80*255).
Generated frequency may differ from the freq_in_hz
parameter due to integer arithmetics.
|
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 1KHz in duration of 100ms
Sound_Play(1000, 100);
|
Example Program
The example is a simple
demonstration of how to use the Sound Library for playing tones on a piezo
speaker
/************************************************************************/
/*************************Embedded
Projects******************************/
/********************* fb.com/EmbeddedProjects
**************************/
/*********
http://microcontrollerprojects00.blogspot.in/ ****************/
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() {
TRISB
= 0xF8; //
Configure RB7..RB3 as input
Sound_Init(&PORTC, 3);
Sound_Play(880, 1000); // Play sound at 880Hz for 1
second
while (1) {
if (Button(&PORTB,7,1,1)) // RB7 plays Tone1
Tone1();
while (RB7_bit) ; // Wait for button to be
released
if (Button(&PORTB,6,1,1)) // RB6 plays Tone2
Tone2();
while (RB6_bit) ; // Wait for button to be
released
if (Button(&PORTB,5,1,1)) // RB5 plays Tone3
Tone3();
while (RB5_bit) ; // Wait for button to be
released
if (Button(&PORTB,4,1,1)) // RB4 plays Melody2
Melody2();
while (RB4_bit) ; // Wait for button to be
released
if (Button(&PORTB,3,1,1)) // RB3 plays Melody
Melody();
while (RB3_bit) ; // Wait for button to be
released
}
}
Circuit Diagram
MikroC Sound Library |
PIC microcontrollers are very cheap and these microcontrollers are simulated and programmed by means of circuit wizard software. PIC stands for peripheral integrated controller.PIC's are used in the electronic and robotic field. It has registers, special purpose control registers and stack,etc.
ReplyDeleteEmbedded Projects in Chennai