اطلاعیه

Collapse
No announcement yet.

mp3 player with mmc reader با استفاده از bascom

Collapse
X
 
  • فیلتر
  • زمان
  • Show
Clear All
new posts

    mp3 player with mmc reader با استفاده از bascom

    سلام
    این پروژه mp3 player با استفاده از bascom هست .

    اول شماتیک :



    نمونه مدار کامل شده :




    سورس برنامه :

    '///////////////////////////////////////////////////////////////////////////////
    '///////////////////////////////////////////////////////////////////////////////
    '
    ' MP_3_PLAYER with VS1001k FOR MP3.FILES FORMAT Name 8.3 FAT16 AVR-DOS 5.5
    ' data 14-06-2007 versione BASCOM 1.8.11.3 AVR-DOS 5.5
    ' written by GIOVANNI DE LUCA
    ' HTTP://delucagiovanni.interfree.it robot applications and others
    ' HTTP://WWW.LNS.INFN.IT nuclear phisics applications
    ' HTTP://www.youtube.com/tubincolo my video mobile-robots
    ' deluca@lns.infn.it my e-mail
    ' to control it's used serial port com1 and pul "UP" to change songs
    ' to make test I used 64Mb MMC with 20 songs in the MMC
    ' but I thing that it's possible read bigger MMC memory without problem
    '
    '///////////////////////////////////////////////////////////////////////////////
    '///////////////////////////////////////////////////////////////////////////////

    $prog &HFF , &H4F , &HC5 , &HFF 'FUSE BITS generated
    $regfile = "M128def.dat" 'IT'S POSSIBLE USE DIFFERENT AVR-CHIPS
    $crystal = 14745600 'BUT this NOT TESTED
    $baud = 115200
    '-------------------------------------------------------------------------------
    Config Timer1 = Timer , Prescale = 64
    Config Clock = Soft
    Enable Interrupts
    Enable Timer1
    Enable Urxc 'abilita rs232
    On Timer1 Timer_1
    On Urxc Rs_232 'salto per rs232
    Config Date = Dmy , Separator = .
    '-------------------------------------------------------------------------------
    Avanti Alias Ping.0
    Led Alias Portg.1
    Vs_miso Alias Pinc.0
    Vs_mosi Alias Portc.1
    Vs_clock Alias Portc.2
    Xcs Alias Portc.3
    Xreset Alias Portc.4
    Dreq Alias Pinc.5
    Bsync Alias Portc.6
    '-------------------------------------------------------------------------------
    Config Avanti = Input 'pulsante avanti
    Config Led = Output 'led
    Config Vs_miso = Input 'serial input vs-1001
    Config Vs_mosi = Output 'serial out vs-1001
    Config Vs_clock = Output 'serial clock vs-1001
    Config Xcs = Output 'VS Chip Select
    Config Xreset = Output 'VS Reset
    Config Dreq = Input 'VS Data Request
    Config Bsync = Output 'VS Stream Request
    '-------------------------------------------------------------------------------
    Declare Sub Vs_init()
    Declare Sub Soft_reset()
    Declare Sub Vs_write(byval Vs_address As Byte , Byval Data1 As Byte , Byval Data2 As Byte)
    Declare Function Vs_read(byval Vs_address As Byte) As Word
    Declare Sub Send_mp3(byval Filename As String)
    '-------------------------------------------------------------------------------
    Const Vs_rd = &B0000_0011 'Write command vs1001
    Const Vs_wr = &B0000_0010 'Read command vs1001
    Const Vs_mode = 0
    Const Vs_status = 1
    Const Vs_clockf = 3
    Const Vs_decode_time = 4
    Const Vs_audata = 5
    Const Vs_volume = 11
    '-------------------------------------------------------------------------------
    Dim B As Byte
    Dim I As Integer
    Dim J As Long
    Dim Curbyte As Long
    Dim S As String * 20
    Dim Sample_rate As Word
    Dim Bit_rate As Word
    Dim Is_stereo As Word
    Dim Audata As Word
    Dim Filename As String * 11
    Dim Mmc_data(512) As Byte '512 byte
    Dim Tempo_new As Word
    Dim Tempo_old As Word
    Dim Flag_read As Bit
    Dim Flag_play As Bit
    Dim Comando As String * 10
    Dim Mode_low As Byte
    Dim Mode_hig As Byte
    Dim Volume As Word
    Dim Volume_low As Byte
    Dim Volume_hig As Byte
    '-------------------------------------------------------------------------------
    $Include "Config_MMC.bas" 'include mmc

    If Gbdriveerror <> 0 Then End
    $Include "Config_AVR-DOS.BAS" 'include avr-dos

    B = Initfilesystem(1) 'init file system
    If B <> 0 Then Print "Errore MMC" 'se errore
    '-------------------------------------------------------------------------------
    Bsync = 0
    Xreset = 0
    Xcs = 1
    Portg.0 = 1 'res pull up
    Flag_play = 0 'sta suonando ?
    Flag_read = 1 'gia letto ?
    '-------------------------------------------------------------------------------
    '-------------------------- PROGRAM START -------------------------------------
    '-------------------------------------------------------------------------------
    Print "Dir *.mp3" 'dir mp3
    Print
    '-------------------------------------------------------------------------------
    '---------------------- crea una lista dei brani mp3 presenti sulla MMC --------
    '-------------------------------------------------------------------------------
    Open "Lista.txt" For Output As #9 'create file.list in MMC
    S = Dir( "*.mp3&quot
    While Len(s) > 0
    Print S ; " " ; Filedate() ; " " ; Filetime() ; " " ; Filelen()
    Print #9 , S 'memorizza la lista
    S = Dir()
    Wend
    Close #9
    '-------------------------------------------------------------------------------
    Print "VS1001 Init"
    Vs_init 'reset hardware e inizializza
    '-------------------------------------------------------------------------------
    '--------------------------- MAIN PROGRAMM -------------------------------------
    '-------------------------------------------------------------------------------
    Do


    Open "Lista.txt" For Input As #9 'OPEN LA LISTA
    While Eof(#9) = 0
    Line Input #9 , S 'READ filename Mp3
    Call Send_mp3(s) 'play mp3
    Wend
    Close #9

    Loop
    End
    '-------------------------------------------------------------------------------
    '---------------------------- TIMER 1 ------------------------------------------
    '-------------------------------------------------------------------------------
    Timer_1:
    If Bsync = 0 And Flag_play = 1 And Flag_read = 1 Then 'per leggere inforamzioni


    Flag_read = 0
    Audata = Vs_read(vs_audata)
    Sample_rate = Audata And &H1E00
    Rotate Sample_rate , Right , 9
    Bit_rate = Audata And &H1FF
    Is_stereo = Audata And &H8000
    Rotate Is_stereo , Right , 15
    Print Sample_rate ; "," ; Bit_rate ; " Kbs," ; Is_stereo 'print informations

    End If

    If Bsync = 0 And Flag_play = 1 And Flag_read = 0 Then
    Tempo_new = Vs_read(vs_decode_time)


    If Tempo_new <> Tempo_old Then Print Tempo_new ; " Sec"


    Tempo_old = Tempo_new

    End If


    Return
    '-------------------------------------------------------------------------------
    '---------------------- RS 232 -------------------------------------------------
    '-------------------------------------------------------------------------------
    Rs_232:
    Comando = Inkey()
    If Comando = "1" Then


    Mode_low.7 = 1
    Bsync = 0
    Vs_write Vs_mode , &H0 , Mode_low 'no loudness

    End If
    If Comando = "2" Then


    Mode_low.7 = 0
    Bsync = 0
    Vs_write Vs_mode , &H0 , Mode_low 'loudness

    End If
    If Comando = "3" Then


    Mode_low.1 = 0
    Bsync = 0
    Vs_write Vs_mode , &H0 , Mode_low 'play normale

    End If
    If Comando = "4" Then


    Mode_low.1 = 1
    Bsync = 0
    Vs_write Vs_mode , &H0 , Mode_low 'play veloce

    End If
    If Comando = "5" And Volume_low < 250 Then


    Volume_hig = Volume_hig + 5
    Volume_low = Volume_low + 5
    Bsync = 0
    Vs_write Vs_volume , Volume_hig , Volume_low 'volume down

    End If
    If Comando = "6" And Volume_low > 0 Then


    Volume_hig = Volume_hig - 5
    Volume_low = Volume_low - 5
    Bsync = 0
    Vs_write Vs_volume , Volume_hig , Volume_low 'volume up

    End If
    Comando = ""
    Return
    '-------------------------------------------------------------------------------
    '------------------------------ MP3 SUBROUTINES --------------------------------
    '-------------------------------------------------------------------------------
    Function Vs_read(byval Vs_address As Byte) As Word


    Xcs = 0 'Xcs low
    B = Vs_rd
    Shiftout Vs_mosi , Vs_clock , B , 1
    Shiftout Vs_mosi , Vs_clock , Vs_address , 1
    B = 0
    Shiftin Vs_miso , Vs_clock , B , 1
    Vs_read = B
    Shift Vs_read , Left , 8
    B = 0
    Shiftin Vs_miso , Vs_clock , B , 1
    Vs_read = Vs_read + B
    Xcs = 1 'Xcs high

    End Function
    '-------------------------------------------------------------------------------
    '-------------------------------- WRITE ROUTINE --------------------------------
    '-------------------------------------------------------------------------------
    Sub Vs_write(byval Vs_address As Byte , Byval Data1 As Byte , Byval Data2 As Byte)


    Xcs = 0
    B = Vs_wr
    Shiftout Vs_mosi , Vs_clock , B , 1
    Shiftout Vs_mosi , Vs_clock , Vs_address , 1
    Shiftout Vs_mosi , Vs_clock , Data1 , 1
    Shiftout Vs_mosi , Vs_clock , Data2 , 1
    Xcs = 1

    End Sub
    '-------------------------------------------------------------------------------
    '------------------------------- RESETTA E INIZILIZZA --------------------------
    '-------------------------------------------------------------------------------
    Sub Vs_init()


    Xreset = 0
    Waitms 5
    Xreset = 1
    Waitms 10




    Do : Led = Dreq : Loop Until Dreq = 1
    Vs_write Vs_mode , &H0 , &H4 'reset

    Do : Led = Dreq : Loop Until Dreq = 1
    Mode_low.7 = 1
    Vs_write Vs_mode , &H0 , Mode_low 'bass

    Do : Led = Dreq : Loop Until Dreq = 1
    Vs_write Vs_clockf , &H0 , &H0 'clockf 24,xx MHz

    Do : Led = Dreq : Loop Until Dreq = 1
    Vs_write Vs_volume , &H0 , &H0 'volume =0 massimo


    End Sub
    '-------------------------------------------------------------------------------
    '--------------------------- SOFT RESET VS1001 ---------------------------------
    '-------------------------------------------------------------------------------
    Sub Soft_reset


    Do : Led = Dreq : Loop Until Dreq = 1 'wait Dreq
    Vs_write Vs_mode , &H0 , &H4 'reset

    End Sub
    '-------------------------------------------------------------------------------
    '---------------------------- SEND FILE MP3 ------------------------------------
    '-------------------------------------------------------------------------------
    Sub Send_mp3(byval Filename As String)


    Print "Play : " ; Filename
    Soft_reset 'resetta vs1001
    Flag_read = 1 'per leggere una volta sample rate etc
    Flag_play = 0 'inizia a leggere dopo che č stato letto il primo pacchetto

    Open Filename For Binary As #10 'apri il file mp3 e play song

    Do : Led = Dreq : Loop Until Dreq = 1 'wait Dreq

    While Eof(#10) = 0
    Get #10 , Mmc_data(1) , , 512 'preleva 512 byte
    Do : Led = Dreq : Loop Until Dreq = 1 'wait Dreq

    For I = 1 To 16
    For J = 1 To 32

    Bsync = 1
    Shiftout Vs_mosi , Vs_clock , Mmc_data(curbyte) , 1
    Bsync = 0
    Incr Curbyte

    Next J
    Do : Led = Dreq : Loop Until Dreq = 1 'wait Dreq
    Next I 'first 32
    Curbyte = 1 'after 16 16x32=512 byte
    If Avanti = 0 Then Goto Esci 'pulsante up
    Flag_play = 1 'playing primo pacchetto

    Wend

    Esci:
    Flag_play = 0 'stop play
    Close #10
    For I = 1 To 2048 'send 2048 zeros to clear buffer


    B = 0
    Shiftout Vs_mosi , Vs_clock , B , 1 'send 2048 byte

    Next I
    Print "MP3 End" 'end song

    Waitms 100 'aspetta 100
    End Sub


    دانلود کامل پروژه :
    http://www.mcselec.com/index.php?opt...&Itemid=54
    منبع : سایت باسکام

    نوفن پردازش هوشمند

    #2
    پاسخ : mp3 player with mmc reader با استفاده از bascom

    با سلام و تشکر از این مدار عالی و کاربردی
    من هم مشغول انجام همچین پروزهای هستم .
    یه سوال دارم . خودت هم رو این مدار کار کردی؟
    جواب میده ؟؟؟؟؟؟؟؟؟؟؟

    بازم ممنوع.....
    امام علی (ع) می فرمایند:
    هنگامی که از چیزی میترسی خود را در آن بیفکن زیرا گاهی ترسیدن از چیزی از خود
    آن سخت تر است.

    دیدگاه


      #3
      پاسخ : mp3 player with mmc reader با استفاده از bascom

      با سلام و تشکر از این مدار عالی و کاربردی
      من هم مشغول انجام همچین پروژه ای هستم .
      یه سوال دارم . خودت هم رو این مدار کار کردی؟
      جواب میده ؟؟؟؟؟؟؟؟؟؟؟

      بازم ممنوع.....
      امام علی (ع) می فرمایند:
      هنگامی که از چیزی میترسی خود را در آن بیفکن زیرا گاهی ترسیدن از چیزی از خود
      آن سخت تر است.

      دیدگاه


        #4
        پاسخ : mp3 player with mmc reader با استفاده از bascom

        محل اصلی فایل با توضیحات کامل :eek:
        http://mcselec.com/index.php?option=com_content&task=view&id= 214&Itemid=57

        دیدگاه


          #5
          پاسخ : mp3 player with mmc reader با استفاده از bascom

          عالیه
          ولی می خوام در مورد fat هم بدنم چه طوری کار کرده؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟
          رش librari ها رو چی کار کنم
          من جواب نگرفتم
          علم چندانکه بيشتر خواني چون عمل در تو نيست ناداني

          دیدگاه


            #6
            پاسخ : mp3 player with mmc reader با استفاده از bascom

            [move]سلام[/move]
            کسی می تونه در مورد استفاده از port com برای کنترل این مدا من رو کمک کنه
            من که سر در نیاوردم؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟
            :redface: :redface: :cry:
            خودم خواستم یه مدار کنترلب بسازم اما شکست خورد :cry:

            دیدگاه

            لطفا صبر کنید...
            X