Archiv verlassen und diese Seite im Standarddesign anzeigen : LCD display geht nicht
MartinFunk
25.12.2006, 15:27
Hi,
ich habe ein LCD Display LCD 162C LED von Reichelt
und benutze die LCD Bibliothek von Peter Fleury.
Im datenblatt steht nur was von 8 bit ansteuerung.
Das display zeigt nur schwarze balken an.
Mein älteres display LM16A21 von sharp funktioniert wunderbar.
Muss man beim 162C LED bei 4 bit ansteuerung etwas beachten?
Danke schon im voraus
MfG
Martin
teslanikola
25.12.2006, 17:12
was zu beachten ist bei den Reichelt LCDs, ist das der Kontroler von denen nicht ganz HD4470 kompaktibel ist, das war auch mein Problem, deshalb hab ich ne eigene ASM-Lib geschrieben. WEnn du vlt verraten würdest was für einen Controler du nutzt und welche sprache du progst kämme das der lösung schnell näher, der Quellcode wäre auch nicht schlecht da schleichen sich mal schnell Fehler ein.
MartinFunk
25.12.2006, 17:30
hi,
ich benutze einen ATmega16 mit 8 Mhz internem oszilator
Ich progge in "C" mit WinAVR und AVR Studio 4
#include <avr/io.h>
#include <inttypes.h>
#include <avr/interrupt.h>
#include <avr/signal.h>
#include <avr/sleep.h>
#include "lcd.c"
/*************************Variablen**************** ****************************************/
uint8_t std = 0;
uint8_t min = 0;
uint8_t sec = 0;
uint8_t day = 0;
uint8_t auswahl = 0;
uint8_t smiley = 0;
uint8_t delay = 0;
/****************************Timer Interupts********************************/
SIGNAL(SIG_OUTPUT_COMPARE1A)
{
char cSREG;
cSREG = SREG; // Statusregister puffern in Variable cSREG //
if(delay >0) delay--;
sec++;
if(sec == 60){
min++;
sec = 0;
if(min == 60){
std++;
min = 0;
if(std == 24){
sec = 0;
min = 0;
std = 0;
day++;
if(day == 7){
day = 0;
}
}
}
}
if(bit_is_clear(PINC,0)){
auswahl++;
if(auswahl == 4) auswahl = 0;
}
/*if(bit_is_clear(PINC,4)){
auswahl++;
smiley++;
if(smiley == 7) smiley = 0;
}*/
if(auswahl == 0){
if(bit_is_clear(PINC,1)){
std++;
}
if(bit_is_clear(PINC,2)){
std--;
}
}
if(auswahl == 1){
if(bit_is_clear(PINC,1)){
min++;
}
if(bit_is_clear(PINC,2)){
min--;
}
}
if(auswahl == 2){
if(bit_is_clear(PINC,1)){
sec++;
}
if(bit_is_clear(PINC,2)){
sec--;
}
}
if(auswahl == 3){
if(bit_is_clear(PINC,1)){
day++;
}
if(bit_is_clear(PINC,2)){
day--;
}
}
SREG = cSREG; // Statusregister aus Variable cSREG retten //
}
/******************************Initialisierung der PORTS**************************/
void init_ports (void)
{
DDRB = 0xff; // Port B als Ausgang
DDRD = 0xff; // Port D als Ausgang
DDRC = 0x00; // Port C als Eingang
PORTC = 0xff; //interne Pullup widerstände aktivieren
}
/************************Timer Initialisierung*********************************** ****/
void init_timer1 (void)
{
// fclk=2MHz//
// N=Prescaler = 64//
// OCR1A= Output_Compare_Vergleichswert//
cli(); // Interrupts sperren!
TCCR1A= 0x00; // Compare- Ausgang A und B nicht toggeln
TCCR1B |= (1<<WGM12) | (1<<CS12); // Mode: Output Compare ; Prescaler: Faktor 256
OCR1AH= 0x7A; // Output Compare High = 0x7A dez. 31250
OCR1AL= 0x12; // Output Compare Low = 0x12
TCNT1H= 0x00; // Timer1 auf 0 stellen
TCNT1L= 0x00; // Timer1 auf 0 stellen
TIMSK |= (1<<OCIE1A); // Timer1 Output Compare Interrupt Enable A aktivieren (Bit setzen) //
sei(); // Interrrupts freigeben!
}
/*************************Hauptprogramm************ ***************/
int main (void) //Hauptprogramm begin
{
init_timer1();
init_ports();
lcd_init(LCD_DISP_ON);
lcd_clrscr();
lcd_home();
lcd_puts("00:00:00");
while (1){ //endlos schleife
if(bit_is_clear(PINC,4)){
delay = 10;
}
if(delay >0){
lcd_init(LCD_DISP_ON);
lcd_home();
lcd_gotoxy(0,0);
switch (std){
case 0 : lcd_puts("00");
break;
case 1 : lcd_puts("01");
break;
case 2 : lcd_puts("02");
break;
case 3 : lcd_puts("03");
break;
case 4 : lcd_puts("04");
break;
case 5 : lcd_puts("05");
break;
case 6 : lcd_puts("06");
break;
case 7 : lcd_puts("07");
break;
case 8 : lcd_puts("08");
break;
case 9 : lcd_puts("09");
break;
case 10 : lcd_puts("10");
break;
case 11 : lcd_puts("11");
break;
case 12 : lcd_puts("12");
break;
case 13 : lcd_puts("13");
break;
case 14 : lcd_puts("14");
break;
case 15 : lcd_puts("15");
break;
case 16 : lcd_puts("16");
break;
case 17 : lcd_puts("17");
break;
case 18 : lcd_puts("18");
break;
case 19 : lcd_puts("19");
break;
case 20 : lcd_puts("20");
break;
case 21 : lcd_puts("21");
break;
case 22 : lcd_puts("22");
break;
case 23 : lcd_puts("23");
break;
case 24 : lcd_puts("24");
break;
case 25 : lcd_puts("25");
break;
case 26 : lcd_puts("26");
break;
case 27 : lcd_puts("27");
break;
case 28 : lcd_puts("28");
break;
case 29 : lcd_puts("29");
break;
case 30 : lcd_puts("30");
break;
case 31 : lcd_puts("31");
break;
case 32 : lcd_puts("32");
break;
case 33 : lcd_puts("33");
break;
case 34 : lcd_puts("34");
break;
case 35 : lcd_puts("35");
break;
case 36 : lcd_puts("36");
break;
case 37 : lcd_puts("37");
break;
case 38 : lcd_puts("38");
break;
case 39 : lcd_puts("39");
break;
case 40 : lcd_puts("40");
break;
case 41 : lcd_puts("41");
break;
case 42 : lcd_puts("42");
break;
case 43 : lcd_puts("43");
break;
case 44 : lcd_puts("44");
break;
case 45 : lcd_puts("45");
break;
case 46 : lcd_puts("46");
break;
case 47 : lcd_puts("47");
break;
case 48 : lcd_puts("48");
break;
case 49 : lcd_puts("49");
break;
case 50 : lcd_puts("50");
break;
case 51 : lcd_puts("51");
break;
case 52 : lcd_puts("52");
break;
case 53 : lcd_puts("53");
break;
case 54 : lcd_puts("54");
break;
case 55 : lcd_puts("55");
break;
case 56 : lcd_puts("56");
break;
case 57 : lcd_puts("57");
break;
case 58 : lcd_puts("58");
break;
case 59 : lcd_puts("59");
break;
case 60 : lcd_puts("60");
break;
default: lcd_puts(" ");
break;
}
lcd_gotoxy(2,0);
lcd_puts(":");
lcd_gotoxy(3,0);
switch (min){
case 0 : lcd_puts("00");
break;
case 1 : lcd_puts("01");
break;
case 2 : lcd_puts("02");
break;
case 3 : lcd_puts("03");
break;
case 4 : lcd_puts("04");
break;
case 5 : lcd_puts("05");
break;
case 6 : lcd_puts("06");
break;
case 7 : lcd_puts("07");
break;
case 8 : lcd_puts("08");
break;
case 9 : lcd_puts("09");
break;
case 10 : lcd_puts("10");
break;
case 11 : lcd_puts("11");
break;
case 12 : lcd_puts("12");
break;
case 13 : lcd_puts("13");
break;
case 14 : lcd_puts("14");
break;
case 15 : lcd_puts("15");
break;
case 16 : lcd_puts("16");
break;
case 17 : lcd_puts("17");
break;
case 18 : lcd_puts("18");
break;
case 19 : lcd_puts("19");
break;
case 20 : lcd_puts("20");
break;
case 21 : lcd_puts("21");
break;
case 22 : lcd_puts("22");
break;
case 23 : lcd_puts("23");
break;
case 24 : lcd_puts("24");
break;
case 25 : lcd_puts("25");
break;
case 26 : lcd_puts("26");
break;
case 27 : lcd_puts("27");
break;
case 28 : lcd_puts("28");
break;
case 29 : lcd_puts("29");
break;
case 30 : lcd_puts("30");
break;
case 31 : lcd_puts("31");
break;
case 32 : lcd_puts("32");
break;
case 33 : lcd_puts("33");
break;
case 34 : lcd_puts("34");
break;
case 35 : lcd_puts("35");
break;
case 36 : lcd_puts("36");
break;
case 37 : lcd_puts("37");
break;
case 38 : lcd_puts("38");
break;
case 39 : lcd_puts("39");
break;
case 40 : lcd_puts("40");
break;
case 41 : lcd_puts("41");
break;
case 42 : lcd_puts("42");
break;
case 43 : lcd_puts("43");
break;
case 44 : lcd_puts("44");
break;
case 45 : lcd_puts("45");
break;
case 46 : lcd_puts("46");
break;
case 47 : lcd_puts("47");
break;
case 48 : lcd_puts("48");
break;
case 49 : lcd_puts("49");
break;
case 50 : lcd_puts("50");
break;
case 51 : lcd_puts("51");
break;
case 52 : lcd_puts("52");
break;
case 53 : lcd_puts("53");
break;
case 54 : lcd_puts("54");
break;
case 55 : lcd_puts("55");
break;
case 56 : lcd_puts("56");
break;
case 57 : lcd_puts("57");
break;
case 58 : lcd_puts("58");
break;
case 59 : lcd_puts("59");
break;
case 60 : lcd_puts("60");
break;
default: lcd_puts(" ");
break;
}
lcd_gotoxy(5,0);
lcd_puts(":");
lcd_gotoxy(6,0);
switch (sec){
case 0 : lcd_puts("00");
break;
case 1 : lcd_puts("01");
break;
case 2 : lcd_puts("02");
break;
case 3 : lcd_puts("03");
break;
case 4 : lcd_puts("04");
break;
case 5 : lcd_puts("05");
break;
case 6 : lcd_puts("06");
break;
case 7 : lcd_puts("07");
break;
case 8 : lcd_puts("08");
break;
case 9 : lcd_puts("09");
break;
case 10 : lcd_puts("10");
break;
case 11 : lcd_puts("11");
break;
case 12 : lcd_puts("12");
break;
case 13 : lcd_puts("13");
break;
case 14 : lcd_puts("14");
break;
case 15 : lcd_puts("15");
break;
case 16 : lcd_puts("16");
break;
case 17 : lcd_puts("17");
break;
case 18 : lcd_puts("18");
break;
case 19 : lcd_puts("19");
break;
case 20 : lcd_puts("20");
break;
case 21 : lcd_puts("21");
break;
case 22 : lcd_puts("22");
break;
case 23 : lcd_puts("23");
break;
case 24 : lcd_puts("24");
break;
case 25 : lcd_puts("25");
break;
case 26 : lcd_puts("26");
break;
case 27 : lcd_puts("27");
break;
case 28 : lcd_puts("28");
break;
case 29 : lcd_puts("29");
break;
case 30 : lcd_puts("30");
break;
case 31 : lcd_puts("31");
break;
case 32 : lcd_puts("32");
break;
case 33 : lcd_puts("33");
break;
case 34 : lcd_puts("34");
break;
case 35 : lcd_puts("35");
break;
case 36 : lcd_puts("36");
break;
case 37 : lcd_puts("37");
break;
case 38 : lcd_puts("38");
break;
case 39 : lcd_puts("39");
break;
case 40 : lcd_puts("40");
break;
case 41 : lcd_puts("41");
break;
case 42 : lcd_puts("42");
break;
case 43 : lcd_puts("43");
break;
case 44 : lcd_puts("44");
break;
case 45 : lcd_puts("45");
break;
case 46 : lcd_puts("46");
break;
case 47 : lcd_puts("47");
break;
case 48 : lcd_puts("48");
break;
case 49 : lcd_puts("49");
break;
case 50 : lcd_puts("50");
break;
case 51 : lcd_puts("51");
break;
case 52 : lcd_puts("52");
break;
case 53 : lcd_puts("53");
break;
case 54 : lcd_puts("54");
break;
case 55 : lcd_puts("55");
break;
case 56 : lcd_puts("56");
break;
case 57 : lcd_puts("57");
break;
case 58 : lcd_puts("58");
break;
case 59 : lcd_puts("59");
break;
case 60 : lcd_puts("60");
break;
default: lcd_puts(" ");
break;
}
lcd_gotoxy(0,1);
switch (day){
case 0 : lcd_puts("Montag ");
break;
case 1 : lcd_puts("Dienstag ");
break;
case 2 : lcd_puts("Mittwoch ");
break;
case 3 : lcd_puts("Donnerstag ");
break;
case 4 : lcd_puts("Freitag ");
break;
case 5 : lcd_puts("Samstag ");
break;
case 6 : lcd_puts("Sonntag ");
break;
default: lcd_puts(" ");
break;
}
lcd_gotoxy(10,0);
switch (smiley){
case 0 : lcd_puts(":-)");
break;
case 1 : lcd_puts(":-(");
break;
case 2 : lcd_puts(":-x");
break;
case 3 : lcd_puts(";-)");
break;
case 4 : lcd_puts(":-/");
break;
case 5 : lcd_puts(":-!");
break;
case 6 : lcd_puts("8-)");
break;
default: lcd_puts(" ");
break;
}
}
else{
lcd_init(LCD_DISP_OFF);
}
} //endlos schleife
} //hauptprogramm ende
MfG
Martin
MartinFunk
30.12.2006, 15:33
kann mir denn niemand helfen?
Bitte helft mit.
MfG Martin
Powered by vBulletin® Version 4.2.5 Copyright ©2024 Adduco Digital e.K. und vBulletin Solutions, Inc. Alle Rechte vorbehalten.