LCD Display (KS0066) med PIC16F877A, problem.
Postat: 21 april 2007, 11:48:48
Hej!
Har lite trubbel att få igång en LCD-display (2x16, KS0066) tillsammans med en PIC16F877A. Jag får inte en livstecken ur displayen överhuvudtaget, den är helt blank.
Koppling LCD:
Pin 1, VSS: Sitter på GND.
Pin 2, VDD: Sitter på +5V.
Pin 3, VO: Sitter på +5V, har dock labbat med att köra på lägre spänningar, +5v är angiven som typ-spänning.
Pin 4, RS: Sitter på PORTB.5.
Pin 5, R/W: Sitter på PORTB.6.
Pin 6, E: Sitter på PORTB.7.
Pin 7-14, Data: Sitter på PORTD.
Har gjort ett program som först ska skicka Diplay ON kommando därefter ett System set kommand och därefter skriva ett tecken "0" till diplayen.
Jag har kontrollet att PIC:ens utgångar beter sig enligt programmet, har mätt på lödpadsen på displayen för varje pinne, och allt stämmer enligt programmet. Så det förefaller mig som allt är rätt kopplat.
Så jag gissar att det är nåt fel i programmet, eller att displayen helt enkelt är trasig.
Som sagt, displayen förblir helt blank, inget händer. Hoppas någon kan hjälpa mig lite! Tack!
Har lite trubbel att få igång en LCD-display (2x16, KS0066) tillsammans med en PIC16F877A. Jag får inte en livstecken ur displayen överhuvudtaget, den är helt blank.
Koppling LCD:
Pin 1, VSS: Sitter på GND.
Pin 2, VDD: Sitter på +5V.
Pin 3, VO: Sitter på +5V, har dock labbat med att köra på lägre spänningar, +5v är angiven som typ-spänning.
Pin 4, RS: Sitter på PORTB.5.
Pin 5, R/W: Sitter på PORTB.6.
Pin 6, E: Sitter på PORTB.7.
Pin 7-14, Data: Sitter på PORTD.
Har gjort ett program som först ska skicka Diplay ON kommando därefter ett System set kommand och därefter skriva ett tecken "0" till diplayen.
Jag har kontrollet att PIC:ens utgångar beter sig enligt programmet, har mätt på lödpadsen på displayen för varje pinne, och allt stämmer enligt programmet. Så det förefaller mig som allt är rätt kopplat.
Så jag gissar att det är nåt fel i programmet, eller att displayen helt enkelt är trasig.
Som sagt, displayen förblir helt blank, inget händer. Hoppas någon kan hjälpa mig lite! Tack!
Kod: Markera allt
#pragma chip PIC16F877A
#pragma config |= 0x3ff2
#pragma bit LCD_E @ PORTB.7 // Enable pin
#pragma bit LCD_RW @ PORTB.6 // R/W pin
#pragma bit LCD_RS @ PORTB.5 // RS pin
#pragma char LCD_data @ PORTD // DB7-DB0 data pins
void init(void);
void delay(char);
void LCD_enable(void);
void LCD_test(void);
void main(void)
{
init();
delay(0xFF); // Diplay wake up delay
LCD_test();
}
void init(void)
{
TRISB = 0b0000.0000; // Outputs
TRISD = 0b0000.0000; // Outputs
LCD_E = 0; // Enable = 0;
}
void delay(char ms) // Delay routine
{
OPTION = 0b0000.0010;
do {
TMR0 = 0;
while (TMR0 < 125);
} while (--ms > 0);
}
void LCD_enable(void) // Toggle Enable
{
char i;
LCD_E = 1;
delay(1);
LCD_E = 0;
delay(1);
}
void LCD_test(void)
{
LCD_RW = 0; // Write
LCD_RS = 0; // RS, Instruction register.
LCD_data = 0b0000.1111; // Display on, Cursor on, Blinking on.
LCD_enable();
delay(5); // Wait a while
LCD_data = 0b0011.1000; // System set. 8-bits, 2-line, 5x8 dits.
LCD_enable();
delay(5); // Wait a while
LCD_RS = 1; // RS, Data register.
LCD_data = 0b0011.0000; // Skriv tecken "0"
LCD_enable();
}