دانلود نسخه كامل و پيشرفته CodeVisionAVR V2.05 Advance
30 بهمن, 1389دانلود LabVIEW 2010+ماژول های کاربردی+بسته های آموزشی
12 اردیبهشت, 1390بازدیدها: 3
با سلام. امروز می خواهیم در مورد سنسور دیجیتال اندازه گیری دما DS18B20 صحبت کنیم و از خصوصیات و ویژگی ها و راه اندازی آن در CodeVisionAVR V2.05.0 بپردازیم.
از ویژگی های این سنسور این است که کاملا دیجیتال و به شکل یک ترانزیستور 3 پایه می باشد که پایه 1 آن به زمین و پایه 3 آن هم به VCC وصل می شود و از پایه 2 آن که با یک مقاومت pullup به اندازه 4.7 کیلو به VCC وصل می شود.
این سنسور از طریق همین یک پایه با استفاده از پروتکل 1wire عمل ارسال و دریافت دیتا را انجام می دهد. محدوده اندازه گیری دمای آن بین منفی -55 تا مثبت +125 درجه سانتیگراد می باشد و از دقت بسیار بالایی در حدود 0.0625 درجه را دارد که نسبت به کوچکترین تغییرات دمای واکنش سریع نشان خواهد داد. در ادامه به نحوی برنامه نویسی آن به زبان سی خواهیم پرداخت …
2: #include <delay.h>
3: #include <lcd.h>
4: #include <1wire.h>
5: #include <ds18b20.h>
6: #include <stdio.h>
7: #define xtal 8000000
8: #asm
9: .equ __w1_port=0x18 ;PORTB
10: .equ __w1_bit=1
11: #endasm
12: #asm
13: .equ __lcd_port=0x15 ;PORTC
14: #endasm
15: char buffer[32];
16: void main(void){
17: unsigned char devices;
18: float temp;
19: lcd_init(16);
20: devices=w1_init();
21: while(devices>0){
22: temp=ds18b20_temperature(0);
23: sprintf(buffer,”T=%5.3fxdfC”,temp);
24: lcd_clear();
25: lcd_puts(buffer);
26: delay_ms(300);
27: }
28: }
همانطور که گفتیم این سنسور با پروتکل 1wire کار می کند بنابراین در خطوط 4و5 کتابخانه های مورد نیاز را فراخوانی می کنم. و سایر کتابخانه های مربوط lcdو توایع استاندارد مورد نیاز را نیز فراخوانی کردیم. در خطوط 8 تا 10 به زبان اسمبلی پین مربوط به سنسور را تعریف کردیم. و بعد هم پورت مربوط به lcd و متغییر buffer
وارد حلقه اصلی می شویم یک متغیر محلی devices تعریف می کنیم، همانطور که می دانیم می توانیم بر روی این پین میکرو 8 تا دستگاه که با پروتکل 1wire کار می کنند را به صورت موازی وصل کنیم به همین خاطر از متغیر devices برای تعیین تعداد دستگاه ها روی خط استفاده می کنیم
با استفاده از دستور نوشته شده در خط 20 دستگاه ها شناسی شده و بعد با استفاده از یک حلقه بی نهایت شرطی مبنی بر وجود یک دستگاه، وارد این حلقه می شویم در خط 22 با استفاده از تابع مربوطه دما از سنسور به صورت دیجیتال دریافت می شود و بعد در متغیر temp قرار می گیرد. در خط 23 دما همراه با علایم و نوشته برای ارسال به LCD آماده می شود و بعد توسط خط 25 ارسال می شود و این فرایند هر 300 میلی ثانیه اجرا می شود.
