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

موضوع: دوستان كودويژني كمك

  1. #1
    عضو جدید
    تاریخ عضویت
    Aug 2008
    نوشته ها
    16
    تشکر
    0
    تشکر شده 0 بار در 0 پست

    پیش فرض دوستان كودويژني كمك

    سلام
    من چون در حال نوشتن برنامه دماسنج با آي سي atmega8 هستم تاحالا تابع اصلي برنامه
    رو نوشتم و مقدار دما رو در متغير temp كه از جنس float هست ذخيره كردم.
    حالا ميخوام برنامه رو تو proteus شبيهسازي كنم ودما رو روي يك LCD نمايش بدم
    با چه دستوري ميتونم متغير temp كه از جنس float هست روي LCD نمايش بدم.
    (لطفا من راهنمايي كنين) :?or

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

  3. #2
    مدیر باز نشسته
    تاریخ عضویت
    Aug 2007
    نام
    تهران
    نوشته ها
    384
    تشکر
    2
    تشکر شده 57 بار در 31 پست

    پیش فرض سلام

    توي لايبري stdlib.h يه تابع هست به نام ftoa كه اعشاري ميگيره رشته ميده توضيحش توي help كدويژن هست بعد از اين كار با lcd_puts نمايش بده رو lcd

  4. #3
    کاربر فعال
    تاریخ عضویت
    Aug 2007
    نام
    سعید نیکنامی
    نوشته ها
    253
    تشکر
    1
    تشکر شده 28 بار در 20 پست

    پیش فرض

    با سلام

    با تابع sprintf هم میشه

  5. #4
    عضو جدید
    تاریخ عضویت
    Jun 2007
    نوشته ها
    10
    تشکر
    0
    تشکر شده 0 بار در 0 پست

    پیش فرض

    با سلام به همه دوستان
    اين كار رو متوني با متغيرهايي غير از float هم براحتي انجام بدي. اول ببين سنسور دما در خروجي به ازاي هر يك درجه چقدر ولتاژ توليد ميكنه(البته براي سنسورهاي آنالوگ)
    حال اگر فرض كنيم شما از سنسور lm35 استفاده كرديد (به ازاي هر 1 درجه 10 ميلي ولت در خروجي) پس در قسمت code wizard avr در تب adc حالت 10 بيتي و ولتاژ رفرنس رو روي avcc قرار دهيد . بدين ترتيب استپهاي ولتاژ در سنسور و adc با هم برابر مي شوند.همجنين فركانس تبديلadc در پايينترين حالت قرار دهيد تا جلوي تغييرات متوالي را بگيريد.
    بعد در برنامه سه متغير از نوع unsigned char تعريف كنيد (مثلا aوcوd )
    با استفاده از دستور ; (a=read_adc(0 مفدار adc را ميخوانيم.
    حالا خيلي راحت مي تونيم با 2 تا تقسيم قسمت صحيح و اعشاري دما رو حساب كنيم.
    با دستور ; c=a/2 قسمت صحيح و ; d=a%10 قسمت اعشاري از هم جدا مي شوند . وبعد همانطوري كه دوستمون گفت مي تونيم با دستور sprintf به صورت زير مقادير رو روي lcd نمايش بديم. ; ( sprintf(buf," temp= %u /%u",a,d
    اگر باز سوالي داشتي به اين آدرس ايمل بزن تا فايل اين برنامه رو كه من قبلا ساختم رو برات بفرستم : amir_abitsystem@yahoo.com

  6. #5
    عضو جدید
    تاریخ عضویت
    Aug 2008
    نوشته ها
    16
    تشکر
    0
    تشکر شده 0 بار در 0 پست

    پیش فرض لطفا راهنمايي كنين

    سلام
    دوستان از راهنماييهاي شما در ژستهاي قبلي ممنونم
    من حالا برنامه دماسنج نوشتم و ماژول FT232
    رو دارم حالا ميخوام دماسنج با ارتباط com مجازي از طريق پورت
    USB به كامژيوتر متصل كنم ويك نمونه برنامه هم نوشتم كهجواب نداد:
    لطفا منو در مورد ارتباط USART راهنمايي‌ كنين :k01:
    /************************************************** ***
    This program was produced by the
    CodeWizardAVR V1.25.8 Standard
    Automatic Program Generator
    © Copyright 1998-2007 Pavel Haiduc, HP InfoTech s.r.l.
    http://www.hpinfotech.com

    Project :
    Version :
    Date : 9/9/2008
    Author : F4CG
    Company : F4CG
    Comments:


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

    #include <mega8>

    // Standard Input/Output functions
    #include <stdio>

    #include <delay>

    #define ADC_VREF_TYPE 0x40

    // Read the AD conversion result
    unsigned int read_adc(unsigned char adc_input)
    {
    ADMUX=adc_input | (ADC_VREF_TYPE & 0xff);
    // Delay needed for the stabilization of the ADC input voltage
    delay_us(10);
    // Start the AD conversion
    ADCSRA|=0x40;
    // Wait for the AD conversion to complete
    while ((ADCSRA & 0x10)==0);
    ADCSRA|=0x10;
    return ADCW;
    }

    // Declare your global variables here

    float temp,T1;
    unsigned char data[10];

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

    // Input/Output Ports initialization
    // 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=0x00;

    // 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=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: 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;

    // USART initialization
    // Communication Parameters: 8 Data, 1 Stop, No Parity
    // USART Receiver: Off
    // USART Transmitter: On
    // USART Mode: Asynchronous
    // USART Baud Rate: 4800
    UCSRA=0x00;
    UCSRB=0x08;
    UCSRC=0x86;
    UBRRH=0x00;
    UBRRL=0x4D;

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

    // ADC initialization
    // ADC Clock frequency: 750.000 kHz
    // ADC Voltage Reference: AVCC pin
    ADMUX=ADC_VREF_TYPE & 0xff;
    ADCSRA=0x83;

    while (1)
    {

    //******************A2D

    T1=read_adc(5);
    temp=(T1*500/1023);

    //******************Data Transfer

    sprintf(data,"%f",temp);
    printf("%s",data);
    delay_ms(300);

    };
    }

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

  1. پروژه ترموستات عجیب
    توسط flaat در انجمن AVR
    پاسخ: 27
    آخرين نوشته: 27-01-2014, 02:41
  2. ارتباط كوبي برد با avr
    توسط prm2 در انجمن Cortex-a8-a9 arm9-11
    پاسخ: 4
    آخرين نوشته: 15-09-2013, 17:23
  3. طراحی ترموستات خاص
    توسط REZANEWS در انجمن AVR
    پاسخ: 37
    آخرين نوشته: 25-10-2010, 00:18
  4. دانلود سوالات اختصاصي برق كنكور
    توسط shh91 در انجمن گفت و گوي آزاد
    پاسخ: 0
    آخرين نوشته: 29-08-2009, 11:03
  5. مدار ترموستات
    توسط nashakiba در انجمن AVR
    پاسخ: 65
    آخرين نوشته: 02-05-2009, 01:41

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

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