DOGM mit SPI ansteuern

Gast #2603166
Hallo zusammen,

ich hoffe ihr könnt mir helfen. Es geht um folgendes und zwar will ich 
mit meinem PIC18F2525 mit Hilfe des SPI das DOGM LCD Display ansteuern 
aber irgendwie will das nicht so recht. Anbei sende ich euch meinen 
bisherigen Code und hoffe das ihr ihn versteht:
1
/****Programmkopf**************************************************
2
#pragma code
3

4
void main(void)
5
{
6

7
/****Anfangsbedingung für die SPI Schnittstelle********************
8
//SSPSTAT-Register
9
SSPSTATbits.SMP=0x00;              
10
SSPSTATbits.CKE=0x00;                      
11
//SSPCON1-Register
12
SSPCON1bits.SSPEN=0x01;              
13
SSPCON1bits.CKP=0x01;              
14
SSPCON1bits.SSPM3 = 0x00;
15
SSPCON1bits.SSPM2 = 0x00;
16
SSPCON1bits.SSPM1 = 0x00;
17
SSPCON1bits.SSPM0=0x00;                    
18
//SPI IO-Pins                           //PIC -> LC-Display
19
TRISCbits.TRISC5=0x00;      //SDO -> SDO      
20
TRISCbits.TRISC3=0x00;      //SCK -> CLK    
21
TRISAbits.TRISA5=0x01;      //SS  -> CSB  
22
TRISAbits.TRISA4=0x00;      //RA4 -> RS      
23

24
/****LC-Display initialisieren*************************************
25
//Function Set
26
Delay10TCYx(1);
27
PORTAbits.RA5=0x00;              
28
LATAbits.LATA4=0x00;              
29
SSPBUF=0x38;                
30
while(SSPSTATbits.BF==0x00);            
31
PORTAbits.RA5=0x01;              
32
SSPSTATbits.BF=0x00;
33

34
//Function Set
35
Delay10TCYx(1);
36
PORTAbits.RA5=0x00;              
37
LATAbits.LATA4=0x00;              
38
SSPBUF=0x38;                
39
while(SSPSTATbits.BF==0x00);            
40
PORTAbits.RA5=0x01;              
41
SSPSTATbits.BF=0x00;
42

43
//Internal OSC frequency
44
Delay10TCYx(1);
45
PORTAbits.RA5=0x00;              
46
LATAbits.LATA4=0x00;              
47
SSPBUF=0x18;                
48
while(SSPSTATbits.BF==0x00);            
49
PORTAbits.RA5=0x01;              
50
SSPSTATbits.BF=0x00;
51

52
//Contrast Set  
53
Delay10TCYx(1);
54
PORTAbits.RA5=0x00;              
55
LATAbits.LATA4=0x00;              
56
SSPBUF=0x7A;                
57
while(SSPSTATbits.BF==0x00);            
58
PORTAbits.RA5=0x01;              
59
SSPSTATbits.BF=0x00;              
60

61
//Power/ICON/Contrast control
62
Delay10TCYx(1);
63
PORTAbits.RA5=0x00;              
64
LATAbits.LATA4=0x00;              
65
SSPBUF=0x50;                
66
while(SSPSTATbits.BF==0x00);            
67
PORTAbits.RA5=0x01;              
68
SSPSTATbits.BF=0x00;
69

70
//Follower control
71
Delay10TCYx(1);
72
PORTAbits.RA5=0x00;              
73
LATAbits.LATA4=0x00;              
74
SSPBUF=0x68;                
75
while(SSPSTATbits.BF==0x00);            
76
PORTAbits.RA5=0x01;              
77
SSPSTATbits.BF=0x00;
78

79
//Display ON/OFF control
80
Delay10TCYx(1);
81
PORTAbits.RA5=0x00;              
82
LATAbits.LATA4=0x00;              
83
SSPBUF=0xC;                
84
while(SSPSTATbits.BF==0x00);            
85
PORTAbits.RA5=0x01;              
86
SSPSTATbits.BF=0x00;
87

88
//Jetzt könnte ich doch die Übertragung Starten oder?
89
}

Ich weis ich könnte das ganze als Funktion schreiben um das ganze 
übersichtlicher zu machen aber das mache ich später.
#2603175
Steeef schrieb:

> Ich weis ich könnte das ganze als Funktion schreiben um das ganze
> übersichtlicher zu machen aber das mache ich später.

Da hast du natürlich recht. Sowas macht man immer später.
Ein Code ....
1
  SendByte( 0x38 );          //Function Set
2
  SendByte( 0x38 );          //Function Set
3
  SendByte( 0x18 );          //Internal OSC frequency
4
  SendByte( 0x7A );          //Contrast Set
5
  SendByte( 0x50 );          //Power/ICON/Contrast control
6
  SendByte( 0x68 );          //Follower control
7
  SendByte( 0x0C );          //Display ON/OFF control
8

9
//Jetzt könnte ich doch die Übertragung Starten oder?
.... wäre ja viel zu übersichtlich um zu kontrollieren, ob du die 
richtigen Bytes sendest bzw. ob du etwas vergessen hast einzustellen.

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 14 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

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.