Hallo,
ich versuche seit einiger Zeit ein VFD- Display aus einem Geldspieler
anzusteuern. Leider bisher ohne Erfolg....
Ich verwende einen ATMega8 (16MHz), auf der Displayplatine ist ein
OKIC1937-01 Treiberbaustein. So wie ich das Datenblatt verstanden habe
werden die beiden SPI- Leitungen (SCK,MOSI) genutzt um das Display
anzusteuern.
Zum Starten des Treibers wird ein Impuls an Pin POR erwartet (bei mir
PB1), danach kann mittels SPI das Display "konfiguriert" werden. Als
erstes schicke ich die Anzahl der Segmente (bei mir 16), danach wähle
ich das Segment aus, dass angesteuert werden soll (bei mir als Beispiel
16), dann setze ich die Beleuchtung auf 50% und schicke dann
beispielhaft ein A raus.
Leider tut sich auf dem Display nichts. Kann mir jemand helfen?
1 | #include <stdlib.h>
|
2 | #include <avr/io.h>
|
3 | #include <avr/interrupt.h>
|
4 | #include <avr/pgmspace.h>
|
5 | #include <avr/delay.h>
|
6 |
|
7 |
|
8 | #ifndef F_CPU
|
9 | #define F_CPU 16000000UL
|
10 | #endif
|
11 |
|
12 | void SPI_MasterInit(void)
|
13 | {
|
14 | /*Set MMOSI, SS and SCK output */
|
15 | DDRB = (1<<DDB3) | (1<<DDB5)| (1<<DDB2);
|
16 | /*Enable SPI, Master, set clock rate fck/32 --> 500kHz */
|
17 | SPCR = (1<<SPE)|(1<<MSTR)|(1<<SPI2X) |(1<<SPR1);
|
18 |
|
19 | }
|
20 |
|
21 | void SPI_MasterTransmit(char cData)
|
22 | {
|
23 | /* Start Transmission */
|
24 | SPDR = cData;
|
25 | /* Wait for transmision complete */
|
26 | while(!(SPSR & (1<<SPIF)))
|
27 | return SPDR;
|
28 | ;
|
29 | }
|
30 |
|
31 |
|
32 | int main(void)
|
33 | {
|
34 | SPI_MasterInit();
|
35 |
|
36 |
|
37 | DDRB |= (1<<PB1);
|
38 |
|
39 | /*POR Start- Signal erzeugen*/
|
40 | PORTB &= ~(1<<PB1);
|
41 | _delay_us(1);
|
42 | PORTB |= (1<<PB1);
|
43 | _delay_us(200);
|
44 | PORTB &= ~(1<<PB1);
|
45 | _delay_us(1);
|
46 |
|
47 | while(1)
|
48 | {
|
49 |
|
50 |
|
51 | /* Einstellunge des Displays*/
|
52 | SPI_MasterTransmit(0b10101110); //Anzahl Digits --> 16
|
53 | SPI_MasterTransmit(0b11000000); //Nummer Displayeinheit--> 16
|
54 | SPI_MasterTransmit(0b11110111); //Beleuchtung auf 50%
|
55 |
|
56 |
|
57 |
|
58 | //Schicke A
|
59 | SPI_MasterTransmit(0b00000001);
|
60 |
|
61 |
|
62 |
|
63 | }
|
64 | return 0;
|
65 | }
|
Das Datenblatt des Controllers habe ich angehängt.
Danke und Gruß Andi