۰۹-مهر-۱۳۸۸, ۱۳:۱۵:۵۴
سلام
من تو یه پروژه نیاز دارم نور محیط رو اندازه بگیرم و اگر نور محیط از یه مقدار x کمتر شد یه پورت رو فرضا 1 کنم. برای اندازهگیری شدت نور از یه فتوسل معمولی استفاده کردم و با بیسیک از adc یک atmega16 به صورت زیر استفاده کردم تا مقدار عددی رو روی یه LCD 2*16 نمایش بدم:
اما متاسفانه عددی که روی LCD برمیگردونه سریعا تناوب داره و اصلا نمیشه خوندش. شاید مشکل از پیکربندی نامناسب باشه. من پینهای AREF و AVCC میکرو رو به VCC وصل کردم و بین زمین و ADC0 یه فتوسل گذاشتم.
خودم حدس میزنم باید عملکرد فتوسل رو تقویت کنم و بعد بدمش به کانال 0 مبدل آنالوگ به دیجیتال میکرو. اما نمیدونم چگونه؟
من تو یه پروژه نیاز دارم نور محیط رو اندازه بگیرم و اگر نور محیط از یه مقدار x کمتر شد یه پورت رو فرضا 1 کنم. برای اندازهگیری شدت نور از یه فتوسل معمولی استفاده کردم و با بیسیک از adc یک atmega16 به صورت زیر استفاده کردم تا مقدار عددی رو روی یه LCD 2*16 نمایش بدم:
کد:
$regfile = "m16def.dat"
$crystal = 8000000
Config Lcd = 16 * 2
Config Lcdpin = Pin , Db4 = Portb.4 , Db5 = Portb.5 , Db6 = Portb.6 , Db7 = Portb.7 , Rs = Portb.2 , E = Portb.3
Config Adc = Single , Prescaler = Auto
Start Adc
Dim A As Word
Cursor Off
Do
A = Getadc(0)
Locate 1 , 1
Lcd A
Loop
End
خودم حدس میزنم باید عملکرد فتوسل رو تقویت کنم و بعد بدمش به کانال 0 مبدل آنالوگ به دیجیتال میکرو. اما نمیدونم چگونه؟