mel bych nekolik dotazu. S C jsem zacal teprve nedavno, precetl jsem par navodu na netu, mam knihu od Vany a tedka tvorim program pro obsluhu 20*4 displeje a 4x4 klavesnice, komunikace s PC pres seriovy a USB port. Pripravil jsem si nejake ty funkce a ted se snazim z toho skladat program. Narazil jsem ale na mensi problem
atmega32
Moderátor: Moderátoři
atmega32
mel bych nekolik dotazu. S C jsem zacal teprve nedavno, precetl jsem par navodu na netu, mam knihu od Vany a tedka tvorim program pro obsluhu 20*4 displeje a 4x4 klavesnice, komunikace s PC pres seriovy a USB port. Pripravil jsem si nejake ty funkce a ted se snazim z toho skladat program. Narazil jsem ale na mensi problem
vopi píše:ja bych nechal běžet časovač, který když dopočítá do nějaké hodnoty by vyvolal přerušení. V obsluze přerušení bych obsloužil klávesnici a na konci obsluhy bych opět povolil přerušení a nastartoval časovač. Všechno ostatní bych dělal v průběhu času, kdy není volané přerušení.
ok, dik, mrknu na to. Tedka ale jeste resim jiny problem:
Potrebuju inicializovat displej. Nasel jsem v datasheetu posloupnost prikazu, kterymi bych mel displej spravne inicializovat:
ale tak nejak to nefunguje-na prvni a treti radce jsou cerne ctverecky, vic se nedeje. Kdybyste na to nekdo plz mrkli, nemuzu najit chybu
(pro upresneni, datove piny mam na portu B a ty 3 ridici na portu C)
PORTB = 0x30; //1
PORTC = (1 << LCD_E);
PORTC = 0x00;
Delay(1000);
PORTB = 0x30; //2
PORTC = (1 << LCD_E);
PORTC = 0x00;
Delay(1000);
PORTB = 0x30; //3
PORTC = (1 << LCD_E);
PORTC = 0x00;
Delay(10);
PORTB = 0x38; //radky+vel. znaku
PORTC = (1 << LCD_E);
PORTC = 0x00;
Delay(10);
PORTB = 0x08; //off
PORTC = (1 << LCD_E);
PORTC = 0x00;
Delay(10);
PORTB = 0x01; //on
PORTC = (1 << LCD_E);
PORTC = 0x00;
Delay(10);
PORTB = 0x06; //ID+S
PORTC = (1 << LCD_E);
PORTC = 0x00;
Delay(100);