فروشگاه محصولات
لیست همه محصولات |
|
|
جستجوی پیشرفته |
|
| نمایش سبد خرید | |
|
سبد خرید شما فعلاً خالی است.
|
ورود کاربران
نظرخواهی
آمار بازدید







آخرين اخبار شركت ايماتك
| آزمایش شماره 9 : ساخت دماسنج |
|
|
|
| محصولات - AVR Training Kit ver 1.0 ATMEGA-16 (MTK201) | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
آزمایش شماره 9 : ساخت دماسنج صورت مسئله با اتصال يك عدد سنسور دما (LM35) به PORTA.0 و به كار انداختن ADC.0 دماي محيط را خوانده و روي LCD نشان دهيد. شرح آزمایش : LM35 داراي 3 پايه مي باشد كه بايد طبق نقشه ي زير به ميكرو كنترولر متصل شود (از يك برد بورد براي اتصال LM35 به ميكرو استفاده كنيد). همانطور كه در برگه ي مشخصات اين سنسور نوشته شده است به ازاي هر درجه سانتي گراد، mv 10 ولتاژ در خروجي ايجاد مي كند كه با اتصال آن به يكي از 8 عدد ADC موجود در PORTA ميكرو ميتواند مقدار ولتاژ ايجاد شده را خوانده و دماي محيط را بدست آوريد. در اين آزمايش از ADC.0 براي خواندن ولتاژ خروجي سنسور استفاده شده است. براي كاهش حجم محاسبات مقدار ولتاژ مرجع ADC را داخلي ( v2.56) انتخاب مي كنيم و ADC را در مد 8 بيتي به كار مي بريم ، پس به ازاي هر واحد ADC خواهيم داشت : 2.56v/(2^8) = 0.01v = 10mv در نتيجه به ازاي هر درجه افزايش دماي سنسور مقدار ADC يك واحد افزايش خواهد يافت و ميتوانيد مقدار خوانده شده از ADC را مستقيماً روي LCD نشان دهيد.
نقشه مدار جهت انجام آزمايش :
تنظیمات Code Wizard در Code Vision
متن برنامه به زبان C - قابل پیاده سازی در Code Vision
#include <mega16.h> #include <delay.h> #include <stdlib.h> #asm .equ __lcd_port=0x18 ;PORTB #endasm #include <lcd.h> #define ADC_VREF_TYPE 0xE0 unsigned char read_adc(unsigned char adc_input) { ADMUX=adc_input | (ADC_VREF_TYPE & 0xff); delay_us(10); ADCSRA|=0x40; while ((ADCSRA & 0x10)==0); ADCSRA|=0x10; return ADCH; } char str[16]; int tmp_adc; void main(void) { PORTA=0x00; DDRA=0x00; PORTB=0x00; DDRB=0xFF; PORTC=0x00; DDRC=0x00; PORTD=0x00; DDRD=0xFF; // ADC initialization // ADC Clock frequency: 7.813 kHz // ADC Voltage Reference: Int., cap. on AREF // ADC Auto Trigger Source: None // Only the 8 most significant bits of // the AD conversion result are used ADMUX=ADC_VREF_TYPE & 0xff; ADCSRA=0x87; lcd_init(16); while (1) { tmp_adc = read_adc(0); PORTD = tmp_adc; itoa(tmp_adc,str); lcd_clear(); lcd_puts(str); lcd_putsf("'C"); delay_ms(500); }; }
متن برنامه به زبان Basic - قابل پیاده سازی در Bascom $regfile = "m16def.dat" $crystal = 1000000 Config Adc = Single , Prescaler = 128 , Reference = Internal Config Portd = Output Config Portb = Output Config Lcdpin = Pin , Db4 = Portb.4 , Db5 = Portb.5 , _ Db6 = Portb.6 , Db7 = Portb.7 , Rs = Portb.0 , E = Portb.2 Config Lcd = 16 * 2 Dim Tmp_adc As Byte Start Adc Cursor Off Do Tmp_adc = Getadc(0) Shift Tmp_adc , Right , 2 'use adc in 8bit mode Portd = Tmp_adc Cls Home Lcd Tmp_adc ; "'C" Waitms 500 Loop End
!joomlacomment 4.0 Copyright (C) 2009 Compojoom.com . All rights reserved."
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| LAST_UPDATED2 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||





