NOTICE توجه: این یک موضوع قدیمی است که آخرین پست ارسالی آن مربوط به 4102 روز قبل است . لطفا فقط پاسخ ها ، سوالات و درخواست های 100 درصد مرتبط را به آن ارسال کنید و برای درخواست ها و سوالات جدید موضوع جدیدی را ایجاد کنید
نمایش نتایج: از 1 به 9 از 9

موضوع: کمک در تغییر برنامه

  1. #1
    کاربر علاقه مند
    تاریخ عضویت
    Sep 2012
    نوشته ها
    97
    تشکر
    75
    تشکر شده 7 بار در 7 پست

    پیش فرض کمک در تغییر برنامه

    سلام
    برنامه زیر برا یه سون سگمنت 4تایی نوشته شده برا اینکه تبدیلش کنم به سون سگمنت های تکی چه تغیراتی باید بدهم؟
    ممنون
    $regfile = "M8def.dat"
    $crystal = 1000000


    Config Adc = Single , Prescaler = Auto

    Config Pinc.5 = Input


    Config Portb = Output : Portb = 0
    Config Pinc.0 = Output : S1 Alias Portc.0 : Set S1
    Config Pinc.1 = Output : S2 Alias Portc.1 : Set S2
    Config Pinc.2 = Output : S3 Alias Portc.2 : Set S3

    Dim A As Word
    Dim Aa As Word
    Dim I As Byte
    Dim T As Word : T = 1
    Dim W As Single



    Declare Sub Show(byval A As Word)

    Do

    Start Adc
    A = Getadc(5)
    Stop Adc

    If A < 205 Then
    A = 0
    Else
    A = A - 205
    W = A / 2.72
    A = W
    End If

    Call Show(a)

    Loop

    End


    '******************************* Show
    Sub Show(a As Word)
    Do
    Incr I
    Aa = A Mod 10
    Select Case I
    Case 1:
    Portb = Lookup(aa , Annode_display)
    Set S1 : Waitms T
    Case 2:
    Portb = Lookup(aa , Annode_display)
    Set S2 : Waitms T
    Case 3:
    Portb = Lookup(aa , Annode_display)
    Set S3 : Waitms T
    End Select
    Reset S1 : Reset S2 : Reset S3
    A = A \ 10 : If A = 0 Then Exit Do
    Loop
    I = 0
    Reset S1 : Reset S2 : Reset S3
    End Sub


    '_____________________________ For Annode Display
    Annode_display:
    Data 192 , 249 , 164 , 176 , 153 , 146 , 130 , 248 , 128 , 144
    'CHAR 0 1 2 3 4 5 6 7 8 9

  2. # ADS
    Circuit advertisement
    تاریخ عضویت
    Always
    نوشته ها
    Many
     

  3. #2
    مدیرکل انجمنها Doloop آواتار ها
    تاریخ عضویت
    Aug 2011
    نام
    حسين
    نوشته ها
    1,964
    تشکر
    3,312
    تشکر شده 3,086 بار در 1,371 پست

    پیش فرض

    سلام مهندس

    بعضی وقت ها نوشتن مجدد برنامه از تحلیل و ویرایش برنامه از پیش نوشته راحت تر و سریع تره..!!!

    شما بگو میخای چیکار کنی ؟؟؟
    این برنامه برای سگمنت 3تایی هست...!
    منظور شما رو دقیقا متوجه نشدم ... میخواهید تنها یک رقم رو نمایش بدید یا چیز دیگه ایست قضیه ..!!!

    برای نمایش کد ها هم میتونی گزینه code استفاده کنی
    به این صورت :

    کد:
    $regfile = "M8def.dat"
      $crystal = 1000000
      
      
      Config Adc = Single , Prescaler = Auto
      
      Config Pinc.5 = Input
      
      
      Config Portb = Output : Portb = 0
      Config Pinc.0 = Output : S1 Alias Portc.0 : Set S1
      Config Pinc.1 = Output : S2 Alias Portc.1 : Set S2
      Config Pinc.2 = Output : S3 Alias Portc.2 : Set S3
      
      Dim A As Word
      Dim Aa As Word
      Dim I As Byte
      Dim T As Word : T = 1
      Dim W As Single
      
      
      
      Declare Sub Show(byval A As Word)
      
      Do
      
      Start Adc
      A = Getadc(5)
      Stop Adc
      
       If A < 205 Then
       A = 0
       Else
       A = A - 205
       W = A / 2.72
       A = W
       End If
      
      Call Show(a)
      
      Loop
      
      End
      
      
      '*******************************  Show
      Sub Show(a As Word)
         Do
            Incr I
            Aa = A Mod 10
            Select Case I
               Case 1:
                  Portb = Lookup(aa , Annode_display)
                  Set S1 : Waitms T
               Case 2:
                  Portb = Lookup(aa , Annode_display)
                  Set S2 : Waitms T
               Case 3:
                  Portb = Lookup(aa , Annode_display)
                  Set S3 : Waitms T
            End Select
            Reset S1 : Reset S2 : Reset S3
            A = A \ 10 : If A = 0 Then Exit Do
         Loop
         I = 0
         Reset S1 : Reset S2 : Reset S3
      End Sub
    ویرایش توسط Doloop : 31-01-2013 در ساعت 00:15
    *** اللّهم عجّل لولیک الفرج ***

  4. #3
    کاربر علاقه مند
    تاریخ عضویت
    Sep 2012
    نوشته ها
    97
    تشکر
    75
    تشکر شده 7 بار در 7 پست

    پیش فرض

    نقل قول نوشته اصلی توسط doloop نمایش پست ها
    سلام مهندس

    بعضی وقت ها نوشتن مجدد برنامه از تحلیل و ویرایش برنامه از پیش نوشته راحت تر و سریع تره..!!!

    شما بگو میخای چیکار کنی ؟؟؟
    این برنامه برای سگمنت 3تایی هست...!
    منظور شما رو دقیقا متوجه نشدم ... میخواهید تنها یک رقم رو نمایش بدید یا چیز دیگه ایست قضیه ..!!!

    برای نمایش کد ها هم میتونی گزینه code استفاده کنی
    به این صورت :

    کد:
    $regfile = "m8def.dat"
      $crystal = 1000000
      
      
      config adc = single , prescaler = auto
      
      config pinc.5 = input
      
      
      config portb = output : Portb = 0
      config pinc.0 = output : S1 alias portc.0 : Set s1
      config pinc.1 = output : S2 alias portc.1 : Set s2
      config pinc.2 = output : S3 alias portc.2 : Set s3
      
      dim a as word
      dim aa as word
      dim i as byte
      dim t as word : T = 1
      dim w as single
      
      
      
      declare sub show(byval a as word)
      
      do
      
      start adc
      a = getadc(5)
      stop adc
      
       if a < 205 then
       a = 0
       else
       a = a - 205
       w = a / 2.72
       a = w
       end if
      
      call show(a)
      
      loop
      
      end
      
      
      '*******************************  show
      sub show(a as word)
         do
            incr i
            aa = a mod 10
            select case i
               case 1:
                  portb = lookup(aa , annode_display)
                  set s1 : Waitms t
               case 2:
                  portb = lookup(aa , annode_display)
                  set s2 : Waitms t
               case 3:
                  portb = lookup(aa , annode_display)
                  set s3 : Waitms t
            end select
            reset s1 : Reset s2 : Reset s3
            a = a \ 10 : If a = 0 then exit do
         loop
         i = 0
         reset s1 : Reset s2 : Reset s3
      end sub
    سلام
    میخواهم ورودی که یک تا 5 ولت میباشد را میکرو بگیرد یک واحد کم کند بعد ضربدر 75 کند
    حالا عدد بدست امده مثلا 245است 5 را روی یک سون سگمنت 4 را روی یک سون سگمنت و 2 هم روی یک سون سگمنت نشون بدهد
    ولی سون سگمنتهایمون جدا هستند
    ممنون

  5. #4
    مدیرکل انجمنها Doloop آواتار ها
    تاریخ عضویت
    Aug 2011
    نام
    حسين
    نوشته ها
    1,964
    تشکر
    3,312
    تشکر شده 3,086 بار در 1,371 پست

    پیش فرض

    قسمت ADC که مشکلی نداری درسته ؟
    برای نمایش هم همین برنامه رو میتونی استفاده کنی حتی بدون تغیر
    ولی سخت افزارت تغیر میکنه :

    توی سگمنت 3تایی کلا ما 8تا پین دیتا داریم , 3تا پین فعال ساز برای هر سگمنت و یک پین هم آزاد (اگه اشتب نکرده باشم ولی بر فرض همچین پین هایی هست)

    اما توی سگمنت تکی ما 8تا پین دیتا داریم , 1 پین فعال ساز برای یک سگمنت (همون مشترک) و یک پین هم آزاد

    پین های فعال ساز همون S1 و S2 و S3 در سگمنت 3تایی
    و همون پین مشترک در سگمنت تکی هستند برای هر سگمنت

    اگر شما از 3 سگمنت جدا گانه استفاده کنی باید همه پینهای دیتای (a;b;c;d;e;f;g;dp) همه سگمنت هارو نظیر به نظیر به هم وصل کنی a به a و b به b الی آخر

    حالا پایه مشترک سگمنت اول (یکان) میشه همون S1

    پایه مشترک سگمنت دوم (دهگان) میشه همون S2

    پایه مشترک سگمنت اول (صدگان) میشه همون S3

    یادت باشه فقط سخت افزار تغیر کرد
    *** اللّهم عجّل لولیک الفرج ***

  6. تشکرها از این نوشته :


  7. #5
    کاربر علاقه مند
    تاریخ عضویت
    Sep 2012
    نوشته ها
    97
    تشکر
    75
    تشکر شده 7 بار در 7 پست

    پیش فرض

    نقل قول نوشته اصلی توسط doloop نمایش پست ها
    قسمت adc که مشکلی نداری درسته ؟
    برای نمایش هم همین برنامه رو میتونی استفاده کنی حتی بدون تغیر
    ولی سخت افزارت تغیر میکنه :

    توی سگمنت 3تایی کلا ما 8تا پین دیتا داریم , 3تا پین فعال ساز برای هر سگمنت و یک پین هم آزاد (اگه اشتب نکرده باشم ولی بر فرض همچین پین هایی هست)

    اما توی سگمنت تکی ما 8تا پین دیتا داریم , 1 پین فعال ساز برای یک سگمنت (همون مشترک) و یک پین هم آزاد

    پین های فعال ساز همون s1 و s2 و s3 در سگمنت 3تایی
    و همون پین مشترک در سگمنت تکی هستند برای هر سگمنت

    اگر شما از 3 سگمنت جدا گانه استفاده کنی باید همه پینهای دیتای (a;b;c;d;e;f;g;dp) همه سگمنت هارو نظیر به نظیر به هم وصل کنی a به a و b به b الی آخر

    حالا پایه مشترک سگمنت اول (یکان) میشه همون s1

    پایه مشترک سگمنت دوم (دهگان) میشه همون s2

    پایه مشترک سگمنت اول (صدگان) میشه همون s3

    یادت باشه فقط سخت افزار تغیر کرد
    ممنون
    این کار کردم
    مشکل اونجاست که در این حالت چشمک زن میشود
    ثابت نشون نمیده
    اینو چطور حل کنم
    ممنون

  8. #6
    مدیرکل انجمنها Doloop آواتار ها
    تاریخ عضویت
    Aug 2011
    نام
    حسين
    نوشته ها
    1,964
    تشکر
    3,312
    تشکر شده 3,086 بار در 1,371 پست

    پیش فرض

    مشکل اونجاست که در این حالت چشمک زن میشود
    ثابت نشون نمیده
    اینو چطور حل کنم
    این حالت چشمک زن از تاخیر هست...
    مقدار متغیر t که برای تاخیر هست رو زیاد کن
    5 تا 15 امتحان کن ببین درست میشه (تغیر بده تا مقدار مطلوب رو بدست بیاری)
    *** اللّهم عجّل لولیک الفرج ***

  9. تشکرها از این نوشته :


  10. #7
    کاربر علاقه مند
    تاریخ عضویت
    Sep 2012
    نوشته ها
    97
    تشکر
    75
    تشکر شده 7 بار در 7 پست

    پیش فرض

    نقل قول نوشته اصلی توسط Doloop نمایش پست ها
    این حالت چشمک زن از تاخیر هست...
    مقدار متغیر t که برای تاخیر هست رو زیاد کن
    5 تا 15 امتحان کن ببین درست میشه (تغیر بده تا مقدار مطلوب رو بدست بیاری)
    سلام
    شرمنده
    تا 50 امتحان کردم باز درست نشد
    امدم tرا برای هر کدوم مختلف گذاشتم بهتر میشه ولی خوب نه
    به نظرتون نمیشه یه تاخیر یه جاش گذاشت

  11. #8
    مدیرکل انجمنها Doloop آواتار ها
    تاریخ عضویت
    Aug 2011
    نام
    حسين
    نوشته ها
    1,964
    تشکر
    3,312
    تشکر شده 3,086 بار در 1,371 پست

    پیش فرض

    سلام مهندس

    اول مقدار فرکانس کاری رو 8 مگ قرار بده بعد ببین چطوره ؟
    اگه خوب نشد بیا از این برنامه استفاده کن ببین مشکلی نداره ...!
    همشو کپی کن


    کد:
    $regfile = "m8def.dat"
      $crystal = 8000000
    
    
      config adc = single , prescaler = auto
    
      config pinc.5 = input
    
    
      config portb = output : Portb = 0
      config pinc.0 = output : S1 alias portc.0 : Set s1
      config pinc.1 = output : S2 alias portc.1 : Set s2
      config pinc.2 = output : S3 alias portc.2 : Set s3
    
      Dim A As Word
      Dim Aa As Word
      Dim I As Byte
      Dim T As Byte : T = 1
      Dim W As Single
    
    
      do
    
      start adc
      a = getadc(5)
      stop adc
    
       if a < 205 then
       a = 0
       else
       a = a - 205
       w = a / 2.72
       a = w
       end if
    
      Gosub Show
      Waitms 10
      loop
    
      end
    
    
      '*******************************  show
     Show:
         For I = 1 To 3
    
            aa = a mod 10
            select case i
               case 1:
                  Portb = Lookup(aa , Annode_display)
                   Reset S2 : Reset S3 : Set S1
               case 2:
                  Portb = Lookup(aa , Annode_display)
                  Reset S1 : Reset S3 : Set S2
               case 3:
                  Portb = Lookup(aa , Annode_display)
                  Reset S1 : Reset S2 : Set S3
            end select
    
         Next
      Return
    
    
    '_____________________________ For Annode Display
    Annode_display:
    Data 192 , 249 , 164 , 176 , 153 , 146 , 130 , 248 , 128 , 144
    'CHAR 0 1 2 3 4 5 6 7 8 9
    *** اللّهم عجّل لولیک الفرج ***

  12. تشکرها از این نوشته :


  13. #9
    کاربر علاقه مند
    تاریخ عضویت
    Sep 2012
    نوشته ها
    97
    تشکر
    75
    تشکر شده 7 بار در 7 پست

    پیش فرض

    نقل قول نوشته اصلی توسط doloop نمایش پست ها
    سلام مهندس

    اول مقدار فرکانس کاری رو 8 مگ قرار بده بعد ببین چطوره ؟
    اگه خوب نشد بیا از این برنامه استفاده کن ببین مشکلی نداره ...!
    همشو کپی کن


    کد:
    $regfile = "m8def.dat"
      $crystal = 8000000
    
    
      config adc = single , prescaler = auto
    
      config pinc.5 = input
    
    
      config portb = output : Portb = 0
      config pinc.0 = output : S1 alias portc.0 : Set s1
      config pinc.1 = output : S2 alias portc.1 : Set s2
      config pinc.2 = output : S3 alias portc.2 : Set s3
    
      dim a as word
      dim aa as word
      dim i as byte
      dim t as byte : T = 1
      dim w as single
    
    
      do
    
      start adc
      a = getadc(5)
      stop adc
    
       if a < 205 then
       a = 0
       else
       a = a - 205
       w = a / 2.72
       a = w
       end if
    
      gosub show
      waitms 10
      loop
    
      end
    
    
      '*******************************  show
     show:
         For i = 1 to 3
    
            aa = a mod 10
            select case i
               case 1:
                  Portb = lookup(aa , annode_display)
                   reset s2 : Reset s3 : Set s1
               case 2:
                  Portb = lookup(aa , annode_display)
                  reset s1 : Reset s3 : Set s2
               case 3:
                  Portb = lookup(aa , annode_display)
                  reset s1 : Reset s2 : Set s3
            end select
    
         next
      return
    
    
    '_____________________________ for annode display
    annode_display:
    Data 192 , 249 , 164 , 176 , 153 , 146 , 130 , 248 , 128 , 144
    'char 0 1 2 3 4 5 6 7 8 9
    سلام
    فرکانس گذاشتم درست نشد
    برنامه شما رو کپی کردم مشکلش اینه همیشه دوتا از سون سگمنت ها خاموشن

موضوعات مشابه

  1. تغییر فرکانس برق شهر
    توسط jik در انجمن الكترونيك قدرت
    پاسخ: 11
    آخرين نوشته: 06-11-2013, 16:18
  2. مشکل با تغییر فرکانس واحد pll در برنامه tft lcd
    توسط iman7107 در انجمن میکرو کنترلر های 32 بیتی(arm)
    پاسخ: 7
    آخرين نوشته: 27-06-2013, 23:11
  3. تغییر فرکانس میکرو
    توسط abbasalifix در انجمن AT91 series (ATMEL)
    پاسخ: 7
    آخرين نوشته: 30-11-2012, 00:47
  4. مشکل در تغییر کانال adc
    توسط m.safavy در انجمن AVR
    پاسخ: 3
    آخرين نوشته: 23-05-2012, 16:01
  5. تغییر دلخواه پایه های lcd در ccs
    توسط MEYSAMHL در انجمن PIC
    پاسخ: 7
    آخرين نوشته: 13-09-2011, 01:09

مجوز های ارسال و ویرایش

  • شما نمیتوانید موضوع جدیدی ارسال کنید
  • شما امکان ارسال پاسخ را ندارید
  • شما نمیتوانید فایل پیوست کنید.
  • شما نمیتوانید پست های خود را ویرایش کنید
  •