اطلاعیه

Collapse
No announcement yet.

مشکل با adc و touch screen

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

    مشکل با adc و touch screen

    با سلام

    من یه مشکلی با adc داخلی میکرو و (مدل 034007)touch screen دارم.حتما همه اون مدار معروف صفحه لمسی که تاپیکش هم تو فروم خودمون بود یادتون هست.من اون مدار رو طبق نقشه و برنامه داده شده بستم.اما چند مشکل هست:
    1-چند دفعه اول مختصات هر نقطه از touch screenبصورت زیر روی lcd نمایش داده می شد:
    X=233 (با یه نوسان 5 تا 10 واحد در نمایش نقاط مختلف)
    Y=0
    یعنی مختصات Y که اصلا توسط میکرو دریافت نمی شد و برای X هم در همه نقاط تقریبا عدد ثابتی بود اما نکته جالب در این بود که وقتی دستم رو به پین های کانکتور touch screen می زدم مختصات X ,Y هر دو تغییر می کردو بر خلاف حالت قبل Y هم روی lcd با مقدار نشان داده میشد.تا اینجا به نظر شما مشکل از چیه؟
    2-بعد از چند دفعه نمی دونم چه اتفاقی افتاد که وقتی اتصالات touch screen رو هم قطع میکردم فقط مقدار ثابت X=255,Y=127 نمایش داده میشد.(تاچ اسکرین را از مدار جدا کردم)یعنی ممکنه به adc میکرو آسیب رسیده باشه؟

    راهی برای تست کردن میکرو و تاچ اسکرین وجود داره که بشه فهمید سالمن؟
    برنام و یک سایت config تاچ اسکرین که از اونها استفاده کردم به این صورته: http://www.elect.ir/post-242.aspx

    $regfile = "m32def.dat"
    $crystal = 12000000
    Config Porta = Input
    Config Portb = Output
    Config Portc = Output
    Config Portd = Output
    Dim X As Word , Y As Word
    $lib "glcdks108.lbx"
    Config Adc = Single , Prescaler = Auto , Reference = Internal
    Config Graphlcd = 128 * 64sed , Dataport = Portd , Controlport = Portb , Cd = 0 , Rd = 1 , Enable = 2 , Ce2 = 3 , Ce = 4 , Reset = 5
    Setfont Font8x8
    Stop Adc
    Start Adc
    X = 0
    Y = 0

    Do
    Config Porta.0 = Output
    Config Porta.1 = Input
    Config Porta.2 = Output
    Config Porta.3 = Input
    Set Porta.0
    Reset Porta.1
    Reset Porta.2
    Reset Porta.3
    X = Getadc(1)
    X = X / 4


    Config Porta.0 = Input
    Config Porta.1 = Output
    Config Porta.2 = Input
    Config Porta.3 = Output
    Reset Porta.0
    Set Porta.1
    Reset Porta.2
    Reset Porta.3
    Y = Getadc(2)
    Y = Y / 8

    Lcdat 1 , 1 , " "
    Lcdat 2 , 1 , " "
    Lcdat 1 , 1 , X
    Lcdat 2 , 1 , Y

    Waitms 10
    Loop
    End
    $include"font8x8.font"

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

    #2
    پاسخ : مشکل با adc و touch screen


    کم آوردم.درست نمیشه.بچه ها شما نظر خاصی ندارین؟

    دیدگاه


      #3
      پاسخ : مشکل با adc و touch screen

      سلام دوست من
      من یکی از این مدل های کوچیک تاچ (64*128) را راه انداختم ولی هیچ فرقی نمیکنه .
      من فقط یکی از پایه های دیتا را Pull Down کردم فکر کنم X را شما Pull down کردی؟
      فرزندم در راه است

      دیدگاه


        #4
        پاسخ : مشکل با adc و touch screen

        ali_rk جان ممنون از راهنماییت اما شرمنده من یه تازه کارم .اصولا چرا باید پایه هارو pull up یا pull down کرد؟ :question: دستور خاصی برای این کار وجود داره یا باید لم خاصی رو انجام بدبم؟

        دیدگاه


          #5
          پاسخ : مشکل با adc و touch screen

          راستی تا یادم نرفته چطوری میشه پایه های میکرو رو نرم افزاری HI-Z کرد؟احتمال می دم مشکل کارم از اینجا باشه :rolleyes:

          دیدگاه


            #6
            پاسخ : مشکل با adc و touch screen

            :angry: :angry: :angry: :cry2: :cry2: :cry2: :cry2:

            دیدگاه


              #7
              پاسخ : مشکل با adc و touch screen

              علت این که در بعضی از مدارات الکترونیکی و از جمله آیسی ها با عناوینی مثل Pull up یا Pull Down مواجه میشویم به ساختار داخلی اون مدارات بر میگرده

              مثلا برای Pull up مداری را تصور کنید که ار یک سری ترانزیستور BJT یا FET تشکیل شده که در آرایش امیتر مشترک یا سورس مشترک هستند

              بنابراین بار (مقاومت یا هرچیز دیگر) باید به کلکتور با درین اتصال یابد

              حال اگر کلکتور یا درین به Vcc متصل نباشد باید آن را به منبع تغذیه متصل کرد
              در حقیقت در این گونه مدارات ، درین یا کلکتور به جایی متصل نیست و اصطلاحا Open Drain Or Open Collector است که باید برای راه اندازی به VCC متصل گردد
              به این مسئله Pull Up کردن میگویند

              برای Pull Down نیز میتوان به عدم اتصال امیتر یا سورس به GND اشاره کرد

              دیدگاه


                #8
                پاسخ : مشکل با adc و touch screen

                باسلام
                مشکل من با tuoch اینه که مقدار x هیچ تغییری نمیکنه
                من برنامه رو مثل نمونه ای که آقای نجفی گذاشتن بستم
                من با مگا 64 و ال سی دی 128,240 این کا رو کردم
                نمونه کد هم میذارم لطفا دوستان کمک کنند
                ممنون

                /**************************************************
                Read X Y
                **************************************************/

                int X (void)
                {
                int Read_X;
                PORTF=0x80;
                DDRF=0xA0;
                Read_X=read_adc(6);
                delay_ms(20);
                return Read_X;
                }
                //---------------------------------
                int Y (void){
                int Read_Y;
                PORTF=0x40;
                DDRF=0x50;
                Read_Y=read_adc(5);
                delay_ms(20);
                return Read_Y;
                }

                دیدگاه


                  #9
                  پاسخ : مشکل با adc و touch screen

                  نوشته اصلی توسط mahan110
                  باسلام
                  مشکل من با tuoch اینه که مقدار x هیچ تغییری نمیکنه
                  من برنامه رو مثل نمونه ای که آقای نجفی گذاشتن بستم
                  من با مگا 64 و ال سی دی 128,240 این کا رو کردم
                  نمونه کد هم میذارم لطفا دوستان کمک کنند
                  ممنون

                  /**************************************************
                  Read X Y
                  **************************************************/

                  int X (void)
                  {
                  int Read_X;
                  PORTF=0x80;
                  DDRF=0xA0;
                  Read_X=read_adc(6);
                  delay_ms(20);
                  return Read_X;
                  }
                  //---------------------------------
                  int Y (void){
                  int Read_Y;
                  PORTF=0x40;
                  DDRF=0x50;
                  Read_Y=read_adc(5);
                  delay_ms(20);
                  return Read_Y;
                  }
                  خودم حلش کردم ممنون از کمک همه!!!!!

                  دیدگاه

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