اطلاعیه

Collapse
No announcement yet.

کمک برای تغییر برنامه بسکام از اند مشترک به کاتد مشترک

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

    کمک برای تغییر برنامه بسکام از اند مشترک به کاتد مشترک

    با سلام دوستان من یه برنامه تایمری دارم این برنامه تایمر با 7سگمنت اند مشترک هستش من این برنامه رو واسه کاتد مشترک نیاز داشتم ممنون میشم کمک کنین تا برنامه رو تغییر بدم برای کاتد مشترک
    کد:
    '*************************************
    'Name : CMC Timer (ver 2.1)
    'Type : 4-Digit - 7SEG-CA
    'Date ; 1389/9/28
    'Designer : ESMAEIL MOHAMMAD ZADEH
    'Mobile : 09139545140
    'Mail : TASVIRAN.ELECTRONIC@Gmail.com
    '*************************************
    $regfile = "m8def.dat" : $crystal = 8000000 : Enable Interrupts
    
    Config Debounce = 30
    Config Clock = Soft , Gosub = Sectic
    Config Timer1 = Timer , Prescale = 64 : Enable Timer1 : On Ovf1 Blinker
    
    'Declare Sub Program
      Declare Sub Selector : Declare Sub Show_puse : Declare Sub Show_play
    'Config I/O:
      Config Portd = Output : 7seg Alias Portd
      Config Portb.0 = Output : Dig1 Alias Portb.0
      Config Portb.1 = Output : Dig2 Alias Portb.1
      Config Portb.2 = Output : Dig3 Alias Portb.2
      Config Portb.3 = Output : Dig4 Alias Portb.3
      Config Portb.4 = Output : Motor Alias Portb.4
      Config Portb.5 = Output : Seco Alias Portb.5
      Config Portc.5 = Output : Dp Alias Portc.5
    
      Config Pinc.0 = Input : Up Alias Pinc.0
      Config Pinc.1 = Input : Dn Alias Pinc.1
      Config Pinc.2 = Input : Set_ Alias Pinc.2
      Config Pinc.4 = Input : Sw Alias Pinc.4
    'Var:
      Dim A As Byte , B As Byte , Puse As Byte , Sel As Byte , Run As Bit
      Dim S As Byte , Button As Bit , Change As Bit
      Dim M As Byte , H As Byte , I As Byte
      Dim S2 As Byte , M2 As Byte , H2 As Byte
      Dim Num As Byte , Yek As Byte , Dah As Byte
    'Eram Var:
      Dim Em As Eram Byte , Eh As Eram Byte
      Dim Em2 As Eram Byte , Eh2 As Eram Byte
      Dim Epuse As Eram Byte
    'Defult:
      If Em = 255 Then Em = 0 : If Eh = 255 Then Eh = 0
      If Em2 = 255 Then Em2 = 0 : If Eh2 = 255 Then Eh2 = 0
      If Epuse = 255 Then Epuse = 1
      M = Em : H = Eh : M2 = Em2 : H2 = Eh2 : Puse = Epuse
      S2 = 0 : A = 0 : B = 0 : Run = 0 : Sel = 0 : Button = 0
    '************************************ MAIN PROGRAM *****************************
    Begin:
      Change = 0
    Main:
      Select Case Puse
          Case 0:
               Num = M2 : Gosub Minute
               Num = H2 : Gosub Hour
          Case 1:
               Call Show_puse
      End Select
    
      Gosub Check_key
    
      If Sel <> 0 Then
       Call Selector
       A = 0
       Do
         Num = M2 : Gosub Minute
         Num = H2 : Gosub Hour
       Loop Until A = 1
      End If
    
      If Run = 1 Then Jmp Motor_driver
    
      If M <> 0 Or H <> 0 Then
       If S2 = 0 And M2 = 0 And H2 = 0 Then Jmp Motor_driver
      End If
    
      If B >= 10 Then : Sel = 0 : Change = 0 : End If
    JMP Main
    '************************************* CHECK KEY *******************************
    Check_key:
      If Puse = 0 Then
         Debounce Set_ , 1 , Setting , Sub
         Debounce Dn , 1 , Decrease , Sub
      End If
      Debounce Up , 1 , Increase , Sub
    Return
    '************************************* MINUTE **********************************
    Minute:
      Dah = Num / 10 : Yek = Dah * 10 : Yek = Num - Yek
      Dig1 = 1 : Dp = 1
      7seg = Lookup(yek , Dta)
      Waitms 2
      Dig1 = 0 : Dig2 = 1 : Dp = 1
      7seg = Lookup(dah , Dta)
      Waitms 2
      Dig2 = 0
    Return
    '************************************* HOUR ************************************
    Hour:
      Dah = Num / 10 : Yek = Dah * 10 : Yek = Num - Yek
      Dig3 = 1 : Dp = 0
      7seg = Lookup(yek , Dta)
      Waitms 2
      Dig3 = 0 : Dig4 = 1 : Dp = 1
      7seg = Lookup(dah , Dta)
      Waitms 2
      Dig4 = 0
    Return
    '************************************* MOTOR DRIVER ****************************
    Motor_driver:
      B = 0 : S2 = 0 : M2 = 0 : H2 = 0 : Run = 0
      Waitms 4
      Em2 = M2 : Waitms 4
      Eh2 = H2
      Motor = 1
      If Sw = 0 Then
         Do
          If B >= 20 Then
            S2 = 0 : Reset Motor : Gosub Setpoint : Goto Begin
          End If
          Call Show_play
         Loop Until Sw = 1
    
         S2 = 0 : M2 = 0 : H2 = 0 : Motor = 0 : Gosub Setpoint : Goto Begin
      Else
         Do
          If B >= 15 Then
            S2 = 0 : Reset Motor : Gosub Setpoint : Goto Begin
          End If
          Call Show_play
          If S >= 3 Then : Button = 1 : End If
         Loop Until Button = 1
         Button = 0
      End If
    jmp Motor_driver
    '************************************* DECREASE ********************************
    Decrease:
      B = 0
      Select Case Sel
          Case 0:
               Do
                Num = M2 : Gosub Minute
                Num = H2 : Gosub Hour
                If B >= 3 Then
                  Puse = 1 : Waitms 3
                  Epuse = 1 : Exit Do
                End If
               Loop Until Dn = 0
          Case 1:
               Change = 1
               Do
                Num = M2 : Gosub Minute
                Num = H2 : Gosub Hour
                If B >= 2 Then
                  B = 3
                  For I = 1 To 125         'WAITMS 500
                     Num = M2 : Gosub Minute
                     Num = H2 : Gosub Hour
                  Next I
                  M = M - 1
                  If M = 255 Then M = 59 : M2 = M
                End If
               Loop Until Dn = 0
               M = M - 1
               If M = 255 Then M = 59 : M2 = M
          Case 2:
               Change = 1
               Do
                Num = M2 : Gosub Minute
                Num = H2 : Gosub Hour
                If B >= 2 Then
                  B = 3
                  For I = 1 To 125         'WAITMS 500
                     Num = M2 : Gosub Minute
                     Num = H2 : Gosub Hour
                  Next I
                  H = H - 1
                  If H = 255 Then H = 99 : H2 = H
                End If
               Loop Until Dn = 0
               H = H - 1
               If H = 255 Then H = 99 : H2 = H
      End Select
    Return
    '************************************* INCREASE ********************************
    Increase:
      B = 0
      Select Case Sel
          Case 0:
               Do
                Num = M2 : Gosub Minute
                Num = H2 : Gosub Hour
                If B >= 3 Then
                  If Puse = 1 Then
                   Puse = 0 : Waitms 3
                   Epuse = 0 : Exit Do
                  Else
                   Run = 1 : Exit Do
                  End If
                End If
               Loop Until Up = 0
          Case 1:
               Change = 1
               Do
                Num = M2 : Gosub Minute
                Num = H2 : Gosub Hour
                If B >= 2 Then
                  B = 3
                  For I = 1 To 125         'WAITMS 500
                     Num = M2 : Gosub Minute
                     Num = H2 : Gosub Hour
                  Next I
                  M = M + 1
                  If M > 59 Then M = 0 : M2 = M
                End If
               Loop Until Up = 0
               M = M + 1
               If M > 59 Then M = 0 : M2 = M
          Case 2:
               Change = 1
               Do
                Num = M2 : Gosub Minute
                Num = H2 : Gosub Hour
                If B >= 2 Then
                  B = 3
                  For I = 1 To 125         'WAITMS 500
                     Num = M2 : Gosub Minute
                     Num = H2 : Gosub Hour
                  Next I
                  H = H + 1
                  If H > 99 Then H = 0 : H2 = H
                End If
               Loop Until Up = 0
               H = H + 1
               If H > 99 Then H = 0 : H2 = H
      End Select
    Return
    '************************************* SETTING *********************************
    Setting:
      B = 0
      Select Case Sel
          Case 0:
             Do
               If B >= 3 Then : Sel = 1 : Exit Do : End If
               Num = M2 : Gosub Minute
               Num = H2 : Gosub Hour
             Loop Until Set_ = 0
             B = 0
          Case Else:
             Sel = Sel + 1
             If Sel > 2 Then
               Sel = 0
               If Change = 1 Then
                S2 = 0 : Sel = 0 : Change = 0 : Waitms 4
                Em = M : Waitms 4
                Eh = H
                S2 = 0 : M2 = M : H2 = H
                Waitms 4
                Em2 = M2 : Waitms 4
                Eh2 = H2
               End If
             End If
      End Select
    Return
    '************************************* SETPOINT ********************************
    Setpoint:
      S2 = 0 : M2 = M : H2 = H
      Waitms 4
      Em2 = M2 : Waitms 4
      Eh2 = H2
    Return
    '************************************* SUB PROGRAM *****************************
    Sub Show_puse
      Dig1 = 0 : Dig2 = 0 : Dig3 = 0 : Dig4 = 0 : Dp = 1
      Waitus 1
      Dig1 = 1 : Dig2 = 0 : Dig3 = 0 : Dig4 = 0 : Dp = 1
      7seg = &H8C                       'P
      Waitms 1
      Dig1 = 0 : Dig2 = 0 : Dig3 = 0 : Dig4 = 0 : Dp = 1
      Waitus 1
      Dig1 = 0 : Dig2 = 1 : Dig3 = 0 : Dig4 = 0 : Dp = 1
      7seg = &HC0                       'O
      Waitms 1
      Dig1 = 0 : Dig2 = 0 : Dig3 = 0 : Dig4 = 0 : Dp = 1
      Waitus 1
      Dig1 = 0 : Dig2 = 0 : Dig3 = 1 : Dig4 = 0 : Dp = 1
      7seg = &H87                       't
      Waitms 1
      Dig1 = 0 : Dig2 = 0 : Dig3 = 0 : Dig4 = 0 : Dp = 1
      Waitus 1
      Dig1 = 0 : Dig2 = 0 : Dig3 = 0 : Dig4 = 1 : Dp = 1
      7seg = &H92                       'S
      Waitms 1
    End Sub
    
    Sub Show_play
      Dig1 = 0 : Dig2 = 0 : Dig3 = 0 : Dig4 = 0 : Dp = 1
      Waitus 1
      Dig1 = 1 : Dig2 = 0 : Dig3 = 0 : Dig4 = 0 : Dp = 1
      7seg = &H91                       'Y
      Waitms 1
      Dig1 = 0 : Dig2 = 0 : Dig3 = 0 : Dig4 = 0 : Dp = 1
      Waitus 1
      Dig1 = 0 : Dig2 = 1 : Dig3 = 0 : Dig4 = 0 : Dp = 1
      7seg = &H88                       'A
      Waitms 1
      Dig1 = 0 : Dig2 = 0 : Dig3 = 0 : Dig4 = 0 : Dp = 1
      Waitus 1
      Dig1 = 0 : Dig2 = 0 : Dig3 = 1 : Dig4 = 0 : Dp = 1
      7seg = &HC7                       'L
      Waitms 1
      Dig1 = 0 : Dig2 = 0 : Dig3 = 0 : Dig4 = 0 : Dp = 1
      Waitus 1
      Dig1 = 0 : Dig2 = 0 : Dig3 = 0 : Dig4 = 1 : Dp = 1
      7seg = &H8C                       'P
      Waitms 1
    End Sub
    
    '-------------------------------------------------------------------------------
    Sub Selector
      Select Case Sel
         Case 1:                      'Blink Minute
            A = 0
            Do
             Dig1 = 0 : Dig2 = 0
             Num = H2 : Gosub Hour : Gosub Check_key
            Loop Until A = 1
         Case 2:                      'Blink Hour
            A = 0
            Do
             Dig3 = 0 : Dig4 = 0
             Num = M2 : Gosub Minute : Gosub Check_key
            Loop Until A = 1
      End Select
    End Sub
    '************************************* SECTIC **********************************
    Sectic:
      B = B + 1
      If Sw = 0 Then : Incr S : Else : S = 0 : End If
      If Sel = 0 And Puse = 0 Then
         Toggle Seco
         If M <> 0 Or H <> 0 Then
          S2 = S2 + 1
          If S2 > 59 Then
            S2 = 0
            If M2 => 0 Then
             M2 = M2 - 1
             If M2 = 255 Then
               M2 = 59
               If H2 > 0 Then H2 = H2 - 1
             End If
            End If
            Waitms 2
            Em2 = M2 : Waitms 2
            Eh2 = H2
          End If
         End If
      Else
         Seco = 1
      End If
    Return
    '*******************************************************************************
    Blinker:
      Incr A
      If A = 2 Then A = 0
    Return
    '*******************************************************************************
    Dta:
    Data &HC0 , &HF9 , &HA4 , &HB0 , &H99 , &H92 , &H82 , &HF8 , &H80 , &H90
    
    'END END END END END END END END END END END END END END END END END END
    a happy person is one who wants happiness for other

    #2
    پاسخ : کمک برای تغییر برنامه بسکام از اند مشترک به کاتد مشترک


    #include <mega16.h>
    #include <delay.h>

    // Alphanumeric LCD Module functions
    #include <lcd.h>
    unsigned char second,minute,hour,day,month,year;
    unsigned char lcd_buff[30];






    // Timer2 overflow interrupt service routine
    interrupt [TIM2_OVF] void timer2_ovf_isr(void)
    {
    // Place your code here
    year=91;
    month=02;
    day=11;
    hour=12;
    minute=10;
    second=50;
    if(second==59)
    {
    second=0;
    if(minute==59)
    {
    minute=0;
    if(hour==23)
    hour=0;
    {

    if(day==30)
    {
    day=0;

    if(month==12)
    {
    month=0;
    year++;
    }
    else
    month++;
    }
    else
    day++;
    }

    hour++;
    }
    else
    minute++;
    }
    else
    second++;



    porta=second;
    portb=minute;



    }

    // Declare your global variables here

    void main(void)
    {
    // Declare your local variables here

    // Input/Output Ports initialization
    // Port A initialization
    // Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In
    // State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T
    PORTA=0x00;
    DDRA=0xff;

    // Port B initialization
    // Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In
    // State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T
    PORTB=0x00;
    DDRB=0xff;

    // Port C initialization
    // Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In
    // State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T
    PORTC=0x00;
    DDRC=0x00;

    // Port D initialization
    // Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In
    // State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T
    PORTD=0x00;
    DDRD=0x00;

    // Timer/Counter 0 initialization
    // Clock source: System Clock
    // Clock value: 16000.000 kHz
    // Mode: Normal top=0xFF
    // OC0 output: Disconnected
    TCCR0=0x01;
    TCNT0=0x00;
    OCR0=0x00;

    // Timer/Counter 1 initialization
    // Clock source: System Clock
    // Clock value: Timer1 Stopped
    // Mode: Normal top=0xFFFF
    // OC1A output: Discon.
    // OC1B output: Discon.
    // Noise Canceler: Off
    // Input Capture on Falling Edge
    // Timer1 Overflow Interrupt: Off
    // Input Capture Interrupt: Off
    // Compare A Match Interrupt: Off
    // Compare B Match Interrupt: Off
    TCCR1A=0x00;
    TCCR1B=0x00;
    TCNT1H=0x00;
    TCNT1L=0x00;
    ICR1H=0x00;
    ICR1L=0x00;
    OCR1AH=0x00;
    OCR1AL=0x00;
    OCR1BH=0x00;
    OCR1BL=0x00;

    // Timer/Counter 2 initialization
    // Clock source: TOSC1 pin
    // Clock value: PCK2/128
    // Mode: Normal top=0xFF
    // OC2 output: Disconnected
    ASSR=0x08;
    TCCR2=0x05;
    TCNT2=0x00;
    OCR2=0x00;

    // External Interrupt(s) initialization
    // INT0: Off
    // INT1: Off
    // INT2: Off
    MCUCR=0x00;
    MCUCSR=0x00;

    // Timer(s)/Counter(s) Interrupt(s) initialization
    TIMSK=0x40;

    // USART initialization
    // USART disabled
    UCSRB=0x00;

    // Analog Comparator initialization
    // Analog Comparator: Off
    // Analog Comparator Input Capture by Timer/Counter 1: Off
    ACSR=0x80;
    SFIOR=0x00;

    // ADC initialization
    // ADC disabled
    ADCSRA=0x00;

    // SPI initialization
    // SPI disabled
    SPCR=0x00;

    // TWI initialization
    // TWI disabled
    TWCR=0x00;

    // Alphanumeric LCD initialization
    // Connections specified in the
    // Project|Configure|C Compiler|Libraries|Alphanumeric LCD menu:
    // RS - PORTA Bit 0
    // RD - PORTA Bit 1
    // EN - PORTA Bit 2
    // D4 - PORTA Bit 4
    // D5 - PORTA Bit 5
    // D6 - PORTA Bit 6
    // D7 - PORTA Bit 7
    // Characters/line: 16
    lcd_init(16);

    // Global enable interrupts
    #asm("sei&quot

    while (1)
    {
    // Place your code here

    }
    }


    مدار این یک دیکدر دارد لطفا از این برنامه کد ویژن استفاده کنید من کامل شده را با پول ناقابل با در یافت ازشما به شما تحویل می دهم :applause:

    دیدگاه


      #3
      پاسخ : کمک برای تغییر برنامه بسکام از اند مشترک به کاتد مشترک

      lمهندس جان دستت درد نکنه ولی جمله اخری رو که گفتینو متوجه نشدن چی چی شد
      کی به کی پول داد
      a happy person is one who wants happiness for other

      دیدگاه


        #4
        پاسخ : کمک برای تغییر برنامه بسکام از اند مشترک به کاتد مشترک

        نوشته اصلی توسط KIYANOUSHA
        مدار این یک دیکدر دارد لطفا از این برنامه کد ویژن استفاده کنید من کامل شده را با پول ناقابل با در یافت ازشما به شما تحویل می دهم
        داداش کاسبی راه انداختی ؟
        این بنده خدا برنامش با بیسک هستش شما با c کد و گذاشتی ؟
        حالا این دیکدر به چدردی میخوره ؟

        ذاذاش اگر با بیسیک بخوایی شاید بتونم کمکت کنم !

        خواستن توانستن است !

        دیدگاه


          #5
          پاسخ : کمک برای تغییر برنامه بسکام از اند مشترک به کاتد مشترک

          دمت گرم دادا
          دادا فقط میخوام همین تایمر رو با کاتد مشترک راه بندازم اگه بخواین پروتوس هم بزارم
          a happy person is one who wants happiness for other

          دیدگاه


            #6
            پاسخ : کمک برای تغییر برنامه بسکام از اند مشترک به کاتد مشترک

            بذار ببینم چیه ؟
            خواستن توانستن است !

            دیدگاه


              #7
              پاسخ : کمک برای تغییر برنامه بسکام از اند مشترک به کاتد مشترک

              lممنون از لطفت
              منبع:esmaeilavr.ir
              http://ritfile.com/up2/a6c514570914.rar
              a happy person is one who wants happiness for other

              دیدگاه


                #8
                پاسخ : کمک برای تغییر برنامه بسکام از اند مشترک به کاتد مشترک

                داداش هرجا 255 دیدی به صفر تبدیل کن شاید کار کرد :biggrin:
                مشخصات من در لینک زیر
                http://www.eca.ir/forum2/index.php?topic=1721.msg698645#msg698645

                www.********

                دیدگاه


                  #9
                  پاسخ : کمک برای تغییر برنامه بسکام از اند مشترک به کاتد مشترک

                  نوشته اصلی توسط majid68
                  داداش هرجا 255 دیدی به صفر تبدیل کن شاید کار کرد :biggrin:
                  مهندس جدی میگین یا شوخیه eepromچه ربطی به کاتد اند داره اخه
                  a happy person is one who wants happiness for other

                  دیدگاه


                    #10
                    پاسخ : کمک برای تغییر برنامه بسکام از اند مشترک به کاتد مشترک

                    1 . نوع 7 seg خود را به کاتد مشترک تغییر دهید .
                    2 .
                    کد:
                    Dta:
                    Data &H3F , &H06 , &H5B , &H4F , &H66 , &H6D , &H7D , &H07 , &H7F , &H6F
                    را به جای dat: در اخر برنامه قرار دهید .
                    3 . در قسمتهای dig , dp تمامی صفر ها را به یک و یکها را به صفر تغییر دهید .
                    4 . برنامه را کامپایل و اجرا نمایید .
                    5 . موفق باشید ، تشکر لازم نیست !
                    خواستن توانستن است !

                    دیدگاه


                      #11
                      پاسخ : کمک برای تغییر برنامه بسکام از اند مشترک به کاتد مشترک

                      در رابطه با سوال اقای sky_man847

                      1 . شما چه مقدار زمان مد نظرتان میباشد ؟
                      2 . خوب ببین برای PCB میتونی از کانکتور استفاده کنی مثلا اگر سگمنتت 12 تا پایه تک ردیف داره از کانکتور CONN-SIL12 اگر هم دوردیف هستش از دو تا CONN-SIL6
                      استفاده کنید .
                      نکته :
                      فاصله دو ردیف را حتما با سگمنت برابر بگیرید !
                      خواستن توانستن است !

                      دیدگاه


                        #12
                        پاسخ : کمک برای تغییر برنامه بسکام از اند مشترک به کاتد مشترک

                        ممنون مهندس میشه تو برنامه یه کلیدی گذاشت تا این تایم رو هرچی بخوایم تغییر بدیم.. واسه فاصله بینشون باید اندازه بگیرم بنظرتون چند بزارم
                        a happy person is one who wants happiness for other

                        دیدگاه


                          #13
                          پاسخ : کمک برای تغییر برنامه بسکام از اند مشترک به کاتد مشترک

                          نوشته اصلی توسط sky_man847
                          میشه تو برنامه یه کلیدی گذاشت تا این تایم رو هرچی بخوایم تغییر بدیم .
                          چرا نمیشه ؟
                          خوبم میشه شما با استفاده از یک ولوم میتونید این کارو انجام بدین .
                          نوشته اصلی توسط sky_man847
                          واسه فاصله بینشون باید اندازه بگیرم بنظرتون چند بزارم
                          من که سگمنت شما رو ندارم اندازه بگیرم .
                          شما با یه متر یا کولیس اندازه بگیر ببین چقدر هستش ، بعد فاصله رو همون قدر بذار .

                          خواستن توانستن است !

                          دیدگاه


                            #14
                            پاسخ : کمک برای تغییر برنامه بسکام از اند مشترک به کاتد مشترک

                            در جواب پیغام خصوصی sky_man847 :
                            اقای sky_man847 هیچ کاری بدون سعی و تلاش به ثمر نمینشیند !
                            حتی کشیدن pcb !!!
                            شاید برای بار اول در کشیدن pcb دچار مشکل شوید اما تجربه کسب خواهید کرد !

                            لطفا به تایپیک های فوق مراجعه و مطالعه نمایید در صورت وجود اشکال مطرح فرمایید تا در صورت امکان راهنمایی شود

                            http://www.eca.ir/forum2/index.php?topic=3726.0
                            http://www.eca.ir/forum2/index.php?topic=65150.0
                            http://www.eca.ir/forum2/index.php?topic=39392.0
                            خواستن توانستن است !

                            دیدگاه

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