اطلاعیه

Collapse
No announcement yet.

درخواست کانتر ساده

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

    درخواست کانتر ساده

    سلام .یه برنامه ساده به زبان بیسیک میخوام که با هر بار تحریک یک میکروسئیچ تا 10 بره (صعودی) و با تحریک یک میکروسوئیچ دیگه تا صفر بیاد (نزولی)

    #2
    پاسخ : درخواست کانتر ساده

    سلام دوست عزیز

    ببخشید یه سوال داشتم عدد رو هم می خواهید نمایش بدید ؟
    اگه آره
    روی چی؟

    دیدگاه


      #3
      پاسخ : درخواست کانتر ساده

      آره روی lcd 16*2 - فقط یه نکته اینکه زمانی که با هربار تحریک میکروسوئیچ به 10 رسید با زدن سوئیچ صعودی شمار روی 10 بمونه و صفر نشه و وقتی با هر بار تحریک میکروسوئیچ نزولی شمار به صفر رسیدیم روی صفر بمونه تا میکروسئیچ صعودی شمار تحریک بشه و افزایش پیدا کنه در ضمن سورس برنامه رو هم میخوام مرسی

      دیدگاه


        #4
        پاسخ : درخواست کانتر ساده

        سلامی دوباره

        سورس:
        کد:
        $regfile = "m16adef.dat"
        $crystal = 8000000
        
        Config Porta.0 = Input
        Config Porta.1 = Input
        
        Config Lcdpin = Pin , Db4 = Portb.4 , Db5 = Portb.5 , Db6 = Portb.6 , Db7 = Portb.7 , Rs = Portb.2 , E = Portb.3
        
        Config Lcd = 16 * 2
        
        Dim A As Byte
        Dim B As Byte
        
        Sw1 Alias Pina.0
        Sw2 Alias Pina.1
        
        Cls
        Lcd A
        
        
        Do
        
        While B = 0
        If Sw1 = 1 Then B = 1
        Wend
        
        While B = 1
        Incr A
        Waitms 500
        Cls
        Lcd A
        If A = 10 Then B = 2
        Wend
        
        While B = 2
        If Sw2 = 1 Then B = 3
        Wend
        
        While B = 3
        Decr A
        Waitms 500
        Cls
        Lcd A
        If A = 0 Then B = 0
        Wend
        
        Loop
        شماتیک:


        امید وارم مورد استفاده واقع بشه

        دیدگاه


          #5
          پاسخ : درخواست کانتر ساده

          مرسی دوست عزیز -البته اگه میشه یه تغییری در برنامه بدید ممنون میشم همانطور که در تایپیک اول اشاره کردم با هر بار تحریک هر یک از میکروسوئیچ ها یک شماره بالا یا پائین بندازه ولی در این برنامه زمانی که میکروسوئیچ یک بار تحریک میشه شمارنده میشماره تا به 9 یا به صفر میرسه.
          میخوام بدین صورت باشه :
          sw1 =>1 sw1=>2 sw1=>3 sw1=>4 .......sw1=>10
          sw2 =>9 sw2=>8 sw2=>7 sw2=>6 .......sw2=>0

          دیدگاه


            #6
            پاسخ : درخواست کانتر ساده

            فکر کنم الان درست شده باشد

            کد:
            $regfile = "m16adef.dat"
            $crystal = 8000000
            
            Config Porta.0 = Input
            Config Porta.1 = Input
            
            Config Lcdpin = Pin , Db4 = Portb.4 , Db5 = Portb.5 , Db6 = Portb.6 , Db7 = Portb.7 , Rs = Portb.2 , E = Portb.3
            
            Config Lcd = 16 * 2
            
            Dim A As Byte
            Dim B As Byte
            
            Sw1 Alias Pina.0
            Sw2 Alias Pina.1
            
            Cls
            Lcd A
            
            
            Do
            
            While B = 0
            If Sw1 = 1 Then Gosub C
            Wend
            
            
            While B = 1
            If Sw2 = 1 Then Gosub D
            Wend
            
            
            Loop
            
            
            
            C:
            Incr A
            Waitms 200
            Cls
            Lcd A
            If A = 10 Then B = 1
            Return
            
            D:
            Decr A
            Waitms 200
            Cls
            Lcd A
            If A = 0 Then B = 0
            Return

            دیدگاه


              #7
              پاسخ : درخواست کانتر ساده

              مرسی دوست عزیز درست شد

              دیدگاه


                #8
                پاسخ : درخواست کانتر ساده

                ببخشید که مزاحمت میشم یه برنامه برای کنترل دور موتور dc داری که با یک میکروسئیچ سرعت رو زیاد کنه و یک میکروسوئیچ سرعت رو کم کنه فقط همین 2 حالت رو داشته باشه

                دیدگاه


                  #9
                  پاسخ : درخواست کانتر ساده

                  سلام
                  خدارو شکر :applause:
                  من با pwm آشنایی ندارم اما اگر توی قسمت حلقه ها مشکل دارید برنامتون رو به این صورت بنویسید

                  کد:
                  $regfile = "m16adef.dat"
                  $crystal = 8000000
                  
                  Config Porta.0 = Input
                  Config Porta.1 = Input
                  
                  Dim B As Byte
                  
                  Sw1 Alias Pina.0
                  Sw2 Alias Pina.1
                  
                  
                  Do
                  
                  While B = 0
                  
                  If Sw1 = 1 Then B = 1
                  
                  'sors...
                  
                  Wend
                  
                  
                  While B = 1
                  
                  If Sw2 = 1 Then B = 0
                  
                  'sorse...
                  
                  Wend
                  
                  
                  Loop
                  موفق و پیروز باشید :nice:

                  دیدگاه


                    #10
                    پاسخ : درخواست کانتر ساده

                    باز هم سلام

                    ببخشید یک ورژن بهتر از برنامه قبلی رو نوشتم

                    کد:
                    $regfile = "m16adef.dat"
                    $crystal = 8000000
                    
                    Config Porta.0 = Input
                    Config Porta.1 = Input
                    
                    Config Lcdpin = Pin , Db4 = Portb.4 , Db5 = Portb.5 , Db6 = Portb.6 , Db7 = Portb.7 , Rs = Portb.2 , E = Portb.3
                    
                    Config Lcd = 16 * 2
                    
                    Dim A As Byte
                    Dim B As Byte
                    
                    Sw1 Alias Pina.0
                    Sw2 Alias Pina.1
                    
                    Cls
                    Lcd A
                    
                    
                    Do
                    
                    While B = 0
                    If Sw1 = 1 Then Gosub C
                    Wend
                    
                    
                    While B = 1
                    If Sw2 = 1 Then Gosub D
                    Wend
                    
                    
                    Loop
                    
                    
                    
                    C:
                    Incr A
                    Cls
                    Lcd A
                    If A = 10 Then B = 1
                    While Sw1 = 1
                    Wend
                    Return
                    
                    D:
                    Decr A
                    Cls
                    Lcd A
                    If A = 0 Then B = 0
                    While Sw2 = 1
                    Wend
                    Return

                    دیدگاه


                      #11
                      پاسخ : درخواست کانتر ساده

                      سلام .دوست عزیز برنامه یه مشکلی داره اینه که زمانی که شمارش به 10 رسید شمارنده نزولی فعال میشه و همچنین زمانی که صفر شده شمارنده صعودی دوباره فعال میشه .میخوام در هر شماره ای بود بشه میکروسوئیچ هارو تحریک کرد تا شمارش صعودی و نزولی رو انجام بده
                      امیدوارم منظورم رو متوجه شده باشید
                      بدرود

                      دیدگاه


                        #12
                        پاسخ : درخواست کانتر ساده

                        آقا علیرضای گل، چرا کلید ها رو به وقفه ها int0 و int1 وصل نکردی که برنامه نویسی راحت تر باشه!؟؟
                        STM32 واقعا یه چیز دیگه است...

                        دیدگاه


                          #13
                          پاسخ : درخواست کانتر ساده

                          سلام
                          دوست عزیز برنامه یه مشکلی داره اینه که زمانی که شمارش به 10 رسید شمارنده نزولی فعال میشه و همچنین زمانی که صفر شده شمارنده صعودی دوباره فعال میشه
                          خوب این بار دیگه جدی جدی درست شد!!!
                          کد:
                          $regfile = "m16adef.dat"
                          $crystal = 8000000
                          
                          Config Porta.0 = Input
                          Config Porta.1 = Input
                          
                          Config Lcdpin = Pin , Db4 = Portb.4 , Db5 = Portb.5 , Db6 = Portb.6 , Db7 = Portb.7 , Rs = Portb.2 , E = Portb.3
                          
                          Config Lcd = 16 * 2
                          
                          Dim A As Byte
                          Dim B As Byte
                          
                          Sw1 Alias Pina.0
                          Sw2 Alias Pina.1
                          
                          Cls
                          Lcd A
                          
                          
                          Do
                          If Sw1 = 1 Then Gosub C
                          If Sw2 = 1 Then Gosub D
                          Loop
                          
                          
                          
                          C:
                          Incr A
                          If A > 10 Then A = 10
                          Cls
                          Lcd A
                          While Sw1 = 1
                          Wend
                          Return
                          
                          D:
                          Decr A
                          if a > 254 then a=0
                          Cls
                          Lcd A
                          While Sw2 = 1
                          Wend
                          Return
                          چرا کلید ها رو به وقفه ها int0 و int1 وصل نکردی که برنامه نویسی راحت تر باشه!؟؟
                          آقای موسوی گلی از خودتون هست
                          این مطلبی رو که شما فرمودید من در موردش اطلاعاتی ندارم اگه یک مقدار بشتر توضیح بدید ممنون میشم

                          دیدگاه


                            #14
                            پاسخ : درخواست کانتر ساده

                            سلام دوست عزبز تونستی تغییرات انجام بدی؟دوستان کسی نیست کمک کنه

                            دیدگاه


                              #15
                              پاسخ : درخواست کانتر ساده

                              سلام
                              بله اگه پست قبلیم رو نگاه بکنید میبینید

                              دیدگاه

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