ال سی دی گرافیکی بخش دوم قسمت ۱۳

در قسمت قبل آموزش به نحوه اتصال راه اندازی و نمایش متن و متغییر ها پرداختیم(قسمت اول آموزش را در اینجا مطالعه کنید)

در این قسمت در ادامه آموزش قبلی می خواهیم تصاویر ذخیره شده در حافظه میکرو را بر روی نمایشگر نمایش دهیم

lcd-vision2

برای این کار مثل دفعات قبل یک پروژه انتخاب کرده و ال سی دی گرافیکی با درایور KS0108 را به پروژه اضافه کرده و پایه های اتصال آن را تنظیم کنید. همان طور که می دانید این نوع ال سی دی تک رنگ بوده و فقط قادر به نمایش عکس های با دو رنگ کاملا سیاه و کاملا سفید می باشد و همچنین برای اینکه بتوان تصاویر را در حافظه میکرو ذخیره کرد باید عکس را تبدیل به کد هگز کرده و آن را به برنامه اضافه نمود.

برای تبدیل عکس به کد هگز شما به نرم افزار های تبدیل کننده عکس به کد هگز نیاز دارید که یکی از آنان هنگام نصب کدویژن ۳٫۱۲ نصب می شود نام نرم افزار LCD VISION می باشد.

lcd-vision

نرم افزار فوق انواع فرمت های عکس را میتواند به فایل هگز تبدیل کند ولی برای اینکه نمایشگر ما تک رنگ می باشد بهتر است عکس مورد نظر را به سایز ۱۲۸x64 یا کوچکتر و رنگ سیاه و سفید تبدیل کرده سپس به نرافزار lcd vision وارد کنیم برای تغییر رنگ عکس به سیاه سفید از نرم افزار paint خود ویندوز استفاده کرده و هنگام ذخیره فرمت Monochrome Bitmap را انتخاب کنید مانند شکل زیر:

paint

پس از ذخیره نرم افزار LCD VISION را اجرا کنید و از تب فایل New Image را انتخاب کرده و نوع نمایشگر را مانند شکل زیر انتخاب کنید:

lcd1

سپس از تب File گزینه Import Image را انتخاب کرده و عکس قبلی را وارد برنامه کرده سپس از تب فایل گزینه Export را بزنیدlcd2

سپس Save Export را زده و گزینه C Code را انتخاب کرده و در محل پروژه ذخیره کنید:

lcd3

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

برای وارد کردن عکس از دستور include استفاده کرده و آدرس و نام عکس را داخل آن مینویسیم در این پروژه عکس ها را در پوشه image در همان محل پروژه ذخیره کرده ایم پس کد بصورت زیر است:

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

در تابع بالا xوY همان موقیعیت شروع عکش هستند و image نام تابع عکس می باشد برای فهمیدن نام تابع عکس فایل هگز عکس را باز کنید همان طور که در تصویر زیر میبینید نام تابع عکس sun می باشد.lcd4

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

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

همان طور که میبینید چهار عکس را در حافظه فلش میکرو ذخیره کرده ایم و در حلقه برنامه با فاصله زمانی ۱ ثانیه به نمایش در می آوریم خروجی در برنامه پروتئوس بصورت زیر است:

lcd5

دانلود فایل های این پروژه به همراه فایل شبیه سازی شدهلینک کمکی(رمز فایل فشرده :www.agd.ir)

 

29 دیدگاه در “ال سی دی گرافیکی بخش دوم قسمت ۱۳

  1. یازم میگم خیلی ممنون
    ایشالله زود سربازیت نموم شه کارم ره افتاد
    فقط چند تا سوال:
    وقتی با کدویزارد میزنم ی سری کد دیگه اولش قبا تابع void ایجاد میشه اونا برای چیه
    و سوال دوم:
    glcd_init_data.readxmem=NULL;
    glcd_init_data.writexmem=NULL;
    null برای چیه؟معنیش چیه؟
    یک دنیا ممنون

    1. اگه منظورت کد های تنظیم اولیه پورت و تایمر و … هست که لازم نیست وارد کنی چون خود میکرو بصورت دیفالت این تنظمات روش هست مگه اینکه از کدویزارد تنظیمات اولیه رو تغییر داده باشی.
      اون دوتا کدی رو هم که نوشتی اگه بخوای برای نمایش عکس از مموری خارجی استفاده کنی باید بجای NULL اولی اسم تابعی که عکس رو از مموری میخونه و برای دومی اسم تابعی که تو مموری مینویسه رو جایگزین کنی من که تا حالا استفاده نکردم و چون اینجا مموری خارجی نداریم NULL نوشتیم.

      1. unsigned char read_ext_memory(GLCDMEMADDR_t addr)
        {
        unsigned char data;
        // Place your code here

        return data;
        }

        // Function used for writing image
        // data to external memory
        void write_ext_memory(GLCDMEMADDR_t addr, unsigned char data)
        {
        // Place your code here

        }

        منظورم این قسمت کد که بعد کتابخونه ها میاد وقبل تابع VOID

        آها راستی چرا مقدار فرکانس ال سی دی تغییر دادی و از کجا فهمیدی چند باشه؟

        1. آهان اون کد ها همون دو تابع خواندن و نوشتن از مموری خارجی هست بخاطر اون اضافه شده که تو کد ویزارد تیک Use Image Storage in External memory فعال کردی , اگه اون تیک رو بزنی این دو تا تابع رو اضافه میکنه و اسمش رو هم بجای همون دو تا NULL مینویسه.
          در مورد فرکانس هم تو پروتئوس ال سی دی کار نمی کرد(قبلا کار میکرد الان نمیدونم چش شده) بخاطر همون فرکانس رو بالا بردم دیدم کار کرد. اطلاعات خاصی در مورد فرکانسش ندارم.

          1. سلام جناب،خیلی ممنون واسه کد فوق العادتون،
            ی سوال داشتم:
            من تعداد عکس ها تو برنامم خیلی زیاده به همین دلیل حافظه داخلیم کاملا پر شده،میشه توضیح بدی برای مثال با چه کدی ی تصویرو بنویسم رو ی حافظه خارجی و بخونمش؟

  2. با سلام

    در حال نوشتن برنامه‌ای برای یک سیستم آبیاری اتوماتیک هستم که دارای یک lcd کارکتری است که زمان طی شده (ثانیه،دقیقه،ساعت،روز،هفته)را نمایش می‌دهد و برای محاسبه زمان از مٔد ctc با تایمر ۱و وقفه استفاده کرده ام.ولی در شبیه سازی پروتووس گاهی‌ اوقات صفحه lcd چشمک می‌زند.دومین سوال این است که یک مٔد انتخاب گذاشته‌ام که با آن میتوان مدت زمان آبیاری را افزایش یا کاهش داد اما با فشردن هر یک از کلیدهای up و down عمل افزایش یا کاهش بسیار کند (هر ۲ ثانیه )انجام میشود .چه طور میتوانم سرعت آن را بالا ببرم.ضمنا از میکرو مگا ۳۲ استفاده کرده ام.

    با تشکر

  3. سلام

    در پروژه‌ای که کارمیکنم تمام متغیر‌ها از نوع char هستند. آیا بهتر است برای صرفه جویی در میزان حافظه هنگام احضار آنها در توابع از pointer استفاده کنم؟

  4. با سلام و سپاس از زحمات شما من فایلهای کنترل (هدر) مربوط به ال سی دی گرافیکی و فونتش را در پروژتون پیدا نکردم میشه راهنمایی کنید آنها را چطور می تونم بگیرم ممنون از شما

    1. سلام
      فایل هایی که شما میخواهید فایل های استاندارد خود کدویژن هست و نیازی نیست که در فایل پروژه موجود باشد و برنامه بدون مشکل کار خواهد کرد
      همون طور که میدونید فایل هایی که بین دو علامت “<>” هستند در خود کدویژن موجود هستند.
      در صورتی که هنگام کامپایل کدویژن به این فایل ها ایراد بگیرد احتمالا نسخه کدویژن شما قدیمی است

  5. سلام. ممنون از مطالب خوبتون. من پروژه شم رو دانلود کردم وقتی در کد ویژن کامپایل می کنم اروری که می دهد ناشناخته بودن تابع glcd_putimagef است. در واقع حتما این تابع درون کتاخانه glcd.h تعریف نشده است که حتی افایلglcd.h نیز درون فایلهای پروژه نبود.لطفا راهنمایی کنید

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

  7. سلام مهندس عزیز.من میخوام عکسم داخل lcd گرافیکی توسط ولتاژ بالا و پایین بشه چیکار باید انجام بدم؟راستی این کارم برای انداختن عکس داخل lcd انجام دادم اما eror داد.میشه راهنماییم کنی.گیرم خیلی

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

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

  10. ی مشکل دیگه هم داشتم اونم اینه که غیر از فونت ۷×۵ فونت دیگه ای نداره؟
    من تو مثالای خود کدویژن دیدم داشت ولی با فایل هدرش کپی کردم تو برنامه خودم ارور گرفت

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

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *