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

سلام.... امروز آخرین روز ماه مبارک رمضانه و ما هم نارحت از اینکه این نعمت و مهمانی بزرگ خدا داره تموم میشه امیدوارم همه بهره کافی از این ماه دوست داشتی برده باشیم! و انشالله شاله دیگه زنده باشیم و این مهمانی بزرگ خدا رو ببینیم...!

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

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

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


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


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

 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];
که نشون میده که حرف U یک متغییر از نوع اعداد صحیح هست! و Z یه متغییر کارکتری هست و T هم مثل Z یه رشته ی 16 تایی!
کد کامل به صورت زیر میشه
که برای atmega 16 نوشتم
#include <mega16.h>
#include <stdio.h>
#include <stdlib.h>
#include <alcd.h>
#include <delay.h>

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();
     
     
}



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

فعلا یا علی مدد...