اطلاعیه

Collapse
No announcement yet.

تفاوت عجیب در راه اندازی ال سی دی کاراکتری در بسکام و اتمل استدیو

Collapse
X
 
  • فیلتر
  • زمان
  • Show
Clear All
new posts

    تفاوت عجیب در راه اندازی ال سی دی کاراکتری در بسکام و اتمل استدیو

    با سلام خدمت دوستان
    همون طور که دوستان میدونن برای استفاده از ال سی دی کاراکتری توی پروژه ها چنانچه نویزی وارد مدار شود ممکن است که کاراکترهای ال سی دی رو به هم بریزه که برای جلوگیری از این امر باید پس از انتخاب فیلترینگ مناسب برای مدارباید فکری بشه برای موقعی که این حالت تو مدار پیش بیادویکی از راههایی که میشه این مشکل رو حل کرد اینه که ما بیایم دستور init lcd رو توی حلقه دایمی برنامه قرار بدیم.
    حالا من توی بسکام ال سی دی رو بصورت 8بیتی راه اندازی کردم و دستور فوق رو توی حلقه do loop قرار دادم .حالا وقتی یه موتور dc رو روی خط 5 ولت تغذیه ال سی دی قطع و وصل کنیم تولید نویز روی این خط کردیم و کاراکتر های ال سی دی به هم میریزه اما به محض اینکه دوباره به دستور initlcd و بعد به دستور نمایش کاراکترها میرسه همه کاراکتر ها میشن مث اول
    نکته : در هر دو برنامه از تاخیر 1 ثانیه ای استفاده میشه.
    ولی وقتی همین روال برنامه رو توی atmel studio پیاده میکنم کاراکتر ها چشمک میزنند (چون دستور init lcd دایما اجرا میشه) در صورتی که در برنامه بسکام هیچگونه چشمکی کاراکتر ها نمیزدند،حتی اگه 100 میلی ثانیه تو برنامه تاخیر بزارم.به نظرتون تفاوتشون در کدوم قسمته؟

    این هم از initlcd در اتمل استیو:

    pinChange(RS,0);
    pinChange(EN,0);
    _delay_ms(20);
    ///////////// Reset process from datasheet /////////
    Lcd8_Cmd(0x30);
    _delay_ms(5);
    Lcd8_Cmd(0x30);
    _delay_us(100);
    Lcd8_Cmd(0x30);
    _delay_ms(10);
    /////////////////////////////////////////////////////
    Lcd8_Cmd(0x38); //function set
    Lcd8_Cmd(0x0C); //display on,cursor off,blink off
    Lcd8_Cmd(0x01); //clear display
    Lcd8_Cmd(0x06); //entry mode, set increment


    و این هم initlcd در سورس بسکام:

    _Init_LCD:
    clr R24 ; set all portpins low
    * out _LCDport, r24
    ser r24 ; set port pins to output
    * out _LCDDDR, r24
    Ldi R30, 28
    Ldi R31, 78
    Rcall _lcd_delay ; 20 ms delay at 4 MHz


    ldi r24, &B00110000 ; 8-bit interface high nibble
    * out _LCDport, r24
    * sbi _LCDport, _LCD_E ; set pin
    nop ; delay
    nop
    * cbi _LCDport, _LCD_E ; disable E
    Ldi R30, 132
    Ldi R31, 19
    rcall _lcd_delay ; 5 mS delay at 4 MHz
    * sbi _LCDport, _LCD_E ; nibble is already setup
    nop
    nop
    * cbi _LCDport, _LCD_E
    Ldi R30, 96 ; 100 uS delay at 4 MHz
    Ldi R31, 0
    rcall _lcd_delay
    * sbi _LCDport, _LCD_E
    nop
    nop
    * cbi _LCDport, _LCD_E ; clear
    Ldi R30, 96 ; 100 uS delay at 4 MHz
    Ldi R31, 0
    rcall _lcd_delay
    ldi r24, &B00100000 ; Command for 4-bit interface high nibble
    * out _LCDport, r24
    * sbi _LCDport, _LCD_E ; pulse
    nop
    nop
    * cbi _LCDport, _LCD_E ; clear enable
    ldi r24, &H28
    rcall _Lcd_control
    Ldi r24,14 ; Display on, Cursor on, Noblink
    Rcall _Lcd_control
    Ldi r24,6 ; Cursor moves right, text doesn't move
    RJmp _Lcd_control ; return will come from _lcd_control


    _lcd_delay:
    Sbiw R30,1 ;2 cycles
    Brne _lcd_delay ;2 cycles
    Ret


    [END]


    این هم کل پروژه:
    Upload files, for free, securely, anonymously, without limits. @UploadFilesFree
    جدیدترین ویرایش توسط kargahelec; ۱۱:۳۸ ۱۳۹۸/۰۴/۱۸.
لطفا صبر کنید...
X