اطلاعیه

Collapse
No announcement yet.

ساخت کتابخونه LCD 16*2 برای MPLAB

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

    ساخت کتابخونه LCD 16*2 برای MPLAB

    سلام
    آقا من دارم یه کتابخونه برای PIC می نویسم :job: کارش تموم شده اما کار نمی کنه
    دو تا سوال داشتم
    1-رفرنسی که توضیح داده باشه چه جوری LCD به صورت 4 بیت کانفیگ می شه سراغ ندارین(یعنی بگه الان باید پایه EN مثلا صفر بشه حالا داده ارسال و ....) نگرانم رفرنسم یه جاییش رو کم گفته چون با کدهای دیگه مقایسه کردم یه مشکلاتی وجود داشت
    2-چرا به جای
    Portbbits
    می یان از
    LATBbits
    استفاده می کنن فرقشون در چی هست؟

    ممنونم
    هیچ دانش آموزی نیست که به در خانۀ دانشمندی آمد و شد کند, مگر این که خداوند برای هر گامی که برمی دارد عبادت یک سال را برایش رقم زند.

    #2
    پاسخ : ساخت کتابخونه LCD 16*2 برای MPLAB

    سلام

    2-چرا به جای
    Portbbits
    می یان از
    LATBbits
    استفاده می کنن فرقشون در چی هست؟
    راستش توضیحش یک مقدار مشکله , LAT مخفف latch میباشد , یک بیت حافظه , در سری های 16f یه مشکلی وجود داشت , بعضی وقت ها شما میخاهید پس از اینکه مقداری را در یک پرت قرار دادین , اون پرت رو دوباره بخونید , اما در سری 16f وقتی این کار رو میکنید مقدار حقیقی پرت رو میخونید یعنی اینکه ممکنه این مقدار توسط عوامل خارجی تغییر کرده باشه و شما مقدار اشتباهی را خاندین این موضوع در سری 18f به وسیله یک بیت حافظه به نام LATx حل شده

    فرقی نداره در کدام بنویسید , اما بهتره از LAT بخونید

    1-رفرنسی که توضیح داده باشه چه جوری LCD به صورت 4 بیت کانفیگ می شه سراغ ندارین(یعنی بگه الان باید پایه EN مثلا صفر بشه حالا داده ارسال و ....) نگرانم رفرنسم یه جاییش رو کم گفته چون با کدهای دیگه مقایسه کردم یه مشکلاتی وجود داشت
    خوب شما دیگه عملا وارد سخت افزار شدین و رفرنس های شما فقط دیتا شیت ها هستن

    نا اميدي يه دروغ بزرگه که آدما به خودشون ميگن
    تلاش يه حقيقت بزرگه که با صبر به ثمر ميرسه

    دیدگاه


      #3
      پاسخ : ساخت کتابخونه LCD 16*2 برای MPLAB

      سلام و مثل همیشه ممنونم

      آقا مشکل اینجاست که دیتاشیتشم زیاد چیزی نگفته
      www.azdisplays.com/PDF/acm1602k.pdf

      حالا به نظرتون باید چی کار کنم؟

      آقا یعنی اگر از LAT به عنوان خروجی استفاده کنیم هیچ فرقی نمی کنه تا از PORT?
      هیچ دانش آموزی نیست که به در خانۀ دانشمندی آمد و شد کند, مگر این که خداوند برای هر گامی که برمی دارد عبادت یک سال را برایش رقم زند.

      دیدگاه


        #4
        پاسخ : ساخت کتابخونه LCD 16*2 برای MPLAB

        نوشته اصلی توسط baby_1
        آقا مشکل اینجاست که دیتاشیتشم زیاد چیزی نگفته
        www.azdisplays.com/PDF/acm1602k.pdf

        حالا به نظرتون باید چی کار کنم؟
        برای اینکار باید دنبال دیتاشیت درایور LCD بگردین , یعنی HD44780



        نوشته اصلی توسط baby_1
        آقا یعنی اگر از LAT به عنوان خروجی استفاده کنیم هیچ فرقی نمی کنه تا از PORT?
        راستش من همیشه از PORT استفاده میکنم اما قاعدتا نباید فرقی داشته باشه و ن.شتن در هرکدام به معنی نوشتن در دیگریه



        نا اميدي يه دروغ بزرگه که آدما به خودشون ميگن
        تلاش يه حقيقت بزرگه که با صبر به ثمر ميرسه

        دیدگاه


          #5
          پاسخ : ساخت کتابخونه LCD 16*2 برای MPLAB

          نوشته اصلی توسط baby_1
          آقا یعنی اگر از LAT به عنوان خروجی استفاده کنیم هیچ فرقی نمی کنه تا از PORT?
          بحث استفاده از رجیسترهای PORT یا LAT معمولا گمراه کننده است. بنابر این بهتره به این نکات توجه داشته باشید:
          مقدار دو رجیستر LAT و PORT در زمانی که پورت به صورت خروجی پیکره بندی شده باشد و بدون دخالت عامل خارجی با هم برابر هستند. ولی در حالتی که پورت به عنوان ورودی پیکره بندی بشه مقدار این دو میتونن متفاوت باشن. بنابر این در نوشتن تابع برای سخت افزارهایی مانند LCD به این موارد توجه کنید. شکل زیر که شماتیک معمول اغلب پورتهای سری 18F رو نشون میده. با دقت در این شکل به موارد بالا پی میبرین.

          همونطور که در شکل میبینید در صورت ورودی بودن پورت مقدار خوانده شده تابعی از مقدار منطقی پین ها است. ولی در صورتی که بر روی پورت ( در حالت پیکره بندی به صورت ورودی) مقداری بنویسید این مقدار بر روی رجیستر LAT ذخیره شده و به پین انتقال پیدا نخواهد کرد. بنا بر این این دو میتونن متفاوت باشن.

          دیدگاه


            #6
            پاسخ : ساخت کتابخونه LCD 16*2 برای MPLAB

            سلام و ممنونم از توضیحاتتون
            یعنی مطابق با این ساختار اگر پورت رو به صورت ورودی تعریف کرده باشیم و بهش مقدار بدیم این مقدار باقی می مونه تا پورت به صورت خروجی تعریف بشه؟
            هیچ دانش آموزی نیست که به در خانۀ دانشمندی آمد و شد کند, مگر این که خداوند برای هر گامی که برمی دارد عبادت یک سال را برایش رقم زند.

            دیدگاه


              #7
              پاسخ : ساخت کتابخونه LCD 16*2 برای MPLAB

              نوشته اصلی توسط baby_1
              یعنی مطابق با این ساختار اگر پورت رو به صورت ورودی تعریف کرده باشیم و بهش مقدار بدیم این مقدار باقی می مونه تا پورت به صورت خروجی تعریف بشه؟
              بله همینطوره. به همین دلیل ممکنه در مواردی ایجاد مشکل کنه. به عنوان مثال بعد از خوندن یک پورت جهت کل یا بعضی از بیتهای اون رو عوض کنید. نمونه اش اینه که فرضا از دستور اسمبلیBSF PORTB,5 استفاده کنید. با اجرای این دستور ابتدا مقدار پین ها خونده میشه و بعد از یک شدن بیت پنجم مقدار جدید بر روی پورت و رجیستر LATB قرار میگیره. حالا فرض کنیم بیت 7 به صورت ورودی بوده باشه. مقدارش خونده میشه و در LATB,7 نوشته میشه. تا زمانی که این پین ورودی بمونه مشکلی نیست. ولی اگه جهت این پین عوض بشه ممکنه یک مقدار ناخواسته بگیره. برای حل این مشکل بهتره که بجای دستور BSF PORTB,5 از دستور BSF LATB,5 استفاده کنید.

              پس به طور کلی : برای انجام یک فرایند که مقداری رو میخونه و بعد از تغییر در خروجی مینویسه بهتره از رجیستر LAT به جای PORT استفاده بشه و برای خوندن پین از PORT استفاده کنید.

              دیدگاه


                #8
                پاسخ : ساخت کتابخونه LCD 16*2 برای MPLAB

                سلام
                حالا نوبت برنامه نویسی شد.آقا این pdf رو در قسمت توضیحات 4 بیتیش رو بخونین به عبارتهای زیر می رسین

                http://www.bipom.com/documents/appno...ible%20LCD.pdf

                In 4-bit mode, the high nibble is sent before the low nibble and the E pin is toggled each
                time four bits is sent to the LCD. To initialize in 4-bit mode:

                1. Wait more than 15 msecs after power is applied.
                2. Write 0x03 to LCD and wait 5 msecs for the instruction to complete
                3. Write 0x03 to LCD and wait 160 usecs for instruction to complete
                4. Write 0x03 AGAIN to LCD and wait 160 usecs (or poll the Busy Flag)
                5. Set the Operating Characteristics of the LCD
                o Write 0x02 to the LCD to Enable 4-Bit Mode
                All following Instruction/Data Writes require two nibble writes.

                سوالات:
                در مرحله 1 تا 5 داده ها بایت هستن یا نیبل و اگر نیبل هستن نیبل کم ارزش هستن یا پر ارزش؟
                در این مرحله که نوشته
                Write 0x01/0x00 to turn off the Display
                اگر به نمونه کد C مراجعه کنین باید با عبارت زیر برابر کنه
                WriteCtrl(8);
                delay(10);
                حالا این سوال این 8 از کجا اومد؟
                هیچ دانش آموزی نیست که به در خانۀ دانشمندی آمد و شد کند, مگر این که خداوند برای هر گامی که برمی دارد عبادت یک سال را برایش رقم زند.

                دیدگاه


                  #9
                  پاسخ : ساخت کتابخونه LCD 16*2 برای MPLAB

                  سلام
                  آقا دلیل سوالاتم بگم
                  اول اینکه برنامه رو کامل نوشتم اما مشکلاتم همین جاهاست که خطا حتما دارم
                  من یه تابع نوشتم که ابتدا یه بایت ارسالی بر روی LCD رو دریافت می کنه و طبق توضیحات ابتدا 4 بیت بالا(MSB) و سپس 4 بیت پایین (LSB) رو طبق روال توضیحی ارسال می کنه .(که ان شالله مرحله به مرحله کدش رو قرار می دم با هم تست بگیریم و نهایتا یه فایل ساده با توابع کم حجم و کارا باشه)
                  هیچ دانش آموزی نیست که به در خانۀ دانشمندی آمد و شد کند, مگر این که خداوند برای هر گامی که برمی دارد عبادت یک سال را برایش رقم زند.

                  دیدگاه


                    #10
                    پاسخ : ساخت کتابخونه LCD 16*2 برای MPLAB

                    سلام
                    باز یه سوال دیگه(همش دارم به کارم شک می کنم که تندتری مشکلم حل بشه)
                    داده خروجی که یه نیبل هست به عنوان مثال اگر کل بایتمون باشه 10001100
                    نیبل بالا می شه
                    1000
                    و نیبل پایین می شه
                    1100
                    حالا مثلا در نیبل بالا پایه D4 تا D7 باید کدوم یک از این بیت ها رو به خودشون اختصاص بدن؟
                    یعنی D4 کم ارزشترین بیت نیبل هست یا پرازشترین بیت نبیل؟
                    هیچ دانش آموزی نیست که به در خانۀ دانشمندی آمد و شد کند, مگر این که خداوند برای هر گامی که برمی دارد عبادت یک سال را برایش رقم زند.

                    دیدگاه

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