آموزش AVR قسمت 5 ال سی دی کاراکتری

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

آموزش راه اندازی ال سی دی
آموزش راه اندازی ال سی دی

ال سی دی های کارکتری اغلب دارای 14 پایه هستند که 8 پایه برای انتقال اطلاعات 3 پایه برای کنترل نرم افزاری یک پایه برای کنترل سخت افزاری و دو پایه تغذیه می باشد در جدول زیر اطلاعات پایه ها رو می توانید مشاهده کنید:

توضیحات

نام

پایه

پایه (-) تغذیه

vss

1

پایه(+) تغذیه

vcc

2

کنترل درخشندگی صفحه

VEE

3

انتخاب دستور داده

RS

4

فعال ساز خواندن یا نوشتن

R/w

5

فعال ساز

E

6

دیتا

DB0

7

دیتا

DB1

8

دیتا

DB2

9

دیتا

DB3

10

دیتا

DB4

11

دیتا

DB5

12

دیتا

DB6

13

دیتا

DB7

14

پایه + روشنایی صفحه( +بک لایت)

A

15

پایه – روشنایی صفحه(- بک لایت)

k

16

 

در این قسمت از آموزش فقط به نحوه اتصال و راه اندازی LCD خواهیم پرداخت و به نحوه کارکرد و رجیستر های راه اندازی داخلی آن پرداخته نخواهد شد.

برای شروع یک پروژه جدید ایجاد کرده و ذخیره کنید (در مطالب قبلی نحوه ایجاد پروژه آموزش داده شده)

سپس از منوی Project > configure  صفحه تنظیمات پروژه رو باز کنید در آنجا از تب C compiler به تب Libraries تب Alfanumeric LCD alcd.h رفته و تیک Enable Alfanumeric LCD support را بزنید با فعال کردن این گزینه منویی باز می شود که از شما می خواهد پایه های اتصال میکرو به ال سی دی را مشخص کنید چون در این پروژه از پورت A استفاده شده تغییری در نحوه اتصال پایه ها ندادیم در پایان ok را بزنید.

نحوه تنظیم lcd در کدویژن
نحوه تنظیم lcd در کدویژن(روی تصویر برای بزرگنمایی کلیک کنید)

حال باید فایل کتابخانه ای ال سی دی را به پروژه اضافه کنید:

حال باید با چند تابع آشنا شوید:

lcd_init(lcd_columns);

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

lcd_clear();

این تابع lcd را پاک کرده و مکان نما را در سطر و ستون صفر قرار می دهد.

lcd_gotoxy(x,y);

تابع فوق مکان نمای ال سی دی را در سطر x و ستون y قرار می دهد و باید به جای x و y عدد سطر و ستون مورد نظر جا گذاری شود.

lcd_putchar(c);

این تابع برای نمایس یک کارکتر بر روی ال سی دی استفاده میشود بجای c کارکتر مورد نظر قرار می گیرد

lcd_puts(str);

این تابع برای نمایش یک رشته که در حافظه SRAM در avr قرار دارد به کار میرود

lcd_putsf(str);

تابع فوق برای نمایش یک رشته در حافظه فلش استفاده می شود.

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

در این پروژه از یک ال سی دی 2×16 استفاده می کنیم که براحتی در بازار قابل یافت می باشد که در رنگ های مختلف با نور صفحه یا بدون نور صفحه آن موجود است در نوع مجهز به نور پشت صفحه، ال سی دی دارای 2 پایه اضافی 15 و 16 است که به ترتیب پایه + و – نور صفحه می باشد که باید به ولتاژ 3 ولت یا با یک مقاومت 330 اهم یا 470 اهم به 5 ولت وصل شود.

پایه 3 یا VEE پایه تنظیم کنتراست تصویر است که معمولا به یک پتانسیومتر که یک سر پتانسومتر به ال سی دی پایه دیگر به خط منفی و پایه دیگر به مثبت وصل می شود وصل می کنند ولی بهترین کار استفاده از یک مقاومت 4.7کیلو اهم بین پایه VEE و خط منفی است.

در این پروژه و اغلب پروژه ها ال سی دی به صورت 4 بیتی راه اندازی می شود و به ندرت از حالت 8 بیتی استفاده می شود.در حالت 4 بیتی از پایه های 7 تا 10 ال سی دی استفاده نمی شود برای بستن ال سی دی از مدار زیر استفاده کنید:

نحوه اتصال LCD
نحوه اتصال LCD

 

مثال بعدی:

در مثال بلا همه چیز گویاست بجز خط 3 و 15 که جدید هستند.در خط 3 کتابخانه ای به برنامه اضافه شده که برای کار با متغییر های رشته ای است(منظور از رشته متغییر های غیر عددی مانند حروف الفبا) این کتابخانه که بعدا در موردش توضیح داده خواهد شد برای برش دادن یا اضافه کردن یا … برای اعمال تغییرات بر روی متغییر های رشته ای است.در اینجا یک تابع از این کتابخانه در خط 15 استفاده شده است چون نمی توان مستقیما متغییر i را بر روی ال سی دی نشان داد آن را تبدیل به یک متغییر رشته ای می کنیم که بدین صورت می باشد:

sprintf(متغییر عددی,متن دلخواه,متغییر رشته ای);

تابع بالا متغییر عددی را در قسمت دلخواه متن دلخواه قرار داده و در متغییر رشته ای ذخیره می کند که در مثال بالا متغیر i را بجای d% قرار داده و در متغییر 16 کارکتری b ذخیره می کند. بجای متن دلخواه در مثال بالا از هر متنی می توانید استفاده کنید فقط در هر جایی از متن که می خواهید متغییر i نمایش داده شود باید d% بنویسید یک نمونه دیگر:

در جلسات آینده در مورد این توابع توضیح داده خواهد شد.

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

مثال 3:

ساخت یک تایمر ساده با ال سی دی

در مثال بالا در خط 19 می خواهیم متغییر ها را تبدیل به رشته کرده و فرم دهی کنیم تا در بین هر عدد : نشان داده شود باز به جای هر متغییر از d% استفاده می کنیم و در پایان به تعداد d% ها متغییر ها را به ترتیب قرار می دهیم که اول  h نمایان گر ساعت m برای دقیقه و s برای ثانیه در تابع قرار می دهیم .در ضمن در قسمت متن دلخواه چند عدد space یا خط فاصله زده شده تا ساعت در هنگام افزایش و کاهش درست نمایش داده شود

“%d:%d:%d            “

در صورتی که متوجه نمی شوید منظور چیست، مقدار فاصله فوق را حذف کرده سپس برنامه را کامپایل کرده و در پرتئوس اجرا کرده و منتظر باشید 59 ثانیه بگذرد تا ببینید چه اتفاقی خواهد افتاد.

در خط 20 نیز مکان نما را به سطر و ستون اول یا صفر ال سی دی بر می گردانیم می توانید این دستور را حذف کنید تا ببینید چه اتفاقی رخ خواهد داد یا می توانید از تابع lcd_clear() به جای آن استفاده کنید این عملیات را انجام دهید تا یاد بگیرید ولی در نهایت همان دستور انتقال مکان نما بهتر جواب می دهد

دانلود این پروژه (فایل شبیه سازی پروتئوس و پروژه)   (لینک کمکی)

تمرین: به پروژه فوق سه کلید برای تنظیم ثانیه و دقیقه و ساعت اضافه کنید.

در صورتی که اشکالی دارید یا در آموزش ها اشکالی می بینید از قسمت نظرات اطلاع دهید!

81 دیدگاه در “آموزش AVR قسمت 5 ال سی دی کاراکتری

  1. واقعا عالی بود هر چی از اموزشهای شما می گذره بیشتر از میکرو خوشم میاد در ضمن بابت اینکه اموزش رو خبر دادین ممنون .
    منتظر آموزش های بعدی هستم .

  2. باسلام بی زحمت یه برنامه میخوام بنویسم 16*2 خط بالا iran ازچپ به راست و خط پایین 1393 از راست به چپ و این دو همزمان با هم حرکت کنن .ممنوم

    1. دستوراتی که برای انتقال صفحه نمایش موجود هستند تمام سطر ها را باهم حرکت میدهند ولی من از حرکت دادن یک سطر به طرفین مجزا اطلاعی ندارم دو خط زیر برای انتقال کل صفحه نمایش به طرف چپ و راست می باشد:
      _lcd_write_data(0x1c);
      _lcd_write_data(0x18);
      دستور اول کل صفحه نمایش را یک ستون به سمت راست و دستور دوم به چپ منتقل می کند اما این برای بر نامه شما جوابگو نیست و برای برنامه شما می توان از برنامه زیر استفاده کرد:

      j=12;
      for(i=0;i<12;i++){
      j--;
      lcd_gotoxy(i,0);
      lcd_putsf(" iran");
      lcd_gotoxy(j,1);
      lcd_putsf("1393 ");
      delay_ms(100);
      }

      اگر سوالی در مورد کد بالا دارید من در خدمتتان هستم

  3. سلام،میلاد امام زمان رو به تمام دوستان تبریک عرض می کنم.دمت گرم سالار.عالی بود.فقط بی زحمت pdf آموزش هارو هم بزار.

  4. سلام ی سوال دارم
    من ی مدار دو قسمتی ساختم(البته هنوز پیاده نکردم تو پروتیوس و برنامه نویسی ام)
    قسمت اول اتمگا16 هست که ولتاژ آنالوگ ی سنسورگازو به دیجیتال تبدیل میکنه بعد با فرستنده ی RF اونو میفرسته به مدار دوم
    قسمت دوم اتمگا16+ گیرنده RF که اون ولتاژ دیجیتالو میگیره و باید روی LCD نمایش بده که مشکل اینجاست که عدد نمایشی که مثلا باید 1500 باشه
    مداوم تغییر میکنه به 1500 و 0000 و ثابت نیست بین جواب و صفر مداوم تغییر میکنه.
    چیکار کنم؟
    meisamfeli71@gmail.com

  5. اگه سه کلید برای تنظیم ثانیه و دقیقه و ساعت بخوایم اضافه کنیم چجوری میشه کدمون ؟
    من که از پسش بر نیومدم یعنی نمیدونم از کدوم خط باید دستو اضافه کنم !
    راهنمایی کنین ممنون ….

  6. سلام
    ممنون
    یه سوال هم داشتم
    سلام
    ممنون میشم اگه کسی اینو جوا بده
    بخش ھايی از کد تنظيمات مربوط به کار باADC در مود Ato Trig و در حالت free running به صورت زير است:
    // Alphanumeric LCD initialization
    // Connections are specified in the
    // Project|Configure|C Compiler|Libraries|Alphanumeric LCD menu:
    // RS – PORTD Bit 0
    // RD – PORTD Bit 1
    // EN – PORTD Bit 2
    // D4 – PORTD Bit 4
    // D5 – PORTD Bit 5
    // D6 – PORTD Bit 6
    // D7 – PORTD Bit 7
    // Characters/line: 8
    // AAAAAAAAAAAAAAAA
    ;(lcd_init(16
    // BBBBBBBBBBBBBBBB
    ADMUX=ADC_VREF_TYPE & 0xff;
    ADCSRA=0xAB;
    //ADMUX = ADMUX | 0b0010000;// it doesnt works
    ADMUX &= 0b11100000;
    ADMUX = ADMUX | 0b0000011;
    //ADCSRA = ADCSRA & 11101111;
    ADCSRA = ADCSRA |0x40;
    //CCCCCCCCCCCCCCCCC
    //)lcd_init(16

    // Global enable interrupts
    #asm(“semi “)
    (while (1
    …}



    در کد بالا تنظيمات lcd قبل از از تنظيمات ADC قرار گرفته است. که دستور مربوطه با کامنت “AAAAA…نکردن برنامه با تغيير فوق چيست؟” مشخص شده است. ھمچنين تنظيماتADC پس از کامنت “BBBBBB…//” آمده است.
    کد بالا در شبيه سازی به درستی رفتار ميکند اما در صورتی که دستور lcd_init از ” AAAAA//” به ” CCCC..//” منتقل شود. در شبيه سازی ارايه شده مقادير آنالوگ خوانده نميشوند و برنامه درست کار نميکند.
    سوال: با جابه جايی دستور ()lcd_init چه اشکالی در برنامه تنظيم ADC ايجاد ميشود؟ دليل کار نکردن برنامه با تغيير فوق چيست؟

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

  8. سلام
    ببخشین من یه پروژه دارم که باید برنامه نویسیشو با کدویژن انجام بدم اما بلد نیستم ونیاز به کمک دارم
    پروژم”بافعال نمودن یک وقفه وفشار سوئیچ,یک. دیود نوری درپایه دیگر خاموش یاروشن شودودر ال_سی_دی وضعیت دیود نوری نوشته شود”
    لطفا کمکم کنین خیلی لازم دارممم.منونم

    1. با سلام خدمت دانش جویان عزیز، بنده درباره الکترونیک یک علم دست و پا شکسته ای دارم امید وارم به دردتان بخورد .
      در پاسخ دوست عزیزمان که می خواهد با فشار دادن کلید یک ال ای دی روشن کند باید عرض کنم که برنامه به این شکل است :
      ;If PIN A.0==1
      ;PortA.1
      else PORT A.1=0;

  9. برنامه کد ویژنشو چطور بنویسم.تو حلقه while چی بنویسم که با زدن کلید ال ای دی روشن بشه ووضعیتش تو ال سی دی نوشته شه

  10. سلام، من برنامه ای با کد ویژن میخواستم که کاراکتر ستاره رو به صورت زیگزاگی رو ال سی دی کاراکتری حرکت بده به صورت زیر:
    * * * * * * * *
    * * * * * * * *
    خواهش میکنم زود جواب بدین

    1. سلام در کتابخانه استاندارد خود کدویژن دستوری برای به حرکت در آوردن ال سی دی کارکتری وجود ندارد برای به حرکت درآوردن متون ال سی دی باید دستور شیفت را به ال سی دی ارسال کرد برای اطلاعات بیشتر به این لینک مراجعه کنید http://www.iranled.com/forum/thread-22358.html

  11. سلام لطفا جواب این برنامه رو بمن بگید…برنامه ای بنویسید که اسم خودتان را در صفحهlcd حرکت داده و با فشردن دکمه وقفه،متوقف کند….در برنامه کدویژن

      1. سلام خسته نباشید ببخشید من ۲تا برنامه باید بنویسم توی کدویژن با شبیه سازی توی پروتئوس
        ۱-سطر اول lcd را یک سمت یک چهاراه و سطر دوم آن را سمت دیگر چهاراه در نظر بگیرید به طوری که در هر سطر رنگ چراغ راهنمایی آن سمت بصورتgreen،yellow،redنشان داده شود ودرصورت قرمز بودن یک سمت زمان انتظار بر حسب ثانیه کنار رنگ نمایش داده شود.برنامه ای بنویسید که در ابتدا چراغ سمت دوم قرمز وچراغ سمت اول به مدت ۱۰ثانیه سبز باشد و سپس به مدت ۱ثانیه چراغ سمت اول زرد شده باشد و سپس سمت اول قرمز ودوم به مدت ۸ ثانیه سبز و ۱ ثانیه زرد شود و این مراحل دائما تکرار شوند.
        لطفا اگ میشه راهنمااییم کنید من خیلی عجله دارم

  12. سلام من هر برنامه ای مینویسم توی avr ی ارور میده حتی مثال سوم شما رو هم کپی کردم اونجا همین ارور رو داد ‘undefined symbol ‘sprintfمثلا برای برنامه ای که شما نوشتید همین مثال سوم لاین ۱۹رو ارور میده و این ارورشه خواهشمندم کمک کنید

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

  14. سلام و تشکر به جهت تلاش برای تقویت علم و دانش در ایران عزیزمان.
    یک سوال داشتم ممنون میشم جواب بدین من تمامی کارهایی که گفتین رو انجام دادم ولی هیچ کلمه یا تغییری روی lcd ظاهر نشد در عین روشن بودن lcd
    چیکار باید بکنم؟

  15. سلام

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

    خیلی عالی با زبان ساده ,راحت مطالب را بیان کردید

    در پناه خدا

  16. سلام
    یک عددی رو رویLCDنمایش دادیم. حالا از چه راهی باید از این عدد خروجی بگیریم. یعنی مثلا اگر نوشتیم ۱۲۳۴، عدد ۱پایه A.0 رو فعال کنه ، عدد ۲ پایهA.1رو فعال کنه و برای ۳ و ۴ هم همین طور

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

  18. سلام
    من یه برنامه برای lcd نوشتم که این برنامه کامل در پروتیوس اجرا میشه اما وقتی برنامه رو روی برد بورد پیاده میکنم به صورت حروف ناخوانا و نامرتب میاد.یه برنامه دیگه هم برای سون سگمنت نوشتم تا امتحانش کنم,بازم در پروتیوس اجرا شد ولی روی برد بورد آوردم حروف رو نامرتب نشون میده.از progisp هم استفاده میکنم.اتصالات رو هم چندین بار چک کردم ولی جواب نداد.به نظر شما مشکل از کجا میتونه باشه؟ممنون

    1. فرکانس کاری برنامه و خود میکرو رو چک کنید.
      چک کنید jtag میکرو غیرفعال باشه و یا LCD به پورت jtag میکرو وصل نباشه
      دیگه موردی به ذهنم نمیرسه
      در صورتی که مشکل حل نشد پروژه رو برام بفرستید.

  19. سلام ممنون از مطالب مفیدتون
    من یه سوال داشتم که در قالب تحقیق باید به استادمون تحویل بدم، هر چقدر هم گشتم موضوعی در موردش پیدا نکردم … چه طوری مشه در avr بدون استفاده از توابع کتابخانه ای یک lcd رو با زبان c ارتباط داد ؟

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

      1. منظورتون از اینکه به نمایشگر ارسال کنم چیه ؟ یعی مثلا به جای clear باید ۰x01 رو در چی بریزم ؟ من فردا باید این تمرینو تحویل بدم و فکر نمی کنم شما برسید انجام بدید

        1. برای ارسال دستور clear باید پایه های RS و RW صفر باشه و مقدار ۰x01 یا همون یک رو روی پورتی که به ال سی دی وصل کردی بریزی یا به عبارت دیگه پایه DB4 ال سی دی ۱منطقی یا همون ۵ولت و پایه های ۵ و ۶ و۷ صفر باید باشد بعد یک تاخیر حدود فکر کنم ۴ نانو باید باشه و سپس مقدار ۰x00 رو باید ارسال بکنی بقیه دستورات هم به همین شکل

    1. خیلی ساده می شه am pm رو به پروژه اضافه کنید پیشنهاد میکنم خودتون کمی برنامه رو تغییر بدید تا یاد بگیرید.
      در ضمن پروژه ساعت فوق دقیق نیست و جهت آموزش در اینجا آورده شده در آینده پروژه های ساعت دقیق اضافه خواهد شد

  20. سطراولLCDرایکسمتیکچاارراه وسطردو آنرا سمتدیگرچاارراهدرنظربگیرید.بهطوریکهدرهر
    سطر رنگ چراغ راهنمایی آن سمت بصورت Red, Yellow, Green نشان داده شود و در صگورت قرمگز بگودن یگک
    سمت زمان انتظار بر حسب ثانیه کنار رنگ نمایش داده شود. برنامه ای بنویسید که در ابتگدا چگراغ سگمت دو قرمگز و
    چراغ سمت اول به مدت ده ثانیه سبز باشد و سپس به مدت ۶ ثانیه چراغ سمت اول زرد شده باشد و پس از آن سگمت اولقرمزوسمتدو بهمدت۸ثانیهسبزو۶ثانیهزردشودواینمراحلدائماتکرارشوند.
    ۳- برنامهای بنویسید که در آن عبارت Micro از سمت راست سطر اول LCD وارد شود و از سمت چپ آن خارج شود.

  21. سلام
    میخواستم ببینم میشه جهتlcdرو عوض کرد؟منظورم اینه که مثلا اگهlcdمون۲*۱۶طوری برنامه رو بنویسیم که۱۶*۲بشه؟
    متشکرم

  22. سلام خسته نباشید.
    ببخشید میشه کد ساعت رو با حلقه های for تو for بگید.؟؟؟
    من هر کاری می کنم فقط ساعت رو به صورت ثابت نشون میده.یعنی ثانیه شمار و دقیقه شمار و ساعت شمار عدداش تغییر نمی کنن.!!!!!!؟؟؟؟؟
    ممنون میشم اگه جواب بدید… مرسی

  23. سلام. کسی میتونه برنامه شمارنده تک رقمی که از صفر تا نه بشمره و بعد روی lcd هم نمایش بده برام بنویسه. تشکر

  24. با سلام خدمت شما دوست عزیز
    تو کدی که واسه ساعت نوشتید یه lcd_clear() کم داره تو حلقه while(1) که به صورت زیر درمیاد داخل حلقه:
    while(1)
    {
    s++;
    if(s>59){m++;s=0;}
    if(m>59){h++;m=0;}
    if(h>23){h=0;m=0;s=0;}
    sprintf(b,”%d:%d:%d”,h,m,s);
    lcd_clear();
    lcd_gotoxy(0,0);
    lcd_puts(b);
    delay_ms(1000);
    }

  25. سلام …اقا من یه سوال فنی داشتم من می خوام رو lcdیه برنامه ای بنویسم که از صفر تا پنجاه و نه بشمره اما lcdعدد به صورت کد اسکی میشناسه می خوام بدونم چجوری عدد تبدیل به کد اسکی کنم در ضمن میدونم که هر عددی که بخوام باید orکنم با عددسی..فقط میشه یدونه مثال بزنید که من روشش یاد بگیرم ..ممنون

    1. #include //فایل کتابخانه مگا۳۲
      #include //فایل کتابخانه ال سی دی کارکتری
      void main (void){
      lcd_init(16); //تابع اصلی برای راه اندازی ال سی دی ۱۶ ستونه
      lcd_clear(); // پاک کردن صفحه
      lcd_putsf("25 ");//نوشتن یک متن با حداکثر ۱۶ کاراکتر
      }

  26. سلام من برنامه رو پیاده کردم ولی بعد از اینکه the nam if god پاک میشه هیچی روی ال سی دی نمایش داده نمیشه.
    چیکار کنم؟
    در ضمن همه ی خط های برنامه رو چک کردم.

  27. با سلام
    برای نمایش ثانیه و دقیقه و ساعت بصورت دورقمی چه باید کرد؟
    مثلا بجای ۲:۴۰:۹ به اینصورت نمایش بده ۰۲:۴۰:۰۹
    ممنون میشم اگه جواب بدین

    1. با سلام
      بایستی در قسمت sprintf به شکل زیر عمل کنید
      Sprintf(st,”02%d”,sec
      در این حالت دو جا خالی برای ثانیه قرار میگیرد که جایی که عدد نباشه صفر میزاره مثل ۰۵

  28. سلام خسته نباشید
    متن فارسی رو که حرف به حرف هستش رو با دستور _lcd_write_data(0x18); چطوری میشه شیفتش داد؟ از دستور gotoxy نمیخوام استفاده کنم از حلقه ی for هم که به طبع نمیشه استفاده کرد
    با تشکر

  29. با سلام
    منم مثل دوستمون این مشکل رو دارم
    “سلام من هر برنامه ای مینویسم توی avr ی ارور میده حتی مثال سوم شما رو هم کپی کردم اونجا همین ارور رو داد ‘undefined symbol ‘sprintfمثلا برای برنامه ای که شما نوشتید همین مثال سوم لاین ۱۹رو ارور میده و این ارورشه خواهشمندم کمک کنید”
    همه کد هاشم چک کردم ولی جواب نمیده. خواهشا راهنمایی کنین.

  30. سلام
    من قصد دارم ارتباط بین ال سی دی و atmega16 رو از طریق ارتباط ۸سیمه برقرار کنم و از به همین علت در کدویژن نمیشه ازکتابخانه ال سی دی استفاده کرد. آیا میشه در این رابطه کمکم کنید؟

  31. سلام مطالب خوبی بود….ولی آیا برنامه ک نوشتین نیاز نداره ک خروجی ای سی رو براش تعریف کنیم؟ الان من این ال سی دی رو ب کدوم پایه ها وصل کنم؟

    1. پایه ها توسط تنظیمات پروژه تنظیم شده و اگه مطلب رو کامل بخونید متوجه میشید تقریبا در ابتدای این مطلب به نحوه اتصال پرداخته شده.

  32. سلام
    من وقتی میخوام هرچیزی رو تو بخش اینتراپت تایمر نشون بدم هیچی نشون نمیده
    مشکل چیه؟؟؟؟

  33. سلام و خسته نباشید .ی دنیا ممنون از آموزش مفید و جامعی ک گذاشتین .
    لطفا کمک کنین خیلی ضروری و عجله ای هستش ،برنامه ساعت با کد ویژن و زبان c ک بجای ثانیه دات کار کنه و از ۷s چهارتایی استفاده بشه خیلی ممنون میشم کمکم کنین

  34. سلام و خسته نباشید واقعا ممنون بابت مطالب عالی
    ببخشید من پروژه ای میخواستم ممنون میشم کمک کنید ب این طور ک در سطر اول lcd در وسط اسمم باشه بعد کلمه کلمه ب سطر پایین بیاید مثلا amir باشه اول بعد aوmوiوr به ترتیب بیان سطر پایین ممنون میشم کمکم کنید

  35. سلام از آموزش های خوبتون خیلی خیلی ممنون.
    ببخشید یه سوال داشتم من از دستور lcd_write_data(0x1c) استفاده کردم ومیخواستم وقتی متنم به دیواره lcd رسیداین دستور متوقف بشه و حالا به اون طرف شیفت پیدا کنه.ولی نمیدونم په جوری.میشه کمکم کنید.
    خیلی ممنون.

  36. سلام

    من یک مشکل دارم
    همین برنامه هایی که شما اینجا گذاشتید رو رو atmega32a پروگرام کردم و کامل شد
    ولی روی LCD هیچی نشون داده نمی شه

    توی پرتئوس به درستی کار میکنن ولی در عمل LCD چیزی رو نشون نمی ده

    لطفا راهنمایی کنید
    یک دنیا ممنون

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

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

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