نمایش/عدم نمایش سایدبار
رفتن به بالای صفحه
أَللّهُمَّ ارْزُقْنی شَفاعَةَ الْحُسَیْنِ یَومَ الْوُرُودِ
مهدی زمانی

راه اندازی نمایشگر nokia 5110 با stm32 جلسه آخر

397

سلام smile : از تاخیری که به وجود امده عذر خواهی میکنم, بریم سراغ راه اندازی نمایشگر nokia 5110 با stm32 جلسه آخر ؛ یه یاد اوری از جلسه قبل بگذاریم تا بعد؛ اخرین تابعی که جلسه قبل برای LCD نوشتیم تابع رفرش ال سی دی بود (اپدیت کردم محتوای ارایه به محتوای رم ال سی دی ) :
راه اندازی نمایشگر nokia 5110 با stm32 جلسه آخر

راه اندازی نمایشگر nokia 5110 با stm32 جلسه آخر


حالا چندتا تابع دیگه لازم داریم تا بنویسیم یکی از این توابع نمایش عکس هستش که به این صورت عمل میکنیم :

ارگومان اول : مشخص کننده کدام LCD متصل هستش، یعنی برای متصل کردن چند ال سی دی به یک میکرو کنترلر (برای جاهایی که پیکسل برای نمایش کم میاریم ) کاربرد پیدا میکنه.
ارگومان دوم : نشان دهنده ارایه ای هست که کد های مربوط به تصویر در ان ذخیره شده.
ارگومان 4 ام : نشان دهنده موقعیت رسم تصویر در روی X
ارگومان 5 ام : نشان دهنده موقعیت رسم تصویر در روی Y
و ارگومان 6 ام : نشان دهنده رنگ رسم تصویر اس ( به صورت نات(جا به جایی رنگ های سیاه و سفید) یا به صورت معمولی طبق کدهای ارایه )

خب بریم سراغ اصل تابع؛ توی تابع چندتا متغیر در نظر میگیرم برای ذخیره سازی مقادیر :

متغیر اول یک ارایه هست برای ذخیره سازی بیت های هر ردیف دیتا از ال سی دی ( توضیحات جامع تر در جلسه 1 )
متغیر i یک متغیر برای تکرار حلقه for و متغیر repeat فلگ برای شمارش دفعات تکرار  حلقه for و pic_x برای اندازه گیری طول تصویر و pic_y برای اندازه گیری عرض تصویر در نظر میگیرم؛ x,Y هم متغیر هایی هستند برای تکرار حلقه فور در راستای X و Y؛ ارگومان های اول و دوم در ارایه تصویر ما به ترتیب نشان دهنده طول تصویر در X و طول تصویر در Y هستند؛ پس برای دریافت طول تصویر در X مقدار 0 ام ارایه ورودی تابع را خوانده وبه متغیرpic_x میریزیم :

برای دریافت عرض تصویر در Y مقدار 1 ام ارایه ورودی تابع را میخوانیم و به متغیر pic_y میریزیم :

حالا باید دوتا شرط بزاریم اگر ابعاد تصویر از ابعاد LCD بزرگتر بود و قابلیت رسم را نداشت از تابع خارج شویم؛ برای این کار باید بدانیم مختصات شروع رسم تصویر را که در ورودی تابع گرفته بودیم و همچنین ابعاد ال سی دی را که در اول کتابخونه دیفاین کرده بودیم؛ پس اگر طول تصویر + موقعیت رسم تصویر در محور X کوچکتر از طول ال سی دی بود و اگر عرض تصویر + موقعیت رسم تصویر در محور Y کوچکتر از عرض ال سی دی بود تصویر قابلیت رسم دارد؛ پس مینویسیم :

حالا به یک فور نیاز داریم تا مختصات حرکت تصویر را در جهت Y بسازد برای اینکار هم از متغیر Y استفاده میکنیم.
نکته : چون تصویر باید از موقعیت ypos شروع به رسم کند پس مقدار اولیه متغیر برای رسم تصویر ypos و مقدار پایانی ان ypos+pic_y خواهد بود.

به یک فور دیگر در فور جاری نیاز داریم تا مختصات X را برای ما بسازه و چون شروع رسم تصویر در راستای X باید برابر با xpos باشه و مقدار پایان فور باید xpos+pic_x باشد مینویسیم :

حالا باید دیتا ها رو متناسب با ارایه تصویر به رم ال سی دی منتقل کنیم؛ داخل حلقه اول به متغیر تکرار اضافه میکنیم :

بعد چون که ما دیتا ها رو به ال سی دی به صورت بیتی منتقل میکنیم پس باید بایت هایی که در ارایه تصویر ذخیره شدن رو به بیت تبدیل کنیم و توی متغیر data ذخیره کنیم برای اینکار هم مینویسیم :

خب حالا یک تابع دیگه لازم داریم تا 8 بیت متغیر رو از ما دریافت کنه + موقعیت x و Y و بایت ها رو به رم ال سی دی منتقل کنه؛ اینحوری توی این تابع میاد ورودی ها رنگ و دیتا و موقعیت X و Y را دریافت میکنه و اونهارو در قالب یک فور 8 تایی به رم ال سی دی منتقل کنه :

تابع رو اینحوری تعریف میکنم؛ یم متغیر برای تکرار حلقه در تابع معرفی میکنم :

از دستور switch برای تشخیص رنگ ( 0 بودن یا 1 بودن ) استفاده میکنم :

حالا اگر رنگ 0 بود :

دیتا ها با تابعN5110_set_pixel به صورت کامل به رم ال سی دی منتقل میشن ولی اگر رنگ ما 1 بود باید دیتای انتقالی رو نات کنیم پس مینویسیم :

خب حالا کل تابع میشه این :

حالا برای انتقال دیتا های تصویر به رم ال سی دی در تابع N5110_show_pic از این تابع که الان نوشتیم استفاده میکنیم؛ و بایت اطلاعاتی که به صورت بیتی تبدیل کرده بودیم رو به بیت تبدیل میکنیم و به تابعی که نوشتیم میدیم :

پس کل تابع رسم تصویر ما رو ال سی دی میشه :

خود ال سی دی یک قابلیتی داره برای نات کردن کل صفحه که باید کامند متناظر اون رو به ال سی دی منتقل کنیم برای اینکار هم تابع زیر رو مینویسیم :

حالا باید یک تابع بنویسیم برای نمایش کاراکتر اول از همه باید یک جدول برای فونت ها داشته باشیم :

این فونت ها توی فایل font.h هستش که در فایل ته مطلب قرار داره و میتونید دانلودش کنید به همراه کتابخونه؛ حالا به یک تابع نیاز داریم تا کاراکتر رو از ورودی دریافت کنه و کد تصویر متناظر رو از ارایه فونت دریافت کنه و روی ال سی دی نمایش بده :

تابع رو اینحوری مینویسم ورودی ها هم که مشخص هستن دیگه توضیح نمیدم؛ داخل تابع چدنتا متغیر اینحوری تعریف میکنیم :

برای تبدیل کاراکتر ورودی به کد کاراکتر در جدول (تبدیل کد اسکی ) باید متغیر کاراکتر ورودی رو 32- کنیم :

و همانند تابع نمایش تصویر عمل میکنیم و یک تصویر در ابعاد کوچیک تر روی ال سی دی نشون میدیم به این صورت :

پس کل تابع میشه این :

یک تابع دیگه هم داریم نات کاراکتر رو بنویسه که اون تابع هم به شکل زیر نوشته میشه :

خب حالا یک تابع رو نیاز داریم تا رشته بنویسه رو ال سی دی بنویسه تابع رو اینجوری تعریف میکنم  :

توی تابع برای رنگ مشکی و ایجاد کادر یک مستطیل با ابعاد بزرگتر از فونت رسم میکنیم تا بتوانیم رنگ قسمتی از ال سی دی را عوض کنیم :

اولین کاراکتر را از رشته ورودی دریافت کرده و بر با تابع قبلی بر روی ال سی دی نشان میدهیم :

کل تابع به صورت زیر میباشد :

خب توضیحات اضافه ای راجب کتابخانه نمیدم ولیکن توابع بیشتری برای راحتی کار توی کتابخونه وجود داره که هرکسی میتونه ازشون استفاده کنه؛ از انجایی که این کتابخانه به عنوان اولین تجربه من توی کتابخونه نوشتن بوده ( جاهایی که میشد با کد های ساده تر نوشت و من ننوشتم با سلیقه خودتون اصلاح کنید ) laugh
هربنه مطلب : و از انجایی که این کتابخونه زحمات زیادی کشده شده هزینه دانلود کامل آن 10 تا صلوات برای ظهور امام زمان(عجله الله تعالی) هستش.

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

 

تو دعاهاتون منم دعا کنید؛ اگر هم از کتابخونه استفاده کردید فیدبک کارتون رو توی نظرات بزارید تا ببینم این کار برای چند نفر مفید بوده؛ موفق باشید heart

Betmaster India

درباره : 
تعداد مطالب : 20 تا
مهدی زمانی هستم متنفر از کلیشه های تکراری پادگان انجام پروژه های التیوم و برنامه نویسی میکروکنترلر پذیرفته میشود تلگرام : @stm32f اینستاگرام:zamanimahdi77 ایمیل:timahdizamani@gmail.com
ارسال دیدگاه
15
نظرات این مطلب بسته شده است.
  1. hamid

    مهمان

    hamid

    از کتابخانه استفاده کردیم کار نکرد کار خودت هم نبود اینگار یه دو سه خطش رو دست زده بودی که رد پات مونده بود ایشالا تلاش میکنی بازم ازاین کپی پیست های بدون تست میزاری واقعا لایق دعا نبود شرمنده ولی نفرین و لعنت هم نفرستادم خدا بالای سر شاهده بالاخره همینشم کلی به کارم اومد ولی 4 روز وقتمو گرفت تا دو باره کل کتابخانه رو بازنویسی کنم. برای بستری که گذاشتید تشکر ولی کلی کار داشت که حالا باید از خودم تشکر کنم.

  2. hamid

    مهمان

    hamid

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

  3. hamid

    مهمان

    hamid

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

  4. behnam

    مهمان

    behnam

    سلام و خسته نباشید
    واقعا مطالب سایتتون رو هیچ جای دیگه نمیشه پیدا کرد، بهتون خسته نباشید میگم. یه درخواست داشتم، لطفا آموزش هایی که میزارین با استفاده از کامپایلر keil باشه چون احتمالا کسایی که با keil کار میکنن خیلی بیشترن.
    و این که من میخوام lcd 1202 nokia 98*64 رو با میکرو stm32f103rct راه اندازی کنم. چیزی که من ازش فهمیدم اینه که با پروتوکل spi باید باهاش کار کنی. لطفا اگه کمکی میتونین کنین یا تو ایمیل بهم خبر بدین یا توی سایت بزارین .
    ممنون ok

  5. حسینی

    مهمان

    حسینی

    سلام
    خیلی ممنون از زحماتتون
    امکانش هست یک پروژه که با این کتابخانه کار کردید رو برا نمونه برام بزارید
    ممنونم

    مشاهده پاسخ ها (2)
  6. STM8S

    مهمان

    STM8S

    با عرض سلام و ادب
    بنده روزی با کمک گرفتن از مطالب سایت شما برای میکرو stm8 سورس راه اندازی lcd nokia 5110 نوشتم و با ذکر منبع، سورس و نرم افزار تبدیل عکس به کد که از سایتتون گرفته بودم رو برای چند نفر ارسال کردم
    ممکنه اونها اون مطالب رو رو سایت یا کانالشون (با یا بدون ذکر منبع) قرار بدن، آیا حق الناسی بر گردن من هست؟

    مشاهده پاسخ ها (2)
    • STM8S

      مهمان

      STM8S

      راستی یادم رفت بگم که در ذکر مرجع اشتباها فقط گفتم نرم افزار تبدیل مال سایت شما بوده و به اینکه در کد زدن هم از مطالبتون استفاده کردم، اشاره ای نکردم؛ لطفا این موضوع هم در پاسختون لحاظ کنید.

      • مهدی زمانی

        نویسنده این مطلب

        مهدی زمانی

        مهندس بر هر حال بهتر بود ذکر منبع باشد
        اما از اینکه شما خودتون این موضوع رو گفتید من مشکلی با ذکر نکردن منبع فقط برای شما ندارم
        و واقعا از حرکتی که کردید خوشم اومد
        ولیکن اگر امکانش هست سورس راه اندازی رو برای من ایمیل کنید یا به تلگرام من بدید (@stm32f)
        به اسم خودتون برای استفاده سایر دوستان روی سایت منتشر کنم heart

  7. Ali

    مهمان

    Ali

    سلام
    خسته نباشید
    آموزش arm رو میگذارید؟؟؟
    یا یه مرجع کامل از آن wink

    مشاهده پاسخ ها (1)
  8. Ali

    مهمان

    Ali

    سلام
    ممنون بابت سایت خوبتون
    Arm آموزش نمیدید؟؟؟
    یا یه مرجع کامل از اون رو میشه معرفی کنید

  9. ramin

    مهمان

    ramin

    سلام
    دستتون درد نکنه
    میشه لینک دانلود رو اصلاح کنید؟

    مشاهده پاسخ ها (1)
    • مهدی دمرچیلو

      مدیر سایت

      مهدی دمرچیلو

      سلام آقا رامین – از این ورا – لینک اصلاح شد. good