logo elektroda
logo elektroda
X
logo elektroda
REKLAMA
REKLAMA
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

[ASM] Uruchomienie Lcd hd44780 interface 4 bit.

kamil1cos7 22 Gru 2011 22:06 2864 1
REKLAMA
  • #1 10293522
    kamil1cos7
    Poziom 14  
    Witam,
    Próbuje napisać sobie obsługę do wyświetlacza lcd w asemblerze na atmega8.
    I mam pewne problemy oraz pytania, otóż...

    Napisałem takie(kod poniżej) procedury służące do zapisu bajtu ustawień do wyświetlacza i problem jest w tym że, to nie działa... choć nie mam pojęcia dlaczego...
    
    ;**********************function_lcd*************************************
    ;lcd_write_byte 	- 	zapisuje bajt w pamieci wyswietlacza
    ;			r16 	- 	parametr wejsciowy
    
    ;lcd_write_setting 	- 	zapisuje ustawienia lcd
    ;			r16 	- 	parametr wejsciowy
    
    lcd_write_byte:
    	
    	nop
    	nop
    	sbi LCD_PORT, LCD_EN
    	nop
    	cbi LCD_PORT, lcd_d7
    	cbi LCD_PORT, lcd_d6
    	cbi LCD_PORT, lcd_d5
    	cbi LCD_PORT, lcd_d4
    	sbrc r16, 7
    	sbi LCD_PORT, lcd_d7
    	sbrc r16, 6
    	sbi LCD_PORT, lcd_d6
    	sbrc r16, 5
    	sbi LCD_PORT, lcd_d5
    	sbrc r16, 4
    	sbi LCD_PORT, lcd_d4
    	nop
    	cbi LCD_PORT, LCD_EN
    	
    	ldi r16, 5
    	rcall wait_us
    	
    	sbi LCD_PORT, LCD_EN
    	nop
    	cbi LCD_PORT, lcd_d7
    	cbi LCD_PORT, lcd_d6
    	cbi LCD_PORT, lcd_d5
    	cbi LCD_PORT, lcd_d4
    	sbrc r16, 3
    	sbi LCD_PORT, lcd_d7
    	sbrc r16, 2
    	sbi LCD_PORT, lcd_d6
    	sbrc r16, 1
    	sbi LCD_PORT, lcd_d5
    	sbrc r16, 0
    	sbi LCD_PORT, lcd_d4
    	nop
    	cbi LCD_PORT, LCD_EN
    	
    	ldi r16, 50
    	rcall wait_us
    
    ret
    
    lcd_write_setting:
    	
    	cbi LCD_PORT, LCD_RS
    	rcall lcd_write_byte
    	sbi LCD_PORT, LCD_RS
    	
    ret
    


    Podaje takie ustawienia:
    
            ldi r16, 15
    	rcall wait_ms
    
    	ldi r16, 0b00100000				;tryb 4-bitowy
    	rcall lcd_write_setting
    	ldi r16, 1
    	rcall wait_ms
    
    	ldi r16, 2
    	rcall wait_ms
    
    
    	
    	ldi r16, 0b00001111	 ;wl wyswietlacz, wl kursor, wl miganie kursora
    	rcall lcd_write_setting
    	ldi r16, 1
    	rcall wait_ms
    	
    	ldi r16, 0b00000010				
    	rcall lcd_write_setting
    	ldi r16, 5
    	rcall wait_ms
    	
    	ldi r16, 0b00000001				
    	rcall lcd_write_setting
    	ldi r16, 5
    	rcall wait_ms
    	
    


    W programie głównym nie mam nic ale, po takich ustawieniach powinienem mieć migający kursor na wyświetlaczu a nic takiego się nie dzieje.
    Zastanawiam się jak to jest z resetowaniem się takiego wyświetlacza, i jeśli podaje na początku ustawienia które mają sprawić że będzie tryb 4-bitowy to czy mogę ten bajt ustawień podać już w trybie 4-bitowym czy na początek muszę w 8 bitowym.

    Dziękuje z góry za wszystkie rady;)
    Pozdrawiam.

    Poprawiłem tytuł.
    [zumek]
  • REKLAMA
REKLAMA