اطلاعیه

Collapse
No announcement yet.

شمارنده

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

    شمارنده

    میخوام یه مداری بسازم .به این صورت که باهربار تحریک میکوسوئیچ یه شماره بصورت 4 رقمی روی lcd تا 2500 بشمارد ویک میکروسوئیچ اونو صفر کنه و همچنین با استفاده از keypad 3*4 زمانی که عددی وارد کردیم مثلا 1250 موقعی که شمارنده به این عدد رسید یک پایه میکرو 1 شه با atmega8 . کردم یه خورده روش دستکاری .. من در زمینه برنامه نویس زیاد وارد نیستم این برنامه رو برای دستگاه بوبین پیچ میخوام.اگه کسی برنامه ای داره بفرسته

    #2
    پاسخ : شمارنده

    نوشته اصلی توسط vampire-irani67
    میخوام یه مداری بسازم .به این صورت که باهربار تحریک میکوسوئیچ یه شماره بصورت 4 رقمی روی lcd تا 2500 بشمارد ویک میکروسوئیچ اونو صفر کنه و همچنین با استفاده از keypad 3*4 زمانی که عددی وارد کردیم مثلا 1250 موقعی که شمارنده به این عدد رسید یک پایه میکرو 1 شه با atmega8 . کردم یه خورده روش دستکاری .. من در زمینه برنامه نویس زیاد وارد نیستم این برنامه رو برای دستگاه بوبین پیچ میخوام.اگه کسی برنامه ای داره بفرسته
    سلام دوست عزیز
    نظر من اینه که تایمر یک میکروکنترلرتون رو روی حالت counter قرار بدین و وقفه ی مقایسه کننده رو فعال کنید ، کیپد رو اسکن کنید و توی رجیستر های OCR1AH , OCR1AL یا توی OCR1BH , OCR1BL بریزید که زمانی که به اون مقدار رسید وقفه رخ بده و یه خروجی فعال بشه
    کار سختی ندارید شما شروع کنید مهندس ها میان تکمیل میکنند

    دیدگاه


      #3
      پاسخ : شمارنده

      ، روش فعال کردن وقفه چه طوریه ؟ فایل کتابخانه keypad3*4 رو میفرستید ؟ در این زمینه اگه برنامه آماده ای دارین برام بفرستید ؟کلا برای اموزش برنامه نویسی avr c++ چه کتابی خوبه ؟

      دیدگاه


        #4
        پاسخ : شمارنده

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

        دیدگاه


          #5
          پاسخ : شمارنده

          نوشته اصلی توسط scienceaddict
          سلام دوست عزیز
          نظر من اینه که تایمر یک میکروکنترلرتون رو روی حالت counter قرار بدین و وقفه ی مقایسه کننده رو فعال کنید ، کیپد رو اسکن کنید و توی رجیستر های OCR1AH , OCR1AL یا توی OCR1BH , OCR1BL بریزید که زمانی که به اون مقدار رسید وقفه رخ بده و یه خروجی فعال بشه
          کار سختی ندارید شما شروع کنید مهندس ها میان تکمیل میکنند
          مهندس به نظرتون بهتر نیس یه پین رو به عنوان ورودی در نظر بگیرن!(به خاطر سادگی)
          و کیپد رو هم با همون توابع آماده
          البته این طور که شما گفتین فک کنم با CV کار میکنین!

          دیدگاه


            #6
            پاسخ : شمارنده

            شمارنده با تحریک میکروسوییچ تونستم درست کنم ؟ اینم برنامشه .ولی قسمت دوم مدار نتونستم جواب بگیرم. راهنمایی کنید

            #include <mega16.h>
            #include <delay.h>
            #include <lcd.h>
            #include <stdio.h>
            #asm
            .equ __lcd_port=0x1B ;PORTA
            #endasm
            unsigned int i;

            unsigned char;
            unsigned char p_state;
            unsigned char key;


            void main(void)
            {
            char buffer[32];
            lcd_init(16);

            DDRC = 0x00;
            PORTC = 0xFF;

            while(1)
            {

            if(!PINC.1)

            {
            i=0;
            lcd_clear();
            sprintf(buffer,"dor=%d\n",i );
            lcd_puts(buffer);
            };

            if(!PINC.0)
            {
            if(key!=p_state)
            {
            delay_ms(50);

            lcd_clear();


            lcd_gotoxy(0,0);
            sprintf(buffer,"dor=%d\n",i );
            lcd_puts(buffer);
            if(i==9999)
            {
            i=0;

            }
            else
            delay_ms(50);
            i++;


            p_state=key;
            };
            }
            else
            p_state=0xFF;

            }

            }

            دیدگاه


              #7
              پاسخ : شمارنده

              نوشته اصلی توسط ehsancompany
              مهندس به نظرتون بهتر نیس یه پین رو به عنوان ورودی در نظر بگیرن!(به خاطر سادگی)
              و کیپد رو هم با همون توابع آماده
              البته این طور که شما گفتین فک کنم با CV کار میکنین!
              سلام
              ممنون
              قطعا اینی که شما میگید خیلی بهتره ، و استفاده از دو سه تا کلید برای کنترل مقدار شمارش خیلی بهتر از کیپد هست اما چون خودشون گفته بودند من چیزی که به ذهنم رسید رو گفتم ، من منظور شما رو از " کیپد هم با همون توابع آماده " درست نفهمیدم
              من به کامپایلری اشاره نکردم اما هم با کدویژن کار میکنم هم اسمبلی

              دیدگاه


                #8
                پاسخ : شمارنده

                نوشته اصلی توسط vampire-irani67
                شمارنده با تحریک میکروسوییچ تونستم درست کنم ؟ اینم برنامشه .ولی قسمت دوم مدار نتونستم جواب بگیرم. راهنمایی کنید

                #include <mega16.h>
                #include <delay.h>
                #include <lcd.h>
                #include <stdio.h>
                #asm
                .equ __lcd_port=0x1B ;PORTA
                #endasm
                unsigned int i;

                unsigned char;
                unsigned char p_state;
                unsigned char key;


                void main(void)
                {
                char buffer[32];
                lcd_init(16);

                DDRC = 0x00;
                PORTC = 0xFF;

                while(1)
                {

                if(!PINC.1)

                {
                i=0;
                lcd_clear();
                sprintf(buffer,"dor=%d\n",i );
                lcd_puts(buffer);
                };

                if(!PINC.0)
                {
                if(key!=p_state)
                {
                delay_ms(50);

                lcd_clear();


                lcd_gotoxy(0,0);
                sprintf(buffer,"dor=%d\n",i );
                lcd_puts(buffer);
                if(i==9999)
                {
                i=0;

                }
                else
                delay_ms(50);
                i++;


                p_state=key;
                };
                }
                else
                p_state=0xFF;

                }

                }

                بسیار عالی ، دوست عزیز شما گفتید زیاد به برنامه نویسی وارد نیستید , اما اینطور هم نیست
                شما نگاهی به این برنامه ای که گذاشتم بنداز ؛ ببین شما گفتی تا 2500 بشماره , با میکروسوییچ بشماره , اگه با مقدار دلخواه برابر شد یه خروجی فعال بشه , من این ها رو در نظر گرفتم و یه برنامه عجله ای نوشتم که میتونه اشکالات زیادی داشته باشه پس خرده نگیر
                چیز های دیگه ای هم میتونی بهش اضافه کنی مثلا اینکه 2500 (سقف شمارش) رو خودت با کلید ها تعیین کنی Y, چون از مد Normal استفاده کردم و تو مد نرمال OCR1A به صورت بلافاصله به روز میشه update immediate اگه در حال شمارش مقدار 1250 رو کم یا زیاد کنی , باز هم اگر به مقدار مقایسه ات برسه خروجی فعال میشه اما تو مد هایی که OCR1 در Top , به روز میشه , با تغییر دادن OCR1 وقفه ی مقایسه از دست میره Miss میشه و حتما تایمر باید تا تاپ بشمره و بعد تو سیکل شمارش بعدی وقفه رخ میده
                برای این کارت شما یه ATtiny2313 و حتی با یکم تغییر تو برنامه یه tiny26 کفایت میکنه البته این دوتا گرون تر از Atmega8 هستند اما بوردت رو جمع و جور میکنه
                http://s3.picofile.com/file/7637347525/vampire_irani67.zip.html

                دیدگاه


                  #9
                  پاسخ : شمارنده

                  اتفاقا خیلی هم خوبه مرسی از لطفتون دوست عزیز

                  دیدگاه

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