Hi !
Ich wollte mal probieren mit c (c18-compiler von microchip) ein mein display anzusteuern. aber irgendwie klappt wohl die Initialisierung des Displays nicht. Aber ich finde den Fehler nicht
Könnt ihr da vielleicht mal drüber gucken? danke schonmal
Gruß
Code:
/** I N C L U D E S **********************************************************/
#include <p18f242.h>
#include "delays.h"
/** C O N F I G U R A T I O N ************************************************/
#pragma config OSC = HS //CPU=20 MHz
#pragma config PWRT = ON
#pragma config BOR = OFF
#pragma config WDT = OFF //Watchdog Timer
#pragma config LVP = OFF //Low Voltage ICSP
/** D E C L A R A T I O N S **************************************************/
#define XRS LATCbits.LATC4
#define XWR LATCbits.LATC5
#define E LATCbits.LATC6
#define text HALLO
#define DISPLAY_BREITE 20
/** C O D E **************************************************/
#pragma code
void LCD_Init(void);
void LCD_send_cmd(char command);
void send(void);
void main(void)
{
LATB = 0x00;
TRISB = 0x00;
LATC = 0x00;
TRISC = 0x8f; //10001111, RC0 - RC3 input, RC4 - RC6 output
LCD_Init();
} //end main
//******************************** LCD ************************************
//*************************************************************************
// LCD_Init():
//
// Initialisierung des LCD-Displays.
//
//*************************************************************************
void LCD_Init()
{
LCD_send_cmd(0x38); // Interface data length: 8 bit, zweizeilig, 5x7 Dots
LCD_send_cmd(0x38); // Interface data length: 8 bit, zweizeilig, 5x7 Dots
LCD_send_cmd(0x38); // Interface data length: 8 bit, zweizeilig, 5x7 Dots
LCD_send_cmd(0x38); // Interface data length: 8 bit, zweizeilig, 5x7 Dots
LCD_send_cmd(0x0E); // Display On: ON, Cursor ON, ohne Blinken
LCD_send_cmd(0x01); // clear display
LCD_send_cmd(0x06); // Entry Mode Set: inkrementieren / Cursor automatisch
} // LCD_Init
//*************************************************************************
// LCD_send_char(char zeichen):
//
// Ausgabe des Zeichens <zeichen> an der aktuellen Cursorposition.
//
//*************************************************************************
void LCD_send_char(char zeichen)
{
LATB = zeichen;
send();
Delay10KTCYx(63);
} // LCD_send_char
//*************************************************************************
// LCD_send_cmd(char command):
//
// Senden des Befehls <command> zum LCD-Display
//
//*************************************************************************
void LCD_send_cmd(char command)
{
LATB = command;
send();
Delay10KTCYx(255);
} // LCD_send_cmd
//*************************************************************************
// LCD_outtext(char x, char y,const char *text):
//
// Ausgabe von <text> an der aktuellen Cursorposition.
//
//*************************************************************************
void LCD_outtext(char x, char y, const char *text)
{
switch(y)
{
case 1:
LCD_send_cmd(x + 0x07F);
break;
case 2:
LCD_send_cmd(x + 0x0BF);
break;
case 3:
LCD_send_cmd(x + 0x093);
break;
case 4:
LCD_send_cmd(x + 0x0D3);
break;
} // switch(y)
while(*text && (x++ <= DISPLAY_BREITE)) LCD_send_char(*text++);
} // LCD_outtext
void send()
{
XWR = 0;
XRS = 1;
E = 1;
Delay10TCYx(1);
E = 0;
XRS = 0;
XWR = 1;
}
Lesezeichen