اطلاعیه

Collapse
No announcement yet.

سوالات مربوط به LCD های کاراکتری و گرافیکی

Collapse
این موضوع بسته شده است.
X
X
 
  • فیلتر
  • زمان
  • Show
Clear All
new posts

    پاسخ : سوالات مربوط به LCD های کاراکتری و گرافیکی

    نوشته اصلی توسط mahan.rafiee
    مشکلتون چیه؟
    برنامه تون رو بزارید.
    عیدتون هم مبارک :redface:
    ممنون از جوابتون. برنامه طولانیه و نیاز به توضیح داره . اما این دستوره lcd_gotoxy یک جا از برنامم درست کار میکنه اما باره دوم انگار نه انگار که وجود داره.
    کد:
    #include <alcd.h>
    #include <delay.h>
    #define RELAY1 PORTD.4
    #define RELAY2 PORTD.5
    #define cline PORTD.6
    #define ringing PIND.7
    #define play PORTA.0
    int i=0;
    int A=-1;
    int C[4];
    
    // External Interrupt 2 service routine
    interrupt [EXT_INT2] void ext_int2_isr(void)
    {
     A=A+1;
     C[A]= PIND & 0x0F ;
     if (C[0]==1 & C[1]==2 & C[2]==3 & C[3]==11 )
     {
    i=0;
    lcd_clear();
    PORTC=0b1111000;
    play=0;
    delay_ms(5);
    play=1;
    lcd_gotoxy(0,1);
    lcd_putsf("ACCEPTED");
    switch(PIND & 0x0F)
    {
    case 1:
    if (RELAY1==1)
    {
    RELAY1=0;
    PORTC=0b110000;
    play=0;
    delay_ms(5);
    play=1;
    lcd_clear();
    lcd_gotoxy(0,1);
    lcd_putsf("RLY1:OFF");
    //delay_ms(300);
    }
    else 
    {
    if (RELAY1==0)
    {
    RELAY1=1;
    PORTC=0b11000;
    play=0;
    delay_ms(5);
    play=1;
    lcd_clear();
    lcd_putsf("RLY1:ON");
    //delay_ms(300);
    }
    }
    break;
    
    case 2:
    if (RELAY2==1)
    {
    lcd_clear();
    RELAY2=0;
    PORTC=0b1100000;
    play=0;
    delay_ms(5);
    play=1;
    lcd_putsf("RLY2:OFF");
    //delay_ms(300);
    }
    else 
    {
    if (RELAY2==0)
    {
    RELAY2=1;
    PORTC=0b1001000;
    play=0;
    delay_ms(5);
    play=1;
    lcd_clear();
    lcd_putsf("RLY2:ON");
    //delay_ms(300);
    }
    }
    break;
    
    case 12:
    lcd_clear();
    lcd_putsf("DISCONNECTED");
    cline=0;
    i=10;
    delay_ms(300);
    lcd_clear();
    break;
    
    case 13:
    lcd_putchar('A');
    break;
    
    case 14:
    lcd_putchar('B');
    break;
    
    case 15:
    lcd_putchar('C');
    }
    }
     else
     {
     if (A>=3) 
     { 
     lcd_clear();
     PORTC=0b10001000;
    play=0;
    delay_ms(5);
    play=1;
     lcd_putsf("WRONG PASSWORD");
     delay_ms(100);
     lcd_clear();
     cline=0;
     i=10;
     }
     };
    
    }
    lcd_init(16);
    
    // Global enable interrupts
    #asm("sei")
    lcd_clear();
    lcd_putsf("DTMF DECODER");
    delay_ms(200);
    lcd_clear();
    lcd_putsf("READY");
    //delay_ms(500);
    
    
    while (1)
       {
       if(ringing)
    {
    lcd_clear();
    lcd_putsf("Ringing...");
    delay_ms(1000);
    i=0;
    cline=1;
    }
    if(cline==1) 
    {
    lcd_clear();
    lcd_putsf("CONNECTED");
    lcd_gotoxy(0,1);
    lcd_putsf("enter password");
    PORTC=0b00000000;
    play=0;
    delay_ms(5);
    play=1;
    while(i<10)
    {
    i++;
    delay_ms(500);
    }
    lcd_clear();
    A=-1;
    C[0]=0;
    C[1]=0;
    C[2]=0;
    C[3]=0;
    cline=0;
    lcd_clear();
    lcd_putsf("Ready");
    }
    };
    }
    قسمتای پیکربندیو حذف کردم که اینجا شلوغ نشه ماهان جان. قضیه ازین قراره که باره اول که تلفن زنگ میخوره و خط وصل میشه درست سطر اول connected و سطر دوم ENTER PASSWORD چاپ میشنو مشکلی نی اما وقتی برنامه به زیر روال وقفه میره و کارای مورد نظرو انجام میده و ارتباط قطع میشه حالا باره دوم که تلفن زنگ میخوره دیگه CONNECTED و ENTER PASSWORD مثل قبل چاپ نمیشن و پشت سر هم چاپ میشن. :angry: :angry: :angry: :angry:
    خیلی خلاصه توضیح دادم امیدوارم که تونسته باشم مشکلمو برسونم :cry2:

    دیدگاه


      پاسخ : سوالات مربوط به LCD های کاراکتری و گرافیکی

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

      کد:
      if(cline==1) 
      {
      lcd_clear();
      lcd_putsf("CONNECTED");
      PORTC=0b00000000;
      بار اول ال سی دی به صورت پیش فرض می رود در نقطه ی صفر و صفر ولی چون در مرحله های بعد شما نگفتید کجا برود مکان نما روی آخرین مقدار خود باقی می ماند و همینجور باید پشت هم تکرار شود.
      پس باید برای هر دو تابع gotoxy را فراخوانی کنید
      انشالله که درست می شود
      دکتر چمران در 1311 در تهران متولد شد
      وی در زمان اقامت در آمریکا انجمن اسلامی آمریکا را تأسیس کرد که منجر به قطع بورسیه وی توسط شاه شد.
      او با اینکه یکی از دانشمندان مطرح آمریکا به حساب می آمد بدون توجه به مدرک به مصر رفت و آموزش نظامی دید.

      دیدگاه


        پاسخ : سوالات مربوط به LCD های کاراکتری و گرافیکی

        نوشته اصلی توسط N.ROBOT
        ممنون از جوابتون. برنامه طولانیه و نیاز به توضیح داره . اما این دستوره lcd_gotoxy یک جا از برنامم درست کار میکنه اما باره دوم انگار نه انگار که وجود داره.
        کد:
        #include <alcd.h>
        #include <delay.h>
        #define RELAY1 PORTD.4
        #define RELAY2 PORTD.5
        #define cline PORTD.6
        #define ringing PIND.7
        #define play PORTA.0
        int i=0;
        int A=-1;
        int C[4];
        
        // External Interrupt 2 service routine
        interrupt [EXT_INT2] void ext_int2_isr(void)
        {
         A=A+1;
         C[A]= PIND & 0x0F ;
         if (C[0]==1 & C[1]==2 & C[2]==3 & C[3]==11 )
         {
        i=0;
        lcd_clear();
        PORTC=0b1111000;
        play=0;
        delay_ms(5);
        play=1;
        lcd_gotoxy(0,1);
        lcd_putsf("ACCEPTED");
        switch(PIND & 0x0F)
        {
        case 1:
        if (RELAY1==1)
        {
        RELAY1=0;
        PORTC=0b110000;
        play=0;
        delay_ms(5);
        play=1;
        lcd_clear();
        lcd_gotoxy(0,1);
        lcd_putsf("RLY1:OFF");
        //delay_ms(300);
        }
        else 
        {
        if (RELAY1==0)
        {
        RELAY1=1;
        PORTC=0b11000;
        play=0;
        delay_ms(5);
        play=1;
        lcd_clear();
        lcd_putsf("RLY1:ON");
        //delay_ms(300);
        }
        }
        break;
        
        case 2:
        if (RELAY2==1)
        {
        lcd_clear();
        RELAY2=0;
        PORTC=0b1100000;
        play=0;
        delay_ms(5);
        play=1;
        lcd_putsf("RLY2:OFF");
        //delay_ms(300);
        }
        else 
        {
        if (RELAY2==0)
        {
        RELAY2=1;
        PORTC=0b1001000;
        play=0;
        delay_ms(5);
        play=1;
        lcd_clear();
        lcd_putsf("RLY2:ON");
        //delay_ms(300);
        }
        }
        break;
        
        case 12:
        lcd_clear();
        lcd_putsf("DISCONNECTED");
        cline=0;
        i=10;
        delay_ms(300);
        lcd_clear();
        break;
        
        case 13:
        lcd_putchar('A');
        break;
        
        case 14:
        lcd_putchar('B');
        break;
        
        case 15:
        lcd_putchar('C');
        }
        }
         else
         {
         if (A>=3) 
         { 
         lcd_clear();
         PORTC=0b10001000;
        play=0;
        delay_ms(5);
        play=1;
         lcd_putsf("WRONG PASSWORD");
         delay_ms(100);
         lcd_clear();
         cline=0;
         i=10;
         }
         };
        
        }
        lcd_init(16);
        
        // Global enable interrupts
        #asm("sei")
        lcd_clear();
        lcd_putsf("DTMF DECODER");
        delay_ms(200);
        lcd_clear();
        lcd_putsf("READY");
        //delay_ms(500);
        
        
        while (1)
           {
           if(ringing)
        {
        lcd_clear();
        lcd_putsf("Ringing...");
        delay_ms(1000);
        i=0;
        cline=1;
        }
        if(cline==1) 
        {
        lcd_clear();
        lcd_putsf("CONNECTED");
        lcd_gotoxy(0,1);
        lcd_putsf("enter password");
        PORTC=0b00000000;
        play=0;
        delay_ms(5);
        play=1;
        while(i<10)
        {
        i++;
        delay_ms(500);
        }
        lcd_clear();
        A=-1;
        C[0]=0;
        C[1]=0;
        C[2]=0;
        C[3]=0;
        cline=0;
        lcd_clear();
        lcd_putsf("Ready");
        }
        };
        }
        قسمتای پیکربندیو حذف کردم که اینجا شلوغ نشه ماهان جان. قضیه ازین قراره که باره اول که تلفن زنگ میخوره و خط وصل میشه درست سطر اول connected و سطر دوم ENTER PASSWORD چاپ میشنو مشکلی نی اما وقتی برنامه به زیر روال وقفه میره و کارای مورد نظرو انجام میده و ارتباط قطع میشه حالا باره دوم که تلفن زنگ میخوره دیگه CONNECTED و ENTER PASSWORD مثل قبل چاپ نمیشن و پشت سر هم چاپ میشن. :angry: :angry: :angry: :angry:
        خیلی خلاصه توضیح دادم امیدوارم که تونسته باشم مشکلمو برسونم :cry2:
        برنامه از نظر من مشکلی نداره
        ممکنه مشکل از نویز باشه!
        1 در دنیا 100 در آخرت (درس و مشق فعالیتمو تو انجمن کم کرده)
        من آنچه شرط بلاغست با تو میآ‌گویم. تو خواه از سخنم پند گیر و خواه ملال. سعدی
        !Electronic On! Programming On
        هوشمندانه سوال بپرسیم!
        http://ir02x6.persiangig.com/logo/eca/tanks_01.png

        دیدگاه


          پاسخ : سوالات مربوط به LCD های کاراکتری و گرافیکی

          نوشته اصلی توسط mahan.rafiee
          برنامه از نظر من مشکلی نداره
          ممکنه مشکل از نویز باشه!
          چه تو پروتیوس چه سخت افزار این مشکل هست. دیگه تو پروتیوس نویزی وجود نداره. جالبه مثلا دستور lcd_gotoxy که به این قسمت که پایین گذاتم اضافه میکنم بی تاثیره و عبارت relay1ff بازم تو سطر و ستون اول چاپ میشه به جای سطر دو و ستون صفر. :angry:
          کد:
          case 1:
          if (RELAY1==1)
          {
          RELAY1=0;
          PORTC=0b110000;
          play=0;
          delay_ms(5);
          play=1;
          lcd_clear();
          lcd_gotoxy(0,1);
          lcd_putsf("RLY1:OFF");

          دیدگاه


            پاسخ : سوالات مربوط به LCD های کاراکتری و گرافیکی

            [quote author=011 link=topic=18025.msg568588#msg568588 date=1395608998]
            سلام
            تا اونجا که من فهمیدم اگر شما برای این خط هم یک ال سی دی gotoxy بنویسید باید درست بشه

            کد:
            if(cline==1) 
            {
            lcd_clear();
            lcd_putsf("CONNECTED");
            PORTC=0b00000000;
            عزیز اخه خوده دستوره lcd_clear علاوه بر پاک کردن موقعیتو به 0 و 0 تغییر میده. این طور نی ؟ یعنی شما میگین اینجوری بنویسم :

            کد:
            if(cline==1) 
            {
            lcd_clear();
            lcd_gotoxy(0,0);
            lcd_putsf("enter password");
            lcd_gotoxy(0,1);
            lcd_putsf("connected");
            PORTC=0b00000000;
            play=0;
            delay_ms(5);

            دیدگاه


              پاسخ : سوالات مربوط به LCD های کاراکتری و گرافیکی

              نوشته اصلی توسط N.ROBOT
              چه تو پروتیوس چه سخت افزار این مشکل هست. دیگه تو پروتیوس نویزی وجود نداره. جالبه مثلا دستور lcd_gotoxy که به این قسمت که پایین گذاتم اضافه میکنم بی تاثیره و عبارت relay1ff بازم تو سطر و ستون اول چاپ میشه به جای سطر دو و ستون صفر. :angry:
              کد:
              case 1:
              if (RELAY1==1)
              {
              RELAY1=0;
              PORTC=0b110000;
              play=0;
              delay_ms(5);
              play=1;
              lcd_clear();
              lcd_gotoxy(0,1);
              lcd_putsf("RLY1:OFF");
              والّا من تا حالا با همچین مشکلاتی رو به رو نشدم .

              شاید مشکل از کدویژنه!
              باید کرکش معتبر باشه!
              چون اگه کرک معتبر نباشه این کدوِیژن یه کارای وحشتناک میکنه که نگو oo:
              این مشکل شما باگ هستش !
              بهتره کدویژنت رو عوض کنی
              بیا آن اینستاش بکن
              از این لینک کرک معتبر و خود نرم افزار رو دانلود کنhttp://dl2.soft98.ir/programing/Code...5.Advanced.rar
              پسورد فایل فشرده : soft98.ir
              بعد نصب کن :nice:
              1 در دنیا 100 در آخرت (درس و مشق فعالیتمو تو انجمن کم کرده)
              من آنچه شرط بلاغست با تو میآ‌گویم. تو خواه از سخنم پند گیر و خواه ملال. سعدی
              !Electronic On! Programming On
              هوشمندانه سوال بپرسیم!
              http://ir02x6.persiangig.com/logo/eca/tanks_01.png

              دیدگاه


                پاسخ : سوالات مربوط به LCD های کاراکتری و گرافیکی

                نوشته اصلی توسط mahan.rafiee
                والّا من تا حالا با همچین مشکلاتی رو به رو نشدم .

                شاید مشکل از کدویژنه!
                باید کرکش معتبر باشه!
                چون اگه کرک معتبر نباشه این کدوِیژن یه کارای وحشتناک میکنه که نگو oo:
                این مشکل شما باگ هستش !
                بهتره کدویژنت رو عوض کنی
                بیا آن اینستاش بکن
                از این لینک کرک معتبر و خود نرم افزار رو دانلود کنhttp://dl2.soft98.ir/programing/Code...5.Advanced.rar
                پسورد فایل فشرده : soft98.ir
                بعد نصب کن :nice:
                نمدونم اما تو هلپ و بعد ابوت که میرم کامل کرک نشون میده و حتی سریال نامبرشم مینویسه :sad:

                دیدگاه


                  پاسخ : سوالات مربوط به LCD های کاراکتری و گرافیکی

                  نوشته اصلی توسط N.ROBOT
                  نمدونم اما تو هلپ و بعد ابوت که میرم کامل کرک نشون میده و حتی سریال نامبرشم مینویسه :sad:
                  حالا شما نصب کن شاید درست شد :redface:
                  در ضمن امکانات بیشتری هم داره :nerd: :wow:
                  1 در دنیا 100 در آخرت (درس و مشق فعالیتمو تو انجمن کم کرده)
                  من آنچه شرط بلاغست با تو میآ‌گویم. تو خواه از سخنم پند گیر و خواه ملال. سعدی
                  !Electronic On! Programming On
                  هوشمندانه سوال بپرسیم!
                  http://ir02x6.persiangig.com/logo/eca/tanks_01.png

                  دیدگاه


                    پاسخ : سوالات مربوط به LCD های کاراکتری و گرافیکی

                    نوشته اصلی توسط mahan.rafiee
                    حالا شما نصب کن شاید درست شد :redface:
                    در ضمن امکانات بیشتری هم داره :nerd: :wow:
                    باشه نصب میکنم . کرکش چطوره ؟؟؟ فایلو کرکو بایس کپی کنی تو محل نصب با بایس فقط بازش کنی؟

                    دیدگاه


                      پاسخ : سوالات مربوط به LCD های کاراکتری و گرافیکی

                      نوشته اصلی توسط N.ROBOT
                      باشه نصب میکنم . کرکش چطوره ؟؟؟ فایلو کرکو بایس کپی کنی تو محل نصب با بایس فقط بازش کنی؟
                      باید تو محل نصب کپی کرد
                      1 در دنیا 100 در آخرت (درس و مشق فعالیتمو تو انجمن کم کرده)
                      من آنچه شرط بلاغست با تو میآ‌گویم. تو خواه از سخنم پند گیر و خواه ملال. سعدی
                      !Electronic On! Programming On
                      هوشمندانه سوال بپرسیم!
                      http://ir02x6.persiangig.com/logo/eca/tanks_01.png

                      دیدگاه


                        پاسخ : سوالات مربوط به LCD های کاراکتری و گرافیکی

                        نوشته اصلی توسط mahan.rafiee
                        باید تو محل نصب کپی کرد
                        کپی کردم اما تو هلپ تو ابوت سریال نامبرو ffffffffffffffffffffffffffffffffffffffffffffffffff f نشون میده مشکل نداره ؟

                        دیدگاه


                          پاسخ : سوالات مربوط به LCD های کاراکتری و گرافیکی

                          نوشته اصلی توسط N.ROBOT
                          کپی کردم اما تو هلپ تو ابوت سریال نامبرو ffffffffffffffffffffffffffffffffffffffffffffffffff f نشون میده مشکل نداره ؟
                          نه
                          1 در دنیا 100 در آخرت (درس و مشق فعالیتمو تو انجمن کم کرده)
                          من آنچه شرط بلاغست با تو میآ‌گویم. تو خواه از سخنم پند گیر و خواه ملال. سعدی
                          !Electronic On! Programming On
                          هوشمندانه سوال بپرسیم!
                          http://ir02x6.persiangig.com/logo/eca/tanks_01.png

                          دیدگاه


                            پاسخ : سوالات مربوط به LCD های کاراکتری و گرافیکی

                            نوشته اصلی توسط N.ROBOT
                            دوسسسسستان هیچکس نیسسست به داده من برسهههه . واقعا دیگه عقلم به جایی نمییییرسههههههههههههههههههه!!!!
                            فک کنم اثرات کدویژن قبلیه رو سیستمت مونده :-?
                            دو راه داری:
                            1-اگه زحمتی نیست باید ویندوز رو عوض کرد :sad:
                            و دوباره اون جدیده که لینک دادم رو نصب کرد
                            2-یا اینکه بری یه نرم افزار پاکسازی ریجیستری گیر بیاری...
                            1 در دنیا 100 در آخرت (درس و مشق فعالیتمو تو انجمن کم کرده)
                            من آنچه شرط بلاغست با تو میآ‌گویم. تو خواه از سخنم پند گیر و خواه ملال. سعدی
                            !Electronic On! Programming On
                            هوشمندانه سوال بپرسیم!
                            http://ir02x6.persiangig.com/logo/eca/tanks_01.png

                            دیدگاه


                              پاسخ : سوالات مربوط به LCD های کاراکتری و گرافیکی

                              نوشته اصلی توسط mahan.rafiee
                              فک کنم اثرات کدویژن قبلیه رو سیستمت مونده :-?
                              دو راه داری:
                              1-اگه زحمتی نیست باید ویندوز رو عوض کرد :sad:
                              و دوباره اون جدیده که لینک دادم رو نصب کرد
                              2-یا اینکه بری یه نرم افزار پاکسازی ریجیستری گیر بیاری...
                              نه مشکل از کدویژن نیست .کشفش کردم از اون ارایه 4 عضویه c که تعریف شدست . وقتی a مقادیره 0.1.2.3 داره که به عبارتی تعیین کننده شماره ارایه c هست هیچ مشکلی نیست اما وقتی a به مقداره 5 میرسه یا به عبارتی واسه 5امین بار وقفه میخوره چون a برابر 5 میشه و ارایه c[a] کلا 4 عضو داره همین باعث مشکل میشه. اما در هر صورت میکرو یکجورایی نا محسوس میهنگه. یک راه اینه که ارایه c رو با تعداد عضوه زیاد تعریف کنم اما منطقی نیست. راه دیگه به نظرت میرسه ؟؟؟؟

                              دیدگاه


                                پاسخ : سوالات مربوط به LCD های کاراکتری و گرافیکی

                                سلام دوستان
                                مشکم در مورد lcdکارکتری هست من یک ولتمتر وفرکانس مترو با bscam نوشتم سطر اول فرکانس متر وسطر دوم ولتمتر اما بعداز چند ثانیه کار کردن lcd بهم میریزه مشکلم کجاست atmel32 وباbscam نوشته شده ممنون .

                                دیدگاه

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