نمایش/عدم نمایش سایدبار
رفتن به بالای صفحه

پسوردتو فراموش کردی؟
Avatar

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

سلام دوستان smile خب برای ادامه کتابخونه چند تا مبحث قبل رو یاداوری میکنم، یادتون باشه جلسه قبل یک تابع نوشتیم برای اینکه دیتا رو به LCD بفرستیم؟ خب دیگه این دفعه کلا با همین تابع کار داریم و بقیه توابعمون رو بر اساس همین تابع مینویسیم… ( راه اندازی نمایشگر nokia 5110 با stm32 جلسه 3 )
راه اندازی نمایشگر nokia 5110 با stm32 جلسه 3

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


اولین تابعی که باید بنویسیم تابع ایشنال ال سی دی خواهد بود که پیکر بندی اولیه ال سی دی رو انجام بده البته این تابع رو قبلا نوشتیم ولی فقط پورت ها رو ورودی خروجی میکرد حالا باید چنتا کامند به ال سی دی بدیم تا اوکی بشه لیست کامند هایی که میشه به ال سی دی فرستاد، دیتاشیت لطف کرده تو صفحه 14 گفته :
دیتاشیت PCD8544
تابعی که قبلا برای پیکربندی اولیه ال سی دی مینویسیم تو جلسه قبل پارامتر های اولی این تابع رو توضیح دادم که میاد پورت ها رو خروجی میکنه و… حالا الان میایم چنتا کامند هم توی همون تابع به ال سی دی میفرستیم با تابعی که جلسه قبل نوشتیم تحت عنوان

خب تابع ایشنال ال سی دی رو با این اسم مینویسیم

تابع خروجی نداره و ی ورودی داره که کاربردش اونجاس که بخوایم چندتا ال سی دی بزنیم به میکرو؛ پس کل تابع ایشنال ال سی دی میشه :

توضیحات خطوط اول رو که جلسه قبل دادم این کامند ها هم به صورت کامنت جلوشون توضیح هست که هر کدوم چیکار میکنن؛ میمونه ی تابع که اینجا برای پاک کردن ال سی دی استفاده شده اونم باید اینجوری بنویسیم ( توضیحات رو بعد از نوشتن تابع ست پیکسل میدم که قابل فهم تر شه )؛ میریم سراغ تابعی برای روشن و خاموش کردم یک پیکسل توی این صفحه چون که ما به مختصات در محور Y به صورت بیتی دسترسی نداریم باید یک متغیری به صورت ارایه بسازیم به ابعاد ال سی دی یعنی 6*84 اسمشو هم من میزارم BMP و توی ی استراکچر معرفی میکنم

اینجوری ما برای هر پیکسل یک متغیری داریم که دیتای رم ال سی دی رو توی میکرو میاریم و پردازش میکنیم؛ حالا میایم تابع مینویسم برای روشن کردن هر پیکسل

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

این توابع هیچکدوم خروج نداره smile توضیحات برای تابع رسم پیکسل هم بدم اینه که

این خط میاد مختصات پیکسلی که قرار بود 1 بشه رو توی ارایه bmp که معرفی کردیم 1 میکنه

این خط هم تغیرات ایجاد شده رو منتقل میکنه روی ال سی دی
 
یک تابع هم برای پاک کردن یک پیکسل یا 0 کردن ان مینویسیم با همین روش هست ولیکن به جای | یا OR از & یا and استفاده میکنیم؛ دیتای ورودی رو هم به صورتی بیتی نات کنیم و از ~ استفاده میکنیم
توضیحات در ویکی پدیا : ++Operators in C and C
پس تابع پاک کردن پیکسل میشه این :

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

این تابع یک مختصات میگیره و یک رنگ طبیعتا رنگ 1 به معنای روشن بودن پیکسل هست و رنگ 0 به معنای خاموش بودن پیکسل؛ حالا اگه ورودی ما 1 بود تایع میاد اون مختصات رو با استفاده از تابع N5110_DrawPixel روشن میکنه و اگه 0 بود میاد اون مختصات رو با تابع N5110_ClearPixel خاموش میکنه.
 
خب حالا میریم سراغ تابعی برای کلیر کردن ال سی دی که اول برا ازش استفاده کردیم و توضیحات نوشتنش رو برای بعد گذاشتیم؛ برای کلیر کردن کل ال سی دی لازم هست که اون ارایه رو 0 کنیم؛ بعد کل ارایه رو روی کل صفه بریزیم تا ال سی دی کلا پاک بشه پس اینجوری مینویسیم :

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

ماکزیمم مقدار کنتراست 127 دسیمال یا 7X هگز هست که این شرط میاد بررسی میکنه اگر بیشتر از این مقدار بود مقدار 127 رو براش در نظر میگیره :

توضحات کامند کنتراست توی دیتاشیت به این صورت اومده :
دیتاشیت PCD8544
باید مقدار کنتراستی که میخوای ذخیره بشه رو توی بیت های 0-6 بنویسیم و بیت 7 ام هم 1 کنیم :

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

الگوریتم کار تابع اینجوری هست که میاد در یکfor در راستای Y و در یک for در راستای X حرکت میکنه و دیتای متناظر رو از ارایه در میاره و با دستور

به رم ال سی دی منتقل میکنه …
 

 
برای این جلسه کافی هستش انشالله مفید واقع شده باشه براتون
این رو هم بخونید بد نیست بدونیم چرا پیشرفت نداریم : مدارس عالی فناوری در ژاپن
برام دعا کنید؛ با ارزوی موفقیت برای شما و کشورمون smile

گروه پرسش و پاسخ الکترونیکی در سروش
پسورد فایل های سایت :
www.dmf313.ir
Avatar به شما توصیه میکنم سربازی نرید / با این قیمت دلار نمیشه الکترونیک کار کرد / برای مهاجرت به USA با لاتاری سال 2020 برنامه هایی دارم افرادی که در این ضمینه با من موافق هستن (تحقیقات کامل خودتون رو از اینترنت انجام بدید و سوالت رو از من نپرسید) برای ایجاد کمپین و مهاجرت دسته جمعی مشخصات ارتباطی خودتون برای من ایمیل کنید zamanimahdi@icloud.com در سابجکت ایمیل حتما بنویسید "لاتاری" به امید موفقیت :)
ارسال دیدگاه
8

1) تعداد حروف فارسی کمتر از ۵ تا باشه, دیدگاه به صورت خودکار حذف میشه.

2) به موارد درخواست پروژه/کد آماده و سوالاتی که بلد نباشم پاسخ داده نمیشه.

3) برای گزاشتن کدهاتون از این سایت استفاده کنید : debian

  1. Avatar

    مهمان

    علی مسگر

    بسیار عالی سایت پربرکتی هست.

    1396/06/03
    07:07
  2. Avatar

    مهمان

    حسن

    مرسی عالی بود heart

    1396/05/06
    06:33
  3. Avatar

    مهمان

    ramin

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

    1396/04/29
    10:38
  4. Avatar

    مهمان

    مسعود

    خیلی عالی.
    منتظر جهارمیش هستیم. هیچ جا نمیریم همینجا هستیم. laugh

    1396/04/13
    04:12
  5. Avatar

    مهمان

    محمد

    آره چون حافظه sram توی میکروهای stm32 بیشتر از ۱kb هست میشه بجای خوندن از حافظه gram ال سی دی ، توی یک آرایه مختصات این پیکسل ها رو داشت .

    1396/04/11
    07:10
    • Avatar

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

      مهدی زمانی

      توی avr هم اینکار رو میشه انجام داد زیاد جا نمیخواد و رم اشغال نمیکنه yes

      1396/04/12
      10:26
  6. Avatar

    مهمان

    محمد

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

    1396/04/11
    01:05
    • Avatar

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

      مهدی زمانی

      خواهش میشه تابعی تحت عنوان خوندن از ال سی من یاد ندارم بنویسم ولیکن دیگه لازم نیست اینو بنویسیم و از ال سی دی بخونیم ما مختصات پیکسل های روشن و خاموش رو داخل ارایه ای که ساختیم برای DRAW PIXEL داریم یعنی با این کار خوندن پیکسل رو دور زدیم و از من بعد تمام فونت ها و تمام توابع دیگه بر اساس همین drawpixel کار میکنن پس همیشه رم ال سی دی توی bmp ذخیره هستش yes

      1396/04/11
      09:07