با سلام ،
دوست عزیز شما در حال استفاده از ورژنی قدیمی از اینترنت اکسپلورر هستید ، برای اینکه مشکلات ناشی از نمایش را نداشته باشید ، لطفا اقدام به دریافت مرورگری مناسب کرده و یا از ورژن قدیمی ما استفاده نمایید.


امتیاز موضوع:
  • 0 رأی - میانگین امتیازات: 0
  • 1
  • 2
  • 3
  • 4
  • 5
دما سنج با سنسور ds18b20
#1
سلام دوباره
اگه یادتون باشه من یه دماسنج با سنسور LM35 به زبان C درست کردم ولی جواب نگرفتم حالا با سنسور دیجیتال Ds18b20 از پروژه های آماده ی توی سایت استفاده کردم توی پروتئوس جواب میده ولی در واقعیت روی LCD فقط عدد -9999 نشون داده میشه و نسبت به بود و نبود سنسور عکس العملی نشون نمیده تو رو خدا کمک کنید خیلی مهمه.
İmage
متن برنامه :

کد php:
/*****************************************************
This program was produced by the
CodeWizardAVR V2.05.3 Standard
Automatic Program Generator
© Copyright 1998-2011 Pavel Haiduc, HP InfoTech s.r.l.
http://www.hpinfotech.com

Project : 
Version : 
Date    : 07/16/2013
Author  : Techno-Electro
Company : If You Like This Software,Buy It
Comments: 


Chip type            : ATmega16
Program type          : Application
AVR Core Clock frequency: 1.000000 MHz
Memory model          : Small
External RAM size      : 0
Data Stack size        : 256
*****************************************************/

#include <mega16.h>
#include <delay.h>
#include <1wire.h>
#include <stdio.h>
#include <ds18b20.h> 
// Alphanumeric LCD functions
#include <alcd.h>
#asm
   
.equ __lcd_port=0x12 ;PORTD
#endasm
#asm                        
       
.equ __w1_port=0x1bPORTA
       
.equ __w1_bit=0
#endasm 
// Declare your global variables here
unsigned char devices
int temp
void main(void)
{
// Declare your local variables here
char lcd_buffer[33]; 
devices=w1_init();

// 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=0x00;

// 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
// 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: Timer 0 Stopped
// Mode: Normal top=0xFF
// OC0 output: Disconnected
TCCR0=0x00;
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: System Clock
// Clock value: Timer2 Stopped
// Mode: Normal top=0xFF
// OC2 output: Disconnected
ASSR=0x00;
TCCR2=0x00;
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=0x00;

// 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 are specified in the
// Project|Configure|C Compiler|Libraries|Alphanumeric LCD menu:
// RS - PORTD Bit 0
// RD - PORTD Bit 1
// EN - PORTD Bit 2
// D4 - PORTD Bit 4
// D5 - PORTD Bit 5
// D6 - PORTD Bit 6
// D7 - PORTD Bit 7
// Characters/line: 8
lcd_init(16);

while (
1)
     {
     
// Place your code here  
     
temp=ds18b20_temperature(0);
     if (
temp>1000){            
     
temp=4095-temp;          
     
temp=-temp;             
     }
     
sprintf(lcd_buffer,"t=%i.%u\xdfC",temp,temp%1);    
     
lcd_clear();             
     
lcd_puts(lcd_buffer);       
     
delay_ms(500);  
     }

وقتی نتونی از دشمنات پیش دوستات حرفی بزنی وقت رفتنه...
پاسخ
#2
دوست عزیز اینه بساز توپ جواب میدهه
دیدن لینک ها برای شما امکان پذیر نیست. لطفا ثبت نام کنید یا وارد حساب خود شوید تا بتوانید لینک ها را ببینید.
پاسخ
#3
سلام

دوستان خواهشا کمک کنید

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

ببینید این سنسور رو وقتی با LCD میبندیم درست کار میکنه و مشکلی نداره ولی به محض اینکه از LCD میاریمش روی 7Seg مشکل ایجاد میشه !

قبول ندارید ؟! امتحان کنید !
منو کچل کرده این کتابخونه DS18B20.h :(:@

فایل هاشو میزارم.واقعا اگه کسی تونست این مشکل رو رفع کنه کارش خیلی درسته !

اینم فایل پروتئوس + برنامه C :

دیدن لینک ها برای شما امکان پذیر نیست. لطفا ثبت نام کنید یا وارد حساب خود شوید تا بتوانید لینک ها را ببینید.


با تشکر
پاسخ
#4
(6 شهريور 1392، 04:46 عصر)coloop نوشته است: دیدن لینک ها برای شما امکان پذیر نیست. لطفا ثبت نام کنید یا وارد حساب خود شوید تا بتوانید لینک ها را ببینید.

.rar   dama with ds18b20 - without multi.rar (اندازه: 110.13 KB / تعداد دفعات دریافت: 41)
سلام

دوستان خواهشا کمک کنید

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

ببینید این سنسور رو وقتی با LCD میبندیم درست کار میکنه و مشکلی نداره ولی به محض اینکه از LCD میاریمش روی 7Seg مشکل ایجاد میشه !

قبول ندارید ؟! امتحان کنید !
منو کچل کرده این کتابخونه DS18B20.h :(:@

فایل هاشو میزارم.واقعا اگه کسی تونست این مشکل رو رفع کنه کارش خیلی درسته !

اینم فایل پروتئوس + برنامه C :

دیدن لینک ها برای شما امکان پذیر نیست. لطفا ثبت نام کنید یا وارد حساب خود شوید تا بتوانید لینک ها را ببینید.


با تشکر

این که گذاشتم درست کار میکنه اگه با سگمنت ها مشکلی داری اشکال از خودته!!!!:D

.rar   dama with ds18b20 - without multi.rar (اندازه: 110.13 KB / تعداد دفعات دریافت: 41)
وقتی نتونی از دشمنات پیش دوستات حرفی بزنی وقت رفتنه...
پاسخ
#5
(6 شهريور 1392، 09:56 عصر)yaser1373 نوشته است: دیدن لینک ها برای شما امکان پذیر نیست. لطفا ثبت نام کنید یا وارد حساب خود شوید تا بتوانید لینک ها را ببینید.
(6 شهريور 1392، 04:46 عصر)coloop نوشته است: دیدن لینک ها برای شما امکان پذیر نیست. لطفا ثبت نام کنید یا وارد حساب خود شوید تا بتوانید لینک ها را ببینید.
سلام

دوستان خواهشا کمک کنید

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

ببینید این سنسور رو وقتی با LCD میبندیم درست کار میکنه و مشکلی نداره ولی به محض اینکه از LCD میاریمش روی 7Seg مشکل ایجاد میشه !

قبول ندارید ؟! امتحان کنید !
منو کچل کرده این کتابخونه DS18B20.h :(:@

فایل هاشو میزارم.واقعا اگه کسی تونست این مشکل رو رفع کنه کارش خیلی درسته !

اینم فایل پروتئوس + برنامه C :

دیدن لینک ها برای شما امکان پذیر نیست. لطفا ثبت نام کنید یا وارد حساب خود شوید تا بتوانید لینک ها را ببینید.


با تشکر

این که گذاشتم درست کار میکنه اگه با سگمنت ها مشکلی داری اشکال از خودته!!!!:D

ممنون که جواب دادید.
اما این جواب سوال من نبود.

سخت افزار من کجا و سخت افزار شما کجا !؟
من میخوام اشکال کارمو بفهمم چیه وگرنه که ازتون یه نمونه میخواستم !
پاسخ
#6
سلام به شما
دوست عزیز شما پایه های  AREF , AVCC  رو باید به 5 ولت وصل کنید تا واحد ADC تون بکار بیفته اینکار رو بکن پایه های 30و 32 رو به 5 ولت متصل کن حله داداشIdea
این روزها من خدای سکوت شده ام خفقان گرفته ام تاآرامش اهالی دنیا خط خطی نشود...
اینجا زمین است رسم آدمهایش عجیب است
اینجا گم که میشوی بجای اینکه دنبالت بگردنند فراموشت میکنند.........:(:(
پاسخ
#7
(6 شهريور 1392، 11:55 عصر)microoo نوشته است: دیدن لینک ها برای شما امکان پذیر نیست. لطفا ثبت نام کنید یا وارد حساب خود شوید تا بتوانید لینک ها را ببینید.
سلام به شما
دوست عزیز شما پایه های  AREF , AVCC  رو باید به 5 ولت وصل کنید تا واحد ADC تون بکار بیفته اینکار رو بکن پایه های 30و 32 رو به 5 ولت متصل کن حله داداشIdea
این سنسور که با پروتکل 1wire کار می کنه و نیازی به ADC نداره:-/

 coloop جان
شما برای ساعت از ای سی ds1307 استفاده کردی
و برای دما از ds18b20 استفاده کردی
اولی از پروتکل I2C استفاده می کنه و دومی از پرتکل 1wire این دوتا پروتکل برای فعال شدن از تاخیر استفاده می کنن پس تو راه اندازی سون سگمنت نمیشه ازشون استفاده کرد
برای حل مشکل ساعت شما باید تایمر 2 میکرو تون رو روی شمارش عادی 1 ثانیه بذاری در واقع یه ساعت درست کنی و قبل از شروع برنامه از آی سی بک آپ مقدارشونه وارد کنی و دیگه توی برنامه کاری به بک آپ نداشته باشی چون میکرو خودش عمل شمارش رو انجام میده و دوباره موقع تنظیم کردن ساعت اعداد رو از این متغیر ها به آی سی بک آپ منتقل کنی و کلا توی برنامه بهشون کاری نداشته باشی
برای حل مشکل دماسنج باید یه متغیر تعریف کنی و هر چند ثانیه یک بار(با توجه به نیازت) یک بار دما رو بخونی و طوری باشه که همیشه دما در حال خوندن نباشه
موفق باشید
پاسخ
#8
ممنون آقا هادی
اما مثل اینکه شما هم فایل من رو دانلود نکردید.
40 کیلوبایت بیشتر نیست.

به هرحال این مسائل رو منم میدونم.ولی من ساعت رو راه انداختم و مشکلی هم نبود و داره مثل چی چی کار میکنه ! :at:
اما این دماسنج به هیچ صراطی مستقیم نیست.
من 50 درصد راه رو رفتم ولی بقیه اش همین دماسنجه که باید با همین سخت افزار هم حتما بسته بشه !
متاسفانه از LM35 استفاده میکنیم یه جور دردسر داریم و از DS18B20 استفاده میکنیم یجور دیگه !
من دقیق متوجه نشدم که فرق نمایش روی LCD با نمایش روی سون سگمنت دقیقا چیه که اینقدر نتیجه فرق داره !

باسپاس
پاسخ
#9
(7 شهريور 1392، 11:29 عصر)coloop نوشته است: دیدن لینک ها برای شما امکان پذیر نیست. لطفا ثبت نام کنید یا وارد حساب خود شوید تا بتوانید لینک ها را ببینید.
ممنون آقا هادی
اما مثل اینکه شما هم فایل من رو دانلود نکردید.
40 کیلوبایت بیشتر نیست.

به هرحال این مسائل رو منم میدونم.ولی من ساعت رو راه انداختم و مشکلی هم نبود و داره مثل چی چی کار میکنه ! :at:
اما این دماسنج به هیچ صراطی مستقیم نیست.
من 50 درصد راه رو رفتم ولی بقیه اش همین دماسنجه که باید با همین سخت افزار هم حتما بسته بشه !
متاسفانه از LM35 استفاده میکنیم یه جور دردسر داریم و از DS18B20 استفاده میکنیم یجور دیگه !
من دقیق متوجه نشدم که فرق نمایش روی LCD با نمایش روی سون سگمنت دقیقا چیه که اینقدر نتیجه فرق داره !

باسپاس
من اینه دانلود کردم
دیدن لینک ها برای شما امکان پذیر نیست. لطفا ثبت نام کنید یا وارد حساب خود شوید تا بتوانید لینک ها را ببینید.

و دیدم که همه چیزش رو توی حلقه ی اصلی نوشتین
خوب آخرین برنامه ای رو که نوشتی بذار تا ببینم چشه
مقاومت پول آپ برای پایه خروجی میکرو گذاشتین؟
پاسخ
#10
اصل برنامه که همینه !

مقاومت پول آپ برای کدوم خروجی ؟!
منو دیوانه کرد رفت این DS !:@
پاسخ
مشترک شدن در این موضوع


پرش به انجمن:

کاربرانِ درحال بازدید از این موضوع: 1 مهمان

انتخاب پوسته :

دسترسی سریع
درباره ما
انجمن سرزمین الکترونیک در 20 شهریور 91 تاسیس شده ، که همیشه سعی کرده با ظاهری متفاوت و سرعتی خوب رضایت کاربران را جلب کند ، امیدواریم توانسته باشیم گامی کوچک در پیشرفت فناوری در ایران برداشته باشیم...
نیرو گرفته از MyBB 1.8.6 با فارسی سازی مای بی بی ایران - طراحی شده در : ملت دیزاین
© تمامی حقوق برای انجمن سرزمین الکترونیک محفوظ می باشد .

پوسته‌ی انجمن: