Witam serdecznie,
Piszę ponieważ mam problem, z którym nie mogę sobie poradzić już kilka dni. Niby wszystko jest ok, wyświetlacz się włącza, wypisuje tekst który podaje lecz w przypadku polskiego znaku pojawia się inny kształt. Całość symuluje w proteusie niestety nie mam możliwości złożenia układu. Poniżej wstawiam kod programu oraz biblioteki. Z góry dziękuje za pomoc.
Kod programu:
Kod biblioteki:
Piszę ponieważ mam problem, z którym nie mogę sobie poradzić już kilka dni. Niby wszystko jest ok, wyświetlacz się włącza, wypisuje tekst który podaje lecz w przypadku polskiego znaku pojawia się inny kształt. Całość symuluje w proteusie niestety nie mam możliwości złożenia układu. Poniżej wstawiam kod programu oraz biblioteki. Z góry dziękuje za pomoc.
Kod programu:
Spoiler:
#include <avr/io.h>
#define F_CPU 1000000UL
#include <util/delay.h>
#include "HD44780.h"
int main(void)
{
LCD_Initalize();
char litera_l[8] = {0x0C,0x04,0x06,0x04,0x0C,0x04,0x0E,0x00};
LCD_WriteCommand (0x40);
char adres=0;
for(unsigned char i=0;i<=7;i++)
{
LCD_WriteCommand(0x40|(adres+i));
LCD_WriteData(litera_l[i]); //wysylanie danych do lcd
}
LCD_WriteCommand (0x80);
//_delay_ms(100);
LCD_GoTo(0, 0);
LCD_WriteText("bbbbbbbbb");
LCD_GoTo(0, 1);
LCD_WriteText("b");
LCD_WriteText(0x00);
LCD_WriteText("b");
return(0);
}
#define F_CPU 1000000UL
#include <util/delay.h>
#include "HD44780.h"
int main(void)
{
LCD_Initalize();
char litera_l[8] = {0x0C,0x04,0x06,0x04,0x0C,0x04,0x0E,0x00};
LCD_WriteCommand (0x40);
char adres=0;
for(unsigned char i=0;i<=7;i++)
{
LCD_WriteCommand(0x40|(adres+i));
LCD_WriteData(litera_l[i]); //wysylanie danych do lcd
}
LCD_WriteCommand (0x80);
//_delay_ms(100);
LCD_GoTo(0, 0);
LCD_WriteText("bbbbbbbbb");
LCD_GoTo(0, 1);
LCD_WriteText("b");
LCD_WriteText(0x00);
LCD_WriteText("b");
return(0);
}
Kod biblioteki:
Spoiler:
//-------------------------------------------------------------------------------------------------
// Wyświetlacz alfanumeryczny ze sterownikiem HD44780
// Sterowanie w trybie 4-bitowym bez odczytu flagi zajętości
// z dowolnym przypisaniem sygnałów sterujących
// Plik : HD44780.h
// Mikrokontroler : Atmel AVR
// Kompilator : avr-gcc
// Autor : Radosław Kwiecień
// Źródło : http://radzio.dxp.pl/hd44780/
// Data : 24.03.2007
//-------------------------------------------------------------------------------------------------
#include <avr/io.h>
#include <util/delay.h>
//-------------------------------------------------------------------------------------------------
//
// Konfiguracja sygnałów sterujących wyświetlaczem.
// Można zmienić stosownie do potrzeb.
//
//-------------------------------------------------------------------------------------------------
#define LCD_RS_DIR DDRB
#define LCD_RS_PORT PORTB
#define LCD_RS_PIN PINB
#define LCD_RS (1 << PB2)
#define LCD_RW_DIR DDRB
#define LCD_RW_PORT PORTB
#define LCD_RW_PIN PINB
#define LCD_RW (1 << PB1)
#define LCD_E_DIR DDRB
#define LCD_E_PORT PORTB
#define LCD_E_PIN PINB
#define LCD_E (1 << PB3)
#define LCD_DB4_DIR DDRD
#define LCD_DB4_PORT PORTD
#define LCD_DB4_PIN PIND
#define LCD_DB4 (1 << PD4)
#define LCD_DB5_DIR DDRD
#define LCD_DB5_PORT PORTD
#define LCD_DB5_PIN PIND
#define LCD_DB5 (1 << PD5)
#define LCD_DB6_DIR DDRD
#define LCD_DB6_PORT PORTD
#define LCD_DB6_PIN PIND
#define LCD_DB6 (1 << PD6)
#define LCD_DB7_DIR DDRD
#define LCD_DB7_PORT PORTD
#define LCD_DB7_PIN PIND
#define LCD_DB7 (1 << PD7)
//-------------------------------------------------------------------------------------------------
//
// Instrukcje kontrolera Hitachi HD44780
//
//-------------------------------------------------------------------------------------------------
#define HD44780_CLEAR 0x01
#define HD44780_HOME 0x02
#define HD44780_ENTRY_MODE 0x04
#define HD44780_EM_SHIFT_CURSOR 0
#define HD44780_EM_SHIFT_DISPLAY 1
#define HD44780_EM_DECREMENT 0
#define HD44780_EM_INCREMENT 2
#define HD44780_DISPLAY_ONOFF 0x08
#define HD44780_DISPLAY_OFF 0
#define HD44780_DISPLAY_ON 4
#define HD44780_CURSOR_OFF 0
#define HD44780_CURSOR_ON 2
#define HD44780_CURSOR_NOBLINK 0
#define HD44780_CURSOR_BLINK 1
#define HD44780_DISPLAY_CURSOR_SHIFT 0x10
#define HD44780_SHIFT_CURSOR 0
#define HD44780_SHIFT_DISPLAY 8
#define HD44780_SHIFT_LEFT 0
#define HD44780_SHIFT_RIGHT 4
#define HD44780_FUNCTION_SET 0x20
#define HD44780_FONT5x7 0
#define HD44780_FONT5x10 4
#define HD44780_ONE_LINE 0
#define HD44780_TWO_LINE 8
#define HD44780_4_BIT 0
#define HD44780_8_BIT 16
#define HD44780_CGRAM_SET 0x40
#define HD44780_DDRAM_SET 0x80
//-------------------------------------------------------------------------------------------------
//
// Deklaracje funkcji
//
//-------------------------------------------------------------------------------------------------
void LCD_WriteCommand(unsigned char);
unsigned char LCD_ReadStatus(void);
void LCD_WriteData(unsigned char);
unsigned char LCD_ReadData(void);
void LCD_WriteText(char *);
void LCD_GoTo(unsigned char, unsigned char);
void LCD_Clear(void);
void LCD_Home(void);
void LCD_Initalize(void);
//-------------------------------------------------------------------------------------------------
//
// Koniec pliku HD44780.h
//
//-------------------------------------------------------------------------------------------------
// Wyświetlacz alfanumeryczny ze sterownikiem HD44780
// Sterowanie w trybie 4-bitowym bez odczytu flagi zajętości
// z dowolnym przypisaniem sygnałów sterujących
// Plik : HD44780.h
// Mikrokontroler : Atmel AVR
// Kompilator : avr-gcc
// Autor : Radosław Kwiecień
// Źródło : http://radzio.dxp.pl/hd44780/
// Data : 24.03.2007
//-------------------------------------------------------------------------------------------------
#include <avr/io.h>
#include <util/delay.h>
//-------------------------------------------------------------------------------------------------
//
// Konfiguracja sygnałów sterujących wyświetlaczem.
// Można zmienić stosownie do potrzeb.
//
//-------------------------------------------------------------------------------------------------
#define LCD_RS_DIR DDRB
#define LCD_RS_PORT PORTB
#define LCD_RS_PIN PINB
#define LCD_RS (1 << PB2)
#define LCD_RW_DIR DDRB
#define LCD_RW_PORT PORTB
#define LCD_RW_PIN PINB
#define LCD_RW (1 << PB1)
#define LCD_E_DIR DDRB
#define LCD_E_PORT PORTB
#define LCD_E_PIN PINB
#define LCD_E (1 << PB3)
#define LCD_DB4_DIR DDRD
#define LCD_DB4_PORT PORTD
#define LCD_DB4_PIN PIND
#define LCD_DB4 (1 << PD4)
#define LCD_DB5_DIR DDRD
#define LCD_DB5_PORT PORTD
#define LCD_DB5_PIN PIND
#define LCD_DB5 (1 << PD5)
#define LCD_DB6_DIR DDRD
#define LCD_DB6_PORT PORTD
#define LCD_DB6_PIN PIND
#define LCD_DB6 (1 << PD6)
#define LCD_DB7_DIR DDRD
#define LCD_DB7_PORT PORTD
#define LCD_DB7_PIN PIND
#define LCD_DB7 (1 << PD7)
//-------------------------------------------------------------------------------------------------
//
// Instrukcje kontrolera Hitachi HD44780
//
//-------------------------------------------------------------------------------------------------
#define HD44780_CLEAR 0x01
#define HD44780_HOME 0x02
#define HD44780_ENTRY_MODE 0x04
#define HD44780_EM_SHIFT_CURSOR 0
#define HD44780_EM_SHIFT_DISPLAY 1
#define HD44780_EM_DECREMENT 0
#define HD44780_EM_INCREMENT 2
#define HD44780_DISPLAY_ONOFF 0x08
#define HD44780_DISPLAY_OFF 0
#define HD44780_DISPLAY_ON 4
#define HD44780_CURSOR_OFF 0
#define HD44780_CURSOR_ON 2
#define HD44780_CURSOR_NOBLINK 0
#define HD44780_CURSOR_BLINK 1
#define HD44780_DISPLAY_CURSOR_SHIFT 0x10
#define HD44780_SHIFT_CURSOR 0
#define HD44780_SHIFT_DISPLAY 8
#define HD44780_SHIFT_LEFT 0
#define HD44780_SHIFT_RIGHT 4
#define HD44780_FUNCTION_SET 0x20
#define HD44780_FONT5x7 0
#define HD44780_FONT5x10 4
#define HD44780_ONE_LINE 0
#define HD44780_TWO_LINE 8
#define HD44780_4_BIT 0
#define HD44780_8_BIT 16
#define HD44780_CGRAM_SET 0x40
#define HD44780_DDRAM_SET 0x80
//-------------------------------------------------------------------------------------------------
//
// Deklaracje funkcji
//
//-------------------------------------------------------------------------------------------------
void LCD_WriteCommand(unsigned char);
unsigned char LCD_ReadStatus(void);
void LCD_WriteData(unsigned char);
unsigned char LCD_ReadData(void);
void LCD_WriteText(char *);
void LCD_GoTo(unsigned char, unsigned char);
void LCD_Clear(void);
void LCD_Home(void);
void LCD_Initalize(void);
//-------------------------------------------------------------------------------------------------
//
// Koniec pliku HD44780.h
//
//-------------------------------------------------------------------------------------------------
