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

Instrukcje w asemblerze 8051/2 do wyświetlenia cyfry 0 na LCD 2x16

david8213 10 Kwi 2006 18:16 1227 2
REKLAMA
  • #1 2513314
    david8213
    Poziom 19  
    Posty: 605
    Pomógł: 1
    Ocena: 56
    Jakie instrukcje należy wypisać aby wyświetlić na wyświetlaczu LCD cyfrę zero.

    Wyświetlacz ma dwa wiersze po 16 znaków każdy
    cyfra ma być wyświetlona na górze wyświetlacza LCD

    mikrokontroler 8051/2

    Asembler
  • REKLAMA
  • Pomocny post
    #3 2514411
    Zaquadnik
    Poziom 27  
    Posty: 998
    Pomógł: 103
    Ocena: 25
    Interesuje Cię cała obsługa LCD ?? A proszę bardzo ;)
    
    ;------------------------------------
    ;Obsluga LCD, kwarc 12 MHz
    ;tryb pracy - 4 linie danych
    ;znak przekazywany w R2
    ;------------------------------------
    
    RS equ P1.2
    E equ P1.3
    DB4 equ P1.4
    DB5 equ P1.5
    DB6 equ P1.6
    DB7 equ P1.7
    Enable equ P1.1
    
    	ljmp Program
    	
    	org 100h
    	
    tablica: DB "Nie oszukam dzisiaj was, " ;25
    tablica2: DB "Jestem sztywny jakbym polknal kija" ;34
    
    	org 150h
    Program:
    	clr Enable
    	lcall LCDinit
    	lcall LCDclear
    	mov DPTR,#tablica
    	mov R0,#00h
      Wyswietl:
      	mov A,R0
      	movc A,@A+DPTR
      	mov R2,A
      	inc R0
      	lcall LCDznak
      	mov A,R0
      	xrl A,#19h
      	jnz Wyswietl
      	
      	lcall LCDsecondline
      	mov DPTR,#tablica2
      	mov R0,#00h
      Druga_linia:
      	mov A,R0
      	movc A,@A+DPTR
      	mov R2,A
      	inc R0
      	lcall LCDznak
      	mov A,R0
      	xrl A,#22h
      	jnz Druga_linia
      	
     Leci: 
    	lcall LCDshift
    	mov A,#0FFh
    	lcall Pauza
    	mov A,#0FFh
    	lcall Pauza
    	mov A,#0FFh
    	lcall Pauza
    	mov A,#0FFh
    	lcall Pauza
    	mov A,#0FFh
    	lcall Pauza
    	mov A,#0FFh
    	lcall Pauza
    	mov A,#0FFh
    	lcall Pauza
    	ljmp Leci
    	
    LCDshift:
    	mov P1,#00h
    	clr RS
    	orl P1,#10h
    	setb E
    	clr E
    	mov P1,#00h
    	orl P1,#80h
    	setb E
    	clr E
    	mov A,#14h
    	lcall Pauza
    	setb RS
    	ret
    
    LCDinit:
    	mov A,#3Ch
    	lcall Pauza
    	
    	mov P1,#00h
    	clr RS
    	clr E
    	orl P1,#30h
    	setb E
    	clr E
    	mov A,#14h
    	lcall Pauza
    	
    	anl P1,#0Fh
    	orl P1,#30h
    	setb E
    	clr E
    	mov A,#01h
    	lcall Pauza
    		
    	anl P1,#0Fh
    	orl P1,#30h
    	setb E
    	clr E
    	mov A,#01h
    	lcall Pauza
    
    	anl P1,#0Fh
    	orl P1,#20h
    	setb E
    	clr E
    	mov A,#01h
    	lcall Pauza
    	
    	anl P1,#0Fh
    	orl P1,#20h
    	setb E
    	clr E
    	anl P1,#0Fh
    	orl P1,#80h
    	setb E
    	clr E
    	mov A,#01h
    	lcall Pauza
    
    	anl P1,#0Fh
    	orl P1,#00h
    	setb E
    	clr E
    	anl P1,#0Fh
    	orl P1,#60h
    	setb E
    	clr E
    	mov A,#01h
    	lcall Pauza
    	
    	anl P1,#0Fh
    	orl P1,#00h
    	setb E
    	clr E
    	anl P1,#0Fh
    	orl P1,#0C0h
    	setb E
    	clr E
    	mov A,#01h
    	lcall Pauza
    	
    	anl P1,#0Fh
    	orl P1,#00h
    	setb E
    	clr E
    	anl P1,#0Fh
    	orl P1,#30h
    	setb E
    	clr E
    	mov A,#01h
    	lcall Pauza
    
    	ret
    	
    LCDclear:
    	mov P1,#00h
    	clr RS
    	orl P1,#00h
    	setb E
    	clr E
    	mov P1,#00h
    	orl P1,#10h
    	setb E
    	clr E
    	mov A,#14h
    	lcall Pauza
    	setb RS
    	ret
    	
    LCDhome:
    	mov P1,#00h
    	clr RS
    	orl P1,#00h
    	setb E
    	clr E
    	mov P1,#00h
    	orl P1,#20h
    	setb E
    	clr E
    	mov A,#14h
    	lcall Pauza
    	setb RS
    	ret
    
    LCDsecondline:
    	mov P1,#00h
    	clr RS
    	orl P1,#0C0h
    	setb E
    	clr E
    	mov P1,#00h
    	orl P1,#00h
    	setb E
    	clr E
    	mov A,#14h
    	lcall Pauza
    	setb RS
    	ret
    	
    
    LCDznak:
    	mov P1,#00h	
    	setb RS
    	mov A,R2
    	anl A,#0F0h
    	orl P1,A
    	setb E
    	clr E
    	mov A,R2
    	anl A,#0Fh
    	swap A
    	anl P1,#0Fh
    	orl P1,A
    	setb E
    	clr E
    	mov A,#02h
    	lcall Pauza
    	ret
    	
    Pauza:	
      Petla:
      	mov B,#07Bh	;2 cykle
      	djnz B,$	;2 cykle
      	djnz ACC,Petla	;2 cykle
      	ret
    	
    end
    

    4 linie danych, linia RW zwarta do masy ;)
REKLAMA