اطلاعیه

Collapse
No announcement yet.

راه اندازی lcd کارکتری 4بیت 100% عملی

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

    راه اندازی lcd کارکتری 4بیت 100% عملی

    :wow:سلام. این برنامه رو خودم نوشتم و در اختیار شما گذاشتم. این برنامه رو با برد خودم تست کردم و 100% جواب داد بدون مشکلی.
    اول فایل lcd4bit.h:
    ifndef _LCD4BIT_H
    #define _LCD4BIT_H

    void lcd_init();//function for frist setting lcd
    void lcd_clear();//function for clear lcd
    void lcd_gotoxy(unsigned char,unsigned char);//function for change position on lcd
    void lcd_print(char *);//function for write data on lcd
    void wrcmd(char str);//function for command
    void wrdata(char str);//function for set data on lcd
    void wr4bit(char str);//function for set command on lcd

    #endif

    دوم فایل lcd4bit.c:
    #include "delay.h"
    #include "lcd4bit.h"

    //Control of pin's
    #define e (1UL<<24)
    #define rw (1UL<<25)
    #define rs (1UL<<26)
    #define pins_control (e|rw|rs)
    //Data of pin's
    #define db4 (1UL<<4)
    #define db5 (1UL<<5)
    #define db6 (1UL<<6)
    #define db7 (1UL<<7)
    #define out_data (db4|db5|db6|db7)

    void lcd_init()
    {
    SCS=1;//for fast PORT0 and PORT1
    FIO2DIR|=0x000000f0;//out pin0.4 until pin0.7 for lcd.
    FIO0DIR|=pins_control;
    /************Start program for configuration lcd 4 bit mode**********/
    delay(15);//delay 15ms
    wr4bit(0x03);//set interface 4 bit
    delay(3);//delay 5ms
    wr4bit(0x03);
    delay(1);
    wr4bit(0x03);
    wr4bit(0x02);
    wr4bit(0x02);
    wr4bit(0x08);
    wr4bit(0x28);//set font 5*8 matris
    wr4bit(0x0c);//display on and crusor off
    wr4bit(0x06);//finish configuration lcd 4 bit mode
    }
    /************************************************** ****************************/
    void lcd_clear()
    {
    wr4bit(0x01);//clear display
    wr4bit(0x80+0);//move crusor to home
    }
    /************************************************** ****************************/
    void lcd_gotoxy(unsigned char x,unsigned char y)
    {

    switch(y)
    {
    case 0: wr4bit(0x80+x);break;//Change position 1-line
    case 1: wr4bit(0xC0+x);break;//Change position 2-line
    }
    }
    /************************************************** ****************************/
    void wr4bit(char str)
    {
    wrcmd(str>>4);
    wrcmd(str);
    }

    /************************************************** ****************************/
    void lcd_print(char *s)
    {
    while(*s!=0)
    {
    wrdata(*s++);
    }
    }
    /************************************************** ****************************/
    void wrcmd(char str)
    {
    FIO0CLR|=rw;
    FIO0CLR|=rs;
    FIO2SET|=(str&0x0f)<<4;//4 shift for set for pin0.4 until p0.7
    FIO0SET|=e;
    delay(1);
    FIO0CLR|=e;
    delay(3);
    FIO2CLR|=out_data;//clear pin0.0 until p0.7(data pin)

    }
    /************************************************** ****************************/
    void wrdata(char str)
    {
    FIO2CLR|=out_data;//clear pin0.0 until p0.7(data pin)
    FIO0SET|=rs;
    FIO0SET|=e;
    FIO2SET|=((str>>4)&0x0f)<<4;//4 shift for set for pin0.4 until p0.7
    delay(1);
    FIO0CLR|=e;
    delay(3);

    FIO2CLR|=out_data;//clear pin0.0 until p0.7(data pin)
    FIO0SET|=rs;
    FIO2SET|=((str)&0x0f)<<4;//4 shift for set for pin0.4 until p0.7
    FIO0SET|=e;
    delay(1);
    FIO0CLR|=e;
    delay(3);
    FIO2CLR|=out_data;//clear pin0.0 until p0.7(data pin)
    }
    /*EEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE EEEEEEEEEEEEEEEEEEEEEEEEEEE*/
    هر سوالی داشتید و یا جایی رو متوجه نشدید بگید. نظر هم بدید لطفاً :job:

    #2
    راه اندازی lcd کارکتری 4بیت 100% عملی

    راستی برای delay() از کریستال خارجی استفاده کردم 12MHz خودتون و با lpc2368 کار کردم.

    دیدگاه


      #3
      پاسخ : راه اندازی lcd کارکتری 4بیت 100% عملی

      سلام
      اگه تابع delay را هم می گذاشتید همین جا بهتر بود
      فيلم آموزشي ميکروکنترلر LPC1768
      فيلم آموزشي تکميلي و پيشرفته ميکروکنترلر LPC1768
      فيلم آموزش کاربردی زبان سی در میکروکنترلر ARM
      فیلم آموزش مقدماتی میکروکنترلر LPC1788 به زودی ...

      دیدگاه


        #4
        پاسخ : راه اندازی lcd کارکتری 4بیت 100% عملی

        اگه برای delay مشکل دارین که چه مقدار داره بگین تا براتون حلش کنم. اینو روی برد lpc2368 eca جواب گرفتم و هم روی بردی که خودم طراحی کردم.

        دیدگاه


          #5
          پاسخ : راه اندازی lcd کارکتری 4بیت 100% عملی

          سلام
          ممنونم از اینکه سورس کدتون رو قرار دادین برای بقیه دوستان
          من برای PIC در حال نوشتن کتابخانه ال سی دی 16*2 توسط 4 بیت بودم که متاسفانه به دلیل کمبود و یا پیدا نکردن رفرنس مناسب موفق به انجام چنین کاری نشدم.می شه روال کار رو بگین که نهایتا بنده با تبدیل به سورس PIC این کتابخانه و کار شما رو گشترش داده باشم؟

          ممنون می شم راهنمایی به صورت توضیحات فارسی در مرحله بگین(سورس 8 بیت رو نوشتم اما 4 بیت اهمیتش بیشتر هست)
          هیچ دانش آموزی نیست که به در خانۀ دانشمندی آمد و شد کند, مگر این که خداوند برای هر گامی که برمی دارد عبادت یک سال را برایش رقم زند.

          دیدگاه


            #6
            پاسخ : راه اندازی lcd کارکتری 4بیت 100% عملی

            تفاوت زیادی بین 8 بیت و 4 بیتی نیست.در مد 4 بیتی اطلاعات به دو قسمت چهار بیتی(نیپل) تقسیم میشن و ابتدا 4 بیت پر ارزش ارسال میشن و بعد 4 بیت کم ارزش.
            و همون طور که در مد 8 بیتی کامند 0x38 رو برای قرار دادن lcd در مد 8 بیتی ارسال میکنید در این جا هم باید کامندی رو برای قرار دادن lcd در مد 4 بیتی ارسال کنید که اون 0x28 هسته.
            تولید کننده انواع تابلو فرمان آسانسور با تکنولوژی روز دنیا

            دیدگاه


              #7
              پاسخ : راه اندازی lcd کارکتری 4بیت 100% عملی

              نوشته اصلی توسط dantte
              هر سوالی داشتید و یا جایی رو متوجه نشدید بگید. نظر هم بدید لطفاً :job:
              سلام
              برای تنظیمات اولیه بهتر بود یه تابع مثل lcd_init4(); قرار می دادید که کدهایی که به lcd می گفت می خواهید مد چهارتایی کار کنید را در آن قرار می دادید:
              کد:
              [left] void lcd_init4(void){
              /******Start program for configuration lcd 4 bit mode*******/
               delay(15);//delay 15ms
               wr4bit(0x03);//set interface 4 bit
               delay(3);//delay 5ms
               wr4bit(0x03);
               delay(1);
               wr4bit(0x03);
               wr4bit(0x02);
               wr4bit(0x02);
               wr4bit(0x08);
               wr4bit(0x28);//set font 5*8 matris
               wr4bit(0x0c);//display on and crusor off
               wr4bit(0x06);//finish configuration lcd 4 bit mode
              }[/left]
              فيلم آموزشي ميکروکنترلر LPC1768
              فيلم آموزشي تکميلي و پيشرفته ميکروکنترلر LPC1768
              فيلم آموزش کاربردی زبان سی در میکروکنترلر ARM
              فیلم آموزش مقدماتی میکروکنترلر LPC1788 به زودی ...

              دیدگاه


                #8
                پاسخ : راه اندازی lcd کارکتری 4بیت 100% عملی

                :byeخواهشا یه ذره درست نگاه کنید. یه تابع هست به اسم void lcd_init() که برای تنظیمات اولیه است تا lcd روی مد 4 بیت بره.حالا شما برای اینکه راحتر بفهمید یه 4bit هم بهش اضافه کنید. خودتونم باید خلاقیت نشون بدین. :cry:

                دیدگاه


                  #9
                  پاسخ : راه اندازی lcd کارکتری 4بیت 100% عملی

                  سلام
                  بله درسته.تمام این قسمت پیکر بندی در تابع void lcd_init() هست. کدها از راست به چپ بود یه مقدار خوندنش سخته :sad: درست ندیدم!
                  چطوریه تو این انجمن نمیشه یه کد را درست از چپ به راست گذاشت که این قدر به هم ریخته نباشه. حتی وقتی در قسمت کد قرار میدی و گزینه left را هم میزنی بازم کد ناجوره :cry:
                  فيلم آموزشي ميکروکنترلر LPC1768
                  فيلم آموزشي تکميلي و پيشرفته ميکروکنترلر LPC1768
                  فيلم آموزش کاربردی زبان سی در میکروکنترلر ARM
                  فیلم آموزش مقدماتی میکروکنترلر LPC1788 به زودی ...

                  دیدگاه

                  لطفا صبر کنید...
                  X