# برنامه نویسی میکروکنترلر (MicroController) ها و MicroProcessor ها > برنامه نویسی سیستم های Embeded > سوال: روشن کردن LCD

## محمدامین شریفی

دوستان من در حال نوشتن پروژه ای با اسمبلی هستم که موضوعش گاهنامه(تقویم)سال 1387 است وشبیه به گاه نامه های دیواریست.
در همین هین استاد مدار ما هم از ما خواسته با چیزایی که گفته یه گیت ببندیم.
تو همین هیری ویری استاد آزمایشگاه ما هم کار کردن با curciut maker یا proteus از ما خواسته
من هم می خواهم با همون اسمبلی که نوشتم روز و ماه و سال را در lcd نشان دهم.
اگه تو هر کدوم از درس ها که بلد هستید(مخصوصا avr و مدار) از ابتدا بگویید چی به چی هست و وسایلش را بگویید که بخرم.
سپاس گزار

----------


## محمدامین شریفی

یعنی هیچ کس نیست که با assembly یا vb یا c برنامه ی avr برای روشن کردن LCD نوشته باشه

----------


## shaniaki

با عرض ادب:
لطفا به جای شرح حال نوشتن صریح و واضح یک سوال را در هر تاپیک مطرح کنید.
LCDها بر دو دوسته هستند: Dot-Matrix و Alphanumeric. شما قصد کار با کدام را دارید؟ در نوع اول باید تک تک نقطه ها را کنترل و روشن خاموش بکنید که کار با آن پیچیده تر است ولی آزادی عمل بیشتری دارید(مثلا فارسی هم می توانید بنویسید) اما در نوع دوم شما فقط کد کاراکترهایی که می‌خواهید نوشته شوند را به ماژول LCD می فرستید.
مثال برای نوع دوم که ساده‌تر نیز هست:
http://lcdinterfacing.googlepages.com
در واقع در این نوع LCDها یک کنترلر داخل خود ماژول موجود است که از طریق پین‌های واسط باید دستورات مشخصی را برای عملیات مختلف مانند نوشتن کاراکتر یا پاک کردن صفحه فرستاد. در برگه اطلاعات (datasheet) ماژولی که با آن کار می‌کنید به تفصیل این دستورات نوشته شده است.


یه ... ...

----------


## ali ashna

بايد مشخص كني كه از lcd متني استفاده مي كني يا lcd گرافيكي. من با avr كار كردم. وقتي نوع lcd را مشخص كردي اميدوارم بتونم كمكت كنم. به اين پست هم نگاه كن شايد كمكت كنه. 
http://www.eca.ir/forum2/index.php?t...53155#msg53155

----------


## محمدامین شریفی

دوستان من شرح حال را گفتم تا در هر کدام که می تونید کمک کنید(خودم می دونم نباید اینکار رو کنم)
برنامه با assembly نوشته شده دستوری می شناسید که در asm کاراکتریlcd را روشن کند؟
کامپایلر:avr studio
من user guide شرکت atmel رو خوندم چیزی در این مورد ننوشته بود.
آیا توابع assembly که تو ویندوز می نویسیم با avr فرق دارد؟

----------


## shaniaki

با عرض ادب:
زبان اسمبلی یعنی کار کردن مستقیم با دستورالعمل‌های پردازنده. از آن‌جا که پردازنده‌های مختلف معماری‌های مختلف دارند و دستورالعمل‌هایشان با هم فرق می‌کند در نتیجه اسمبلی‌شان نیز متفاوت است. خلاصه این‌که زبان اسمبلی PC را برای یک میکروکنترلر نمی‌توان به کار برد. یکی از دلایلی که برنامه‌ها را با زبان سی می‌نویسند قابلیت انتقالش روی پردازنده‌ها و کنترلر‌های مختلف است.

در مورد ال-سی-دی به نظر می‌رسد که مفهوم را متوجه نشدید. ببینید شما یک ماژول ال-سی-دی را که می‌خرید تعدادی پین برای اتصال به مدار شما دارد که واسط ارتباطی(interface) کاری شماست. شما باید روی این پین‌ها به ترتیب فرمان‌هایی را از طریق یکی از پورت‌های میکروکنترلر(به انتخاب خودتان بسته به اینکه چطور آن را به میکرو وصل کرده باشید) بفرستید. این فرمان‌ها در دیتاشیت خود ال-سی-دی نوشته شده و شما باید برنامه میکرو را طوری بنویسید که فرمان‌های دلخواه را به ترتیب روی پورتی که به میکرو کنترلر وصل است بنویسد.
البته بعضی کامپایلرها و اسمبلرها امکانی را در اختیار شما می گذارند که با یک دستور به سادگی روی ال سی دی متن‌تان را بفرستید و خود کامپایلر باقی کارها را به عهده می‌گیرد‌ (مانند BASCOM)
در لینکی که بالا معرفی کردم پورت واسط بین رایانه و ال-سی-دی پورت موازی(پرینتر) است. لینک زیر طریقه کار با AVR را نشان می‌دهد:
http://www.avrprojects.net/articles.php?lng=en&pg=70

یه ... ...

----------


## محمدامین شریفی

> با عرض ادب:
> زبان اسمبلی یعنی کار کردن مستقیم با دستورالعمل‌های پردازنده. از آن‌جا که پردازنده‌های مختلف معماری‌های مختلف دارند و دستورالعمل‌هایشان با هم فرق می‌کند در نتیجه اسمبلی‌شان نیز متفاوت است. خلاصه این‌که زبان اسمبلی PC را برای یک میکروکنترلر نمی‌توان به کار برد. یکی از دلایلی که برنامه‌ها را با زبان سی می‌نویسند قابلیت انتقالش روی پردازنده‌ها و کنترلر‌های مختلف است.


با درود بر آنهایی که برنامه ها یشان منطقی است
استادم گفت برنامه ای برای تبدیل c به assembly وجود دارد.پرسش من اینست آیا این برنامه برای AVR هم وجود دارد.
آیا AVR زبان C++‎ که هم پشتیبانی میکند.اگر آری کدام کامپایلر؟
اینجا را بخوانید و نظرتان را بدهید:http://www.avrfreaks.net/modules.php...rticle&sid=197

----------


## de_burgh

از آنجایی که bia2dadash2 درباره assembly پرسش میکنند.و باید بهشان بگویم تمام compiler ها هم از این زبان پشتیبانی می کنند.من با bascom کار میکنم.ولی می خواستم بدانم قدرت bascom با بقیه compiler ها بخصوص compiler مخصوص خود شرکت تولید کننده که همان avr studio هست. یکسان هست؟

----------


## shaniaki

با عرض ادب:


فقط یک سوال در هر تاپیک.


یه ... ...

----------


## mhmmdshirazi

من تا بحال با اسمبلی با avr کار نکردم اما اگه مشکل کلا سر برنامه ایه که بتونه c رو رو avr پروگرم کنه من codevisionavr رو پیشنهاد می کنم که کار باهاشم خیلی سادس.
تو اول باید تو ویزارد تنزیمات میکرو کنترولرت رو بدی و lcd رو روی یه port تنظیم کنی البته مشخص کردن نوع lcd هم مهمه (تعداد کاراکترا) و...
بعد تو برنامه بعد ازwhile(1)
اینو می نویسی:
lcd_gotoxy(0,0);
//mokhtasat dast khodete
lcd_putsf("your text");
//age adad bud akharesh ye +'0' ezafe kon;
//hamin

----------


## sudy3090

سلام.کاربری تازه وارد و درمانده هستم.این سوالمو تو تاپیک گفتگوی AVR هم مطرح کردم ولی هنوز کسی جوابمو نداده و من خیلی عجله دارم.یه برنامه می خوام برای محیط codevision که هر عددی که در صفحه کلید 4×4 وارد می کنیم روی LCDگرافیکی مدل ts12864A-2نشون بده.مشکل من نشون دادن روی lcd نیست من فقط می خوام مثلا اگه کلید 4 فشرده شد برم توی یه تابع به نام key 4 همین. کارهای توی تابع و نمایش روی lcd را خودم بلدم. :ناراحت:  :خیلی عصبانی:

----------


## mhmmdshirazi

> سلام.کاربری تازه وارد و درمانده هستم.این سوالمو تو تاپیک گفتگوی AVR هم مطرح کردم ولی هنوز کسی جوابمو نداده و من خیلی عجله دارم.یه برنامه می خوام برای محیط codevision که هر عددی که در صفحه کلید 4×4 وارد می کنیم روی LCDگرافیکی مدل ts12864A-2نشون بده.مشکل من نشون دادن روی lcd نیست من فقط می خوام مثلا اگه کلید 4 فشرده شد برم توی یه تابع به نام key 4 همین. کارهای توی تابع و نمایش روی lcd را خودم بلدم.


تو که گفتی با codvision neminevisam.

----------


## arkia

پروژه اسکن صفحه کلید ماتریکسی










> /**************************************************  ***
> Project : Keypad Scan
> Author : Reza Sepas Yar
> Company : Pishro Noavaran Kavosh
> **************************************************  ***/
> #include <mega16.h>
> #include <delay.h>
> #define xtal 4000000
> unsigned char key, butnum;
> ...

----------


## Hamed Hosseini

اگه درست متوجه ي منظورتون شده باشم ، ميخواين LCD رو روشن كنيد و يه متغير رو توش نمايش بدين

اگه درسته اين كدش تو bascom ه.

بعد يكي يكي پورت هاي متصل به هم د ميكرو  و lcd رو مي نويسينconfig lcd 2*16 
display on
 نام متغيرها lcd


به همين سادگي

----------


## fog1234

سلام دوستان وقتتون بخیر
من تازه ورد هستم و دنبال ی چند خط برنامه ای هستم که بشه با اون از طریق ی کلید فشاری که به پین صفر پورت a در ای سی at mega 32 وصله ال سی دی کاراکنری 16*2 رو روشن و خاموش کرد.
ینی کلید که بخوره ال سی دی کاراکتری 16*2 روشن بشه و دوباره که بخوره خاموش بشه
میشه لطفا چند خطشو واسم بنویسید ممنون

----------

