توسعه دانش
موضوعات داغ

راه اندازی نمایشگر 4.3 اینچ توسط FT800 حتی با AVR

به کمک این مطلب کارهای خیلی سخت رو ساده حل کنید، با یک پردازنده ضعیف، یک مانیتورینگ لمسی راه بندازید!

نکات برگزیده مطلب
  • مقدمه و معرفی
  • ویژگی ها و قابلیت ها
  • شماتیک راه اندازی ماژول
  • طراحی محیط گرافیکی
  • برنامه نویسی
  • خرید دانش فنی و کالاهای مرتبط

سلام دوستان عزیز !

سریع بریم سراغ اصل مطلب ؛ تراشه FT800 یک درایور حرفه ای ال سی دی های رنگی TFT و تاچ اسکرین مقاومتی می باشد که با استفاده از آن می توان به راحتی و بدون نیاز به قطعه دیگری ال سی دی های رنگی تا رزولوشن 512*512 را حتی با ساده ترین میکروکنترلرها راه اندازی کرد. در حقیقت این تراشه همه تنظیمات مربوط به ال سی دی های رنگی را انجام میدهد لذا فقط کافیست شما دستورات مربوطه نظیر توابع آماده دکمه، تایمر، اسکرول بار و… را از طریق پروتکل SPI یا I2C به این تراشه توسط میکروکنترلرهای AVR، ARM یا هر میکرو دیگری حتی بردهای آردوینو ارسال کنید و به سادگی هرچه تمام یک LCD رنگی و صفحه لمسی را راه اندازی کنید.

تراشه FT800  و تمام سخت افزار مورد نیازش در قالب یک ماژول تحت همین عنوان در بازار موجود است و قابلیت راه اندازی یک پروژه حرفه‌ای مانند HMI را برای شما فراهم می سازد.

از ویژگی های این ماژول می توان به موارد زیر اشاره کرد:
_ درایور تاچ مقاومتی
_ خروجی صوت
_ کنترل ال سی دی TFT
_ نرم افزار اختصاصی جهت طراحی محیط گرافیکی

و اما کاری که ما کردیم این است که در قالب یک پروژه ابتدا ماژول FT800 را توسط AVR (ساده ترین و ارزان ترین میکروکنترلر بازار) راه اندازی کرده، کدهای لازم و کتابخانه های تخصصی را برنامه نویسی کرده و به نوعی اغلب توابع کار با تراشه FT800 را آماده کردیم، سپس مستندات راه اندازی این پروژه اعم از فیلم آموزشی، شماتیک مدارات، نمونه کدهای لازم و… را گردهم آورده و در این مطلب آموزشی تقدیم کاربران عزیزمان کرده ایم.

 برخی از قابلیت های این پروژه :

✅ برنامه نویسی با کامپایلر کدویژن
✅ شماتیک برد راه انداز ماژول FT800 ( شماتیک شامل یک Atmega32 و حافظه EEprom خارجی و کانکتور جهت اتصال به ماژول می باشد که صرفا جهت اطلاع و آگاهی شماست )
✅ کتابخانه کامل راه اندازی ماژول FT800
✅ پروژه عملی جهت آشنایی با توابع (پروژه داخل فیلم بالا)
✅تابع کالیبره کردن تاچ ال سی دی
✅ نمایش تصویر با پسوند JPG روی ال سی دی
✅دیتاشیت و نرم افزار های مربوط به تراشه FT800
✅ و …

۱ – شماتیک ارتباط با ماژول FT800

برای ارتباط با ماژول FT800 ما می توانیم از دو پروتکل SPI و یا I2C استفاده کنیم که نحوه سیمکشی پایه ها در تصویر زیر نمایش  داده شده است .

نکته : برای برقراری ارتباط با پروتکل SPI باید پایه شماره 8 ماژول FT800 یا همان پایه Mode را به زمین متصل کنید .

برای تنظیمات SPI هم در نرم افزار کدویژن برای میکرو ATmega32 می توانید از نمونه کد زیر استفاده کنید .

   // SPI Type: Master
   // SPI Clock Rate: 2*4000/000 kHz
   // SPI Clock Phase: Cycle Start
   // SPI Clock Polarity: Low
   // SPI Data Order: MSB First
   SPCR=(0<<SPIE)|(1<<SPE)|(0<<DORD)|(1<<MSTR)|(0<<CPOL)|(0<<CPHA)|(0<<SPR1)|(0<<SPR0);
   SPSR=(1<<SPI2X);

۲ – طراحی محیط گرافیکی

برای طراحی محیط گرافیکی باید کد مربوط به هر ویجت را به ماژول ارسال کنیم که برای راحت شدن کار و مشاهده میزان حافظه اشغال شده می توانید از نرم افزار FTDI EVE Screen Editor استفاده کنید.

در تصویر زیر یک نمونه طراحی را در نرم افزار می بینید که به صورت عملی پیاده سازی شده است .

توضیحات برنامه FT800

توضیحات برنامه FT800

نکته: خطوطی که در تصویر بالا مشاهده می کنید در عمل وجود ندارند و ال سی دی دارای گرافیک بالایی است.

۳ – برنامه نویسی

کتابخانه نوشته شده توسط ما بسیار حرفه ای و در عین حال استفاده از آن ساده است بطوری که با فراخوانی چند تابع ال سی دی به راحتی راه اندازی می شود همچنین کاملا سازگار با نرم افزار گرافیکی FTDI EVE Screen Editor می باشد فقط کافی است تا کد خروجی نرم افزار را با کمی تغییر در برنامه کپی کنید و از آن استفاده کنید برای مثال برای نمایش یک Buttom از برنامه زیر استفاده می کنیم.

InitFT800();      // پیکربندی ماژول
CMD(FCMD_DLSTART);           // ایجاد کردن یک صفحه جدید
CLEAR_COLOR_RGB(0, 0, 127);  // تعیین رنگ پس رمینه ال سی دی
CLEAR(1, 1, 1);              // پاک کردن ال سی دی
CMD_FGCOLOR(90, 255, 231);   // تعیین رنگ کلید
COLOR_RGB(48, 48, 48);       // تعیین رنگ متن داخل کلید
CMD_BUTTON(147, 97, 198, 74, 30, 0, "RoboticNGO");  // رسم کلید
DISPLAY();         // پایان نوشتن روی ال سی دی
CMD(FCMD_SWAP);    // نمایش صفحه طراحی شده

برای کارایی آموزشهای داده شده در فیلم فوق لازم است کتابخانه کدویژن و نمونه کدهای این پروژه را از طریق بسته دانش فنی خریداری نمایید.

4 – راه اندازی قسمت صوت ماژول FT800

ابتدا بریم سراغ مدار تقویت کننده قسمت صوت که روی برد ماژول های FT800 و FT810 طراحی شده است .

ایسی تقویت کننده ای که برای بخش صوت استفاده شده LM4871 است .

نکته مهم : برای فعال شدن ایسی تقویت کننده پایه Shutdown که به GPIO1 ماژول FT800 وصل شده است باید صفر شود که برای این کار باید با برنامه نویسی این پایه را ابتدا خروجی و سپس مقدار آن را صفر قرار دهید .

برای مثال کد زیر پایه GPIO1 را صفر و شدت صوت را تنطیم می کند :

    HOST_MEM_WR8(REG_VOL_SOUND, 200);   // Set Volume LEVEL
    HOST_MEM_WR8(REG_GPIO, 0x81);       // Enable AMP Sound

نقل تجربه عملی :

چون در تقویت کننده بالا از فیلتر در ورودی صوت استفاده نشده است خروجی صدا دارای فشه است و کیفیت خیلی خوبی ندارد. مدار پیشنهادی خود شرکت سازنده ماژول FT800 در تصویر زیر براتون آورده‌ایم که دارای کیفیتی به مراتب بهتری است .

در حافظه داخلی FT800 ما 98 تا  Sound Effect و 108 تا  MIDI Note Effect داریم که برای تولید صوت های مختلف کاربرد زیادی دارند همچنین شما می توانید صوت را به فرمت استاندارد تبدیل کنید و با استفاده از ماژول آن را پخش کنید .

در ادامه فیلمی از عملکرد قسمت صوت ماژول تهیه کردیم که می توانید آن را مشاهده کنید .

 

دانش فنی:

از آنجا که تهیه محتوای آموزشی کامل و دقیق زحمات و زمان زیادی را بر دوش تیم فنی پژوهشگران نهاده است، بخشی از آموزشها و مستندات فنی تقدیم شد و بخشی دیگر به صورت غیر رایگان قابل دانلود است که البته با هزینه ای اندک همراه با خدمات پشتیبانی به فروش می رسد، باشد که شاید جبران زحمات و دلگرمی اعضای محترم دپارتمان فنی پژوهشگران باشد:

فروش دانش فنی این محصول متوقف شده است، به صورت جایگزین از دانش فنی مطالب به روز تر استفاده نمایید.(1400.12.29)

چیزی که شما می‌خرید:

  • دو نمونه کد راه اندازی FT800 با و بدون تاچ اسکرین جهت آموزش بخش تاچ و بخش انتشار تصویر و ویجت ها (همراه کتابخانه).
  • یک نمونه کد راه اندازی بخش صوت در قالب پروژه جذاب پیانو است، به همراه فایل های نرم افزار EVE مطابق فیلم.
  • نسخه باکیفیت فیلم آموزشی کار با نرم افزار Eve (رایگان)
  • نسخه باکیفیت فیلم توضیحی کتابخانه و مثال زبان C (رایگان)

قابل ذکر است که این آموزش با توجه به قدمت بسیار زیاد آن از هیچ پشتیبانی و آپدیتی برخودار نیست! البته که با داشتن فایل‌های تکمیلی و مطالعه آموزش های فوق شما بدون هیچ تغییری می توانید پروژه ای را مطابق فیلم ها اجرا کنید.

تیم فنی پژوهشگران

ما گروهی از اعضای قدیمی پژوهشسرای رباتیک مشهد مربوط به سالهای دهه 80 و... هستیم، دور هم جمع شدیم و قصد داریم نتایج R&D خود را در پژوهشگران به تألیف درآوریم...

نوشته های مشابه

‫41 دیدگاه ها

  1. سلام
    میخوام با میکروکنترلر ATmega8 این ماژول رو راه اندازی کنم
    طبق کامنت های موجود باید تنظیمات SPI در پروژه جدید و کتابخانه ها رو آپدیت کنم
    آیا همین کافیه برای من؟
    در ضمن، پایه INT چه کاربردی داره؟
    من هر چی فایل های برنامه و کتابخانه رو بالا پایین کردم کاربردی برای این پایه و اصولا پایه PORTB.2 پیدا نکردم
    منتظر پاسخ پشتیبانی هستم
    با تشکر

  2. خب!
    من خیلی روی این قضیه تلاش کردم! ولی نمایش عکسم بیفایده بود!!!

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

    چون نوع کد هگزی که استفاده میشه خیلی مهمه!

  3. سلام
    من مشکلی که دارم اینه که زمانیکه عکس را میخوام تبدیل به هکس کنم نمیونم چه کیفیتی باید باشه
    نرم افزارهایی که هست ۲۵۶ رنگی یا ۴ کیلو یا ۶۴کیلو رنگی هستند
    مشکلی که پیش میاد اینه که زمانیکه عکس رو میفرستم برای ماژول فقط یک مربع سفید بجای عکس در مکان مشخص شده نمایش داده میشه
    سوال اول اینجاست که چه سایت یا نرم افزاری رو با چه کیفتی بهم برای تبدیل عکس به هگز پیشنهاد میدی که مشکل رو حل کنه؟؟؟
    دوم اینکه برای راه اندازی عکس نرم افزار eve از دستورات خاصی استفاده کرده که تو فیلم آموزشی شما نیست و تو فیلم از دستورات دیگه ای استفاده شده
    من هر دوحالت رو استفاده کردم و نتیجه تنها مربع سفیده
    دیگه کلا گیج شدم…
    چکار کنم؟؟؟

  4. با سلام:
    من تازه برد FT800 رو خریدم و میخوام با میکروSTM32 و محیط KEIL پروژمو انجام بدم
    الان می خوام یک عکس رو نشون بدم روی صفحه نمایش(ال سی دی 5 اینچ رنگی تاچ)نمیدونم چه کار کنم ممنون می شم راهنمایی کنید
    الیته با EVE SCREEN EDITOR کار میکنم و کد هاشم میاد ولی به برنامه ام اضافه میکنم اررو میگیره و میگه این کدهارو نمی شناسه
    BITMAP_HANDLE(0)
    BITMAP_SOURCE(0)
    BITMAP_LAYOUT(ARGB1555, 960, 272)
    BITMAP_SIZE(NEAREST, BORDER, BORDER, 480, 272)
    CLEAR(1, 1, 1)
    BEGIN(BITMAPS)
    VERTEX2II(0, 0, 0, 0)
    END()

  5. دوستان عزیز . این پروژه فقط در حد مثالهای شما کاربرد دارد. چون هییییچ توضیحی در هیچ کجا در مورد برنامه وجود ندارد و هیچ مثال کاربردی وجود ندارد. و عملا غیر قابل استفاده است. بایستی در این برنامه کامنت در مقابل دستورات وجود داشت.

    1. سلام. مسعود عزیز، اول باید بهتون بگم که حق با شماست، این برنامه و آموزش فنی مال یک سال و نیم پیش(مرداد 97) هست،
      خب زمانی که این آموزش ارائه شد، تقریبا میشه گفت هیچ کس اطلاعاتی نداشت و به نوعی این یک تالیف بی نظیر از طرف مجموعه پژوهشگران بود.
      بعد از یک سال و نیم خب خیلی ها مطلع شدن و رشد کردن، اینکه الان انتظارات بالا رفته. لذا همین جا قول می‌دهیم که به زودی یک آپدیت جامع ارائه خواهد شد.
      مشکل این آموزش شاید این باشه که حرفه ای ها و با تجربه ها بهره بیشتری میبرند.لذا با ارائه آپدیت جدید مبتدی ها و حرفه ها همه بهره مند میشوند.

      لطفا بی انصافی نکنید دیگه، کلی آموزش رایگان دادیم که خب راهگشای خیلی افراد بوده و هست، قبلا اصلا کسی نمی دونست نرم افزار Eve چی هست و چه طور کار می کنه و….

      آموزش ها ما همواره دارای یک بخش عمومی و رایگان و یک بخش اختصاصی و تجاری هست.

      منتظر آپدیت بسته دانش فنی باشید، ایمیل میشه به همه ی خریداران

      1. لطف میکنید تو اپدیت جدید قسمت های مرتبط با تاچ رو بهمراه ارسال عکس از SD و توضیحات کلی درمورد دستورات بصورت کامنت در ادامه هر دستور قرار دهید . یک هفته است سردرگم و درگیر پیدا کردن و راه اندازی تاچ هستم و زمان کمی برای تمام پروژه مونده

    1. اولاً سوالتون کامل نبود!
      دوماً چه طور کاربردی نیست؟ هر کسی که قصد بارگذاری عکسی داشته باشد به همین طریق (آموزشهای داخل سایت و برنامه) می تواند عکس دلخواه خود را در نمایشگر نشان دهد.
      آیا شما توانسته اید همان آیکون را مطابق مستندات این آموزش بر روی نمایشگر نشان دهید؟ شما قادر خواهید بود به راحتی همانند همان پروژه برای خود سفارشی سازی کنید.

    1. ما تا به حال به همچین مشکلی برنخوردیم؟
      آیا کسی هست که مشابه این دوستمون به این مشکل برخورده باشه؟؟

      ولی خب، اول از همه نسخه نرم افزار رو عوض کنیم آخرین نسخه رو از داخل سایت خودمون دانلود کنید.
      دوم اینکه سایز عکس، حجم عکس و فرمت اون رو با نرم افزاری مثل Paint، یا فتوشاپ بررسی کنید.(خیلی بزرگ و حجیم نباشه)

    1. سلام و درود مسعود جان،
      دقیقا همون موارد SPI رو باید تغییر بدید و خب سوال شما اینکه چگونه؟
      اگر با کانفیگ پورت SPI آشنا باشید می دانید که رجیسترهای SPCR و SPSR باید مقداردهی بشوند.
      اگر دقت کرده باشید در فایل کتابخانه تابعی هست با نام InitSPI اونجا ما پورت SPI رو به شکل زیر تنظیم کردیم:

      // SPI Type: Master
      // SPI Clock Rate: 2*4000/000 kHz
      // SPI Clock Phase: Cycle Start
      // SPI Clock Polarity: Low
      // SPI Data Order: MSB First

      اگر شما قصد استفاده این کتابخانه در میکروهای دیگر خانواده AVR دارید، کافیست، پورت SPI را مطابق مشخصات فوق مقدار دهی کنید و پارامترهای مربوطه را در رجیسترهای مربوطه قرار دهدید، ارجاع میدهم شما را به همان تابع :


      void InitSPI(void)

      تابع InitSPI در فایل FT800_V1.c کتابخانه قرار دارد.
      ناگفته نماند که ترتیب پایه های مورد نیاز در این ارتباط در فایل FT800_V1.h به شکل زیر:

      #define Crystal 16000000
      #define FT_PD PORTB.3
      #define FT_Cs PORTB.4
      #define Mosi PORTB.5
      #define Miso PINB.6
      #define Sck PORTB.7

      صرفاً جهت اطلاع شما نوشته شده است.

      1. من فقط تو پروژه شما تو محیط کد ویژن از قسمت کانفیگ میکرو رو ۱۲۸ کردم و در قسمت تنطیمات spi که شما هم اشاره کردید تو کتابخانه ft800 اون اعداد پورت spi رو واسه ۱۲۸ خودم تنظیم کردم ولی کار نکرد . آیا باید یه پروژه جدید باز کنم و این کارها را انجام دهم یا همون پروژه شما قابل ویرایش است؟؟

        1. بله معمولا در این مواقع ما توصیه می کنیم که پروژه ای جدید با رعایت پیکربندی های لازم ایجاد شود و کتابخانه و سایر کدهای به آن پروژه اضافه شود. شاید این بهترین و بدون دردسر ترین حالت است، البته که اگر تغییرات را به درسی و کامل انجام دهید شاید نیازی به این هم نباشد.

    1. سلام سعید عزیز.
      این کد از کجاست؟
      مطمئن هستید از کتابخانه استاندارد ما استفاده می کنید؟ من کل کتابخانه و نمونه کدهای ارائه شده در بسته دانش فنی را گشتم ولی این چنین کدی پیدا نکردم!
      چراکه این کد اشتباه است، اساساً نباید از حلقه While استفاده کنید! اصلا شما از کجا می دانید که داخل حلقه گیر می کند، به نظر من اصلا وارد حلقه نمی‌شود، چراکه قبل از اجرا حلقه، مشخص نیست مقدار chipid چقدر است؟!!!

      مضاف بر این قبل از خواندن ID باید چندین رجیستر را مقدار دهی کنید، سپس اقدام به خواندن ID تراشه کنید، تابعی که ما در کتابخانه مخصوص این دانش فنی آماده و ارائه کرده ایم، حدوداً 60 خط کد هست که برای پیکربندی یا همان Init نیاز هست اجرا بشود.

  6. سلام من با کتابخانه شما یک ماژول ft800 رو راه اندازی کردم و بدون هیچ مشکلی در شرایط عادی کار میکنه و مشکل من زمانی هست که یک مصرف کننده به خط برق وصل میشه چه از طریق رله های موجود روی برد یا حتی وصل کردن یک وسیله برقی به برق شهری مجزا از برد اصلی ( لامپ 100 و موتور دیسی با آداپتور جداگانه) که پس از هر چندبار استفاده السیدی قاطی میکنه و تا زمانی که مجدد خاموش و روشن نکم السیدی بالا نمیاد در این هنگ 90 درصد مواقع میکرو به کار خودش داره ادامه میده و لازم به ذکر هست از واتچ داگ برای میکرو مدار اسنابر برای رله ها و فیلتر ای ام ای برای ورودی و خازن های ظرفیت بالا برای ورودی و خروجی رگولاتور ها و تغذیه ترانسی برای میکرو هم استفاده کرده ام ممنون میشم بتونید راهنماییم کنید یا اگه تابعی وجود داره که بشه السیدی رو از نوع ریستارت کرد بفرمایید که انجام بدم

    1. سلام محمد عزیز.
      ماژول FT800 و کلا LCD ها به تغذیه حساس هستند، البته این مشکل شما ربطی به اینها نداره.
      لذا شما باید شرایط ایزوله رو در مدار قدرت و مدار فرمان (میکروکنترلر) فراهم کنید، حتما رله ها و موتورها و… رو به واسطه یک اپتوکوپلر فرمان بدید.
      کلا مدار فرمان رو از مدار قدرت جدا کنید، همیشه موتورها ، رله ها و کلا بارهای سلفی مشکل زا هستند که بهترین راه مقابله با سیگنال ها و نویزهای برگشتی اونها استفاده از اپتوکوپلر و سایر راه کار هایی هست که شما ذکر کردید.

      1. ممنون از پاسخ شما
        مشکل من حتی با ایزوله کردن هم از بین نمیره – مدار من روشن هست و به درستی کار میکنه حالا فرض کنید یک موتور دیسی با تغذیه جداگانه به پریز برق میزنم یا حتی بعضی وقت ها با روشن کردن یک لامپ 100 – السیدی تصویرش سفید میشه و عبارت FTDI رو نشون میده بعضی وقت ها مجدد صفحه برمیگرده اما اکثر مواقع صفحه سفید میمونه تا مدار رو یکبار خاموش و روشن بکنم ممنون میشم بتونید راهنمایی کنید. باتشکر

  7. با سلام و خسته نباشید
    اگر بخواهیم چند صفحه داشته باشیم ، چگونه از صفحه اصلی به صفحات فرعی رفته و باز گردیم.مانند برنامه نویسی ویژوال از داخل main page به فرم های دیگری رفته و اطلاعات دریافت یا عملیاتی را انجام دهیم.

    1. سلام دوست عزیز
      طبق مثال Abject_V1 که در دانش فنی این محصول قرار داره ما برای داشتن چند منو فقط کافیست، هر صفحه را به صورت مجزا طراحی و به صورت یک تابع در بیاوریم . در این صورت ما با پرش به هر تابع می توانیم یک صفحه جدید داشته باشیم.
      در مثال Abject_V1 از دو تابع زیر الگو برداری کنید :
      void FirstPage(unsigned char Touch);
      void SecondPage(unsigned char Touch);

    1. سلام دوست عزیز
      تابع wrjpgmem دارای دو ورودی است. ورودی اول که باید فایل HEX عکس تون باشه و ورودی دوم آدرس شروع ذخیره فایل است.برای مثال برای ذخیره دو عکس 1کیلوبایتی باید به صورت زیر عمل کرد.
      WrJpgMem(JpgHome,0);
      WrJpgMem(JpgTest,1024);
      عکس اول از آدرس 0 شروع میشه و عکس دوم از آخر آدرس عکس اول.
      برای نمایش عکس اول از تابع
      BITMAP_HANDLE(0);
      BITMAP_SOURCE(0);
      برای نمایش عکس دوم هم باید از تابع
      BITMAP_HANDLE(1);
      BITMAP_SOURCE(1024);
      استفاده کنید .

  8. سلام دوست عزیز
    ساخت و افزودن کتابخانه فونت فارسی کاری بسیار زمان بری هست که فعلا برنامه ای برای آن نداریم.
    ولی شما می توانید متن فارسی خود را داخل فتوشاپ به PNG تبدیل کنید و روی ال سی دی نمایش دهید که البته این امر تو ماژول و کتابخانه FT810 میسر است چون FT800 قابلیت نمایش عکس PNG رو نداره و فقط JPG قبول میکنه.
    پیشنهاد : برای FT800 ، ابتدا پس زمینه ال سی دی و پس زمینه عکس JPG را یکی کنید سپس داخل عکس متن فارسی را تایپ کنید و روی ال سی دی نمایش دهید .

  9. با سلام
    از کتابخانه ای که فراهم کرده اید سپاسگزارم. این کتابخانه شروع کار با ft800 را تسهیل می کند. اگر ممکن است امکاناتی نیز برای افزودن فونت فارسی فراهم کنید تا بتوانیم به زبان فارسی نیز پیغامی را نمایش دهیم. راستی آیا با استفاده از این کتابخانه میتوانیم عکس png هم نشان دهیم که بتوانیم قسمتی از عکس را شفاف (Transparent) کنیم؟
    با تشکر

دیدگاهتان را بنویسید

دکمه بازگشت به بالا