اطلاعیه

Collapse
No announcement yet.

طراحی متر الکترونیکی با AVR (فارسی) Digital Meter

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

    #31
    پاسخ : طراحی متر الکترونیکی با AVR (فارسی) Digital Meter

    نوشته اصلی توسط مجتبی باوفا
    از همه دوستان تشکر میکنم اما من مشکلمو حل کردم دیگه مشکلی نیست فعلا ممنون از همکاری همه دوستان من بدون هیچ قطعه جانبی و فقط با 15 ترانزیستور معمولی مشکل رو حل کردم با CODEVISION هم برنامه رو نوشتم میذارمش شاید به درد کسی بخوره
    /************************************************** ***
    This program was produced by the
    CodeWizardAVR V1.25.9 Standard
    Automatic Program Generator
    © Copyright 1998-2008 Pavel Haiduc, HP InfoTech s.r.l.
    http://www.hpinfotech.com

    Project :
    Version :
    Date : 2009/03/03
    Author : F4CG
    Company : F4CG
    Comments:


    Chip type : ATmega8
    Program type : Application
    Clock frequency : 8.000000 MHz
    Memory model : Small
    External SRAM size : 0
    Data Stack size : 256
    ************************************************** ***/

    #include <mega8.h>
    #include <delay.h>

    int int_Number=0;

    void segment_putsf(int int_Number)
    {
    if (int_Number==0)
    PORTD=0X3F;
    else
    if (int_Number==1)
    PORTD=0X06;
    else
    if (int_Number==2)
    PORTD=0X5b;
    else
    if (int_Number==3)
    PORTD=0X4f;
    else
    if (int_Number==4)
    PORTD=0X66;
    else
    if (int_Number==5)
    PORTD=0X6d;
    else
    if (int_Number==6)
    PORTD=0X7d;
    else
    if (int_Number==7)
    PORTD=0X07;
    else
    if (int_Number==8)
    PORTD=0X7F;
    else
    if (int_Number==9)
    PORTD=0X6f;
    }

    void segment_puts(int int_Number)
    {
    int UInt_number=0;
    int uch_digit=0;
    unsigned char uch_TimeCounter=0;
    if (int_Number<10)
    {
    // while (uch_TimeCounter<=6)
    // {
    segment_putsf(int_Number);
    PORTB.3=0;
    delay_ms(10);
    PORTB.3=1;
    segment_putsf(0);
    PORTB.2=0;
    delay_ms(10);
    PORTB.2=1;
    segment_putsf(0);
    PORTB.1=0;
    delay_ms(10);
    PORTB.1=1;
    segment_putsf(0);
    PORTB.0=0;
    delay_ms(10);
    PORTB.0=1;
    // uch_TimeCounter++; // delay 1second
    // }
    }
    else
    if (int_Number>9 && int_Number<100)
    {
    // while (uch_TimeCounter<=6)
    // {
    uch_digit=int_Number%10;
    segment_putsf(uch_digit);
    PORTB.3=0;
    delay_ms(10);
    PORTB.3=1;
    UInt_number=int_Number/10;
    uch_digit=UInt_number%10;
    segment_putsf(uch_digit);
    PORTB.2=0;
    delay_ms(10);
    PORTB.2=1;
    segment_putsf(0);
    PORTB.1=0;
    delay_ms(10);
    PORTB.1=1;
    segment_putsf(0);
    PORTB.0=0;
    delay_ms(10);
    PORTB.0=1;
    // uch_TimeCounter++; // delay 1second
    // }
    }
    else
    if (int_Number>99 && int_Number<1000)
    {
    while (uch_TimeCounter<=6)
    // {
    uch_digit=int_Number%10;
    segment_putsf(uch_digit);
    PORTB.3=0;
    delay_ms(10);
    PORTB.3=1;
    UInt_number=int_Number/10;
    uch_digit=UInt_number%10;
    PORTB.2=0;
    segment_putsf(uch_digit);
    delay_ms(10);
    PORTB.2=1;
    UInt_number=UInt_number/10;
    uch_digit=UInt_number%10;
    PORTB.1=0;
    segment_putsf(uch_digit);
    delay_ms(10);
    PORTB.1=1;
    segment_putsf(0);
    PORTB.0=0;
    delay_ms(10);
    PORTB.0=1;
    // uch_TimeCounter++; // delay 1second
    // }
    }
    else
    if (int_Number>999 && int_Number<10000)
    {
    // while (uch_TimeCounter<=6)
    // {
    uch_digit=int_Number%10;
    segment_putsf(uch_digit);
    PORTB.3=0;
    delay_ms(10);
    PORTB.3=1;
    UInt_number=int_Number/10;
    uch_digit=UInt_number%10;
    segment_putsf(uch_digit);
    PORTB.2=0;
    delay_ms(10);
    PORTB.2=1;
    UInt_number=UInt_number/10;
    uch_digit=UInt_number%10;
    segment_putsf(uch_digit);
    PORTB.1=0;
    delay_ms(10);
    PORTB.1=1;
    UInt_number=UInt_number/10;
    uch_digit=UInt_number%10;
    segment_putsf(uch_digit);
    PORTB.0=0;
    delay_ms(10);
    PORTB.0=1;

    // uch_TimeCounter++; // delay 1second
    // }
    }
    }

    // Declare your global variables here
    void main(void)
    {
    // Declare your local variables here
    unsigned charuch_pin_status=0;
    // Input/Output Ports initialization
    // Port B initialization
    // Func7=Out Func6=Out Func5=Out Func4=Out Func3=Out Func2=Out Func1=Out Func0=Out
    // State7=0 State6=0 State5=0 State4=0 State3=0 State2=0 State1=0 State0=0
    PORTB=0xFF;
    DDRB=0xFF;

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

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

    // Timer/Counter 0 initialization
    // Clock source: System Clock
    // Clock value: Timer 0 Stopped
    TCCR0=0x00;
    TCNT0=0x00;

    // Timer/Counter 1 initialization
    // Clock source: System Clock
    // Clock value: Timer 1 Stopped
    // Mode: Normal top=FFFFh
    // OC1A output: Discon.
    // OC1B output: Discon.
    // Noise Canceler: Off
    // Input Capture on Falling Edge
    // Timer 1 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: System Clock
    // Clock value: Timer 2 Stopped
    // Mode: Normal top=FFh
    // OC2 output: Disconnected
    ASSR=0x00;
    TCCR2=0x00;
    TCNT2=0x00;
    OCR2=0x00;

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

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

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

    while (1)
    {
    // Place your code here
    if (charuch_pin_status==1)
    {
    if (PINC.0==0)
    {
    charuch_pin_status=0;
    segment_puts(int_Number);
    int_Number++;
    }
    }
    if (PINC.0==1)
    {
    charuch_pin_status=1;
    }
    if (PINC.1==0) // RESET
    int_Number=0;

    segment_puts(int_Number);

    };
    }
    سلام دوستان
    این کد ، کدویژن همین پروژست (متر چرخی) ؟ قضیه : قطعه جانبی و فقط با 15 ترانزیستور .... رو نفهمیدم ...

    دیدگاه


      #32
      پاسخ : طراحی متر الکترونیکی با AVR (فارسی) Digital Meter

      باسلام وتشکر لطفا پسورد فایل را برایم ارسال فرمایید باتشکر مجدد
      alavid14@gmail.com AVR REGULATOR 7seg Basic.rar

      دیدگاه


        #33
        پاسخ : طراحی متر الکترونیکی با AVR (فارسی) Digital Meter

        پسورد فایل چیه ؟

        دیدگاه


          #34
          پاسخ : طراحی متر الکترونیکی با AVR (فارسی) Digital Meter

          نوشته اصلی توسط parsgroup
          پسورد فایل چیه ؟
          پسوورد : www.eca.ir
          با حروف کوچک وارد کنید

          دیدگاه


            #35
            پاسخ : طراحی متر الکترونیکی با AVR (فارسی) Digital Meter

            با سلام
            ادرس فروشگاه شفت انکودر توی تهران ندارین؟
            mrg

            دیدگاه


              #36
              پاسخ : طراحی متر الکترونیکی با AVR (فارسی) Digital Meter

              با سلام
              من متر دیجیتال رو با سنسور اثر هال ساختم و برای دقت بیشتر یک اهنربای استوانه ای خریدم که با قطر 2.178 سانتیمتر 12 قطب ان و12 قطب اس داره ولی در سرعت زیاد چرخش استوانه میکرو همه پالسهای سنسور رو نمیتونه بشماره
              باید چی کارکنم که میکرو کم نیاره در شمارش
              mrg

              دیدگاه

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