اطلاعیه

Collapse
No announcement yet.

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

Collapse
X
 
  • فیلتر
  • زمان
  • Show
Clear All
new posts

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

    سلام من میخوام روی ال سی دیم (16*2) ساعت وتاریخ را نمایش بدهم برای انجام تغییرات روی این موارد باید بتونم به مکانهای مختلفی روی ال سی دی پرش کنم {{مثلا موقعیت ساعت در(0و0)و(0و1) هست موقعیت دقیقه در(0و3) و(0و4) و موقعیت ثانیه در (0و6)و(0و7) است و موقعیت تاریخ:سال در (0و9) و (0و10) ماه در(0و12)و(0و13) وروزدر(0و15)و (0و16)قرار دارند}} برای انجام این پرشها از متغیر kکمک گرفتم یعنی به ازای هربار خوردن کلید یک عدد به k اضافه میشه و بسته به اینکه kچند باشه به یک نقطه روی ال سی دی برای انجام پرش میره. بنظر منطقش درسته اما درست کار نمیکنه و هنگ میکنه از وقفه ها هم قبلا استفاده کردم خیلی اشکال داشت کسی میتونه کمکم کنه؟؟
    [tt]
    int k,j;
    void setting()
    {
    for(j=0;j<=12;j++){
    if(PINB.2==0){
    while(!PINB.2);
    k++;}
    if(k==1){
    delay_ms(3000);
    sprintf(buf,"_:%d:%d",hours,second);
    lcd_puts(buf);
    delay_ms(3000);
    i=hours;
    lcd_gotoxy(0,0);
    delay_ms(300);
    while(PINB.2){
    if(PINB.0==0){
    while(!PINB.0);
    if (i<23)
    i++;
    else if(i>=23)
    i=0;
    if(i<10){
    lcd_gotoxy(0,0);
    sprintf(buf,"0%d:%d:%d",i,minute,second) ;
    lcd_puts(buf);
    delay_ms(20);
    }
    else {
    lcd_gotoxy(0,0);
    sprintf(buf,"%d:%d:%d",i,minute,second);
    lcd_puts(buf);
    delay_ms(20);
    }
    hours=i;
    }
    if(PINB.1==0){
    while(!PINB.1);
    if(i>0)
    i--;
    else if(i==0)
    i=23;
    if(i<10){
    lcd_gotoxy(0,0);
    sprintf(buf,"0%d:%d:%d",i,minute,second) ;
    lcd_puts(buf);
    delay_ms(20);
    }
    else {
    lcd_gotoxy(0,0);
    sprintf(buf,"%d:%d:%d",i,minute,second);
    lcd_puts(buf);
    delay_ms(20);
    }
    }
    hours=i;
    }



    }
    if(k==2){

    lcd_gotoxy(0,0);
    sprintf(buf,"%d:_:%d",hours,second);
    lcd_puts(buf);
    delay_ms(3000);

    i=minute;

    delay_ms(1000);

    if(PINB.0==0){
    while(!PINB.0);
    if (i<59)
    i++;
    else if(i>=59)
    i=0; if(i==60) i=0;
    if(i<10){
    lcd_gotoxy(0,0);
    sprintf(buf,"%d:0%d:%d",hours,i,second);
    lcd_puts(buf);
    delay_ms(20);
    }
    else {

    lcd_gotoxy(0,0);
    sprintf(buf,"%d:%d:%d",hours,i,second);
    lcd_puts(buf);
    delay_ms(20);
    }
    }
    if(PINB.1==0){
    while(!PINB.1);
    if(i>0)
    i--;
    else if(i==0)
    i=59;
    if(i<0) i=59;
    i=59;
    if(i<10){
    lcd_gotoxy(0,0);
    sprintf(buf,"%d:0%d:%d",hours,i,second);
    lcd_puts(buf);
    delay_ms(20);
    }
    else {
    lcd_gotoxy(0,0);
    sprintf(buf,"%d:%d:%d",hours,i,second);
    lcd_puts(buf);
    delay_ms(20);
    }
    }
    minute=i;
    }

    if(k==4){
    delay_ms(3000);
    sprintf(buf,"_:%d:%d",month,day);
    lcd_puts(buf);
    delay_ms(3000);
    i=year;
    lcd_gotoxy(9,0);
    delay_ms(300);
    while(PINB.2){
    if(PINB.0==0){
    while(!PINB.0);

    i++;
    lcd_gotoxy(9,0);
    sprintf(buf,"%d:%d:%d",i,month,day);
    lcd_puts(buf);
    delay_ms(20);
    }
    year=i;
    }
    if(PINB.1==0){
    while(!PINB.1);
    i--;

    lcd_gotoxy(9,0);
    sprintf(buf,"%d:%d:%d",i,minute,second);
    lcd_puts(buf);
    delay_ms(20);
    }
    }
    year=i;


    if(k==5)
    {
    delay_ms(3000);
    sprintf(buf,"%d:_:%d",year,day);
    lcd_puts(buf);
    delay_ms(3000);
    i=month;
    lcd_gotoxy(11,0);
    delay_ms(300);
    while(PINB.2){
    if(PINB.0==0){
    while(!PINB.0);
    if (i<12)
    i++;
    else if(i>=12)
    i=1;
    if(i<10){
    lcd_gotoxy(11,0);
    sprintf(buf,"%d:0%d:%d",year,i,day);
    lcd_puts(buf);
    delay_ms(20);
    }
    else {
    lcd_gotoxy(11,0);
    sprintf(buf,"%d:%d:%d",year,i,day);
    lcd_puts(buf);
    delay_ms(20);
    }
    month=i;
    }
    if(PINB.1==0){
    while(!PINB.1);
    if(i>1)
    i--;
    else if(i==1)
    i=12;
    if(i<10){
    lcd_gotoxy(11,0);
    sprintf(buf,"%d:0%d:%d",year,i,day);
    lcd_puts(buf);
    delay_ms(20);
    }
    else {
    lcd_gotoxy(11,0);
    sprintf(buf,"%d:%d:%d",year,i,day);
    lcd_puts(buf);
    delay_ms(20);
    }
    }
    month=i;
    }
    }


    if(k==6){
    delay_ms(3000);
    sprintf(buf,"%d:%d:_",year,month);
    lcd_puts(buf);
    delay_ms(3000);
    i=day;
    lcd_gotoxy(13,0);
    delay_ms(300);
    while(PINB.2){
    if(PINB.0==0){
    while(!PINB.0);
    if (i<30)
    i++;
    else if(i>=30)
    i=1;
    if(i<10){
    lcd_gotoxy(13,0);
    sprintf(buf,"%d:%d:0%d",year,month,i);
    lcd_puts(buf);
    delay_ms(20);
    }
    else {
    lcd_gotoxy(13,0);
    sprintf(buf,"%d:%d:%d",year,month,i);
    lcd_puts(buf);
    delay_ms(20);
    }
    day=i;
    }
    if(PINB.1==0){
    while(!PINB.1);
    if(i>1)
    i--;
    else if(i==1)
    i=30;
    if(i<10){
    lcd_gotoxy(13,0);
    sprintf(buf,"%d:%d:0%d",year,month,i);
    lcd_puts(buf);
    delay_ms(20);
    }
    else {
    lcd_gotoxy(13,0);
    sprintf(buf,"%d:%d:%d",year,month,i);
    lcd_puts(buf);
    delay_ms(20);
    }
    }
    day=i;
    }
    if(k==7){
    delay_ms(3000);
    sprintf(buf,"_:%d:%d",mst,sst);
    lcd_puts(buf);
    delay_ms(3000);
    i=hst;
    lcd_gotoxy(2,1);
    delay_ms(300);
    while(PINB.2){
    if(PINB.0==0){
    while(!PINB.0);
    if (i<24)
    i++;
    else if(i>=24)
    i=0;
    if(i<10){
    lcd_gotoxy(2,1);
    sprintf(buf,"0%d:%d:%d",i,mst,sst);
    lcd_puts(buf);
    delay_ms(20);
    }
    else {
    lcd_gotoxy(2,1);
    sprintf(buf,"%d:%d:%d",i,mst,sst);
    lcd_puts(buf);
    delay_ms(20);
    }
    hst=i;
    }
    if(PINB.1==0){
    while(!PINB.1);
    if(i>1)
    i--;
    else if(i==1)
    i=24;
    if(i<10){
    lcd_gotoxy(2,1);
    sprintf(buf,"0%d:%d:%d",i,mst,sst);
    lcd_puts(buf);
    delay_ms(20);
    }
    else {
    lcd_gotoxy(2,1);
    sprintf(buf,"%d:%d:%d",i,mst,sst);
    lcd_puts(buf);
    delay_ms(20);
    }
    }
    hst=i;
    }



    }


    }



    }
    } [/tt]
    ای زندگی بردار دست از امتحانم چیزی نه میدانم نه میخواهم بدانم. ...ای موج پر از شور که بر سنگ سرت خورد برخیز فدای سرت انگار نه انگار

    #2
    پاسخ : مشکل در انجام پرش به مکانهای مختلف روی

    سلام

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

    دیدگاه


      #3
      پاسخ : مشکل در انجام پرش به مکانهای مختلف روی ال سی دی توسط میکرو

      آره اما چطوری؟؟
      ای زندگی بردار دست از امتحانم چیزی نه میدانم نه میخواهم بدانم. ...ای موج پر از شور که بر سنگ سرت خورد برخیز فدای سرت انگار نه انگار

      دیدگاه


        #4
        پاسخ : مشکل در انجام پرش به مکانهای مختلف روی ال سی دی توسط میکرو

        این برنامه رو ابر رایانه هم بنویسی هنگ میکنه . :biggrin:
        همه ی دقیقه و ثانیه و ساعتتو تو یه آرایه بریز . بعد اون آرایه رو یه جا چاپ کن . به جای اعداد دهگان که خالین 0 بذار . البته کد اسکیشونو تو آرایه بریز .

        char counter[10];
        lcd_puts(counter);

        lcd ها زیاد هنگ میکنن . حتما هر موقع تو مدارت lcd داشتی از واچ داگ هم استفاده کن

        دیدگاه

        لطفا صبر کنید...
        X