Forum: Compiler & IDEs LCD Anzeige spinnt


von netwurm (Gast)


Angehängte Dateien:

Lesenswert?

Hi,

Ich habe ein kleines "Problemchen" mit meiner Anzeigenausgabe

Angezeigt soll werden

1234

raus kommt

7239


Danke vom Netwurm



hier der Quelltext :
1
#include <msp430x44x.h>
2
3
/*  
4
############################################
5
## Display Treiber Alarmanlage MSP430F449 ##   
6
############################################
7
8
9
     __a__  
10
    |     |
11
    f     b
12
    |__g__|    sieben segment display
13
    |     |
14
    e     c
15
    |__d__|
16
    
17
    .db  0b11000000     ; 0: a, b, c, d, e, f
18
    .db  0b11111001     ; 1: b, c
19
    .db  0b10100100     ; 2: a, b, d, e, g     
20
    .db  0b10110000     ; 3: a, b, c, d, g
21
    .db  0b10011001     ; 4: b, c, f, g
22
    .db  0b10010010     ; 5: a, c, d, f, g
23
    .db  0b10000010     ; 6: a, c, d, e, f, g
24
    .db  0b11111000     ; 7: a, b, c
25
    .db  0b10000000     ; 8: a, b, c, d, e, f, g
26
    .db  0b10010000     ; 9: a, b, c, d, f, g 
27
28
29
Bitzahlen von rechts nach links gelesen 
30
Beispiel für Dezimalzahl 0
31
<-------
32
11000000 
33
34
     __a__      ___on___    a = 0 = on   bit O
35
    |     |    |        |   b = 0 = on   bit 1    
36
    f     b    on      on   c = 0 = on   bit 2
37
    |__g__|    |___off__|   d = 0 = on   bit 3
38
    |     |    |        |   e = 0 = on   bit 4
39
    e     c    on      on   f = 0 = on   bit 5
40
    |__d__|    |__off___|   g = 1 = off  bit 6 
41
     
42
siehe: http://www.mikrocontroller.net/articles/AVR-Tutorial:_7-Segment-Anzeige
43
*/
44
45
#define   LCD_PORT_DIR P2DIR         //  
46
#define   LCD_PORT_OUT P2OUT         //  
47
#define   LCD_1_LOW     P3OUT&=~BIT4 //  
48
#define   LCD_1_HIGH    P3OUT|=BIT4  //
49
#define   LCD_2_LOW     P3OUT&=~BIT5 //
50
#define   LCD_2_HIGH    P3OUT|=BIT5  //
51
#define   LCD_3_LOW     P3OUT&=~BIT6 //
52
#define   LCD_3_HIGH    P3OUT|=BIT6  //
53
#define   LCD_4_LOW     P3OUT&=~BIT7 //
54
#define   LCD_4_HIGH    P3OUT|=BIT7  //
55
56
57
unsigned int dez_anzeig;            // Dezimalzahl zum anzeigen 0....9999    
58
void wait(unsigned int i);          // prototypen
59
60
unsigned char digit[10] = {0xC0, 0xF9, 0xA4, 0xB0, 0x99, 0x92, 0x82, 0xF8, 0x80, 0x90};
61
62
void int_lcd()
63
{
64
  LCD_PORT_DIR|=0XFF;           //  
65
  P3DIR|=BIT7+BIT4+BIT5+BIT6;
66
  P3DIR|=BIT3;                  //
67
  P3OUT&=~BIT3;                 //
68
}
69
70
void wait(unsigned int i)    // delay function
71
{
72
  unsigned int j;
73
  for(j=0;j<i;j++);
74
}
75
76
void display(int num)
77
{
78
   unsigned char LCD_1,LCD_2,LCD_3,LCD_4;
79
   unsigned char w=220;  
80
   unsigned char i=0; 
81
   /* 
82
   LCD_1=num/1000;
83
   LCD_2=num%1000/100;
84
   LCD_3=num%100/10;
85
   LCD_4=num%10;
86
  */
87
  for(i = 0; num >= 1000; i++, num -= 1000);
88
  LCD_1 = i;
89
  for(i = 0; num >= 100; i++, num -= 100);
90
  LCD_2 = i;
91
  for(i = 0; num >= 10; i++, num -= 10);
92
  LCD_3= i;
93
  LCD_4 = num;
94
   
95
  LCD_PORT_OUT=digit[LCD_1];
96
  LCD_1_LOW;
97
  wait(w);
98
  LCD_1_HIGH;
99
  LCD_PORT_OUT=digit[LCD_2];
100
  LCD_2_LOW;
101
  wait(w);
102
  LCD_2_HIGH;
103
  LCD_PORT_OUT=digit[LCD_3];
104
  LCD_3_LOW;
105
  wait(w);
106
  LCD_3_HIGH;
107
  LCD_PORT_OUT=digit[LCD_4];
108
  LCD_4_LOW;
109
  wait(w);
110
  LCD_4_HIGH;
111
}
112
113
void main(void)
114
{
115
  WDTCTL = WDTPW+WDTHOLD;           // watchdog aus
116
  int_lcd();                        // Intalisierung 
117
  dez_anzeig = 1234;                // Dezimal Zahl Ausgabe
118
  
119
  while (1)
120
  {
121
  display(dez_anzeig);
122
  }
123
}

von DirkB (Gast)


Lesenswert?

Dein Segment a leuchtet immer.
(Kurzschluß in der Schaltung?)

von Lord Z. (lordziu)


Lesenswert?

Schmeiß doch erstmal

  for(i = 0; num >= 1000; i++, num -= 1000);
  LCD_1 = i;
  for(i = 0; num >= 100; i++, num -= 100);
  LCD_2 = i;
  for(i = 0; num >= 10; i++, num -= 10);
  LCD_3= i;
  LCD_4 = num;


raus. Und weise LCD_1 - _4 explizit Werte zu. Dann siehst du erstmal ob 
deine Ausgabe funktioniert.

Das hier ist der weitaus schönere Ansatz:

   /*
   LCD_1=num/1000;
   LCD_2=num%1000/100;
   LCD_3=num%100/10;
   LCD_4=num%10;
  */

von netwurm (Gast)


Lesenswert?

hi,

Danke!!!!!

Ja die Ausgabe funktioniert jedoch werden falsche Zahlen angezeigt ;o)

Ich habe auch schon eine Schleife (0 bis 9999) laufen lassen ... mit dem 
Ergebnis das jeweils bei den Ziffern 1 bzw 4 die Anzeige in allen 4 LCD 
7 bzw. 9 anzeigt.

als aus 1 wird 7
und aus 4 wird 9

ist schon irgendwie seltsam ;o)

Netwurm

von netwurm (Gast)


Lesenswert?

Nochmal getestet

Die Null hat auch ein Ding weg

sieht so aus
++++
+  +
+    <- da fehlt es
++++


1
  while (1)
2
  {
3
  
4
    for(dez_anzeig = 0; dez_anzeig < 10000; dez_anzeig++)
5
     { 
6
    display(dez_anzeig);
7
    wait(5000);
8
    
9
     }
10
  dez_anzeig = 0;
11
  }

von Karl H. (kbuchegg)


Lesenswert?

Stell doch erst mal fest, ob diese Zuordnungstabelle überhaupt mit 
deiner Verschaltung übereinstimmt
1
Beispiel für Dezimalzahl 0
2
<-------
3
11000000 
4
5
     __a__      ___on___    a = 0 = on   bit O
6
    |     |    |        |   b = 0 = on   bit 1    
7
    f     b    on      on   c = 0 = on   bit 2
8
    |__g__|    |___off__|   d = 0 = on   bit 3
9
    |     |    |        |   e = 0 = on   bit 4
10
    e     c    on      on   f = 0 = on   bit 5
11
    |__d__|    |__off___|   g = 1 = off  bit 6 
12
     
13
siehe: http://www.mikrocontroller.net/articles/AVR-Tutorial:_7-Segment-Anzeige
14
*/
15
16
....
17
18
unsigned char digit[10] = {0xC0, 0xF9, 0xA4, 0xB0, 0x99, 0x92, 0x82, 0xF8, 0x80, 0x90};

Schmeiss dein Programm weg und gib einfach nur
   0x01
aus und sieh nach welches Segment leuchtet
Danach 0x02, 0x04, 0x08 etc.
bist du von jedem Bit weißt, zu welchem Segment es gehört.
Und dann baust du deine Tabelle erneut auf.
1
....
2
3
int main()
4
{
5
   ...
6
7
  while( 1 )
8
  {
9
    LCD_PORT_OUT = 0x01;
10
    LCD_1_LOW;
11
  }
12
}

von netwurm (Gast)


Lesenswert?

Hi,

erstmal danke ;o)

LCD_PORT_OUT = 0x01;

leuchtet alles ...


werde ich jetzt mal versuchen

unsigned char digit[10] = {0xC0, 0xF9, 0xA4, 0xB0, 0x99, 0x92, 0x82, 
0xF8, 0x80, 0x90};

so wie ich es bis jetzt verstanden habe ist das doch ein standard

Der Controller kann mit hex Zahlenformat umgehen und hat eine 
Zuordnungstabelle für ASCII-Darstellung

na da bin ich ja mal gespannt


Netwurm

von DirkB (Gast)


Lesenswert?

netwurm schrieb:
> LCD_PORT_OUT = 0x01;
>
> leuchtet alles ...

Aber der Punkt ist aus.
Das wird invertiert dargestellt. Und die 1 ist für den Punkt da.

Bevor du jetzt das Inverse von 0x01 selber ausrechnest, nimm den ~ 
Operator.
1
LCD_PORT_OUT = ~0x01;

von DirkB (Gast)


Lesenswert?

Oder wenn die Bezeichnung oben stimmt ist 0x01 für Segment a da. Und das 
leuchtet halt immer.

Gib doch mal 0x00 aus.

von Karl H. (kbuchegg)


Lesenswert?

netwurm schrieb:

> so wie ich es bis jetzt verstanden habe ist das doch ein standard

Standard ist das, wie du die Drähte vom µC zur Anzeige gezogen hast.Und 
ich bin jetzt zu faul mir das aus deinem Schaltplan rauszulesen, wenn du 
das in einem 1/4 der Zeit durch pures ausprobieren selbst feststellen 
kannst.
Vertausch 2 Drähte und anstelle des Punktes leuchtet eben irgendein ein 
anderes Segment. Ist doch wurscht welches, solange man nur weiß welches. 
Und genau das stellst du jetzt einfach mit einem Testprogramm fest.

von netwurm (Gast)


Lesenswert?

Hi,

Hab die ganze Sache mal getestet
scheinbar ist irgendwas kaputt ....

Die obere LED (a) bleibt immer an bzw. blink nur ganz kurz geht aber 
nicht aus

Hier nochmal der Code kann ja sein das Jemand auch so ein Problemchen 
hat



1
......
2
......
3
unsigned char segment[255] = {
4
5
/*0*/ 0x0,
6
/*1*/ 0x1,
7
/*2*/ 0x2,
8
/*3*/ 0x3,
9
/*4*/ 0x4,
10
/*5*/ 0x5,
11
/*6*/ 0x6,
12
/*7*/ 0x7,
13
/*8*/ 0x8,
14
/*9*/ 0x9,
15
/*10*/ 0xa,
16
/*11*/ 0xb,
17
/*12*/ 0xc,
18
/*13*/ 0xd,
19
/*14*/ 0xe,
20
/*15*/ 0xf,
21
/*16*/ 0x10,
22
/*17*/ 0x11,
23
/*18*/ 0x12,
24
/*19*/ 0x13,
25
/*20*/ 0x14,
26
/*21*/ 0x15,
27
/*22*/ 0x16,
28
/*23*/ 0x17,
29
/*24*/ 0x18,
30
/*25*/ 0x19,
31
/*26*/ 0x1a,
32
/*27*/ 0x1b,
33
/*28*/ 0x1c,
34
/*29*/ 0x1d,
35
/*30*/ 0x1e,
36
/*31*/ 0x1f,
37
/*32*/ 0x20,
38
/*33*/ 0x21,
39
/*34*/ 0x22,
40
/*35*/ 0x23,
41
/*36*/ 0x24,
42
/*37*/ 0x25,
43
/*38*/ 0x26,
44
/*39*/ 0x27,
45
/*40*/ 0x28,
46
/*41*/ 0x29,
47
/*42*/ 0x2a,
48
/*43*/ 0x2b,
49
/*44*/ 0x2c,
50
/*45*/ 0x2d,
51
/*46*/ 0x2e,
52
/*47*/ 0x2f,
53
/*48*/ 0x30,
54
/*49*/ 0x31,
55
/*50*/ 0x32,
56
/*51*/ 0x33,
57
/*52*/ 0x34,
58
/*53*/ 0x35,
59
/*54*/ 0x36,
60
/*55*/ 0x37,
61
/*56*/ 0x38,
62
/*57*/ 0x39,
63
/*58*/ 0x3a,
64
/*59*/ 0x3b,
65
/*60*/ 0x3c,
66
/*61*/ 0x3d,
67
/*62*/ 0x3e,
68
/*63*/ 0x3f,
69
/*64*/ 0x40,
70
/*65*/ 0x41,
71
/*66*/ 0x42,
72
/*67*/ 0x43,
73
/*68*/ 0x44,
74
/*69*/ 0x45,
75
/*70*/ 0x46,
76
/*71*/ 0x47,
77
/*72*/ 0x48,
78
/*73*/ 0x49,
79
/*74*/ 0x4a,
80
/*75*/ 0x4b,
81
/*76*/ 0x4c,
82
/*77*/ 0x4d,
83
/*78*/ 0x4e,
84
/*79*/ 0x4f,
85
/*80*/ 0x50,
86
/*81*/ 0x51,
87
/*82*/ 0x52,
88
/*83*/ 0x53,
89
/*84*/ 0x54,
90
/*85*/ 0x55,
91
/*86*/ 0x56,
92
/*87*/ 0x57,
93
/*88*/ 0x58,
94
/*89*/ 0x59,
95
/*90*/ 0x5a,
96
/*91*/ 0x5b,
97
/*92*/ 0x5c,
98
/*93*/ 0x5d,
99
/*94*/ 0x5e,
100
/*95*/ 0x5f,
101
/*96*/ 0x60,
102
/*97*/ 0x61,
103
/*98*/ 0x62,
104
/*99*/ 0x63,
105
/*100*/ 0x64,
106
/*101*/ 0x65,
107
/*102*/ 0x66,
108
/*103*/ 0x67,
109
/*104*/ 0x68,
110
/*105*/ 0x69,
111
/*106*/ 0x6a,
112
/*107*/ 0x6b,
113
/*108*/ 0x6c,
114
/*109*/ 0x6d,
115
/*110*/ 0x6e,
116
/*111*/ 0x6f,
117
/*112*/ 0x70,
118
/*113*/ 0x71,
119
/*114*/ 0x72,
120
/*115*/ 0x73,
121
/*116*/ 0x74,
122
/*117*/ 0x75,
123
/*118*/ 0x76,
124
/*119*/ 0x77,
125
/*120*/ 0x78,
126
/*121*/ 0x79,
127
/*122*/ 0x7a,
128
/*123*/ 0x7b,
129
/*124*/ 0x7c,
130
/*125*/ 0x7d,
131
/*126*/ 0x7e,
132
/*127*/ 0x7f,
133
/*128*/ 0x80,
134
/*129*/ 0x81,
135
/*130*/ 0x82,
136
/*131*/ 0x83,
137
/*132*/ 0x84,
138
/*133*/ 0x85,
139
/*134*/ 0x86,
140
/*135*/ 0x87,
141
/*136*/ 0x88,
142
/*137*/ 0x89,
143
/*138*/ 0x8a,
144
/*139*/ 0x8b,
145
/*140*/ 0x8c,
146
/*141*/ 0x8d,
147
/*142*/ 0x8e,
148
/*143*/ 0x8f,
149
/*144*/ 0x90,
150
/*145*/ 0x91,
151
/*146*/ 0x92,
152
/*147*/ 0x93,
153
/*148*/ 0x94,
154
/*149*/ 0x95,
155
/*150*/ 0x96,
156
/*151*/ 0x97,
157
/*152*/ 0x98,
158
/*153*/ 0x99,
159
/*154*/ 0x9a,
160
/*155*/ 0x9b,
161
/*156*/ 0x9c,
162
/*157*/ 0x9d,
163
/*158*/ 0x9e,
164
/*159*/ 0x9f,
165
/*160*/ 0xa0,
166
/*161*/ 0xa1,
167
/*162*/ 0xa2,
168
/*163*/ 0xa3,
169
/*164*/ 0xa4,
170
/*165*/ 0xa5,
171
/*166*/ 0xa6,
172
/*167*/ 0xa7,
173
/*168*/ 0xa8,
174
/*169*/ 0xa9,
175
/*170*/ 0xaa,
176
/*171*/ 0xab,
177
/*172*/ 0xac,
178
/*173*/ 0xad,
179
/*174*/ 0xae,
180
/*175*/ 0xaf,
181
/*176*/ 0xb0,
182
/*177*/ 0xb1,
183
/*178*/ 0xb2,
184
/*179*/ 0xb3,
185
/*180*/ 0xb4,
186
/*181*/ 0xb5,
187
/*182*/ 0xb6,
188
/*183*/ 0xb7,
189
/*184*/ 0xb8,
190
/*185*/ 0xb9,
191
/*186*/ 0xba,
192
/*187*/ 0xbb,
193
/*188*/ 0xbc,
194
/*189*/ 0xbd,
195
/*190*/ 0xbe,
196
/*191*/ 0xbf,
197
/*192*/ 0xc0,
198
/*193*/ 0xc1,
199
/*194*/ 0xc2,
200
/*195*/ 0xc3,
201
/*196*/ 0xc4,
202
/*197*/ 0xc5,
203
/*198*/ 0xc6,
204
/*199*/ 0xc7,
205
/*200*/ 0xc8,
206
/*201*/ 0xc9,
207
/*202*/ 0xca,
208
/*203*/ 0xcb,
209
/*204*/ 0xcc,
210
/*205*/ 0xcd,
211
/*206*/ 0xce,
212
/*207*/ 0xcf,
213
/*208*/ 0xd0,
214
/*209*/ 0xd1,
215
/*210*/ 0xd2,
216
/*211*/ 0xd3,
217
/*212*/ 0xd4,
218
/*213*/ 0xd5,
219
/*214*/ 0xd6,
220
/*215*/ 0xd7,
221
/*216*/ 0xd8,
222
/*217*/ 0xd9,
223
/*218*/ 0xda,
224
/*219*/ 0xdb,
225
/*220*/ 0xdc,
226
/*221*/ 0xdd,
227
/*222*/ 0xde,
228
/*223*/ 0xdf,
229
/*224*/ 0xe0,
230
/*225*/ 0xe1,
231
/*226*/ 0xe2,
232
/*227*/ 0xe3,
233
/*228*/ 0xe4,
234
/*229*/ 0xe5,
235
/*230*/ 0xe6,
236
/*231*/ 0xe7,
237
/*232*/ 0xe8,
238
/*233*/ 0xe9,
239
/*234*/ 0xea,
240
/*235*/ 0xeb,
241
/*236*/ 0xec,
242
/*237*/ 0xed,
243
/*238*/ 0xee,
244
/*239*/ 0xef,
245
/*240*/ 0xf0,
246
/*241*/ 0xf1,
247
/*242*/ 0xf2,
248
/*243*/ 0xf3,
249
/*244*/ 0xf4,
250
/*245*/ 0xf5,
251
/*246*/ 0xf6,
252
/*247*/ 0xf7,
253
/*248*/ 0xf8,
254
/*249*/ 0xf9,
255
/*250*/ 0xfa,
256
/*251*/ 0xfb,
257
/*252*/ 0xfc,
258
/*253*/ 0xfd,
259
/*254*/ 0xfe
260
261
};
262
263
void main(void)
264
{
265
  WDTCTL = WDTPW+WDTHOLD;           // watchdog aus
266
  int_lcd();                        // Intalisierung 
267
  dez_anzeig = 0;                // Dezimal Zahl Ausgabe
268
   unsigned char LCD_1,LCD_2,LCD_3,LCD_4;
269
   unsigned char w=220;  
270
   unsigned int j;
271
   while (1)
272
  {
273
    for(dez_anzeig = 0; dez_anzeig < 256; dez_anzeig++)
274
     { 
275
         LCD_2=dez_anzeig%1000/100;
276
         LCD_3=dez_anzeig%100/10;
277
         LCD_4=dez_anzeig%10;     
278
         for(j=0;j<10;j++)
279
         {
280
            LCD_PORT_OUT = segment[dez_anzeig];
281
            LCD_1_LOW;
282
            wait(w);
283
            LCD_1_HIGH;
284
            LCD_PORT_OUT=digit[LCD_2];
285
            LCD_2_LOW;
286
            wait(w);
287
            LCD_2_HIGH;
288
            LCD_PORT_OUT=digit[LCD_3];
289
            LCD_3_LOW;
290
            wait(w);
291
            LCD_3_HIGH;
292
            LCD_PORT_OUT=digit[LCD_4];
293
            LCD_4_LOW;
294
            wait(w);
295
            LCD_4_HIGH;        
296
            wait(5000);      
297
         }   
298
      }
299
  }
300
}

von mr. mo (Gast)


Lesenswert?

hast du das array von hand getippt? ^^

falls ja:
hättest auch in einer schleife das array füllen können
 z.b
for(i=0,i<=255,i++) {
segment[i} = i;
}

von J.-u. G. (juwe)


Lesenswert?

mr. mo schrieb:
> hättest auch in einer schleife das array füllen können

Welchen Sinn hat ein Array, wenn alle Elemente den gleichen Wert haben, 
wie ihr Index?

von netwurm (Gast)


Lesenswert?

1
LCD_PORT_OUT = ~0x01;
2
LCD_1_LOW;

es leuchtet Segment a darf es das ???

Danke Netwurm

von netwurm (Gast)


Lesenswert?

hast du das array von hand getippt? ^^

neee,

Ich habe heute die erste .exe gemacht ;o)
fange mit c an sorry

1
int i=0;
2
3
char hex[256];
4
5
for(i = 0; i < 256; i++)
6
{
7
sprintf(hex, "%x", i);
8
printf("/*%d*/ 0x%s,\n", i,hex);
9
}      
10
11
12
system("PAUSE");

von Karl H. (kbuchegg)


Lesenswert?

netwurm schrieb:
>
1
> LCD_PORT_OUT = ~0x01;
2
> LCD_1_LOW;
3
>
>
> es leuchtet Segment a darf es das ???

Ist es das einzige Segment, welches leuchtet?
Wenn ja, dann darf es das.

Also


     ++++++
    +      +
    +      +
     ++++++
    +      +
    +      +
     ++++++

welches Segment leuchtet? (Tausch die + gegen eine 0 aus)

(Jetzt gehen wir beide das ganze mal systematisch an. Das hat doch 
keinen Sinn, wenn du da ohne System an die Sache rangehst. Wenn du 
hardwaremässig keinen Kurzschluss hast, dann ist das eine Sache auf 10 
Minuten und du hast deine Zahlen dann korrekt auf der Anzeige. Und nein, 
es ist mir völlig wurscht, welchen Buchstaben das Segment da weiter oben 
hat. Wir brauchen eine zusammenstellung, welches Segment mit welchem Bit 
gesteuert wird. Und am besten diese Zusammenstellung in graphischer 
Form. Denn dann muss man nicht um die Ecke denken, sondern hat alles 
direkt vor Augen)

Wenn du das hast, dann probierst du
  LCD_PORT_OUT = ~0x02;
und tauscht wieder die entsprechenden + für das Segment diesmal gegen 
eine 1 aus.

Danach
 LCD_PORT_OUT = ~0x04;
+ austauschen gegen 2

 LCD_PORT_OUT = ~0x08;       // austauschen gegen 3

 LCD_PORT_OUT = ~0x10;       //                   4

 LCD_PORT_OUT = ~0x20;       //                   5

 LCD_PORT_OUT = ~0x40;       //                   6

 LCD_PORT_OUT = ~0x80;       //                   7


Hast du die alle einzeln durchpobiert, dann musst du eine Zeichnung 
haben, in der für jedes Segment der 8 das Segment gegen die jeweilige 
Bitnummer ersetzt ist.
Und wenn du das hast, dann gehts weiter.

von netwurm (Gast)


Lesenswert?

Hi,

Es ist ein Hardwarefehler der Platine. Ich konnte den Fehler etwas 
eingrenzen. Offenbar ist irgendwas nicht richtig abgeschirmt sobald ich 
über den LCD Treiber mit meiner Hand gehe (ohne Berührung!) fangen die 
defekten Segmente (a) an zu flackern... die anderen sind jedoch stabil!

Ist schon ärgerlich...Aber für mein Verständnis des MSP430 (bin ja noch 
blutiger Anfänger)ist es gut ;o) habe mich mit dem LCD richtig 
auseinandergesetzt. Werde heute noch Deinen Vorschlag (Isolierung der 
einzelnen Segmente) durchtesten.

Danke Dir ;o)

Netwurm

von DirkB (Gast)


Lesenswert?

Evtl. hast du auch eine kalte Lötstelle oder der JP1 hat nicht richtig 
Kontakt.

von netwurm (Gast)


Lesenswert?

Hi,

Jetzt gehts!!! Das Bord hatte Pins für die P20 - P37

Habe diese ersetzt durch andere ... da muss man erstmal drauf kommen ;o)
Jetzt ist die Anzeige stabil. Habe noch ein wenig rumprobiert

~0x01 = 1
~0x02 = 2
~0x04 = 4
~0x08 = 8
~0x10 = 16
~0x20 = 32
~0x40 = 64
~0x80 = 128
~0x00 = off

Buchstaben
P[.] wie Programm
P = ~(0x01+0x20+0x02+0x40+0x10) + 0x80
A[.] wie Arlarm
A = ~(0x01+0x20+0x02+0x40+0x10+0x04) + 0x80

    ++~0x01++
    +       +
  ~0x20    ~0x02
    +       +
    ++~0x40++
    +       +
  ~0x10  ~0x04
    +       +
    ++~0x08++  [+] ~0x80 = Punkt


Danke nochmal an Alle

Netwurm

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.