به نام خدای بخشنده و مهربان!

خوب دوستان امروز من میخواستم روی میکروم یه برنامه بنویسیم که میکرو اونو به صورت حرف، حرف برای ال سی دی بفرسته!

اما مشکل اینجا بود که توی ال سی دی نمیشد از متغییر استفاده کرد و این بزرگترین مشکل جلوی راه ماست! خودم رو به هر دری زدی سرچ های زیادی کردم تا آخرش متوجه مسئله شدم و اونو نوشتم!

من توی پرتئوس امتحان کردم و کار کرد اما هنوز توی میکرو تست نکردم ولی انشالله اونم جواب میده!

در اینجا نیاز به یک متغییر داشتیم تا بوسیله آن تنها یکبار کد رو تکرار کنیم و و کپی پیست زیاد جلوگیری کنیم!

 

به همین دلیل یه آرایه نوشتم بدین صورت

 flash char alio[]={'H','E','L','L','O',' ','H','O','W',' ','A','R','E',' ','U','?','I','A','M',' ','A','L','I',' ','F','A','L','L','A','H','I',' ','C','R','E','T',' ','A',' ','N','E','W',' ','L','C','D','1','6','*','2',' ','I','M',' ','H','A','P','P','Y','!'}; 

 

که تمامه حروفی که قراره نوشته بشه رو اینجا نوشتم....!

 

بعد یه حلقه FOR ساختم تا دونه دونه حرف ها رو بنویسه به اینصورت

 

 for(u=0;u<=29;u++) 
    { 
      z=alio[u];  
     sprintf(t,"%c",z);
     lcd_puts(t);
     delay_ms(20);
     }  
 

خوب یه نگاهیم به کد بالا بندازیم!

در اول پیداست که به for گفتیم تا 29 بشمره بعد یه متغییر Z داریم از نوع char که در خط پیایینیش اون متغییر z از نوع کاراکتر (اون %c یعنی از نوع کاراکتر) میره و توی رشته t قرار میگیره و در خط پایینی متغییر t رو نشون میده که همین الان توش چیزی رختیم بعد 20 میلی ثانیه دوباره حلقه تکرار میشه....!

اگه بخواید بدون متغییر فقط یک کاراکتر رو توی ال سی دی نمایش بدین به شکله زیره!

z=('H');

یادتون نره که برای یه کاراکتر باید از ' استفاده کنیم اکا برای چندتا کاراکتر یا رشته از " استفاده میشه

یادتون نره که کد زیر هم باید اضافه کنید

int u;
char z;
char t[16];

کد کامل به صورت زیر میشه

که برای atmega 16 نوشتم

 
#include 
#include 
#include 
#include 
#include 
flash char alio[]={'H','E','L','L','O',' ','H','O','W',' ','A','R','E',' ','U','?','I','A','M',' ','A','L','I',' ','F','A','L','L','A','H','I',' ','C','R','E','T',' ','A',' ','N','E','W',' ','L','C','D','1','6','*','2',' ','I','M',' ','H','A','P','P','Y','!'}; 
  void main (void){
 int u=0;
 char z;
 char t[16];
DDRC.0=1;
DDRC.5=0;
PORTC.5=0;
     lcd_init(16);
     lcd_putsf ("THE NAME OF GOD"); 
     delay_ms(100);
     lcd_clear();
    for(u=0;u<=29;u++) 
    { 
      z=alio[u];  
     sprintf(t,"%c",z);
     lcd_puts(t);
     delay_ms(20);
     }  
     delay_ms(100);
         lcd_clear();
         delay_ms(60);
        for(u=30;u<=60;u++) 
    { 
      z=alio[u];  
     sprintf(t,"%c",z);
     lcd_puts(t);
     delay_ms(20);
     }
      delay_ms(200);
         lcd_clear();
      }
 

انشالله در پناه خدا موفق و موید باشید...!

یا علی مدد....!