اطلاعیه

Collapse
No announcement yet.

LCD in MPLAB--8bit mode

Collapse
این موضوع بسته شده است.
X
X
 
  • فیلتر
  • زمان
  • Show
Clear All
new posts

    LCD in MPLAB--8bit mode

    درود بر همگی

    کسی می تونه راه اندازی ال سی دی تو اسمبلی رو برام بگه؟لطفا کد ها را با توضیحات بگین!
    8 بیتی باشه بهتره ولی اگه 4 بیتی هم بگین دیگه عالی میشه
    ممنون

    اضافه شده در تاریخ :
    درود بر همگی

    بلاخره تونستم ال سی دی رو راه اندازی کنم!البته این 8 بیتی هستش و دارم تلاش میکنم این انتقال داده رو کامل یاد بگیرم بعد برم سراغ 4 بیتی! اسمبلی خیلییییییییییییییییییییییییییییییییی باحالو شیرینه! :wow:

    تو این کد مقدار تایمر صفر با منبع خارجی روی ال سی دی نمایش داده میشه(البته نمایش داده نمیشه چون هر کار کردم نتونستم مقدار تایمر رو تبدیل به دسیمال کنم یا اسکی! حالا درستش می کنیم!)

    اینم کد:

    [code=asm]

    //processor p16f84a
    include <p16f84a.inc>
    __config _XT_OSC & _CP_OFF & _PWRTE_OFF & _WDT_OFF


    ;************************************************* ************************************************
    ;*********************************************8 bit LCD*******************************************
    ;************************************************* ************************************************
    ;/////////////////////////////////////////////////////////////////////////////////////////////////
    ;/////////////////////////////////////////////////////////////////////////////////////////////////
    ;
    ; Amin Aghakhani
    ; www.korosh-life.blogfa.com
    ; vishtaspahoraii@yahoo.com
    ;
    ;/////////////////////////////////////////////////////////////////////////////////////////////////
    ;/////////////////////////////////////////////////////////////////////////////////////////////////
    ;
    ; LCD port ----------> portb
    ; LCD_RS ----------> RA0
    ; LCD_E ----------> RA1
    ;
    ;/////////////////////////////////////////////////////////////////////////////////////////////////
    ;/////////////////////////////////////////////////////////////////////////////////////////////////
    ;************************************************* ************************************************
    ;*********************************************8 bit LCD*******************************************
    ;************************************************* ************************************************

    cblock 0x0c
    Reg_1
    Reg_2
    Reg_3
    Reg_4
    endc
    LCD_port equ 0x06

    ;%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    ;%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%Main codes%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    ;%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

    bsf 0x03,5
    clrf 0x86
    clrf 0x85
    bsf 0x85,4
    movlw b'11111000'
    movlw OPTION_REG
    bcf 0x03,5
    clrf 0x06
    clrf 0x05
    clrf TMR0

    main
    call delay50ms
    call LCD_init
    call TMR0I
    movlw 0xc0
    addlw 0x05
    call LCD_CMD
    movf TMR0,0
    addlw 0x38
    call LCD_CHR
    call delay20s
    goto $-5

    ;************************************************* ************************************************
    ;*********************************************8 bit LCD*******************************************
    ;************************************************* ************************************************

    ;************************************************* ************************************************** ***
    ;*******************************************LCD functions***************************************** *****
    ;************************************************* ************************************************** ***
    ; intizaling LCD 8 bit mode - Cursor on(underline) - start from line1 - postion 0
    LCD_init
    movlw 0x30
    movwf LCD_port
    bsf 0x05,0
    call delay500us
    bcf 0x05,0
    call delay500us
    bsf 0x05,0
    call delay500us
    bcf 0x05,0
    call delay500us
    bsf 0x05,0
    call delay500us
    bcf 0x05,0
    call delay500us

    movlw 0x38
    movwf LCD_port
    bsf 0x05,0
    call delay500us
    bcf 0x05,0
    call delay500us

    movlw 0x0f ;cursor blink
    movwf LCD_port
    bsf 0x05,0
    call delay500us
    bcf 0x05,0
    call delay500us

    movlw 0x01 ;clear display
    movwf LCD_port
    bsf 0x05,0
    call delay500us
    bcf 0x05,0
    call delay1500us
    return

    ;\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ \\\\
    ;\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\Send commands\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ \\\\\\\\
    ;\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ \\\\

    LCD_CMD
    movwf LCD_port
    bcf 0x05,0
    bcf 0x05,1
    nop
    nop
    bsf 0x05,0
    call delay500us
    bcf 0x05,0
    call delay500us
    return

    ;\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ \\\\
    ;\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\Send data\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ \\\\
    ;\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ \\\\

    LCD_CHR
    bsf 0x05,1
    bcf 0x05,0
    movwf LCD_port
    bsf 0x05,0
    call delay500us
    bcf 0x05,0
    bcf 0x05,1
    call delay500us
    return

    ;\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ \\\\
    ;\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\show TMR0:\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ \\\\\
    ;\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ \\\\

    TMR0I
    movlw .84
    call LCD_CHR
    movlw .77
    call LCD_CHR
    movlw .82
    call LCD_CHR
    movlw .48
    call LCD_CHR
    movlw .58
    call LCD_CHR
    return

    ;\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ \\\\
    ;\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\delay rutines\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ \\\\\\\
    ;\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ \\\\

    delay1500us
    movlw .241
    movwf Reg_1
    movlw .2
    movwf Reg_2
    decfsz Reg_1,F
    goto $-1
    decfsz Reg_2,F
    goto $-3
    nop
    nop
    return

    delay500us
    movlw .166
    movwf Reg_1
    decfsz Reg_1,F
    goto $-1
    nop
    return

    delay20s
    movlw .193
    movwf Reg_1
    movlw .118
    movwf Reg_2
    movlw .102
    movwf Reg_3
    decfsz Reg_1,F
    goto $-1
    decfsz Reg_2,F
    goto $-3
    decfsz Reg_3,F
    goto $-5
    return
    delay50ms
    movlw .248
    movwf Reg_1
    movlw .26
    movwf Reg_2
    decfsz Reg_1,F
    goto $-1
    decfsz Reg_2,F
    goto $-3
    nop
    return


    end
    [/code]
لطفا صبر کنید...
X