به نام خدا : پروژه نمایش متن متحرک روی LCD شامل 3 قسمت هستش : 1) نمایش متن متحرک روی LCD 2) نمایش یک رشته به صورت کاراکتر کاراکتر 3) پاک کردن صفحه به صورت کاراکتر کاراکتر
راسش رو بخواید حالم خوش نیست و اصلا حوصله توضیح دادن رو ندارم؛ البته چیز خاصی هم نداره و اگه پروژه های قبلی رو دیده باشین ، متوجه کدها و مدار این پروژه میشین؛ به هر حال اگه کسی سوالی داشت در خدمتیم.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 |
#include <mega16.h> #include <lcd.h> #include <delay.h> /////////////////////////////////////// #asm .equ __lcd_port=0x15; #endasm /////////////////////////////////////// flash char text1[]={'w','w','w','.','D','M','F','3','1','3','.','I','R'}; /////////////////////////////////////// void main(void) { int i; lcd_init(16); while (1) { // نمایش یه رشته به صورت کلمه کلمه در سطر دو for(i=0;i<=12;i++) { lcd_gotoxy(i,1); lcd_putchar(text1[i]); delay_ms(60); } delay_ms(100); //پاک کردن کلمه کلمه رشته بالا for(i=13;i>=0;i--) { lcd_gotoxy(i,1); lcd_putsf(" "); delay_ms(60); } // حرکت یه متن for(i=0;i<=13;i++) { lcd_gotoxy(i,0); lcd_putsf("AVR"); delay_ms(60); lcd_clear(); } delay_ms(100); }; } |
دانلود این پروژه | حجم: ۸۰ کیلوبایت !
نکاتی در مورد عملی بستن مدار :
۱) تو عکس بالا از مقاومت استفاده کردم ، اگه تو عمل از مقاومت استفاده کنکنید اتفاقی نمیوفته ، خودم هم استفاده نکردم.
۲) تمام vcc های مدار رو به + منبع تغزیه و تمام gnd ها رو هم به - منبع تغزیه وصل کردم-ولتاژ منبع هم ۵ ولت هستش.
۳)اگه تازه کارید سعی کنید که lcd رو به یه پروت دیگه ای غیر از portc وصل کنید چون اگه به این پورت وصل کنید هنگام پروگرام کردن فایل hex تو میکوکنترلر یه کم اضیت میشید و باید یه سری کار های اضافه انجام بدید.
نحوه این کار :
1 2 3 |
#asm .equ __lcd _port=0x15 ;PORTC #endasm #include |
در کد بالا به جای اون مقدار هگزا دسیمال
1 |
۰X15 |
یکی از مقادیر زیر رو جای گزاری کنید.
نام پورت | آدرس پورت |
PORTA | ox1b |
PORTB | ox18 |
PORTC | ox15 |
PORTD | ox12 |
فیلم این پروژه که من ( با توجه به نکته بالا ) lcd رو به پورت دی وصل کردم :
مهمان
مثل همیشه عالی
سوال اول: اگر بخوام یه رشته مثلا “AVR” از سطر اول شروع کنه حرکت کنه بعد وقتی R به اخر سطر اول رسید، بعدش R بره به اول سطر اول و بعد V بیاد و بعد A و بعد دوباره از اول. یعنی اصلا وارد خط دوم نشه و رشته فقط در سطر اول بچرخه، چی کار باید بکنم؟
سوال دوم : اگربخوام در سطر دوم این اتفاق بیفته یعنی وارد سطر اول نشه و فقط پشت سر هم از سطر دوم خارج بشه و ادامه اش وارد اولین مکان از سطر دوم بشه باید چیکار کنم؟
مهمان
عالی هستی بودی، خواهی بود،
سرافراز و پایدار و جاودان، خدا حافظ و پشتیان شما باشه👌🏻👌🏻👌🏻
مهمان
سلام خسته نباشید
من میخوام با استفاده از کلید یک حرف رو به چپ و راست و بالا و پایین حرکت بدم دستورش چیه؟
مهمان
واقعا فوق العاده بود
من هیچ جا چنین مثال هایی ندیده بودم
خسته نباشید میگم
مهمان
سلام اگه بخوام یه اسم رو روی lcd با شیفت به راست انجام بدم کدش به چه صورت میشه؟
مهمان
بااستفاده از دستور for
مهمان
سلام بابت سایت خوبتون ممنون
من طبق توضیحات شما برنامه کوچیکی نوشتم ولی نیمه کارست
میخواستم برنامه ای بنویسم که حروف کلمه ای رو از اخر به اول بنویسه وبعد از اول به اخر پاک کنه
به طور مثال dبعد نیم ثانیه aبعد نیم ثانیه d تا مهرداد کامل بشه بعد هم حرف به حرف پاک بشه
اگه میشه کمکم کنید
الان برنامه رو تا اونجایی نوشتم که اسممو از اخر به اول مینویسه ولی نمیدونم چجوری دونه دونه حرفارو پاک کنم از دستور lcd_clear برای پاک کردن کل صفحه استفاده میشه
نویسنده این مطلب
سلام – در موقعیت مد نظر – کاراکتر space نمایش بدید.
مهمان
سلام دستتون درد نکنه واقعا. مطالب سایت تون بسیار اموزتده و پر محتواس
مهمان
کدها برای اردوینو به چه صورت میشن
مهمان
سلام من برای atmega32 میخواهم همچین کاری کنم هدر رو عوض کنم کافیه؟ یا نه
نویسنده این مطلب
سلام – مگا 16و32 تفاوت آنچنانی ندارن – غیر اینی که گفتی باید از تنظیمات کدویژن هم مدل میکرو رو اصلاح کنی.
مهمان
سلام خسته نباشید
میخواستم حرف A رو بصورت زیگ زاگی نمایش بدم میشه کمکم کنید؟
نویسنده این مطلب
سلام- خب زیگزاگی با چه جزئیاتی و… – خب کاری نداره که – نمایشگر کاراکتری 2*16 هستش – 2 تا ردیف – 16 تا ستون – تو زبون برنامه نویسی شمارشو از 0 انجام میدیم – عکس زیر آدرس هر خونه رو نوشتم – مثلا (1,2) یعنی خونه ( کاراکتر ) ردیف 1 ستون 2 – فرض بر این که متن از خونه (0,0) شروع میشه ( خونه قهوه ای ها ) و میره سمت راست تا آخرین خونه یعنی (1,15).

خب برای همچین کاری میتونی آدرس خونه های فوق رو تو یه آرایه تعریف کنی – یا یه struct تعریف کنی با نوع خونه نمایشگر! – بعد از این نوع struct ایجاد شده یه آرایه تعریف کنی و … – کلی داستان و … که خب میدونم این کارو نمیکنی خخخ
راه دیگه – استفاده از ریاضیات خخخ : کد زیر رو ببین – موقعیت نمایش رو بهش میدی – مقادیر خونه هایی که دیتا باید توش نمایش داده بشه رو بهت میده :
http://paste.debian.net/plain/1052064
( این کدو تو DEV-CPP نوشتم زبونش هم CPP هستش از تابع show تو پروژت استفاده کن )
اینم نتیجه خروجی :
(0, 0), (1, 1), (0, 2), (1, 3), (0, 4), (1, 5), (0, 6), (1, 7), (0, 8), (1, 9), (0, 10), (1, 11), (0, 12), (1, 13), (0, 14), (1, 15),
میبینی دقیقا مطابق عکس بالا هستش
خب حالا شما آدرس خونه ها رو داری – میای متن رو تو آدرس اولی نشون میدی – یه مقدار زمانی دیلای میدی – پاک میکنی اون آدرس رو ( اسپیس جاش چاپ میکنی تا پاک بشه ) – بعد میری سراغ خونه دوم و این روند تا آخر همینطور ادامه داره.
مهمان
سلام کسی میدونه چجوری میشه اصلاعات رو با افکت های خاص روی ال سی دی نشون داد؟
مهمان
سپاس فراوان بابت زحماتت مدیر. بنده ی سوال داشتم. میخام هم در سطر اول و هم سطر دوم کاراکتر کاراکتر نمایش بده.؟ سطر دوم رو گفید و فقط سطر اول میخاستم نمایش بده نمایش نداد.
نویسنده این مطلب
تابع lcd_gotoxy برای تعیین محل نمایش متن هستش – اینو باید تغییر بدید.آموزش این تابع هن تو مطلب آموزش LCD کاراکتری که فک کنم تو سایت باشه هستش – نباشه هم تو نت هستش.
مهمان
سلام جناب خسته نباشد
مهندس میگم من lcd گرافیکی هستش دستوراتش فرق میکنه؟؟؟
نویسنده این مطلب
سلام-بله
مهمان
اقا مهدی ارور چکار کنم؟؟؟؟؟؟ موقع کامپایل با کدویژن

Error: Picturesmatn.c(16): undefined symbol ‘lcd_init’
نویسنده این مطلب
کتابخونه نمایشگرو اول پروژت تعریف نکردی
مهمان
اقا مهدی چطوری صفحه lcd یک لایت روشن نگه میداری اون پروژه قبلی که دماسنج بود راه اندازی کردم از 3 تا ولتاژ استفاده کرده بودم اونطوری شده بود الان روشن میشه دما رو میاره اسمم رو هم میاره ولی صفحه lcd بک لایت چی روشن نمیشه چراغ قوه میگیرم لطفا راهنمایی کنید؟؟؟؟؟؟؟
نویسنده این مطلب
از اتصالاتت عکس بده + عکس از مدارت ببینم چشه
مهمان
تشکر که پاسخ دادید سایت شما نمونه است اینم عکس و فیلم البته بعضی وقت ها اسمم و شمارشگر رو میاره ولی بعضی وقت ها اینطوری مربع خالی نشون میده بعضی وقت ها شمارشگر شروع به کار میکنه:
ورژن1 http://s8.picofile.com/file/8318831042/video_2018_02_07_11_13_32.mov.html
ورژن 2 اونم الان 5 دقیقه پیش کار میکرد ولی الان قطع شد
اوکی اقا مهدی الان شمارشگر شروع به شمارش میکنه و اینکه پتانسیومتر برای صفحه گذاشتم ولی کلا lcd روشن نشد
نویسنده این مطلب
موارد مرتبط با نویز رو بررسی کن.
این چه وضعه مدار بستنه.
به نمایشگر پین هدر لحیم کن و روی برد قرار بده.
نمایشگر روشن نمایشه – اتصالاتت مشکل داره و مدار نمایشگرو درست نبستی – مطلب مربوط به lcd رو ببین – باید پتاسیومتر 1 تا 10 کیلو یه چیزی بزاری –
مهمان
ممنون به خاطر تمام زحمات پاینده باشی مهندس
مهمان
مطلب بسیار خوبی بود.ممنون
مهمان
سلام ببخشید یه سوال داشتم میخوام یه برنامه بنویسم که از ورودی داده بگیره و با اینتر بره خط پایین روی lcd و اگر خط های lcd پر شد یک بار همه خط ها رو به بالا شیفت بده تا خط آخر برای نمایش داده خالی شه برای شیفت به خط بالا چی کار باید کنم؟ ممنونم اگر راهنمایی کنید
مهمان
سلام خسته نباشین . من میخام ی متن تو سطر اول ثابت باشه و تو سطر دوم یک متن رو ب حرکت دربیارم ولی وقتی از دستور کلیر استفاده میکنم اون متن سطر اول پاک میشه میگین چیکار کنم ؟؟؟
نویسنده این مطلب
سلام
خب دستور clear کل نمایشگرو پاک میکنه دیگه – باید به کمک puts بیای و spase ( فاصله یا اون دکمه بزرگه کیبورد منظورمه ) چاپ کنی – و این space هم که قابل دیدن نیست – لذا همون کاربرد پاک کردن رو داره.
مهمان
با دستور شیفت نمیشه کلمات رو شیفت داد؟ اگه میشه لظفا بگید چجوری. ممنونم
نویسنده این مطلب
فایل توی مطلب زیر رو دانلود کن – احتمالا تو این فایل توضیح داده دستورهاشو.
https://dmf313.ir/%D8%A2%D9%85%D9%88%D8%B2%D8%B4-%D8%AC%D8%A7%D9%85%D8%B9-%DA%A9%D8%A7%D8%B1-%D8%A8%D8%A7-lcd-%DA%A9%D8%A7%D8%B1%D8%A7%DA%A9%D8%AA%D8%B1%DB%8C/
مهمان
سلام.خسته نباشید
من میخوام یه برنامه در code visionبنویسم که مثلا یک اسم ار اخرین حرف وارد lcd بشود و بعد از طی کردن سطر اول به سطر دور بره و دوباره پس از خارج شدن اخرین حرف از اخرین خونه ی سطر دوم دوباره وارد خونه ی اول سطر اول بشه یعنی درواقع در lcd بچرخه… ممنون میشم کمکم کنید
نویسنده این مطلب
سلام..از تابع clear و gotoxy باید استفاده کنی
مهمان
سلام دمت گرم باسه اموزشات
من ی پروزه دارم برای طراحی میکرو میخوام کدت رو کپی کنم و نوشته های روی صحفه رو تغیر بدم و اسم کلاسم بنویسم به این استاده نشون بدم و تموم شه بره البته با اجازت فقط برای همین ی مورد استفاده میکنم ولی تو کد ویزن نمیتونم وقتی تغیرش میدم به هگز تبدیل کنم اصلا نمیدونم کدوم پورت هارو تنظیم کنم کمکم کن این درسو پاس کنم بره دمت گرم
نویسنده این مطلب
سلام
نفهمیدم مشکلت چیه.
مهمان
`سلام من وقتی میخوام تو کد ویژن برنامرو بنویسم از تابع اصلیم ایراد میگیره چیزی کمه؟
نویسنده این مطلب
سلام
ارور؟
مهمان
سلام خدا قوت مهندس
نویسنده این مطلب
سلام

قربونت داش
مهندس هم خودتی داش
مهمان
سلام این متن متحرک هم برای آردوینو بذار
منونننننننم
نویسنده این مطلب
البته تمام حروف باید کوچیک باشه
مهمان
من دانلود میکنم ولی داخل فایل ها خالیه، چیکار کنم؟
نویسنده این مطلب
سلام
پسورد رو اشتباه وارد کردین
www.dmf313.ir
مهمان
سلام من همین رمز رو وارد میکنم ولی بازم یه عالمه اررور میده چیکارش کنم فردا باید ببرمش سرکلاس تورو خدا کمکم کنید
نویسنده این مطلب
سلام-با حروف کوچیک باید وارد کنید.
مهمان
هر کاری میکنم….تو پروتیوس کار نمیکنه….چیزی رو تو lcd نشان نمیده…اگه میشه کمک کنید…
نویسنده این مطلب
سلام
پروژت رو میتونی برام بفرستی تا نگاهش کنم…
از ورژن چند پروتئوس استفاده میکنی؟؟؟
من از ورژن 6 پروتئوس استفاده میکنم