اطلاعیه

Collapse
No announcement yet.

کتابخانه ی LCD کاراکتری

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

    کتابخانه ی LCD کاراکتری

    داشتم تو فایل هام میگشتم که دیدم قبلا یه کتابخونه خوب برای این LCD ها نوشتم و گفتم اینجا هم بزارم و تا بقیه دوستان استفاده کنند.این برنامه با avr studio و به زبان سی نوشته شده است.
    این کتابخونه هم میتونه از طریق سریال و هم از طریق موازی LCD ها رو راه اندازی کنه:
    روش موازی:
    در این روش فقط از 6 تا پایه ی میکرو استفاده شده.تو خیلی از موارد پیش اومده به خاطر استفاده از LCD دیگه نمیتونستیم از یه سری پایه ها(مثلا خروجی تایمر) استفاده کنیم. چون حتما پایه ها باید پشت سر هم می بودند. تو این کتابخونه هیچ لزومی برای پشت سر هم بودن بودن پایه ها نیست و حتی میتونید 4 پایه دیتا رو روی یه پورت و 2 تا پایه کنترلی رو روی یه پورت دیگه قرار بدید. برای استفاده از حالت موازی باید متغیری از جنس PARALLEL_LCD توی برنامه اضافه کنید.(بسته به نوع برنامه سراسری یا محلی)
    بعد باید زیر عضو های این متغیر رو مقدار بدید به صورت زیر:

    PARALLEL_LCD test; //تعریف متغیر

    test.ctrl_port=&PORTD; //تعیین پورت کنترلی(rsو E)
    test.data_port=&PORTB; //تعین پورت دیتا
    test.E=6; //شماره بیت پورت که فعال ساز به اون وصل شده
    test.RS=7; //شماره بیت پورت که این پایه به اون وصل شده
    test.LSB0=7; //شماره بیت پورت که این پایه به اون وصل شده
    test.LSB1=4; //شماره بیت پورت که این پایه به اون وصل شده
    test.LSB2=5; //شماره بیت پورت که این پایه به اون وصل شده
    test.LSB3=2; //شماره بیت پورت که این پایه به اون وصل شده

    همون طور که میبینیدهیچ لزومی برای پشت سر هم بودن پایه ها و یا ثابت بودن پورت ها نیست. اگر نیاز به دو تا LCD داشتید یک متغیر دیگه تعریف کنید و به اون هم مقادیر دلخواه رو بدید.
    و اما توابع:
    همه توابع هم نام با توابع کتابخونه کد ویژن هستند ولی پسوند _PAR به آخر اون ها اضافه شده و همیشه به عنوان اولین آرگومان اون متغییری که در بالا تعریف شد رو میاریم. تابع init یه فرق کوچیکی داره که :
    void lcd_init_PAR( test , mode)

    که منظور از تست همون متغیر بالاست و مد اشاره داره به حالت مکان نما که هر کدوم از مقادیر زیر میتونه باشه:
    NO_CUR
    LINE_CUR
    BLOCK_CUR
    که هر کدوم کاربردش معلومه!
    بقیه توابع هم فرق خاصی ندارند از نظر کاربرد و خودشونم شامل اینان:


    void lcd_clear_PAR(PARALLEL_LCD);
    void lcd_init_PAR(PARALLEL_LCD,unsigned char mod);
    void lcd_putchar_PAR(PARALLEL_LCD lcd,unsigned char charr);
    void lcd_puts_PAR(PARALLEL_LCD lcd,char *str);
    void lcd_putsf_PAR(PARALLEL_LCD lcd,const char *str);
    void lcd_gotoxy_PAR(PARALLEL_LCD ,unsigned char x,unsigned char y);


    مثالی که همراهش گزاشتم کمک میکنه که راحت تر متوجه توابع بشید.
    تو فایل شبیه سازی هم 2 تا LCD به صورت موازی و 2تا به صورت سریال به یه مگا 8 وصل شده!
    فعلا خسته شدم. سریال رو نیم ساعت دیگه میگم.
    سوالی بود در خدمتم!
    http://www.4shared.com/rar/s1oFYo8C/LCD.html
    [img width=477 height=100]http://www.eca.ir/pic/upload/agazade.png[/img]

    #2
    پاسخ : کتابخانه ی LCD کاراکتری

    و اما حالت سریال:
    تو این حالت 3 پایه از میکرو مصرف میشه ولی نیاز به یه SIPO داریم. تو این مثال من از 74164 استفاده کردم که 200 تومن حدودا قیمت داره. برای استفاده از این حالت هم باید یه متغیر تعریف کنید ولی از نوع SERIAL_LCD
    SERIAL_LCD test2; //تعریف متغیر

    test2.port=&PORTD; //پورتی که این پایه ها وصل میشن
    test2.clk=0; //شماره بیت پورت که این پایه به اون وصل شده
    test2.dat=1; //شماره بیت پورت که این پایه به اون وصل شده
    test2.E=2; //شماره بیت پورت که این پایه به اون وصل شده


    توابع هم دقیقا مثل حالت موازی هست ولی به جای _PAR باید از _SER استفاده کرد. توابع شامل:


    void lcd_clear_SER(SERIAL_LCD);
    void lcd_init_SER(SERIAL_LCD,unsigned char mode) ;
    void lcd_putchar_SER(SERIAL_LCD lcd,unsigned char charr);
    void lcd_puts_SER(SERIAL_LCD lcd,char *str);
    void lcd_putsf_SER(SERIAL_LCD lcd,const char *str);
    void lcd_gotoxy_SER(SERIAL_LCD l,unsigned char x,unsigned char y);

    شماتیک و مثال و همه این چیزا تو اون فایلی که تو پست قبلم گزاشتم هست.
    فقط یه نکته: اگر از کریستالی به جز 8 مگاهرتز استفاده میکنید در اول برنامه مقدار سقف اون رو وارد کنید.مثلا اگه از کریستال 11.2 استفاده میکنید مقدار 12 رو وارد کنید.

    #define crystal 12

    از این مقدار برای محاسبه تاخیر های فعال سازی استفاده میشه.
    فکر نمیکنم مشکلی ایجاد بشه اگه بخواید از این کتابخونه تو کد ویژن هم استفاده کنید. نصب شده نداشتم نشد تست کنم...
    اگر نکته ای یلدم رفت شما بپرسید!
    [img width=477 height=100]http://www.eca.ir/pic/upload/agazade.png[/img]

    دیدگاه


      #3
      پاسخ : کتابخانه ی LCD کاراکتری

      شاهین جون 1دونهآ‌ای
      خیلی کاربردیه، ممنون

      دیدگاه


        #4
        پاسخ : کتابخانه ی LCD کاراکتری

        اگر با 4shared مشکل دارید از پرشین گیگ هم میتونید دانلود کنید.:
        http://wdl.persiangig.com/pages/down...ig.com/LCD.rar
        [img width=477 height=100]http://www.eca.ir/pic/upload/agazade.png[/img]

        دیدگاه


          #5
          پاسخ : کتابخانه ی LCD کاراکتری

          ممنون خیلی کارم راحت شد!

          دیدگاه


            #6
            پاسخ : کتابخانه ی LCD کاراکتری

            چرا دانلود نمیشه؟؟؟؟؟؟؟

            دیدگاه


              #7
              پاسخ : کتابخانه ی LCD کاراکتری

              سلام
              اگر کسی این کتابخانه را دارد وکتابخانه خوب وتایید شده ای است دوباره قرار بدید چون لینکهای دانلود پاک شدند

              دیدگاه

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