This experiment is about generating a melody tune using a PIC microcontroller. Well, this won't be difficult if you know the notes of the tune, and their respective frequencies. Here's a chart for note to frequency conversion. We will play the 'Happy Birthday' tune with a PIC12F683 microcontroller. The microcontroller will generate the frequencies of the various notes (with proper timing) in the tune and the melody will be played in a piezoelectric buzzer.
Circuit Setup
The piezo buzzer is connected to the GP2 port of PIC12F683.
Software
The notes for Happy Birthday tune is like this.
Happy birthday to you
C4 C4 D4 C4 F4 E4
Happy birthday to you
C4 C4 D4 C4 G4 F4
Happy birthday dear xxxx
C4 C4 C5 A4 F4 E4 D4
Happy birthday to you $$$.
B4b B4b A4 F4 G4 F4
By using the chart, these notes are first converted into respective frequencies. Then the tones for these frequencies are generated using MikroC's built in sound function, Sound_Play(). The syntax is,
Sound_Play(frequency in Hz, duration in ms).
/*
Experiment No. 7: Playing Happy Birthday Tune with PIC12F683
Compile with MikroC Pro for PIC
Internal clock @ 4.0 MHz, MCLR disabled, PWRT OFF
*/
void Delay_100(){
Delay_ms(100);
}
void main() {
CMCON0 = 7;
TRISIO = 0b00001000; // GP5, 5 I/P's, Rest O/P's
GPIO = 0;
Sound_Init(&GPIO,2); // Initialize sound o/p pin
do {
Sound_Play(262, 400); // Hap
Delay_100();
Sound_Play(262, 400); // Py
Delay_100();
Sound_Play(294, 800); // Birth
Delay_100();
Sound_Play(262, 800); // Day
Delay_100();
Sound_Play(349, 800); // To
Delay_100();
Sound_Play(330, 1000); // You
Delay_100();
Delay_100();
// Another Para
Sound_Play(262, 400); // Hap
Delay_100();
Sound_Play(262, 400); // Py
Delay_100();
Sound_Play(294, 800); // Birth
Delay_100();
Sound_Play(262, 800); // Day
Delay_100();
Sound_Play(392, 800); // To
Delay_100();
Sound_Play(349, 1000); // You
Delay_100();
Delay_100();
// Another Para
Sound_Play(262, 400); // Hap
Delay_100();
Sound_Play(262, 400); // Py
Delay_100();
Sound_Play(523, 700); // Birth
Delay_100();
Sound_Play(440, 800); // Day
Delay_100();
Sound_Play(349, 800); // Dear
Delay_100();
Sound_Play(330, 800); // XX
Delay_100();
Sound_Play(294, 700); // XX
Delay_100();
Sound_Play(466, 400); // Hap
Delay_100();
Sound_Play(466, 400); // Py
Delay_100();
Sound_Play(440, 700); // Birth
Delay_100();
Sound_Play(349, 800); // Day
Delay_100();
Sound_Play(392, 800); // To
Delay_100();
Sound_Play(349, 1600); // You $ $ $
Delay_ms(1000); // Wait for 1 sec and replay
}while(1);
}
Output
8 comments:
hi i use atmel atmega8. how to write Sound_Play function pls help
can u plzz givw me the HEX file
how to write other Sound in place of Happy Birthday
clever, msg me at : nodoubtman@hotmail.com, i will give you the .hex code produce with mikroC PRO for PIC
thank you! :)
Have a good day! :)
Sahu : note frequency here : http://jeanjacques.dialo.free.fr/Anglais/afrequenc.htm
have a good day !:)
enjoy!
send me your song ;)
hi
I want to know about the common used pic term in HITECH or MicroPC kindly would you teach me I am new in PIC although I have knowledge in C programming.
TQ
Ordinarily, for illustration, your thought as well as record which focus that article happens towards the end belonging to the starting, wherever this acts because jumping-off place to your heart, as well as principal physical structure, belonging to the dissertation. https://imgur.com/a/laa9krk https://imgur.com/a/vmUBv9T https://imgur.com/a/iM4rfPh http://ham72z7avf.dip.jp https://imgur.com/a/V25bvFI https://imgur.com/a/BqwfW78 https://imgur.com/a/ilDS9wx
Please let me know if you’re looking for a article writer for your site. You have some really great posts and I feel I would be a good asset. If you ever want to take some of the load off, I’d absolutely love to write some material for your blog in exchange for a link back to mine. Please send me an email if interested. Thank you! notes frequency
Post a Comment