Ergebnis 1 bis 6 von 6

Thema: Radio mit TEA5767 Radiomodul und I2C- LCD-Anzeigemodul

  1. #1
    Platinenputzer
    Registriert seit
    02.11.2016
    Ort
    09481
    Alter
    60
    Beiträge
    65

    Radio mit TEA5767 Radiomodul und I2C- LCD-Anzeigemodul

    Code:
    'einfaches Radio mit TEA5767 Radiomodul und LCD-Anzeige
    
    '$sim
    $regfile = "Attiny85.dat"
    $crystal = 8000000                                          '8 MHz Oszillator
    $hwstack = 30
    $swstack = 16
    $framesize = 20
    
    Config Sda = Portb.0                                        'I²C
    Config Scl = Portb.2
    
    Config Debounce = 50
    
    '---(LCD-Anzeige konfigurieren)-------------------------------------------------
    'Config Lcdpin = Pin , Db4 = Pd.6 , Db5 = Pd.5 , Db6 = Pb.7 , Db7 = Pb.6 , E = Pd.7 , Rs = Pb.0
    $lib "YwRobot_Lcd_i2c.lib"                                  'YwRobot Treiber für LCD
    Config Lcd = 16 * 2
    Const Pcf8574_lcd = 126                                     'Adresse des I2C-LCDs
     'Pcf8574_lcd = 78
     'Pcf8574A_lcd = 126
    Dim Lcd_backlight As Byte                                   '1 = an; 0 = aus. Wird erst durch einen LCD-Befehl umgesetzt!
    Config I2cdelay = 1                                         '1=1Mhz,5=200Khz,10=100Khz,15=66,66Khz
     'Wenn in Lcd keine Anzeige muß der Delaywert erhöht werden.Mit Wert 15 beginnen und dann langsam verringern.
    Waitms 300                                                  'warte bis Kondensator bei Ta0 geladen, auch für LCD-Init!
    Cursor Off Noblink
    Cls
    
    '---(Ein- und Ausgänge festlegen)-----------------------------------------------
    Config Portb.3 = Input                                      'Tasten
    Config Portb.4 = Input
    Portb.3 = 1
    Portb.4 = 1                                                 'Pullup-Widerstände
    
    '---[ Variablen, Declarationen ]------------------------------------------------
    
    Dim Pll As Single
    Dim Pllfrequenz As Word
    Dim Adresse As Byte
    Dim 1st As Byte
    Dim 2nd As Byte
    Dim 3rd As Byte
    Dim 4th As Byte
    Dim 5th As Byte
    
    Dim Freq_soll(20) As Single                                 '20=Anzahl möglicher Speicherplätze
    Dim Station(20) As String * 16
    Dim Sender As Byte
    Dim I As Byte
    Dim W As String * 5
    Dim X As Byte
    Declare Sub Hoch
    Declare Sub Runter
    Declare Sub Schreiben
    Declare Sub Lesen
    
    '---[ Konstanten]---------------------------------------------------------------
    
    Const Modulfrequenz = 32768
    Const Frequenzi = 225000
    
    Const Tea5767w = &HC0                                       'Adressen TEA5767
    Const Tea5767r = &HC1
    
    '---[ Initialisierung ]---------------------------------------------------------
    
    Cls                                                         'select LCD data RAM
    Cursor Off
    
    Locate 1 , 1
    Lcd "FM Stereo Radio"
    Locate 2 , 1
    Lcd " mit TEA5767"
    
    Wait 1
    Cls
    
    I2cinit
    
    Freq_soll(1) = 87.7                                         'Radio Figaro
    
    Freq_soll(2) = 89.9                                         'JUMP
    
    Freq_soll(3) = 91.2                                         'MDR info
    
    Freq_soll(4) = 97.0                                         'DLF
    
    Freq_soll(5) = 100.0                                        'Radio PSR
    
    Freq_soll(6) = 104.3                                        'Kultur
    
    Freq_soll(7) = 104.8                                        'RSA Annaberg
    
    Freq_soll(8) = 105.4                                        'Hitradio RTL
    
    Freq_soll(9) = 107.2                                        'Radio Erzgebirge
    
    Freq_soll(10) = 107.7                                       'Radio RSA
    
    Sender = 10                                                 'Anzahl verwendeter Speicherplätze
    I = 5                                                       'Start mit Lieblingssender
    
    
    Schreiben
    
    '---[ Hauptprogrammschleife ]---------------------------------------------------
    
    Do
    
    Debounce Pinb.0 , 0 , Hoch , Sub                            'Tastenabfrage
    Debounce Pinb.1 , 0 , Runter , Sub
    
    Loop
    
    '---[ Unterprogramme  ]---------------------------------------------------------
    Sub Schreiben
    
    Pll = Freq_soll(i) * 1000000
    Pll = Pll + Frequenzi
    Pll = Pll * 4
    Pll = Pll / Modulfrequenz
    Pllfrequenz = Int(pll)
    1st = High(pllfrequenz)
    Reset 1st.6                                                 'Kein Suchen
    Reset 1st.7                                                 'Kein Mute
    2nd = Low(pllfrequenz)
    3rd = &B00010000
    4th = &B00010010
    5th = &B00000000
    I2cstart
    I2cwbyte Tea5767w
    I2cwbyte 1st
    I2cwbyte 2nd
    I2cwbyte 3rd
    I2cwbyte 4th
    I2cwbyte 5th
    I2cstop
    
    W = Fusing(freq_soll(i) , "#.#")                            'Ausgabe formatieren
    
    Locate 1 , 1
    Lcd W ; " MHz  "
    Locate 2 , 1
    Lcd Station(i)
    
    End Sub
    '-------------------------------------------------------------------------------
    Sub Lesen
    End Sub
    '-------------------------------------------------------------------------------
    Sub Hoch
    Cls
    Incr I
    If I > Sender Then I = 1
    Schreiben
    End Sub
    '-------------------------------------------------------------------------------
    Sub Runter
    Cls
    Decr I
    If I < 1 Then I = Sender
    Schreiben
    End Sub
    
    End

  2. #2
    Administrator Avatar von DON
    Registriert seit
    19.11.2016
    Ort
    Herford
    Beiträge
    448
    Habe deinen code getestet läuft perfekt.
    Nur autosuche ist noch nicht implementiert.
    Ein Mensch mag noch so herausragende Fähigkeiten haben – wenn er arrogant und selbstsüchtig ist, sind sie nichts wert.
    Konfuzius


  3. #3
    Platinenputzer
    Registriert seit
    02.11.2016
    Ort
    09481
    Alter
    60
    Beiträge
    65
    Danke für die Blumen. Autosuche war für mich noch kein Thema.Realisierbar bestimmt mit einer bzw zwei For-Next Schleifen.Frequenz auf bzw abwärts mit Pegel-
    auswertung über ADC .

  4. #4
    Platinenputzer
    Registriert seit
    02.11.2016
    Ort
    09481
    Alter
    60
    Beiträge
    65
    Da habe ich Mist geschrieben.Autosuche ,Anzeige Mono,Stereo und Empfangsfeldstärke über I2C.So ist das ,wenn man das Datenblatt nicht liest bzw.im Kopf hat.

  5. #5
    Administrator Avatar von DON
    Registriert seit
    19.11.2016
    Ort
    Herford
    Beiträge
    448
    so wie ich das verstanden habe muss das search mode bit gesetzt sein
    dann PLL Bits 13 -0 voreingestellt sein das SUD Bit auf eins oder null
    suchstop level SSL1-SSL0.
    Ein Mensch mag noch so herausragende Fähigkeiten haben – wenn er arrogant und selbstsüchtig ist, sind sie nichts wert.
    Konfuzius


  6. #6
    Platinenputzer
    Registriert seit
    02.11.2016
    Ort
    09481
    Alter
    60
    Beiträge
    65
    Lt.nachfolgendem PDF-Link ab Seite 14ff sind die Bits aufgelistet.
    https://www.sparkfun.com/datasheets/...al/TEA5767.pdf

Lesezeichen

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •