DOG S 102-6 ansteuern

OP #3026703
Lesenswert?
• ▲
▼
Hallo erst mal an alle

ich weiß ,dass es schon sehr viele Beiträge zu diesem Display gibt, 
jedoch komm ich trotz dass ich sie alle gelesen hab nicht voran.

Ich möchte mit dem PIC18F4685 über SPI das DOG S 102 Display ansteuern 
bzw. erstmal nur initialisieren.
Die SPI übertragung funktioniert, da ich sie mit dem Oszi überprüft hab.
Trotz allem tut sich nichts:(,
Die Verbindungen zum Display hab ich mehrmals auch überprüft und sollten 
stimmen.
Ich hab beim Display jedoch mal aus versehen die Versorgungsspannung 
verkehrt angeschlossen :(, ich hoffe das hat es überlebt.
und ich hab bei den externen Kondis Elkos verwendet, hab jedoch schon 
darauf geachtet dass sie richtig angeschlossen sind.


Hier ist die main
1
#include "p18f4685.h"
2
#include "delays.h"
3
#include "Alexander_functions.h"
4

5
#define RESET LATCbits.LATC0
6
#define CD LATCbits.LATC1
7
#define CS LATCbits.LATC2
8

9
char send_Byte,get_Byte[12];
10
int write=0,read=1;
11
char byte,command,data;
12
char i;
13
char abc;
14

15
void Ports_Init(void);
16

17

18
void main (void)
19
{
20
  Delay10KTCYx(200);
21

22
    Ports_Init();
23
  SPI_INIT();
24
  Delay10KTCYx(10);
25
  INIT_GDISPLAY();
26
  Delay10KTCYx(10);
27

28
    SEND_COMMAND(0b00000000);
29
    SEND_COMMAND(0b00010000);
30
    SEND_DATA(0xFF);
31
    SEND_COMMAND(0b00000001);
32
    SEND_COMMAND(0b00010000);
33
    SEND_DATA(0xFF);
34
    SEND_COMMAND(0b00000010);
35
    SEND_COMMAND(0b00010000);
36
    SEND_DATA(0xFF);
37
    SEND_COMMAND(0b00000011);
38
    SEND_COMMAND(0b00010000);
39
    SEND_DATA(0xFF);
40
    SEND_COMMAND(0b00000100);
41
    SEND_COMMAND(0b00010000);
42
    SEND_DATA(0xFF);
43

44
    SEND_COMMAND(0xa4);
45

46

47
while(1);
48
}            // end of main
49

50

51
void Ports_Init(void)
52
    {
53

54
  TRISCbits.TRISC3 = 0;    // Master, so SCK is output
55
  TRISCbits.TRISC4 = 1;    // SDI is input
56
  TRISCbits.TRISC5 = 0;    // SDO is output
57
  TRISCbits.TRISC6 = 0;    // Chip Select
58

59
  TRISCbits.TRISC0 = 0;    // Master, so SCK is output
60
  TRISCbits.TRISC1 = 0;    // Master, so SCK is output
61
  TRISCbits.TRISC2 = 0;    // Master, so SCK is output
62

63
  RESET=1;
64
  CS=1;            // Chip select
65
    }


das sind die Funktionen
1
#include "p18f4685.h"
2
#include "delays.h"
3
#include "Alexander_functions.h"
4

5
void SPI_INIT(void)
6
  {
7
  SSPCON1bits.SSPEN = 1;    // Enable MSSP
8
  SSPCON1bits.CKP = 0;    // IDLE is low level
9
  SSPCON1bits.SSPM3 = 0;
10
  SSPCON1bits.SSPM2 = 0;
11
  SSPCON1bits.SSPM1 = 1;    // Master Mode, Clock is Fosc/64  (20MHz / 64 = 300 kHz)
12
  SSPCON1bits.SSPM0 = 0;
13

14
  SSPSTATbits.SMP = 0;    // Input data sampled at middle of data output time
15
  SSPSTATbits.CKE = 1;      // Transmit on transition from Idle to active clock state
16
  }
17

18
int SPI_BYTE(char byte)
19
  {
20
  SSPBUF = byte;
21
  while(SSPSTATbits.BF == 0);
22
  PIR1bits.SSPIF = 0;     // Clear Interrupt flag (wird immer gesetzt wenn ein Byte ankommt)
23
  byte = SSPBUF;          // Read
24

25
  return byte;
26
  }
27

28
void INIT_GDISPLAY(void)
29
  {
30
  char i,init_array[12]={0x40,0xa1,0xc0,0xa6,0xa2,0x2f,0x27,0x81,0x10,0xfa,0x90,0xaf};
31

32
  Delay10KTCYx(10);
33
  RESET=0;          //  Reset
34
  Delay10KTCYx(10);
35
  RESET=1;  
36
  Delay10KTCYx(10);      // 20ms delay
37

38
  for(i=0;i<12;i++)
39
  {
40
  SEND_COMMAND(init_array[i]);
41
  }
42
  }
43

44
void SEND_COMMAND(char command)
45
  {  
46
  CD=0;          // Command Data
47
  CS=0;          // Chip select
48
  SPI_BYTE(command);
49
  CS=1;          // Chip select
50
  }
51

52
void SEND_DATA(char data)
53
  {
54
  CD=1;          // Command Data
55
  CS=0;          // Chip select
56
  SPI_BYTE(data);
57
  CS=1;          // Chip select
58
  }

und noch die include datei
1
#define RESET LATCbits.LATC0
2
#define CD LATCbits.LATC1
3
#define CS LATCbits.LATC2
4

5
extern void SPI_INIT_(void);
6
extern void INIT_GDISPLAY(void);
7

8
extern void SEND_COMMAND(char command);
9
extern void SEND_DATA(char data);
10
extern int SPI_BYTE(char byte);

 Das Programm macht schon was es sollte jedoch das display nich, wenn 
jemand nen Felher im Programm findet wäre das super:)


danke im voraus für jede Hilfe

mgf
alex

Antwort schreiben

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.