Şimdi Ara

128x64 LCD GRAPHIC de Resim

Daha Fazla
Bu Konudaki Kullanıcılar: Daha Az
2 Misafir - 2 Masaüstü
5 sn
2
Cevap
0
Favori
651
Tıklama
Daha Fazla
İstatistik
  • Konu İstatistikleri Yükleniyor
0 oy
Öne Çıkar
Sayfa: 1
Giriş
Mesaj
  • Krekter lcd leri programlamak kolay ama bu baya kafa şişiriyor. Hele assemler de
    program yazıyorsanız. Macro asseblerde include yi birtürlü beceremedim (becereniz) varsa
    banada söylesin bir zahmet
    bilmiyorum grafik displeylerle ugraşanınız varmı ben arama yaptım
    fakat bulamadım

    Bu program lcd de bir kızın gerçek resmi çıkıyor

    ;
    ;*** Driver program for MG1206E4-SGL 128x64 graphics display
    ;*** Target: AT90S2313 at 4Mhz speed
    ;*** Author: Serasidis Vasilis
    ;
    ;
    ;
    ;

    ;*** Connections
    ;*** LCD CONTROLS
    ;*** PortB D0----> Lcd D0
    ;*** PortB D1----> Lcd D1
    ;*** PortB D2----> Lcd D2
    ;*** PortB D3----> Lcd D3
    ;*** PortB D4----> Lcd D4
    ;*** PortB D5----> Lcd D5
    ;*** PortB D6----> Lcd D6
    ;*** PortB D7----> Lcd D7

    ;*** PortD D2----> Lcd CS1
    ;*** PortD D3----> Lcd CS2
    ;*** PortD D4----> Lcd D/I
    ;*** PortD D5----> Lcd WR
    ;*** PortD D6----> Lcd E

    ;*** Delay40us - Delay 40 us
    ;*** Delay100us - Delay 100 us
    ;*** Delay4ms - Delay 4ms
    ;*** NOTE : ALL DELAYS ARE CALCULATED FOR A 4MhZ CRYSTAL

    .nolist

    .include "2313def.inc" ;Set 2313's data for the compiler

    .list



    ;***** Global register variables
    .def Temp=r17
    .def wreg =R16 ;General use working register
    .def wreg2=R18
    .def CommandReg=R23
    .def DataReg=R24
    .def Count=R19

    ;EEPROM related variables

    .equ lcddi =PD4 ;LCD D/I pin connected to PD4
    .equ lcdrw =PD5 ;LCD r/w pin connected to PD5
    .equ lcde =PD6 ;LCD e pin connected to PD6








    reset:

    ; Setup buffers and pointers
    ldi temp,0xDF
    out SPL,temp ;Init Stack Pointer
    ;*************************************************
    ldi wreg,0x00 ;PortB Low

    out PORTB,wreg
    ldi wreg,0xFF ;Make port B pin all outputs

    out DDRB,wreg

    ldi wreg,0x00 ;PortD Low

    out PORTD,wreg
    ldi wreg,0xFF ;Make port D pin all outputs

    out DDRD,wreg
    rcall Lcd_Init ;Init the LCD
    ldi temp,$7
    ;*************************************************************
    ;*************************************************************



    rcall Delay4ms
    clr count


    ldi ZH,high(msg*2)
    ldi ZL,low(msg*2) ;Init Z-pointer

    clr wreg
    rcall command
    rcall cs1
    rcall next
    rcall cs2
    rcall next

    ldi wreg,$01
    rcall command
    rcall cs1
    rcall next
    rcall cs2
    rcall next


    ldi wreg,$02
    rcall command
    rcall cs1
    rcall next
    rcall cs2
    rcall next

    ldi wreg,$03
    rcall command
    rcall cs1
    rcall next
    rcall cs2
    rcall next

    ldi wreg,$04
    rcall command
    rcall cs1
    rcall next
    rcall cs2
    rcall next

    ldi wreg,$05
    rcall command
    rcall cs1
    rcall next
    rcall cs2
    rcall next

    ldi wreg,$06
    rcall command
    rcall cs1
    rcall next
    rcall cs2
    rcall next

    ldi wreg,$07
    rcall command
    rcall cs1
    rcall next
    rcall cs2
    rcall next
    telos:
    rjmp telos


    next:
    lpm ;Get next character from ROM
    mov temp,R0
    cpi count,$40 ;See if at end of message
    breq cont ;If so, do next message
    rcall lcdwait ;Send it
    rcall write_lcd
    adiw ZL,1 ;Increment Z-pointer
    inc count
    rjmp next ;Loop for more


    cont:
    clr count
    ret

    ;********************************************************************
    cs1:
    Sbi PortD,2 ;Enable the CS1 of the display
    Cbi PortD,3 ;Disable the CS2 of the display
    ret

    cs2: Cbi PortD,2 ;Enable the CS2 of the display
    Sbi PortD,3 ;Disable the CS1 of the display
    ret
    ;*********************************************************************
    ;*********************************************************************





    ;***************************************************************


    ; Wait for LCD to go unbusy
    lcdwait:

    ldi wreg,0x00 ;Make portB all inputs
    out DDRB,wreg
    sbi PORTD,lcdrw ;Set r/w pin to read
    cbi PORTD,lcddi ;Set register select to command
    waitloop:

    rcall E_strobe
    in wreg2,PIND ;Read busy flag
    sbrc wreg2,7 ;Loop until done
    rjmp waitloop
    ldi wreg,0xff ;Make portB all outputs
    out DDRB,wreg


    ret


    ;*********************************************************************


    Lcd_Init:
    Sbi PortD,2 ;Enable the CS1 of the display
    Sbi PortD,3 ;Enable the CS2 of the display
    cbi PortD,lcddi ;Clear D/I \_
    cbi PortD,lcdrw ;Clear RW / Command mode

    rcall Delay4ms
    ldi Wreg,$c0 ;Display start line = 0 (0-63)
    Out PortB,Wreg
    Rcall E_strobe


    rcall Delay4ms
    ldi Wreg,$40 ;Set address = 0 (0-63)
    out PortB,Wreg
    rcall E_strobe

    rcall Delay4ms
    ldi Wreg,$b8 ;Set page = 0 (0-7)
    Out PortB,Wreg
    Rcall E_strobe

    rcall Delay4ms
    ldi Wreg,$3f ;Display ON
    out PortB,Wreg
    rcall E_strobe
    Cbi PortD,2 ;Disable the CS1 of the display
    Cbi PortD,3 ;Disable the CS2 of the display
    ret

    ;***************************************************************
    ;*********************************************************************
    E_strobe:
    sbi PortD,lcde ;E high
    cbi PortD,lcde ;E low

    Ret


    ;***************************************************************************

    Write_lcd:


    Sbi PortD,lcddi
    Cbi PortD,lcdrw
    Out PortB,temp
    rcall E_strobe

    ret

    ;*********************************************************************

    command:

    Sbi PortD,2 ;Enable the CS1 of the display
    Sbi PortD,3 ;Enable the CS2 of the display
    cbi PortD,lcddi ;Clear D/I Command mode
    ldi Wreg2,$b8 ;Set page (0-7)
    add wreg,wreg2
    Out PortB,Wreg
    Rcall E_strobe
    sbi PortD,lcddi ;Set D/I Data mode

    Ret

    ;*********************************************************************
    Delay40us:
    ldi r21,$40
    Loop3: dec r21
    brne loop3
    ret
    ;*********************************************************************
    ;****
    ;****
    ;*********************************************************************
    Delay100us:
    ldi r21,$88
    Loop: dec r21
    brne loop
    ret
    ;*********************************************************************
    ;****
    ;****
    ;*********************************************************************
    Delay4ms:
    ldi r22,$1c
    Loop1: ldi r21,$00
    Loop2: dec r21
    brne loop2
    dec r22
    brne loop1
    ret
    ;*********************************************************************
    ;****
    ;****
    ;*********************************************************************
    LongDelay:
    ldi wreg,255 ; Delay for about 1 sec for the LCD to start
    Longdelay_Loop:
    rcall delay4ms
    dec wreg
    brne LongDelay_Loop
    Ret




    msg: .DB 255,255,255,255,127,127,127,255,255,255,255,255,255,255,255,255
    .DB 255,255,255,255,255,255,255,255,255,255,255,255,255,127,127,31
    .DB 31,207,247,255,255,255,255,255,255,255,255,255,255,255,255,255
    .DB 255,255,255,255,255,255,255,255,127,63,63,255,255,255,255,255

    .DB 255,255,255,255,255,255,255,255,255,255,255,255,127,127,255,255
    .DB 255,255,255,255,255,255,255,255,255,255,255,255,191,191,255,255
    .DB 255,255,255,255,255,255,127,31,95,255,255,255,255,255,255,255
    .DB 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255

    .DB 0,224,220,98,189,74,245,26,237,178,93,166,219,108,215,58
    .DB 214,107,189,102,187,221,43,246,31,235,23,237,31,167,91,39
    .DB 142,51,79,19,77,163,23,75,165,19,75,149,35,75,21,75
    .DB 165,19,75,37,83,143,35,215,43,199,59,71,191,7,91,175

    .DB 23,175,93,175,31,182,95,191,93,63,223,127,125,191,119,254
    .DB 255,123,255,239,255,254,187,255,255,239,254,191,255,127,251,255
    .DB 254,251,221,255,254,246,254,222,252,245,252,172,249,236,120,212
    .DB 248,164,241,76,162,88,132,104,21,160,86,8,228,18,76,0

    .DB 52,223,106,255,168,215,125,214,171,124,215,253,42,223,50,223
    .DB 33,222,35,156,67,44,145,6,81,4,146,0,74,32,5,208
    .DB 2,73,160,21,194,40,69,48,74,32,213,104,82,60,141,36
    .DB 153,4,82,129,42,133,36,146,73,36,130,17,74,0,145,4

    .DB 64,18,0,74,32,138,96,202,112,149,232,82,221,240,154,245
    .DB 104,23,232,87,41,151,73,23,107,183,203,47,87,47,95,77
    .DB 63,143,127,31,254,47,127,191,253,127,255,247,255,239,255,255
    .DB 254,247,255,253,191,247,254,190,233,252,98,217,196,18,0,160

    .DB 16,75,167,253,175,250,255,170,253,87,255,160,127,137,246,25
    .DB 230,25,228,18,169,84,34,136,101,16,74,160,82,9,164,74
    .DB 176,15,240,205,178,120,137,118,10,149,66,181,104,181,216,164
    .DB 126,194,62,131,45,6,169,4,1,148,2,40,5,64,20,34

    .DB 8,81,4,81,4,91,5,82,137,110,145,111,151,106,151,105
    .DB 86,105,52,82,185,26,140,46,3,137,34,8,130,41,0,85
    .DB 0,21,64,21,64,21,130,41,4,83,138,37,95,171,255,190
    .DB 239,253,127,255,239,255,255,125,255,239,255,125,251,238,188,251
    .DB 255,255,251,191,255,247,127,255,247,255,255,254,247,253,238,251
    .DB 220,247,216,230,185,196,89,166,81,140,99,24,198,57,68,176
    .DB 74,181,69,179,84,146,85,128,85,40,66,9,34,137,37,0
    .DB 75,0,37,2,149,0,86,129,106,128,106,165,82,168,131,104
    .DB 181,196,50,76,176,77,176,74,176,72,160,74,16,37,0,170
    .DB 1,16,69,0,16,4,64,8,0,34,128,8,0,34,0,9
    .DB 32,2,64,8,129,16,66,32,201,212,96,250,237,122,255,239
    .DB 125,255,223,247,125,255,215,127,255,219,255,119,255,191,253,7
    .DB 127,247,223,239,191,239,255,127,255,238,255,127,253,255,239,255
    .DB 191,255,253,191,251,255,255,111,254,239,238,155,252,119,221,250
    .DB 221,123,234,253,86,249,214,248,166,249,68,249,196,178,200,165
    .DB 80,170,196,17,234,140,119,154,253,87,188,235,95,109,183,151
    .DB 107,148,37,146,201,100,171,116,27,79,165,5,144,69,16,72
    .DB 2,104,1,80,132,17,64,132,17,64,4,144,65,4,144,65
    .DB 168,192,101,208,242,212,243,185,238,243,223,245,119,223,235,255
    .DB 175,251,239,191,237,255,175,251,191,237,191,235,255,39,137,0
    .DB 255,219,254,247,255,90,255,247,127,237,255,223,255,245,255,191
    .DB 235,255,127,239,251,127,239,255,127,247,255,239,255,255,223,254
    .DB 255,127,255,253,255,255,251,254,255,247,255,239,254,255,255,246
    .DB 255,239,254,255,190,255,250,255,254,187,254,253,251,255,245,254
    .DB 251,237,255,245,252,119,248,247,248,247,232,254,176,255,240,237
    .DB 250,217,250,253,184,253,244,190,250,253,118,254,254,119,255,253
    .DB 239,255,223,251,127,238,255,219,255,190,251,255,255,237,255,126
    .DB 223,251,126,223,125,247,95,246,95,235,190,235,117,15,0,128
    .DB 255,186,239,190,251,175,253,183,221,191,212,127,181,218,191,213
    .DB 110,187,159,235,157,183,173,157,247,155,182,219,175,182,219,183
    .DB 95,239,183,222,191,239,189,223,187,255,175,255,191,237,191,251
    .DB 191,239,191,255,183,255,127,247,191,255,191,255,253,191,251,255
    .DB 255,247,255,255,239,255,255,254,255,247,255,239,255,255,255,189
    .DB 255,123,255,191,255,191,187,255,111,255,191,247,63,255,123,175
    .DB 254,191,235,63,239,191,237,63,247,95,246,191,213,127,171,191
    .DB 247,29,247,189,215,189,215,189,151,253,150,251,0,0,0,32







  • Pek güzel değilmiş...



     128x64 LCD GRAPHIC de Resim
  • 
Sayfa: 1
- x
Bildirim
mesajınız kopyalandı (ctrl+v) yapıştırmak istediğiniz yere yapıştırabilirsiniz.