Pemrograman Modul Musik WTV020-SD dengan AVR ATMEGA 8

Posted By: Jogja Robotika In: Tutorial On: Wednesday, September 16, 2015 Comment: 0 Hit: 2502

WTV020-SD merupakan sebuah modul yang digunakan untuk memutar file music yang memiliki format AD4. WTV020-SD memiliki beberapa mode operasiseperti “mp3 mode” dan “two line serial mode”.

WTV020-SD merupakan sebuah modul yang digunakan untuk memutar file music yang memiliki format AD4. WTV020-SD memiliki beberapa mode operasiseperti “mp3 mode” dan “two line serial mode”.

Berikuta dalah beberapa fitur dari WTV020-SD :

  1. Power supply sebesar 3.3V
  2. Support microSD 2GB (sesuaipengalamanpenulis) :D
  3. Untuk music berformat AD4 sampling rate harusberkisarantara 6kHZ-36kHZ
  4. Untuk music berformat WAV sampling rate harusberkisarantara 6kHZ-16kHZ
  5. Terdapatbeberapa mode pengoperasianseperti: MP3 mode, Key Mode, dan Two Line Serial Mode yang dapatdipilihsesuaikebutuhan.

Berikutadalahkonfigurasi pin dari WTV020-SD :

Kali ini saya akan menggunakan IC ATMEGA 8 untuk mengoperasikan modul musik WTV020-SD dengan mode “two line serial mode”. Untuk menggunakan mode “two line serial mode” makapada pin “CLK” dan “DI” WTV020-SD perlu dihubungkan pada PORT ATMEGA 8 yang difungsikan sebagai output. Berikut adalah konfigurasi pin ATMEGA 8 yang sayagunakan :

PIN

Konfigurasi

Fungsi

PORTC.0

Input

Untukmemainkan music no.1

PORTC.1

Input

Untukmemainkan music no.2

PORTC.2

Input

Untukmemainkan music no.3

PORTC.3

Output

CLK

PORTC.4

Output

DI

PORTC.5

Input

Busy

Berikutadalahskematik yang sayagunakanpada project ini :

 

 

Berikutadalah program yang sayabuatmenggunakancodevisionAVR :

/*****************************************************

This program was produced by the

CodeWizardAVR V2.05.3 Standard

Automatic Program Generator

© Copyright 1998-2011 PavelHaiduc, HP InfoTech s.r.l.

http://www.hpinfotech.com

 

Project :

Version :

Date    : 10/26/2013

Author  : @cahyooioi

Company :www.jogjarobotika.com

Comments:

 

 

Chip type               : ATmega8

Program type            : Application

AVR Core Clock frequency: 11.059200 MHz

Memory model            : Small

External RAM size       : 0

Data Stack size         : 256

*****************************************************/

 

#include <mega8.h>

#include <delay.h>

// Declare your global variables here

#define song_1 PINC.0

#define song_2 PINC.1

#define song_3 PINC.2

#define clock PORTC.3

#define data  PORTC.4

#define busy  PINC.5

 

unsignedint mask;

 

voidplay_music(unsigned int command);

 

void main(void)

{

// Declare your local variables here

 

// Input/Output Ports initialization

// Port B initialization

// Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In

// State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T

PORTB=0x00;

DDRB=0x00;

 

// Port C initialization

// Func6=In Func5=In Func4=Out Func3=Out Func2=Out Func1=Out Func0=Out

// State6=T State5=T State4=0 State3=0 State2=0 State1=0 State0=0

PORTC=0x07;

DDRC=0x18;

 

// Port D initialization

// Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In

// State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T

PORTD=0x00;

DDRD=0x00;

 

// Timer/Counter 0 initialization

// Clock source: System Clock

// Clock value: Timer 0 Stopped

TCCR0=0x00;

TCNT0=0x00;

 

// Timer/Counter 1 initialization

// Clock source: System Clock

// Clock value: Timer1 Stopped

// Mode: Normal top=0xFFFF

// OC1A output: Discon.

// OC1B output: Discon.

// Noise Canceler: Off

// Input Capture on Falling Edge

// Timer1 Overflow Interrupt: Off

// Input Capture Interrupt: Off

// Compare A Match Interrupt: Off

// Compare B Match Interrupt: Off

TCCR1A=0x00;

TCCR1B=0x00;

TCNT1H=0x00;

TCNT1L=0x00;

ICR1H=0x00;

ICR1L=0x00;

OCR1AH=0x00;

OCR1AL=0x00;

OCR1BH=0x00;

OCR1BL=0x00;

 

// Timer/Counter 2 initialization

// Clock source: System Clock

// Clock value: Timer2 Stopped

// Mode: Normal top=0xFF

// OC2 output: Disconnected

ASSR=0x00;

TCCR2=0x00;

TCNT2=0x00;

OCR2=0x00;

 

// External Interrupt(s) initialization

// INT0: Off

// INT1: Off

MCUCR=0x00;

 

// Timer(s)/Counter(s) Interrupt(s) initialization

TIMSK=0x00;

 

// USART initialization

// USART disabled

UCSRB=0x00;

 

// Analog Comparator initialization

// Analog Comparator: Off

// Analog Comparator Input Capture by Timer/Counter 1: Off

ACSR=0x80;

SFIOR=0x00;

 

// ADC initialization

// ADC disabled

ADCSRA=0x00;

 

// SPI initialization

// SPI disabled

SPCR=0x00;

 

// TWI initialization

// TWI disabled

TWCR=0x00;

delay_ms(100);

 

while (1)

      {

      // Place your code here

if (song_1==0)

       {

delay_ms(100);

play_music(0);

       }

else if (song_2==0)

       {

delay_ms(100);

play_music(1);

       }

else if (song_3==0)

       {

delay_ms(100);

play_music(2);

       }

      }

}

 

voidplay_music (unsigned int command)

{

clock=0;

delay_ms(2);

for (mask=0x8000;mask>0;mask>>=1)

    {  

clock=0;

delay_us(50);

if (command & mask)

            {data=1;}

else

            {data=0;}

delay_us(50);

clock=1;

delay_us(100);

if (mask>0x0001)

                        {

                        delay_ms(2);     

        }

    }

delay_ms(100);

while (busy==1){}

delay_ms(100);

}

 

Comments

Leave your comment