|
RDS-Decoder
|
|
|
|
|
|
Dieses ist ein RDS-Decoder
mit einem 2 * 16 Zeichen Display. Den Source-Code in Basic (BASCOM), passend zu diesem Modul, gibt es am ende dieser Seite. Er zeigt in der oberen Zeile den 8stelligen RDS-Code der auch bei den meisten Autoradios angezeigt wird, danach kommt die Sender Kennung: D368 = FFH, D363 = HR3, am ende der Zeile wird dann noch durch einen * angezeigt ob RDS-Daten empfangen werden und in der unteren Zeile läuft der 64stellige RDS-Text durch. Wir sind keine Profis und freuen uns auch über jede Hilfe und
Anregung. Fragen oder Anregungen oder Interesse an einem Nachbau? |
![]()
|
|
|
|
|
Der Anschluss des RDS-Decoders kann, wenn man
den gewissen Punkt findet sehr einfach sein. |
|
|
|
|
|
Dieses ist ein RDS-Decoder
mit einem 4 * 20 Zeichen Display. In der Zeile 4 wird noch die Gruppe 0A mit ihren 8 Zeichen, die Uhrzeit angezeigt. |
![]()
|
|
|
|
|
Dieses ist ein RDS-Decoder
mit einem 2 * 40 Zeichen Display. |
![]()
|
|
|
|
|
Dieses ist ein RDS-Decoder
mit einem 4 * 27 Zeichen Display. |
![]()
|
|
|
|
|
' ************************************** ' * Projekt: RDS-Modul * ' * Date: 28.02.2010 * ' * Autor: DL4FBZ & DL1ZAX * ' * Atmega: 8 * ' * LCD: 2 * 16 * ' * Version: 1.1 * ' * Fuse-Bit: LOW= 0xFF High= 0xD9 * ' ************************************** $regfile = "m8def.dat" $crystal = 4332000 $hwstack = 32 $swstack = 10 $framesize = 20 Config Lcdbus = 4 Config Lcdpin = Pin , Db4 = Portc.3 , Db5 = Portc.2 , Db6 = Portc.1 , Db7 = Portc.0 , E = Portc.4 , Rs = Portc.5 Config Lcd = 16 * 2 Initlcd Cls Cursor Off Dim Checksume(26)as Word Checksume(1) = &B1100011011 Checksume(2) = &B1110001111 Checksume(3) = &B1010100111 Checksume(4) = &B0011110111 Checksume(5) = &B0111101110 Checksume(6) = &B1111011100 Checksume(7) = &B1000000001 Checksume(8) = &B0110111011 Checksume(9) = &B1101110110 Checksume(10) = &B1101010101 Checksume(11) = &B1100010011 Checksume(12) = &B1110011111 Checksume(13) = &B1010000111 Checksume(14) = &B0010110111 Checksume(15) = &B0101101110 Checksume(16) = &B1011011100 Checksume(17) = &B0000000001 Checksume(18) = &B0000000010 Checksume(19) = &B0000000100 Checksume(20) = &B0000001000 Checksume(21) = &B0000010000 Checksume(22) = &B0000100000 Checksume(23) = &B0001000000 Checksume(24) = &B0010000000 Checksume(25) = &B0100000000 Checksume(26) = &B1000000000 Const Banka = &B1111011000 Const Bankb = &B1111010100 Const Bankc = &B1001011100 Const Bankc1 = &B1111001100 Const Bankd = &B1001011000 Dim Empfang As Long Dim Empfang_neu As Long Dim Ergebnis As Word Dim Neue_daten As Bit Dim I As Byte Dim E As Byte Dim T As Byte Dim Txt2a As String * 17 Dim Txt As String * 2 Dim Txt0a As String * 8 Dim N0a As Byte Dim N0p As Byte Dim N2a As Byte Dim N2b As Byte Dim Blk As Byte Dim M As Byte Dim L As Byte Dim Rds As Long Dim Bit_zaehler As Byte Dim Synchron As Bit Dim Berechnen As Bit Config Portd.2 = Input ' Interrupt Set Portd.2 Config Portd.3 = Input ' Daten Input Set Portd.3 Rdsdata Alias Pind.3 Locate 1 , 5 Lcd "RDS-Modul" Locate 2 , 4 Lcd "Version 1.1" Wait 1 Cls On Int0 Int2_isr Enable Int0 Enable Interrupts Config Int0 = Falling N2a = 0 N2b = 0 Do If Synchron = 0 Then Empfang = Rds Bit_zaehler = 0 Berechnen = 1 Else Empfang = Empfang_neu Neue_daten = 0 End If If Berechnen = 1 Then For I = 0 To 25 If Empfang.i = 1 Then E = I + 1 Ergebnis = Ergebnis Xor Checksume(e) End If Next I M.0 = Empfang.10 M.1 = Empfang.11 M.2 = Empfang.12 M.3 = Empfang.13 M.4 = Empfang.14 M.5 = Empfang.15 M.6 = Empfang.16 M.7 = Empfang.17 L.0 = Empfang.18 L.1 = Empfang.19 L.2 = Empfang.20 L.3 = Empfang.21 L.4 = Empfang.22 L.5 = Empfang.23 L.6 = Empfang.24 L.7 = Empfang.25 Select Case Ergebnis Case Banka ' Sender Kennung Locate 1 , 11 Lcd Hex(l) ; Hex(m) Synchron = 1 Case Bankb Synchron = 1 Blk = &H00 Blk.3 = L.3 Blk.4 = L.4 Blk.5 = L.5 Blk.6 = L.6 Blk.7 = L.7 Select Case Blk Case &B00100000 'Type 2A N2a = 1 Case &B00000000 'Type 0A N0a = 1 Blk = &H00 Blk.0 = M.0 Blk.1 = M.1 Select Case Blk Case &B00000000 N0p = 1 Case &B00000001 N0p = 3 Case &B00000010 N0p = 5 Case &B00000011 N0p = 7 End Select Case &B01000000 'Type 4A End Select Case Bankc Synchron = 1 If N2a = 1 Then Txt2a = Txt2a + Chr(l) + Chr(m) If Len(txt2a) > 16 Then Txt2a = Right(txt2a , 16) End If Case Bankc1 Synchron = 1 N0a = 0 N2a = 0 N2b = 0 Case Bankd Synchron = 1 If N2a = 1 Then Txt2a = Txt2a + Chr(l) + Chr(m) If Len(txt2a) > 16 Then Txt2a = Right(txt2a , 16) Locate 2 , 1 Lcd Txt2a N2a = 0 End If If N0a = 1 Then Txt = Chr(l) + Chr(m) Mid(txt0a , N0p , 2) = Txt Locate 1 , 1 Lcd Txt0a N0a = 0 End If If N2b = 1 Then N2b = 0 Case Else Synchron = 0 N0a = 0 N2a = 0 N2b = 0 End Select Ergebnis = &B0000000000000000 If Neue_daten = 0 Then Berechnen = 0 End If Locate 1 , 16 If Synchron = 1 Then Lcd "*" Else Lcd "-" Loop End Int2_isr: Shift Rds , Left If Rdsdata = 1 Then Rds.0 = 1 Else Rds.0 = 0 Incr Bit_zaehler If Synchron = 1 Then If Bit_zaehler = 26 Then Empfang_neu = Rds Neue_daten = 1 Berechnen = 1 Bit_zaehler = 0 End If End If If Bit_zaehler = 27 Then Bit_zaehler = 1 Return |