Das Open-Control-Projekt - Die Alternative zur C-Control-I


Das Forum zur C-Control-1
Welche C-Control-Varianten existieren?
Übersicht - Suchen - Neueste 50 Beiträge - Neuer Beitrag - Login - Registrieren
INFO - FAQ - CC2-Forum - CCPro-Forum 

 Re: I2C LCD-Ausgabe am MICRO Kategorie: C-Control I Micro (von JanPeter - 19.08.2004 21:19)
 Als Antwort auf Re: I2C LCD-Ausgabe am MICRO von JanPeter - 19.08.2004 21:01
> > > Hallo MICRO-Fans!
> > > Hier ein Beispiel von mir mit 2 PCF8574 mit LCD Ausgabe und LED Ausgabe:
> > >
> > >
> > > '*************************************************************
> > > '                                                            *
> > > ' C-Control/MICRO       I2C_LCD_Ausgabe1.BAS                 *
> > > '           JPM      18.08.2004   jxx2344305@aol.com         *
> > > ' Aufgabe:    Laufled und Anzeige der internen Uhrzeit       *
> > > '                                                            *
> > > ' - Porterweiterung für MICRO ueber den I2C-Bus              *
> > > ' - Ansteuerung zwei PCF8574                                 *
> > > '  Adr.1=LCD                                       R=64 W=65 *
> > > '  Adr.3=8 LEDs mit Vorwiderstand 2,2K nach +5V    R=68 W=69 *
> > > ' - SDA am Port 5     (kann geändert werden)                 *
> > > ' - SCL am Port 6     (kann geändert werden)                 *
> > > '                                                            *
> > > '*************************************************************
> > > '
> > > '       LCD Beschaltung für Adr. 1
> > > 'PCF  1 A0   --- I2C Addresse: Gnd
> > > 'PCF  2 A1   --- I2C Addresse: Gnd
> > > 'PCF  3 A2   --- I2C Addresse: Gnd
> > > 'PCF  4 P0   --- LCD 11 DB4
> > > 'PCF  5 P1   --- LCD 12 DB5
> > > 'PCF  6 P2   --- LCD 13 DB6
> > > 'PCF  7 P3   --- LCD 14 DB7
> > > 'PCF  8 Gnd  --- Gnd
> > > 'PCF  9 P4   --- LCD  5 R/W
> > > 'PCF 10 P5   --- LCD  4 RS
> > > 'PCF 11 P6   --- LCD  6 EN
> > > 'PCF 12 P7   --- frei
> > > 'PCF 13 INT  --- frei
> > > 'PCF 14 SCL  --- MICRO Port 6
> > > 'PCF 15 SDA  --- MICRO Port 5
> > > 'PCF 16 Vcc  --- + 5 Volt
> > >
> > > '*************************************************************
> > > ' --- Definitionen --------------------
> > > define SDA      port[5]
> > > define SCL      port[6]
> > > '--------------------------
> > > '---- Variablen -----------
> > > '--------------------------
> > > define Daten    byte[1]
> > > define B1       bit[1]
> > > define B2       bit[2]
> > > define B3       bit[3]
> > > define B4       bit[4]
> > > define B5       bit[5]
> > > define B6       bit[6]
> > > define B7       bit[7]
> > > define B8       bit[8]
> > > define Zaehler  byte[2]
> > > define N        byte[3]
> > > define lcd_param byte[4]
> > > define lcd_buf   byte[5]
> > > define w1        byte[6]
> > > define char_num  byte[7]
> > > '-------------------------------------------------------------
> > > SDA = 1
> > > SCL = 1
> > > '_____________________________________________________________
> > >
> > > ' --- Programmoperationen -------------
> > >
> > >
> > >      gosub LCD_INIT                     '1.Adresse PCF8574
> > >      gosub message1
> > >      gosub stop
> > >      
> > > #Loop
> > >     gosub Start                         'I2C-Start
> > >     Daten = 68                          '3.Adresse PCF8574
> > >     gosub I2C_Write
> > >     Daten = &HFD                                'LED2
> > >     gosub I2C_Write
> > >     pause 50
> > >     Daten = &HFB                    'LED3
> > >     gosub I2C_Write
> > >     pause 50
> > >     Daten = &HF7                    'LED4
> > >     gosub I2C_Write
> > >     pause 50
> > >     Daten = &HEF                    'LED5
> > >     gosub I2C_Write
> > >     pause 50
> > >     Daten = &HDF                    'LED6
> > >     gosub I2C_Write
> > >     pause 50
> > >     Daten = &HBF                    'LED7
> > >     gosub I2C_Write
> > >     pause 50
> > >     Daten = &H7F                    'LED8
> > >     gosub I2C_Write
> > >     pause 50
> > >
> > >     Daten = &HBF                    'LED7
> > >     gosub I2C_Write
> > >     Pause 10
> > >     Daten = &HDF                    'LED6
> > >     gosub I2C_Write
> > >     pause 10
> > >     Daten = &HEF                    'LED5
> > >     gosub I2C_Write
> > >     pause 10
> > >     Daten = &HF7                    'LED4
> > >     gosub I2C_Write
> > >     pause 5
> > >     Daten = &HFB                    'LED3
> > >     gosub I2C_Write
> > >     pause 5
> > >
> > >     gosub Stop                          'I2C_Stop
> > >
> > >     gosub lcd_init
> > >     w1=hour
> > >     gosub ausgabe
> > >     lcd_param = &H3a
> > >     gosub lcd_writechar
> > >     w1=minute
> > >     gosub ausgabe
> > >     lcd_param = &H3a
> > >     gosub lcd_writechar
> > >     w1=second
> > >     gosub ausgabe
> > >     gosub stop
> > >     goto loop
> > >
> > > #Start
> > >       SDA=0:SCL=1:return
> > >
> > > #Stop
> > >      SCL=1:SDA=1:return
> > >
> > > #I2C_WRITE
> > >      if B8=ON then SDA=ON
> > >      gosub pulse_SCL
> > >      if B7=ON then SDA=ON
> > >      gosub pulse_SCL
> > >      if B6=ON then SDA=ON
> > >      gosub pulse_SCL
> > >      if B5=ON then SDA=ON
> > >      gosub pulse_SCL
> > >      if B4=ON then SDA=ON
> > >      gosub pulse_SCL
> > >      if B3=ON then SDA=ON
> > >      gosub pulse_SCL
> > >      if B2=ON then SDA=ON
> > >      gosub pulse_SCL
> > >      if B1=ON then SDA=ON
> > >      gosub pulse_SCL
> > >      gosub pulse_SCL             ' 9. Impuls ACK vom Slave
> > >   return
> > >
> > > #pulse_SCL
> > >           SCL=0:SCL=1:SCL=0:SDA=0:return
> > >
> > > '---------------------------------------
> > > '---- LCD TREIBER ROUTINEN -------------
> > > '---------------------------------------
> > >
> > > #LCD_INIT
> > > ' alle ports 0
> > >     gosub Start
> > >     Daten = 64                          '1.Adresse PCF8574
> > >     gosub I2C_Write
> > >     Daten = OFF
> > >     gosub I2C_Write
> > >
> > > ' 8-Bit-Modus aktivieren
> > >   lcd_param=&H38 : gosub LCD_WRITECMD
> > >
> > > ' mit 8-Bit-Command in 4-Bit-Modus umschalten
> > >   daten=&B00000010
> > >   gosub I2C_Write
> > >   daten=daten or 64             '1 an E
> > >   gosub I2C_Write
> > >   daten=daten and 2             '0 an E
> > >   gosub I2C_Write
> > >
> > > ' ab jetzt 4-Bit-Modus
> > >   lcd_param = &H28 : gosub LCD_WRITECMD
> > >   lcd_param = &H0C : gosub LCD_WRITECMD
> > >
> > > ' Display loeschen
> > > #LCD_CLS
> > >   lcd_param = &H02 : gosub LCD_WRITECMD
> > >   lcd_param = &H01 : gosub LCD_WRITECMD
> > > return
> > > ' Zeilenwechsel
> > > #LCD_GOTOLINE
> > >   if lcd_param = 1 then lcd_param = &H80
> > >   if lcd_param = 2 then lcd_param = &HC0
> > >   goto LCD_WRITECMD
> > >
> > > ' LCD-Kommando
> > > #LCD_WRITECMD
> > >   lcd_buf = OFF
> > >   goto LCD_WRITE
> > >
> > > ' Zeichenausgabe
> > > #LCD_WRITECHAR
> > >
> > >   lcd_buf = &B00100000
> > >
> > > ' Kommando oder Zeichen an Display senden
> > > #LCD_WRITE
> > >   daten = lcd_buf or (lcd_param shr 4) ' Hi-Nibble
> > >   gosub I2C_Write
> > >   daten=daten or 64             '1 an E
> > >   gosub I2C_Write
> > >   daten=daten and 2             '0 an E
> > >   gosub I2C_Write
> > >
> > >   daten = lcd_buf or (lcd_param and &H0F)  ' Lo-Nibble
> > >   gosub I2C_Write
> > >   daten=daten or 64             '1 an E
> > >   gosub I2C_Write
> > >   daten=daten and 2             '0 an E
> > >   gosub I2C_Write
> > >
> > > return
> > >
> > >
> > > '----------------------------------------------------------------------
> > > #Ausgabe     'zweistellige Zahl  IN: w1=Ausgabewert
> > >
> > > lcd_param = (w1 / 10) + 48
> > >
> > > gosub lcd_writechar
> > > lcd_param = (w1 mod 10) + 48
> > > gosub lcd_writechar
> > > return
> > >
> > > #Ausgabe3       'dreistellige Zahl
> > > lcd_param = (w1 / 100) + 48
> > > gosub lcd_writechar
> > > w1 = w1 mod 100
> > > gosub Ausgabe   'zweistellige Zahl
> > > return
> > > '--------------------------------------------------------
> > > #message1
> > > char_num =255: lcd_param = 1 : gosub lcd_gotoline
> > > #read_loop1
> > > char_num = char_num+1
> > > '------- tabelle bis FF lesen -----------
> > >     looktab startup1, char_num, lcd_param
> > >     if lcd_param = &HFF then goto new_line_m1
> > >     gosub lcd_writechar: goto read_loop1
> > > '------- zweiten teil lesen --------------
> > > #new_line_m1
> > >  lcd_param = 2 : gosub lcd_gotoline
> > >  #read_loop2
> > >  char_num = char_num+1
> > >     looktab startup1, char_num, lcd_param
> > >     if lcd_param = &HFF then return
> > >     gosub lcd_writechar: goto read_loop2
> > > '-------------------------------------------------------------------
> > > '-------------- EINSCHALTTEXT ------------ MICRO I2C_LCD_Ausgabe1 --
> > > table startup1
> > > &H20 &H20 &H4d &H49 &h43 &H52 &H4f &HFF
> > > '--------------------------------------------
> > > &h49 &H32 &H43
> > > &H5f &H4c &H43 &H44 &H5f &H41 &H75 &H73 &H67 &H61 &H62 &H65 &H31 &HFF
> > > tabend
> > >
> > > '-----------------------------------
> > >
> > > end
> > >
> >
> > Hallo Jan Peter,
> > habe da eine kürzere und einfachere I2C_Write Routine die nur mit ein paar Bytes
> > (58) auskommt:
> >
> > define i byte             'Indexzähler
> > define zum_i2c byte   'Byte zum I2C-Device
> > define sda port [1]
> > define scl port [2]
> >
> > #PUTBYTE
> > for i = 0 to 8                      '1 Byte senden.MSB first
> > if (zum_i2c and &H80) =&H80 then sda=1 else sda=0 'Datenbit senden
> > tog scl : tog scl                   'Clock zum Speichern im I2C-Device
> > zum_i2c=zum_i2c shl 1               'Nächstes Bit
> > next i
> >
> > Probier´s doch mal !
> >
> > Liebe Grüße aus Wien
> >
> Hallo ibsi!
>
> Das wäre schön wenn Dein Beispiel mit dem TOG-Befehl funktionieren würde!
>
> Ich habe drei MICRO IC mit der Aufschrift 421, aber bei keinem funktioniert der TOG-Befehl!
> Ich habe schon mit dem Oszi drangehangen , aber an jedem Port keine Änderung.
> Hast Du Dein Beispiel am MICRO ausprobiert?
>
> MfG
> Jan-Peter M
> aus Schöneiche bei Berlin

Hallo IBSI!
Schau mal Dir das Beispiel an was jetzt von DIE HARD ins Netz gestellt wurde , nur für Ausgabe ,
es verwendet auch keine TOG-Befehle.
Also wird es wohl nicht gehen!!!!!!!!!!!!!!!!!!!!!!!!!!!
MfG
Jan-Peter Müller
aus Schöneiche bei Berlin

 Antwort schreiben

Bisherige Antworten:

Re: I2C LCD-Ausgabe am MICRO (von ibsi - 19.08.2004 21:39)
    Re: I2C LCD-Ausgabe am MICRO (von DIE HARD - 20.08.2004 18:39)
        Re: I2C LCD-Ausgabe am MICRO (von JanPeter - 20.08.2004 21:48)
            Re: I2C LCD-Ausgabe am MICRO (von ibsi - 21.08.2004 0:25)
                I2C Routinen - jetzt aber richtig ;-) (von André H. - 21.08.2004 13:52)
                    Re: I2C Routinen - jetzt aber richtig ;-) (von JanPeter - 22.08.2004 13:11)
                       Re: I2C Routinen - jetzt aber richtig ;-) (von André H. - 22.08.2004 15:20)
                          Re: I2C Routinen - jetzt aber richtig ;-) (von JanPeter - 22.08.2004 22:38)
                             Re: I2C Routinen - jetzt aber richtig ;-) (von Dietmar - 24.08.2004 16:07)
                             Re: I2C Routinen - jetzt aber richtig ;-) (von André H. - 23.08.2004 6:40)
                                Re: I2C Routinen - jetzt aber richtig ;-) (von JanPeter - 24.08.2004 0:31)
                                   Re: I2C Routinen - jetzt aber richtig ;-) (von Achim - 24.08.2004 0:45)
                                     Re: I2C Routinen - jetzt aber richtig ;-) (von ibsi - 24.08.2004 15:46)
                                       Re: I2C Routinen - jetzt aber richtig ;-) (von JanPeter - 25.08.2004 20:58)
                                         Re: I2C Routinen - jetzt aber richtig ;-) (von André H. - 25.08.2004 22:07)
                                           Re: I2C Routinen - jetzt aber richtig,Richtig ;-( (von JanPeter - 27.08.2004 21:34)
                                             Re: I2C Routinen - Das kann doch nicht war sein! (von André H. - 28.08.2004 8:18)
                                               Re: I2C Routinen - Das kann doch nicht war sein! (von JanPeter - 28.08.2004 20:49)
                                                 Re: I2C Routinen (von André H. - 4.09.2004 11:36)
                                                   Re: I2C Routinen (von JanPeter - 6.09.2004 23:21)
                                                     Re: I2C Routinen (von André H. - 7.09.2004 8:27)
                                                       Re: IR-Routine (von JanPeter - 7.09.2004 22:25)
                                                         Re: IR-Routine (von JanPeter - 7.09.2004 22:32)
                    Re: I2C Routinen - jetzt aber richtig ;-) (von DIE HARD - 21.08.2004 13:58)
                       Re: I2C Routinen - jetzt aber richtig ;-) (von André H. - 21.08.2004 15:22)
                          Re: I2C Routinen - jetzt aber richtig ;-) (von DIE HARD - 21.08.2004 18:40)