لینک : قسمت معرفی کتابخانه

 

لینک اولین قسمت راهنمای استفاده

 

با درود مجدد .

 

در قسمت قبل توضیح دادم که وقتی کتابخانه رو خریداری میکنید چه فایلهایی رو دریافت خواهید کرد و هر کدام از اونها مربوط به چه چیزی هست .

در این قسمت قصد دارم در مورد راه اندازی و اجرای کتابخانه روی میکرو کنترلر      stm32    توضیح بدم .

از اونجا که مبحث تاچ با LCD پیوند خورده و lcd  های مختلف با پروتکل های ارتباطی مختلفی در بازار وجود دارد بحث ارئه یک مثال واحد برای راه اندازی   تاچ کمی حالت چالشی دارد .

با توجه به این موضوع 3 راه برای راه اندازی وجود دارد .

 **************************************************

1 -  راه اندازی با استفاده از فایل هگز ارائه شده در صفحه معرفی  ( راه حل آسان)

2 -  راه اندازی با استفاده از پروژه  (مثال ) همراه کتابخانه ( راه حل کمی مشکلتر)

3 -  راه اندازی با استفاده از ساختن یک پروزه و اضافه کردن فایلهای کتابخانه و GUI به آن( راه حل طولانی ) که در واقع میشه همون مطالب مربوط به  راهنمای استفاده از کتابخانه  که  در آینده منتشر خواهم کرد .( فعلا با این روش کاری نداریم )

****************************************************

****************************************************

****************************************************

1- راه اندازی با استفاده از فایل هگز( روش آسان) :

 

  اگر دقیقا این lcd   را در اختیار دارید  ( اینجا )   میتونید با استفاده از فایل هگز و توضیحاتی که به همراهش وجود داره اون رو راه اندازی کنید و عملکردش رو مشاهده نمایید .

 در این روش پایه های lcd  وtouch  رو همسان با توضیحات داخل فایل ، به میکرو کنترلر متصل میکنید و فایل هگز را روی میکرو کنترلر بارگزاری میکنید و تمام .

عملکرد برنامه را خواهید دید .

دانلود فایل هگز و راهنما

**************************************************

****************************************************

2 -  راه اندازی با استفاده از مثال همراه کتابخانه :

 

     این مثال یک پروژه ست که با نرم افزار True Studio  تولید شده آما فاقد کتابخانه ای برای lcd  هست و شما باید خودتان یک کتابخانه lcd را اضافه نمایید .

این شامل 2 حالت میشود.

 

****************************************************

 1 - اضافه کردن کتابخانه lcd    که  خودم از اون استفاده کردم :

 

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

بعد از تهیه فقط کافیست پوشه کتابخانه  lcd  رو به پروزه اضافه نمایید تنظیمات مربوط به lcd   را انجام بدید و پروژه را کمپایل کنید .

چگونگی اتصال پایه های  lcd  و تاچ  به میکرو کنترل در فایل cube MX   همراه پروژه وجود دارد

 .

نمایی از چینش پایه ها را در تصویر زیر میبینید.

 

 

در تصویر زیر پایه های CS , RS . WR ,RST  و   D0…15 مربوط به lcd  هستند.

 و پایه های PEN_IRQ , T_CS و SPI1-MISO  , SPI1-MOSI,  SPI1-SCK     مربوط به تاچ هستند .

 

***********************************************

2 – راه اندازی با یک کتابخانه دلخواه برای LCD :

 

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

با توجه به این موضوع که به دلیل طولانی بودن نمیشه تمام مطالب رو اینجا توضیح بدهم ،بنابر این مطالب اصلی و کلیدی را در این قسمت توضیح میدم و لازم است که بقیه جزئیات رو شما باید با نگاه کردن به کدهای مثال همراه متوجه بشوید. .

 

برای اینکار لطفا مراحل زیر رو دنبال کنید .

 

1 -  ابتدا با استفاده از فایل CUBE MX   همراه پروزه تنظیمات لازم را برای پایه های تاچ و LCD انجام دهید  .

یا حتی روش بهتر این هست که فایل Cube MX  همراه پروژه رو برای استفاده از LCD  خودتان ویرایش کنید و پروژه رو دوباره بسازید .

( پایه های مربوط به تاچ در تصویر بالا توضیح داده شده است )

توجه : SPI  سخت افزاری با توابع هال به درستی کار نمیکند . حداقل در نسخه  CUBE MX  مورد استفاد ه من چنین است . پس بهتر است که در تنظیمات توابع مورد استفاده  SPI را به جای HAL  روی LL تنظیم نمایید.

 

2- ابتدا کتابخانه ی lcd  مورد نظر را به پروژه اضافه نمایید و تتنظیمات مربوطه را انجام دهید. ( بهتر است قبل از استفاده از کتابخانه LCD  آنرا تست کنید تا از عملکرد درست آن مطمئن شوید)

 

3 - در مرحله بعد کتابخانه تاچ و GUI  همراه تاچ ( توی مثال همراه پروژه وجود دارد ) را به پروژه اضافه نمایید و مسیر پوشه ها را به کمپایلر معرفی نمایید .

توجه : برای اضافه کردن کتابخانه تاچ و gui  به پروژه لطفا از فایل main.c کمک بگیرید.

 

 

4 – حالا نوبت به تنظیمات کتابخانه تاچ و اتصال  کتابخانه LCD (یا به عبارت بهتر معرفی توابع مورد نیاز،) به کتابخانه تاچ میرسد .

 

****************************************************

4-1 - تنظیمات قسمت درایور xpt2046  :

 

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

 

 

 

ماکروی XPT2046_COR_TYPE ( خط 22)   :

 نوع میکرو کنترلر را انتخاب کنید .

 

ماکروی XPT2046_SPI_UNIT ( خط 27):

     مشخص شده از کدام  SPI استفاده شده است (  نام روبه روی این ماکرو از استاندارد نام گذاری استاندارد پریفرالها (cmsis  )

    استفاده شده است .

 

ماکروی XPT2046_CPU_Fخط(32) :

فرکانس هسته را مشخص میکند.

 

ماکروی XPT2046_CS_PORT  : پورت مورد استفاده پایه CS را مشخص میکند ( برا ساس نام گذاری cmsis )

 

ماکروی XPT2046_CS_PIN : شماره  پین مورد استفاده پایه CS را مشخص میکند( 0 تا 15) .

 

تنظیمات درایور در اینجا تمام شده. حال نوبت به تنظیمات تاچ میرسد.

 

****************************************************

4-2- تنظیمات قسمت touch :

 

از پوشه touch  فایل touch_conf.h را باز کنید . محتویات این فایل را در تصویر زیر میبینید.

  

ماکروی TOUCH_ORIGIN_THAN_LCDORIGIN_FOR_CALIB ( خط 20 ) :

 

این ماکرو زاویه بین مبداlcd  و مبدا touch را به کتابخانه معرفی میکند .

برای تعیین این زاویه لطفا به تصویر زیر توجه کنید .

 

در تصویر زیر جهت چرخش در جهت عقربه های ساعت هست . و از مبدا lcd  شروع میشود .

و جایگاه مبدا تاچ زاویه رو مشخص خواهد کرد .

به طور مثال در تصویر بالا زاویه مبدا تاچ میشه 180 درجه .

 

ماکروی TOUCH_WIDTH ( خط 38):

   این ماکرو تعداد پیکسلهای  عرض( ستون ها ) lcd  را مشخص میکند.

 

     ماکروی       TOUCH_HEIGHT( خط 39) :

این ماکرو تعداد پیکسلهای ارتفاع( سطرهای) lcd  را مشخص میکند.

 

توجه : دو ماکرو بالا را مطابق با ابعاد Lcd مورد استفاده خودتان تغییر دهید.

 

در اینجا تنظیمات قسمت تاچ به پایان رسید

 

****************************************************

4-3 - اتصال کتابخانه lcd  به کتابخانه touch :

 

از همان پوشه touch   لطفا فایل  touch_link.h را باز کنید .

 

محتویات این فایل را در تصویر زیر میبینید .

 

توضیح:

در این فایل است که ما توابع مورد نیاز در ارتباط با lcd رابه کتابخانه touch  معرفی و کتابخانه lcd  را به کتابخانه touch  متصل خواهیم کرد

ابتدا:

خطوط 22 و23 ( کادر قرمز) را به صورت کامنت در بیاورید و به جای آن فایلهای مربوط به کتابخانه lcd  خودتان را پیوست کنید .

 بعد :

در بخش LCD Func   ( کادر سبز)ماکروهایی را میبینید که  با استفاده از آنها توابعی از کتابخانه lcd  را که کتابخانه/touch  از آنها استفاده میکند را به کتابخانه touch  معرفی میکنیم.

شما باید نامهای روبه روی این ماکروها را پاک کنید و به جای آن اسم تابع مورد نظر از کتابخانه lcd  خوددتان را به همراه پرانتز( باید به فرم تابع باشد) را اضافه نمایید .

این ماکروها رو در زیر توضیح میدم .

 

ماکروی touch_alcd_clear()   ( خط32)  :

 تابع پاک کردن صفحه نمایش را معرفی میکند .

 

ماکروی touch_get_lcd_width() ( خط 33):

تابعی که تعداد پیکسلهای عرض ( ستونها )  lcd  را برمیگرداند ،  را به کتابخانه معرفی میکند .

 

ماکروی touch_get_lcd_height()(خط34) :

تابعی که تعداد پیکسلهای ارتفاع ( سطرها)  lcd  را برمیگرداند ،  را به کتابخانه معرفی میکند .

 

توجه : در کتابخانه  lcd  که خودم ارئه کردم  از آنجا که قابلیت چرخش صفحه نمایش را دارد . توابعی که به دو ماکروی بالا معرفی شده اند ،

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

اگر کتابخانLcd مورد استفاده شما ، قابلیت چرخش صفحه را ندارد ، به جای تابع ، تعداد پیکسلهای ارتفاع و عرض Lcd    را به ماکروهای بالا معرفی نمایید .

اما به خاطر داشته باشید درهنگام اجرای gui   دگمه چرخش را لمس نکنید.

 

ماکروی touch_draw_request_point(color,x1,y1,x2,y2) (خط37)    و touch_draw_accepted_point(color,x1,y1,x2,y2)(خط38)  :

 

توضیحات این 2 ماکرو شبیه هم هست .

زمانی که کالیبراسیون اجرا میشود ، کتابخانه یک نقطه را در Lcd  نمایش میدهد و از کاربر میخواهد که آن نقطه را لمس کند.

من  برای اینکار تابع رسم مسطیل توخالی را به ماکروی touch_draw_request_point معرفی کردم .

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

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

 

این 2 ماکرو متغییر هایی دارند که توضیح آنها به شرح زیر هست :

 Color :  کد رنگ

X1  = شمار ستون نفطه  گوشه بالا چپ مستطیل

Y1 :  شماره سطر نقطه گوشه بالا سمت چپ مستطیل

 

X2  = شمار ستون نفطه  گوشه پایین راست مستطیل

Y2 :  شماره سطر نقطه گوشه پایین راست مستطیل

 

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

ماکروی TOUCH_REQUEST_POINT_COLOR(خط39 ) :

 رنگ نقطه مورد درخواست رو در هنگام کالیبراسیون به کتابخانه معرفی میکند و روبه روی آن میتوانید کد رنگ مورد نظر خودتانس را بنویسید .

 

ماکروی TOUCH_ACCEPTED_POINT_COLOR(خط40):

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

 

 

در قسمت gui هم از توابع مربوط به کتابخانه lcd  مانند رسم مستطیل ، نوشتن متن و غیره استفاده شده است . نحوه ی مختصات دهی توابع در قسمت gui  هم شبیه ماکروهاای بالا است .

یشنهاد میکنم ابتدا پروژه را کمپایل کنید  .  و سپس هر تابعی را که در قسمت gui  ناشناخته تشخیص داده شد را به صورت ماکرو ( دیفاین ) (شبیه کاری که در بالا توضیح دادم )  برای کمپایلر معرفی نمایید .

 

در فایل bottom_conf.h   ماکروهایی وجود دارد که کد رنگ دگمه های GUI  بوسیله آنها مشخص شده است .

در مقابل انها کدهای رنگ مورد نظر خودتان را بر طبق کتابخانه lcd  مورد استفاده  معرفی نمایید .

 

البته  میتوانید قسمت GUI را حذف کنید که در این صورت فقط قسمت کالیبراسیون اجرا خواهد شد .

 

اگر تمام مراحل بالا رو به درستی انجام داده باشید  پس موفق شدید کتابخانه lcd  خودتان را به کتابخانه  touch  متصل نمایید و تنظیمات لازم را انجام دهید .

 

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

 

امیدوارم توانسته باشید با استفاده از این مطالب کتابخانه   touch  را  راه اندازی کنید .

موفق و پیروز باشید .

 

 

لینک قسمت قبل

لینک قسمت بعد

 

 

 

پستهای مرتبط :