جلسه چهل و هفتم _بررسی دستورات مربوط به ال سی دی گرافیکی در محیط Keil
در جلسات قبل به معرفی ال سی دی گرافیکی و نحوه عملکرد آن پرداختیم و تنظیمات آن را در محیط STM32CubeMX انجام دادیم و پایه های مربوط به ال سی دی را مشخص نمودیم و لیبلی متناسب با عملکرد پایه ها در نظر گرفتیم و در ادامه با نحوه آماده سازی یک عکس برای نمایش بر روی GLCD آشنا شدیم. در این جلسه قصد داریم تا با استفاده از دستورات مربوط به آن، GLCD را راه اندازی نماییم و با نحوه نمایش عکس و متن فارسی و انگلیسی و رسم اشکال هندسی روی آن آشنا شویم.
در ابتدا به معرفی توابع مربوط به پوشه GLCD می پردازیم:
(void KS108_Init(Invert_Mode invert
وظیفه پیکربندی و شروع کار GLCD را بر عهده دارد.
(void KS108_GotoXY(unsigned char x, unsigned char y
برای مشخص نمودن مختصات نمایش از این دستور استفاده می شود که در آرگومان های ورودی آن باید مختصات X و Y نقطه مورد نظر را قرار می دهیم.
(void KS108_SetDot(unsigned char x, unsigned char y, unsigned char color
برای تنظیم یک پیکسل استفاده می شود که دارای سه آرگومان ورودی می باشد و دو آرگومان اول مربوط به مختصات مورد نظر می باشند و آرگومان سوم وضعیت پیکسل را مشخص می کند که می توان پیکسل مورد نظر را روشن یا خاموش نمود.
void KS108_FillRect(unsigned char x, unsigned char y, unsigned char width, unsigned char height, unsigned char color
برای رسم یک مستطیل تو پر از این دستور استفاده می شود که دو آرگومان اول مربوط به مختصات نقطه شروع می باشد و دو آرگومان بعدی مربوط به پهنا و ارتفاع مستطیل می باشند و آرگومان آخر رنگ مستطیل را مشخص می کند.
(void KS108_InvertRect(unsigned char x, unsigned char y, unsigned char width, unsigned char height
برای معکوس نمودن یک محیط چهارظلعی استفاده می شود که دو آرگومان اول مختصات نقطه شروع می باشند و دو آرگومان بعدی مربوط به پهنا و ارتفاع می باشند در صورتیکه پیکسلی در این ناحیه روشن باشند با اجرا این دستور خاموش می شود و در صورتیکه پیکسلی در این محدوده خاموش باشد، روشن می شود.
(void KS108_SetInverted(Invert_Mode invert
کل صفحه در صورتیکه که آرگومان ورودی آن برابر INVERTED باشد تغییر وضعیت می دهد و هر پیکسلی که روشن باشد خاموش می شود و پیکسل های خاموش روشن می شوند.
(void KS108_DrawBitmap(_const unsigned char *bitmap, unsigned char x, unsigned char y, Show_Mode mode
برای رسم شکل از این تابع استفاده می شود که آرگومان اول آرایه ای از دیتای عکس مورد نظر است که قصد داریم تا آن را نمایش دهیم و آرگومان دوم و سوم مربوط به مختصات شروع می باشند و آرگومان آخر نحوه نمایش عکس را نشان می دهد که در این آرگومان اگر مقدار INVERTED قرار گیرد پیکسل های عکس را معکوس می کند به این معنی که در صورتیکه پیکسلی روشن باشد آن را خاموش نمایش می دهد و پیکسل های خاموش را روشن نمایش می دهد.
()KS108_CLSx
از این تابع برای پاک نمودن کل صفحه نمایش استفاده می شود.
توابع مربوط به پوشه Graphic به شرح زیر می باشند:
(void Line(unsigned char x1, unsigned char y1, unsigned char x2, unsigned char y2, unsigned char color
برای رسم یک خط از این تابع استفاده می شود که دو آرگومان اول مربوط به مختصات نقطه شروع خط و دو آرگومان بعدی مربوط به مختصات نقطه پایان می باشند و آرگومان آخر رنگ پیکسل ها را مشخص می کند.
(void Rectangle(unsigned char x1, unsigned char y1, unsigned char x2, unsigned char y2, unsigned char color
برای رسم یک چهار ضلعی تو خالی از این دستور استفاده می شود که دو آرگومان اول مختصات شروع چهار ضلعی می باشد و دو آرگومان دوم مربوط به مختصات پایانی چهار ضلعی می باشد و آرگومان پنجم رنگ مستطیل را مشخص می کند.
void RoundRectangle(unsigned char x1, unsigned char y1, unsigned char x2, unsigned char y2, unsigned char radius, unsigned char fill, unsigned char color
از این تابع برای رسم یک چهار ضلعی با گوشه های گرد استفاده می شود که دو آرگومان اول ، مختصات نقطه شروع و دو آرگومان بعدی مختصات نقطه پایان می باشند و شعاع گرد بودن گوشه ها را بر حسب پیکسل در آرگومان پنجم مشخص می کنیم . آرگومان fill در صورتیکه صفر باشد رسم شکل تو خالی می باشد ولی در صورتیکه مقدار غیر از صفر داشته باشد شکل تو پر رسم می شود. آرگومان آخر هم مربوط به رنگ شکل می باشد.
(void Circle_Fill(unsigned char x, unsigned char y, unsigned char radius, unsigned char fill, unsigned char color
برای رسم دایره از این تابع استفاده می شود که دو آرگومان اول مربوط به مختصات شروع دایره می باشند و آرگومان سوم شعاع دایره به پیکسل می باشد و آرگومان چهار مشخص می کند که دایره تو پر باشد یا تو خالی. آرگومان آخر نیز رنگ شکل را مشخص می کند.
توابع مربوط به کتابخانه Font به شرح زیر می باشند:
(void LcdFont(_const unsigned char *pointer
از این تابع برای انتخاب فونت استفاده می شود که نام فونت مورد نظر را در آرگومان ورودی این تابع قرار می دهیم
(void SetLetter(Lt_Mode L
برای انتخاب زبان از این دستور استفاده می شود که می توان فونت فارسی یا انگلیسی باشد.
void TextBox(unsigned short x1, unsigned short y1, unsigned short x2, unsigned short y2, char *str, unsigned char style
برای نمایش متن از این تابع استفاده می شود که دو آرگومان اول مختصات شروع و دو آرگومان بعدی مختصات پایان متن می باشد. آرگومان پنجم متن مورد نظر می باشد و آرگومان ششم نوع نمایش متن می باشد که می تواند حالت چپ چین یا راست چین و وسط چین را انتخاب کرد. همچنین می توانیم انتخاب کنیم که دور متن کادری قرار بگیرد یا خیر و گوشه کادر را می توانیم گرد کنیم.
با استفاده از این دستور می توانیم متن فارسی یا انگلیسی را نمایش دهیم فقط قبل از آن باید زبان فارسی یا انگلیسی مشخص شود و فونت متناسب با زبان نیز انتخاب گردد.
در صورتیکه برای نوشتن متن فارسی دچار مشکل شدید از منو Edit گزینه Configuration را انتخاب نمایید.
با باز شدن پنجره مربوط به آن در سربرگ Editor در قسمت Encoding گزینه Encode in ANSI را انتخاب نمایید
پس از انجام این تنظیمات فایل main.c را توسط نرم افزار Notepad++ باز نمایید و از منوی Encoding حالت Encoding in ANSI را انتخاب کنید و متن فارسی مورد نظر خود را تایپ کنید و پس از آن Save نمایید.
با انتخاب فایل Keil پیغامی مبنی بر تغییر در فایل نمایش داده می شود که شما باید اجازه اعمال تغییرات را صادر نمایید پس باید گزینه Yes را انتخاب کنیم پس از انجام این مراحل متن فارسی باید در نرم افزار کیل نیز به درستی نمایش داده شود و پس از آن با پروگرام کردن برنامه باید متن فارسی بدون مشکل نمایش داده شود.
در ابتدا GLCD پیکربندی می شود پس از آن نمایشگر پاک می شود و عکس مورد نظر روی نمایشگر نمایش داده می شود.
با اجرای این دستورات ابتدا یک مستطیل تو پر رسم می شود و پس از آن یک ناحیه چهار ظلعی معکوس می شود و در انتها کل صفحه نمایش معکوس می شود.
پس از گذشت 1500 میلی ثانیه صفحه نمایش پاک می شود و ابتدا یک خط روی نمایشگر رسم می شود و پس از آن یک مستطیل با گوشه های گرد و تو پر رسم می شود و پس از آن یک دایره رسم می شود.
در این قسمت زبان انگلیسی انتخاب می شود و فونت متناسب با آن نیز انتخاب می شود و متن مورد نظر روی نمایشگر نمایش داده می شود و پس از آن زبان فارسی انتخاب می شود و فونت متناسب با آن انتخاب می شود و متن فارسی روی نمایشگر چاپ می شود.
در انتها می توانید شماتیک مربوط به این جلسه و برنامه (keil , STM32CubeMX) آنرا دانلود نمایید.
دلتون شاد و لبتون پر خنده
محمد هادی دشتی
برای مشاهده آموزش جلسه اول(معرفی هسته آرم و میکروکنترلرهای 32 بیتی شرکت ST ) کلیک کنید.
برای مشاهده آموزش جلسه دوم( معرفی نرم افزارهای مورد نیازجهت برنامه نویسی و پروگرام ) کلیک کنید.
برای مشاهده آموزش جلسه سوم( نحوه دانلود آخرین نسخه از نرم افزار STM32CubeMX ) کلیک کنید.
برای مشاهده آموزش جلسه چهارم(نحوه انجام تنظیمات در نرم افزار STM32CubeMX ) کلیک کنید.
برای مشاهده آموزش جلسه پنجم(نحوه برنامه نویسی پروژه چشمک زن با نرم افزار Keil ) کلیک کنید.
برای مشاهده آموزش جلسه هشتم( نحوه راه اندازی ال سی دی کاراکتری-قسمت اول) کلیک کنید.
برای مشاهده آموزش جلسه سیو دوم(دوره آموزشی میکرو کنترلرهای STM32 _ معرفیSPI (بخش اول)) کلیک کنید.
برای مشاهده آموزش جلسه سی و سوم(دوره آموزشی میکرو کنترلرهای STM32 _ معرفیSPI (بخش دوم)) کلیک کنید.