Kommentar: Einfügen von HTML im Kommentar: Link einfügen: <a href="LINKURL" target="_blank">LINKTITEL</a> Bild einfügen: <img src="BILDURL"> Text formatieren: <b>fetter Text</b> <i>kursiver Text</i> <u>unterstrichener Text</u> Kombinationen sind auch möglich z.B.: <b><i>fetter & kursiver Text</i></b> C Quellcode formatieren: <code>Quellcode</code> BASIC Quellcode formatieren: <basic>Quellcode</basic> (Innerhalb eines Quellcodeabschnitts ist kein html möglich.) Wichtig: Bitte mache Zeilenumbrüche, bevor Du am rechten Rand des Eingabefeldes ankommst ! -> I > 'IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII > 'II BASIC DEMO ZUR C-Control Pro Mega 32/128 von Hias II > 'II nach Vorlage von Die Hard für die C-Control Basic II > 'IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII > '-------------------------------------------------------------------- > ' Beispiel zum Mega 32/12 mit dem Application-Board > '-------------------------------------------------------------------- > ' ANWENDUNG: IIC-BUS COMMUNICATIONS MODULE > ' 4 DIGIT LED-DISPLAY 198344 (TREIBER SAA1064) > '-------------------------------------------------------------------- > ' Dieses Beispiel zeigt die Vorgehensweise für die Benutzung des I2C > ' Buses der C-Control Mega und einer der vielen erhältlichen Bausteine > 'mit IIC-Bus . > ' Interface ist der 4 DIGIT LED DISPLAY TREIBER SAA1064. Er ist der Baustein > ' der die 4 DIGIT 7 SEGMENTANZEIGE der LED-Anzeige ansteuert. > ' Er hat ein verhältnismässig einfaches Protokoll das mit der IIC-Bus > ' Unterstützung des Betriebsystems recht einfach in die Treibersoftware > ' für diesn Baustein umgesetzt werden kann. > ' > ' <START><ADDRESS><INSTRUCTION><CONTROL><DIGIT1><DIGIT2><DIGIT3>DIGIT<4><STOP> > ' > ' Die Adresse besteht aus einem festen, nicht veränderbaren Anteil und > ' einem vom Benutzer wählbaren Teil (zwei Bits). Das letzte Bit > ' legt fest ob eine READ (Eingabe) oder WRITE (Ausgabe) über den SAA1064 > ' erfolgt > ' In diesem Beispiel hat der SAA1064 die Adresse 3 (alle Bits auf HI), > ' alle Jumper abgezogen. > ' Allerdings ist beim diesem Baustein die interne Adressdecodierung > ' etwas anders als üblich. Das Modul hat deshalb 4 Jumper die dem > ' Modul die Adresse 0 bis 3 zuweisen. > ' Es darf jeweils nur ein Jumper gesteckt sein. > ' J1 A0=0, A1=0 > ' J2 A0=1, A1=0 > ' J3 A0=0, A1=1 > ' J4 A0=1, A1=1 > ' Damit ergibt sich für eine READ-Operation folgender Wert: > ' > ' 0 1 1 1 0 x x 1 READ-Operation > ' I------I-----I-I > ' FIX ADR ADR R/W > ' > ' Für eine WRITE-Operation ist das letzte Bit LO und es ergibt sich > ' folgender Wert: > ' > ' 0 1 1 1 0 x x 0 WRITE-Operation > ' I------I-----I-I > ' FIX ADR ADR R/W > ' > ' x sind die mit Jumper auf 0 setzbaren Adressbits. > ' In diesem Beispiel wird angenommen, dass kein Jumper gesteckt ist. Die > ' Adresse ist damit 118= &H76 = 01110110 > > ' Das INSTRUCTION-BYTE legt fest mit welches der internen Register > ' zuerst beschriebnen wird. In unserem Beispiel ist das INSTRUCTION BYTE > ' Null, das bedeutet dass nach dem INSTRUCTION BYTE das KONTROLLREGISTER > ' und danach die DATENREGISTER der vier Digits beschrieben werden. > ' Das KONTROLLREGISTER legt den LED Modus (hier Multiplex)und die LED > ' Helligkeit fest. > ' > ' Die Zuweisung der Segmente zum jeweiligen Bit sind so: > ' a > ' f b xgfedcba (a=bit0) > ' g > ' e c > ' d > ' > ' Eine 1 wird durch die Segmente bc dargestellt und die entsprechenden Bits sind > ' log 1, die anderen 0 -> 00000110 =&H06 > ' > > '----------------------------------------------------------------------- > ' SCHNITTSTELLE ZUM TREIBER > ' Ihre Schnittstelle zum LED Treiber ist die Variable BRIGHTNES der Sie > ' die vordefinierten Werte BRIGHT0 bis BRIGHT7 zuweisen könnnen > ' und die Variablen DIGIT1 bis DIGIT4, die alle zusammen an die > ' FUNCTION SENDBUF übergeben werden. Diese FUNCTION sendet den > ' Buffer zum LCD. > ' > ' DECODE und SPLIT_DIGITS > ' SPLIT_DIGITS spaltet einen Zahl in Ihre einzelnen Stellen auf > ' ( also nach Zehner, Hunderter usw..) > ' Bevor diese Stellen dann an das Display übertragen werden, müssen > ' sie in den 7-Segment Code umgewandelt werden. > ' Dies übernimmt die FUNCTION DECODE > ' > '----------------------------------------------------------------------- > > 'Der IIC-Bus liegt an PORT PC1 (SDA) und PORT PC0 (SCL) > '---------------------------------------------------------------------- > ' ACHTUNG: > ' Das LED-Display benötigt bei max. Helligkeit sehr viel Strom > ' Die Kühlung des Spannungsreglers auf dem Application-Board ist > ' dafür nicht ausreichend. Betreiben Sie das Display mit BRIGHT2, > ' wenn keine zusätzliche Kühlung für den Spannungsregler auf dem > ' Application-Board vorgesehen ist. > '----------------------------------------------------------------------- > > '---------------------------------------------------------------------- > > '----- LED HELLIGKEIT ----- > #define BRIGHT0 &H07 > #define BRIGHT1 &H17 > #define BRIGHT2 &H27 > #define BRIGHT3 &H37 > #define BRIGHT4 &H47 > #define BRIGHT5 &H57 > #define BRIGHT6 &H67 > #define BRIGHT7 &H77 > ' ------------------------ > ' Konstantendefinition > '------------------------- > #define MINUS &H40 > #define A &H77 > #define B &H7F > #define C &H39 > #define d &H5E > #define E &H79 > #define F &H71 > #define G &H7D > #define H &H76 > #define I &H06 > #define J &H0F > #define L &H38 > #define n &H54 > #define x &H5C ' ist das kleine o > #define P &H73 > #define r &H50 > #define S &H6D > #define t &H78 > #define U &H3E > #define y &H6E > > '-------------------------- > '---- SYSTEM MEMORY ------- > '-------------------------- > > Dim TAUSENDER As Byte > Dim HUNDERTER As Byte > Dim ZEHNER As Byte > Dim EINER As Byte > '----------------------------------------------------- > ' 7 SEGMENT DECODER > '----------------------------------------------------- > Sub DECODE (CODE As Byte) As Byte > Select Case CODE > Case 0 > CODE=&H3F > Case 1 > CODE=&H06 > Case 2 > CODE=&H5B > Case 3 > CODE=&H4F > Case 4 > CODE=&H66 > Case 5 > CODE=&H6D > Case 6 > CODE=&H7D > Case 7 > CODE=&H07 > Case 8 > CODE=&H7F > Case 9 > CODE=&H6F > End Case > Return CODE > End Sub > '------------------------------------------------------ > > '----------------------------------------------------- > '-- IIC SEND BUFFER TO SAA1064 ---- > '----------------------------------------------------- > > > Sub SENDBUF(BRIGHT As Byte,DIGIT1 As Byte,DIGIT2 As Byte,DIGIT3 As Byte,DIGIT4 As Byte) > > I2C_Start() ' I2C Bus starten > I2C_Write (&H76) ' Adresse des Bausteins > I2C_Write (0) ' Startbit > I2C_Write (BRIGHT) ' Controllbit > I2C_Write (DIGIT1) ' erstes LED Segment > I2C_Write (DIGIT2) ' zweites LED Segment > I2C_Write (DIGIT3) ' drittes LED Segment > I2C_Write (DIGIT4) ' viertes LED Segment > I2C_Stop() ' I2C Stoppen > AbsDelay(5) > End Sub > > > '---------------------------------------------------- > ' SPLIT VALUE INTO DIGITS > '---------------------------------------------------- > Sub SPLIT_DIGITS(VALUE As Word) > TAUSENDER=VALUE/1000 > HUNDERTER=(VALUE-(TAUSENDER*1000))/100 > ZEHNER=(VALUE-(TAUSENDER*1000)-(HUNDERTER*100))/10 > EINER=VALUE-TAUSENDER*1000-HUNDERTER*100-ZEHNER*10 > End Sub > '---------------------------------------------------- > '--------------------------------------------------------- > Sub SHOW_BLANK() > SENDBUF(BRIGHT1,0,0,0,0) > End Sub > '-------------------------------------------------------- > Sub SHOW_IDLE() > SENDBUF(BRIGHT1,E,L,d,I) > End Sub > '-------------------------------------------------------- > Sub SHOW_IN() > SENDBUF(BRIGHT1,0,0,n,I) > End Sub > '-------------------------------------------------------- > Sub SHOW_OUT() > SENDBUF (BRIGHT1,0,t,U,x)'------------o > End Sub > '-------------------------------------------------------- > Sub SHOW_CLEAR() > SENDBUF(BRIGHT1,0,r,L,C) > End Sub > '-------------------------------------------------------- > Sub SHOW_READY() > SENDBUF(BRIGHT1,0,y,d,r) > End Sub > '-------------------------------------------------------- > Sub SHOW_ERROR() > SENDBUF(BRIGHT1,0,r,r,E) > End Sub > '------------------------------------------------------- > Sub SHOW_ON() > SENDBUF(BRIGHT1,0,0,n,x) > End Sub > '------------------------------------------------------- > Sub SHOW_OFF() > SENDBUF(BRIGHT1,0,F,F,x) > End Sub > '------------------------------------------------------- > Sub SHOW_TEST() > SENDBUF(BRIGHT1,255,255,255,255) > End Sub > > > > > '------------------------------------------------------------------------------ > ' Hauptprogramm > ' > Sub main() > ' Variablendeklaration > Dim COUNTER As Integer > Dim Zeile(12) As Char > > > I2C_Init(I2C_100kHz) ' I2C Bit Rate: 100 kHz > LCD_Init() > LCD_CursorPos(0) > Zeile = "SAA1064" ' LCD Cursor positionieren > LCD_WriteText(Zeile) ' String ausgeben > LCD_CursorPos(&H40) > Zeile = "Demo" ' LCD Cursor auf 2.Zeile positionieren > LCD_WriteText(Zeile) ' String ausgeben > > > > 'IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII > 'III DEMO MESSAGES AND COUNTERS II > 'IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII > > '----------- TEST - ALL SEGMENTS ON -------------------- > SHOW_TEST() > AbsDelay(1000) > '----------- BLANK - ALL SEGMENTS OFF ------------------ > SHOW_BLANK() > AbsDelay(1000) > '----------- SHOW IDLE MESSAGE ---------------------------- > SHOW_IDLE() > AbsDelay(1000) > '----------- SHOW IN MESSAGE ---------------------------- > SHOW_IN() > AbsDelay(1000) > '----------- SHOW OUT MESSAGE --------------------------- > SHOW_OUT() > AbsDelay(1000) > '----------- SHOW CLEAR MESSAGE ------------------------- > SHOW_CLEAR() > AbsDelay(1000) > '----------- SHOW ERROR MESSAGE ------------------------- > SHOW_ERROR() > AbsDelay(1000) > '----------- SHOW ON MESSAGE ---------------------------- > SHOW_ON() > AbsDelay(1000) > '----------- SHOW OFF MESSAGE --------------------------- > SHOW_OFF() > AbsDelay(1000) > '---------- SHOW RUNNING COUNTER ------------------------ > For COUNTER = 0 To 9999 > SPLIT_DIGITS(COUNTER) > SENDBUF(BRIGHT1,DECODE(EINER),DECODE(ZEHNER),DECODE(HUNDERTER),DECODE(TAUSENDER)) > Next > '--------- FLASHING READY ------------------------------- > Lab RDY > SHOW_READY() > AbsDelay(500) > SHOW_BLANK() > AbsDelay(500) > SENDBUF(BRIGHT1,x,L,A,H) 'Halo > AbsDelay(500) > SHOW_BLANK() > AbsDelay(500) > SENDBUF(BRIGHT1,128,128,128,128) ' Dezimalpunkte > AbsDelay(500) > SHOW_BLANK() > AbsDelay(500) > Goto RDY > > End Sub > > > > > > Hallo > > > > wir sind Auszubildende bei Emscher Genossenschaft und möchten gerne über eine C Control Pro mega 32 eine 7 Segment > > Led Anzeige (Conrad)ansteuern über I2C. > > > > Wir würden uns freuen wenn einer von euch uns Helfen könnte und vielleicht ein kleines Programm schicken würde.