اطلاعیه

Collapse
No announcement yet.

راه اندازی LCD کاراکتری با LPC2368 (مد 8 بیت و 4 بیت)

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

    #61
    پاسخ : راه اندازی LCD کاراکتری با LPC2368 (مد 8 بیت و 4 بیت)

    من تغییرات لازم را برای پیکربندی با پورت مطلوبم انجام دادم:
    کد:
    	 //DB0=PORT1.23,DB1=PORT1.24,DB2=PORT1.25,DB3=PORT1.26
       //DB4=PORT1.27,DB5=PORT1.28,DB6=PORT1.29,DB7=PORT1.30
    #define E  (1<<21); //PORT1.21
    #define RS (1<<20); //PORT1.20
    #define RW (1<<22); //PORT1.22
    نتیجه اولیه مثبت بود و مشکلی به وجود نیامد.
    فقط یه مورد
    جای یک تابع خالیه . اگه بخواهیم مقداری را که در متغییری وجود دارد نشان دهیم با همین توابع موجود به چه صورت میشه؟ یا به صورت کلی تر مثل تابع printf("text %i,%f,", i,f); که در پورت سریال استفاده می کردیم.
    فيلم آموزشي ميکروکنترلر LPC1768
    فيلم آموزشي تکميلي و پيشرفته ميکروکنترلر LPC1768
    فيلم آموزش کاربردی زبان سی در میکروکنترلر ARM
    فیلم آموزش مقدماتی میکروکنترلر LPC1788 به زودی ...

    دیدگاه


      #62
      پاسخ : راه اندازی LCD کاراکتری با LPC2368 (مد 8 بیت و 4 بیت)

      نوشته اصلی توسط mahdizarkoob
      من تغییرات لازم را برای پیکربندی با پورت مطلوبم انجام دادم:
      کد:
      	 //DB0=PORT1.23,DB1=PORT1.24,DB2=PORT1.25,DB3=PORT1.26
         //DB4=PORT1.27,DB5=PORT1.28,DB6=PORT1.29,DB7=PORT1.30
      #define E  (1<<21); //PORT1.21
      #define RS (1<<20); //PORT1.20
      #define RW (1<<22); //PORT1.22
      نتیجه اولیه مثبت بود و مشکلی به وجود نیامد.
      فقط یه مورد
      جای یک تابع خالیه . اگه بخواهیم مقداری را که در متغییری وجود دارد نشان دهیم با همین توابع موجود به چه صورت میشه؟ یا به صورت کلی تر مثل تابع printf("text %i,%f,", i,f); که در پورت سریال استفاده می کردیم.
      یک تابع برای sprintf می نویسی
      مثل همونی که خودت گفتی
      printf("text %i,%f,", i,f);
      چون اینجا از این توابع خبری نیست


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

      دیدگاه


        #63
        پاسخ : راه اندازی LCD کاراکتری با LPC2368 (مد 8 بیت و 4 بیت)

        نوشته اصلی توسط MG.
        یک تابع برای sprintf می نویسی
        مثل همونی که خودت گفتی
        printf("text %i,%f,", i,f);
        چون اینجا از این توابع خبری نیست
        نه بابا برای چی یه تابع برای printf بنویسم؟ خوب از خودش استفاده می کنم. اینجا را ببینید:
        http://www.eca.ir/forum2/index.php?topic=59362.0
        به این شکل من انجام دادم جواب نصفه نیمه گرفتم:
        کد:
           unsigned char s;
           unsigned char p[100];
           s=10;
        
        ...
        ....
        
             sprintf(p," %d",s);
             lcd_putsf(p);
        البته بعد که خواستم مقدار آنالوگ به دیجیتال را بریزم داخل s چیزی نشون نمی داد که باید دقیقتر ایراد را بررسی کنم. ولی وقتی s مقدار ثابتی دارد نشان می داد موردی نبود فقط یک warning میداد که دلیلش را نمی دونم:
        ADC_blinker.c(103): warning: #167-D: argument of type "unsigned char *" is incompatible with parameter of type "char *restrict"
        فيلم آموزشي ميکروکنترلر LPC1768
        فيلم آموزشي تکميلي و پيشرفته ميکروکنترلر LPC1768
        فيلم آموزش کاربردی زبان سی در میکروکنترلر ARM
        فیلم آموزش مقدماتی میکروکنترلر LPC1788 به زودی ...

        دیدگاه


          #64
          پاسخ : راه اندازی LCD کاراکتری با LPC2368 (مد 8 بیت و 4 بیت)

          خوب یه جوابی از نشون دادن آنالوگ به دیجیتال روی ال سی دی گرفتم :wow: عددی دیجیتال را بین 0 تا 1024 روی lcd نشون میده. اون موقع که نشون نمی داد یه ایراد داشت که خودم تا حالا باهاش مواجه نشده بودم ولی دوستان صابونش به تنشون خورده بود! :mrgreen: و اون هم تیک MAM setup و External memory controller setup می باشد که در اینجا نباید بزنیم . البته من که با lpc2378 کار می کنم در تمام برنامه هایم این دو تیک بود و کار هم می می کرد ولی این بار نمی دونم چرا حتما باید این دو تیک را برمی داشتم تا LCD ام کار می کرد! حتی آنالوگ به دیجیتال هم با وجود این دو تیک کار میکنه ولی LCD کار نمی کرد. [glow=red,2,300]دوستان کسی دلیلشو میدونه؟[/glow]
          فيلم آموزشي ميکروکنترلر LPC1768
          فيلم آموزشي تکميلي و پيشرفته ميکروکنترلر LPC1768
          فيلم آموزش کاربردی زبان سی در میکروکنترلر ARM
          فیلم آموزش مقدماتی میکروکنترلر LPC1788 به زودی ...

          دیدگاه


            #65
            پاسخ : راه اندازی LCD کاراکتری با LPC2368 (مد 8 بیت و 4 بیت)

            نوشته اصلی توسط mahdizarkoob
            خوب یه جوابی از نشون دادن آنالوگ به دیجیتال روی ال سی دی گرفتم :wow: عددی دیجیتال را بین 0 تا 1024 روی lcd نشون میده. اون موقع که نشون نمی داد یه ایراد داشت که خودم تا حالا باهاش مواجه نشده بودم ولی دوستان صابونش به تنشون خورده بود! :mrgreen: و اون هم تیک MAM setup و External memory controller setup می باشد که در اینجا نباید بزنیم . البته من که با lpc2378 کار می کنم در تمام برنامه هایم این دو تیک بود و کار هم می می کرد ولی این بار نمی دونم چرا حتما باید این دو تیک را برمی داشتم تا LCD ام کار می کرد! حتی آنالوگ به دیجیتال هم با وجود این دو تیک کار میکنه ولی LCD کار نمی کرد. [glow=red,2,300]دوستان کسی دلیلشو میدونه؟[/glow]
            سلام

            نه دوست من نیازی به برداشتن اون دو تیک نیست
            شما باید DELAY های LCD رو افزایش بدی همین
            چون واحد MAM رو فعال می کنی
            یک بار هم گفتم DELAY ها استاندارد نیست چون من اصلا از این روش ها استفاده نمی کنم من میام OS روی میکرو می ریزم و DELAY های اون رو استفاده می کنم که خیلی خیلی دقیق است
            delay رو ببر بالا

            در موردsprintf ما که تو help چیزی ندیدیم ، توی stdio.h که کتابخانه پایه هست اینارو من دیدم

            fclose
            feof
            ferror
            fflush
            fgetc
            fgets
            fopen
            fprintf
            fputc
            fputs
            fread
            fscanf
            fseek
            ftell
            fwrite
            rename
            rewind
            ungetc

            البته کتابخانه های پایه دیگری هم وجود دارد مثل math و ...
            در هر صورت من از توابع خودم استفاده می کنم


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

            دیدگاه


              #66
              پاسخ : راه اندازی LCD کاراکتری با LPC2368 (مد 8 بیت و 4 بیت)

              نوشته اصلی توسط MG.
              در موردsprintf ما که تو help چیزی ندیدیم
              عجب!! اگه sprintf جزو توابع stdio.h نیست پس چطوری کار کرد؟ نمیشه که
              فيلم آموزشي ميکروکنترلر LPC1768
              فيلم آموزشي تکميلي و پيشرفته ميکروکنترلر LPC1768
              فيلم آموزش کاربردی زبان سی در میکروکنترلر ARM
              فیلم آموزش مقدماتی میکروکنترلر LPC1788 به زودی ...

              دیدگاه


                #67
                پاسخ : راه اندازی LCD کاراکتری با LPC2368 (مد 8 بیت و 4 بیت)

                نوشته اصلی توسط mahdizarkoob
                عجب!! اگه sprintf جزو توابع stdio.h نیست پس چطوری کار کرد؟ نمیشه که
                چرا نشه شده دیگه :biggrin:
                شاید ورژن مال من خیلی قدیمیه
                تو help کلمه stdio رو سرچ کن ببین چه توابعی داره

                مشکل lcd درست شد ؟

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

                دیدگاه


                  #68
                  پاسخ : راه اندازی LCD کاراکتری با LPC2368 (مد 8 بیت و 4 بیت)

                  نوشته اصلی توسط MG.
                  چرا نشه شده دیگه :biggrin:
                  شاید ورژن مال من خیلی قدیمیه
                  تو help کلمه stdio رو سرچ کن ببین چه توابعی داره
                  این تابع هست. چون اگه نباشه حتما خطا میده.
                  نوشته اصلی توسط MG.
                  مشکل lcd درست شد ؟
                  برای 8 بیت مشکلی نیست. الان می خوام 4 بیت را تست کنم با پیکربندی خودم. ولی موردی که هست کار این تابع lcd_init_4bit درست نگرفتم. دستورات lcd اینها هست:
                  [glow=red,2,300]کد های فرمان LCD:[/glow]
                  کد HEX عملکرد فرمان
                  0X01 پاک کردن صفحه نمایش
                  0X02 بازگشت مکان نما به سطر و ستون 0و0 HOME
                  0X04 انتقال مکان نما به چپ
                  0X05 جابجایی صفحه نمایش به راست
                  0X06 انتقال مکان نما به راست
                  0X07 جابجایی صفحه نمایش به چپ
                  0X08 صفحه نمایش و مکان نما خاموش
                  0X0A صفحه نمایش خاموش و مکان نما روشن
                  0X0C صفحه نمایش روشن و مکان نما خاموش
                  0X0E صفحه نمایش روشن و مکان نما روشن
                  0X0F صفحه نمایش روشن و مکان نما در حالت چشمک زن
                  0X10 جابجایی مکان نما به چپ
                  0X14 جابجایی مکان نما به راست
                  0X18 حرکت کل صفحه نمایش به چپ
                  0X38 سازمان دهی 8 بیتی و ماتریس 5×7
                  0X28 سازمان دهی 4 بیتی و ماتریس 5×7
                  0X10 حرکت کل صفحه نمایش به راست
                  0XC0 مکان نما به آغاز خط دوم انتقال می یابد

                  ولی در این تابع ظاهرا دو بار 0x3 بعد 0x2 ارسال می شود و این کار یک بار دیگر تکرار می شود. [glow=red,2,300]دلیلش چیه؟[/glow]
                  البته برای ارسال یک کاراکتر ابتدا 4 بیت با ارزش را انتخاب و به راست شیفت میدیم : CHAR&0XF0 >>4 و میفرسیم رو پورت و بعد 4 بیت کم ارزش را انتخاب و بدون شیفت دادن ارسال می کنیم : CHAR&0XF0 درسته دیگه!؟ :icon_razz:
                  فيلم آموزشي ميکروکنترلر LPC1768
                  فيلم آموزشي تکميلي و پيشرفته ميکروکنترلر LPC1768
                  فيلم آموزش کاربردی زبان سی در میکروکنترلر ARM
                  فیلم آموزش مقدماتی میکروکنترلر LPC1788 به زودی ...

                  دیدگاه


                    #69
                    پاسخ : راه اندازی LCD کاراکتری با LPC2368 (مد 8 بیت و 4 بیت)

                    برای 4 بیت مثل هشت بیت جواب گرفتم و مشکلی نبود. :nice:
                    البته درسته که جواب گرفتم ولی این سوالاتم هنوز بی جواب مونده:
                    1- اگه اون دو تیک MAM setup و External memory controller setup را بگذاریم برای اینکه جواب بده مقدار delay را چند بذاریم تا مشکل حل بشه؟ البته من هنوز کار این دو تیک را درست متوجه نشدم!
                    2- چرا وقتی از sprintf(p," %i",s); استفاده می کنیم این warning :
                    LCD_MEHDI GORJI.c(102): warning: #167-D: argument of type "unsigned char *" is incompatible with parameter of type "char *restrict"
                    را می دهد؟ و چطوری درستش کنیم؟
                    3- کار تابع lcd_init_4bit چیست؟
                    ------------------------------------------------
                    میشه به تعمیم این برنامه LCD گرافیکی (مثل شماره TS-12864A-2)را راه اندازی کرد؟ LCD گرافیکی مثل LCD کاراکتری حالت 4 سیمه هم داره؟ آخه من جایی ندیم!!
                    فيلم آموزشي ميکروکنترلر LPC1768
                    فيلم آموزشي تکميلي و پيشرفته ميکروکنترلر LPC1768
                    فيلم آموزش کاربردی زبان سی در میکروکنترلر ARM
                    فیلم آموزش مقدماتی میکروکنترلر LPC1788 به زودی ...

                    دیدگاه


                      #70
                      پاسخ : راه اندازی LCD کاراکتری با LPC2368 (مد 8 بیت و 4 بیت)

                      کسی نیست؟ :cry:
                      خیلی سوال کردم؟ یا سوال خفن کردم؟ oo:
                      فيلم آموزشي ميکروکنترلر LPC1768
                      فيلم آموزشي تکميلي و پيشرفته ميکروکنترلر LPC1768
                      فيلم آموزش کاربردی زبان سی در میکروکنترلر ARM
                      فیلم آموزش مقدماتی میکروکنترلر LPC1788 به زودی ...

                      دیدگاه


                        #71
                        پاسخ : راه اندازی LCD کاراکتری با LPC2368 (مد 8 بیت و 4 بیت)

                        نوشته اصلی توسط mahdizarkoob
                        کسی نیست؟ :cry:
                        خیلی سوال کردم؟ یا سوال خفن کردم؟ oo:
                        سلام
                        سلام که نمی کنی !

                        نه شما هر چقدر دوست داشتی سوال کن من هم تا اونجایی که بتونم کمک می کنم
                        تیک mam برای شتاب دادن به سرعت اجرای بر نامه توسط cpu است
                        تیک بعدی هم مربوط به حافظه های خارجی است که lpc2378 ساپورت می کنه اما lpc2368 نه
                        خوب در برنامه lcd تمام delay کم (بقول خودت یک delay کوتاه) رو 70 کن
                        و delay های بزرگ تر رو 30000 کن
                        delay(5000);==>> delay(30000);
                        اون یکی هارم 70 کن
                        کار تابع lcd_init_4bit هم از اسمش معلوم هست پیکربندی در مد 4 سیم

                        -----------------------------------------------
                        اتفاقا می خواستم چند وقت پیش یک تاپیک برای lcd گرافیکی بزنم ،اما ....
                        نه 4 سیمه نداره



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

                        دیدگاه


                          #72
                          پاسخ : راه اندازی LCD کاراکتری با LPC2368 (مد 8 بیت و 4 بیت)

                          نوشته اصلی توسط MG.
                          سلام
                          سلام که نمی کنی !
                          سلااااااااااااااااااااااااااااااااااام !! :mrgreen:
                          نوشته اصلی توسط MG.
                          کار تابع lcd_init_4bit هم از اسمش معلوم هست پیکربندی در مد 4 سیم
                          میدونم پیکر بندیه ولی اگه این طوره پس چند دستور بعدش:
                          کد:
                            //MAT 28  
                            command(0x28);
                            //LCD CLEAR
                            command(0x01);
                            //ON DISPLAY & CURSOR-OFF
                            command(0x0C);
                            //RIGHT   LCD
                            command(0x06);
                            //X_Y CONFIG X=0;Y=0
                            command(0x80);
                          کارش چیه!! در دستورات فرمان این کدهایی که ارسال شده جور در نمی یاد. گفتم که دو بار 0x3 بعد 0x2 ارسال می شود و این کار یک بار دیگر تکرار می شود. این جه جور فرمانیه؟
                          نوشته اصلی توسط MG.
                          اتفاقا می خواستم چند وقت پیش یک تاپیک برای lcd گرافیکی بزنم ،اما ....
                          اما چی؟؟؟؟؟؟؟؟؟؟
                          فيلم آموزشي ميکروکنترلر LPC1768
                          فيلم آموزشي تکميلي و پيشرفته ميکروکنترلر LPC1768
                          فيلم آموزش کاربردی زبان سی در میکروکنترلر ARM
                          فیلم آموزش مقدماتی میکروکنترلر LPC1788 به زودی ...

                          دیدگاه


                            #73
                            پاسخ : راه اندازی LCD کاراکتری با LPC2368 (مد 8 بیت و 4 بیت)

                            سلام
                            میدونم از قسمت بحث stdio.h خیلی میگذره :mrgreen: :mrgreen: :mrgreen: :mrgreen: :mrgreen: اما جناب زرکوب درست میگن sprintf موجود هست و منم ازش استفاده میکنم :agree:
                            اشکهايي که پس از هر شکست ميريزيم همان عرقيست که براي پيروزي نريخته ايم.
                            هيتلر

                            دیدگاه


                              #74
                              پاسخ : راه اندازی LCD کاراکتری با LPC2368 (مد 8 بیت و 4 بیت)

                              نوشته اصلی توسط mahdizarkoob
                              سلااااااااااااااااااااااااااااااااااام !! :mrgreen:میدونم پیکر بندیه ولی اگه این طوره پس چند دستور بعدش:
                              کد:
                                //MAT 28  
                                command(0x28);
                                //LCD CLEAR
                                command(0x01);
                                //ON DISPLAY & CURSOR-OFF
                                command(0x0C);
                                //RIGHT   LCD
                                command(0x06);
                                //X_Y CONFIG X=0;Y=0
                                command(0x80);
                              کارش چیه!! در دستورات فرمان این کدهایی که ارسال شده جور در نمی یاد. گفتم که دو بار 0x3 بعد 0x2 ارسال می شود و این کار یک بار دیگر تکرار می شود. این جه جور فرمانیه؟اما چی؟؟؟؟؟؟؟؟؟؟
                              سلام

                              خوب اونهایی که می گی چند بار تکرار شده برای این است که cpu lcd متوجه شود که ما می خوایم چهار سیمه باهاش کار کنیم یا به عبارتی به صورت چهار بیت چهار بیت کار کنیم نه 8 بیت و ...
                              -----------------------
                              در مورد lcd گرافیکی هم زیاد مهم نیست ادامش چی بود
                              اگر وقت کنم تاپیک رو برای lcd گرافیکی میزنم


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

                              دیدگاه


                                #75
                                پاسخ : راه اندازی LCD کاراکتری با LPC2368 (مد 8 بیت و 4 بیت)

                                نوشته اصلی توسط Saeed Saeb
                                سلام
                                میدونم از قسمت بحث stdio.h خیلی میگذره :mrgreen: :mrgreen: :mrgreen: :mrgreen: :mrgreen: اما جناب زرکوب درست میگن sprintf موجود هست و منم ازش استفاده میکنم :agree:
                                سلام
                                نه داری دروغ می گی


                                من که نگفتم غلط می گن من می گم اون زمان که من شروع کردم با سری lpc21xx تو help ی که keil داره چیزی از sprintf نذاشته الان هم که چک می کنم نیست
                                شما چک کن
                                سرچ کن stdio ببین تابعی به نام sprintf میاره

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

                                دیدگاه

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