ايران ويج

نسخه‌ی کامل: مشکل در LCD های گرافیکی
شما در حال مشاهده‌ی نسخه‌ی متنی این صفحه می‌باشید. مشاهده‌ی نسخه‌ی کامل با قالب بندی مناسب.
صفحه‌ها: 1 2 3
سلام
در برنامه های بالا که هر سه یک شمارنده با LCD گرافیکی از 0 تا 99 است چرا هیچ کدام از برنامه ها درست کار نمیکند ( برنامه CLOCK1 که پس از گذشت مدتی روی LCD نقطه های ناخواسته ای ظاهر میشود و CLOCK2 که اصلا هیچ روی LCD ظاهر نمیشود اما برنامه CLOCK3 که در آن از تایمر ها استفاده نشده است به خوبی کار میکند )
درضمن من این مدار را عملا ساخته ام اما همانند شبیه ساز در پروتوس کار میکند

[/url]http://rapidshare.com/files/29028991/COUNTER.zip
سلام
نمی دونم از کدوم برنامه ها صحبت می کنی اما این که فرمودید از وقفه استفاده نشده و برنامه کارش رو به درستی انجام میده همچنین در شبیه ساز پروتوس برنامه ها صحیح کار میکنند میشه گفت مدار شما نیاز به یک کریستال 32768Hz نیاز داره اگر از atmega 8 , 16 , 32 استفاده میکنی جای کریستالی که قبلا بوده یک کریستال 32768Hz قرار بده امیدوارم درست میشه. :roll:
با تشکر از جواب شما
من هم در همه برنامه ها کریستال را گزاشته ام و تایمر ها به خوبی کار میکنند اما پس از چند ثانیه روی LCD خراب میشه
اولا برنامه به چه زبانیه ؟
شما timer ها رو حذف کن با یه حلقه این عمل رو انجام بده اگه درست کار می کنه ایراد از نوشتن تایمر هاست به LCD ربطی نداره
سلام
برنامه من به زبان بیسیک و کمپایلر bascom است
دقیقا درسته اگر تایمر ها را حذف کنیم مانند مثال 3 برنامه به خوبی کار میکنه اما دیگه نمی شه 1 ثانیه را ساخت مشکل من هم همینه یعنی میخواهم هر یک ثانیه یکی به عدد اضافه بشه
این را هم بگم که تایمر به تنهایی و بدون پرش به زیر برنامه که در اون متغییر زیاد میشه
هیچ مشکلی بوجود نمی آره مشکل هنگام پرش به زیر برنامه بوجود میآد
توی اسمبلی جلوگیری از این تداخل ها به عهده برنامه نویسه اما توی کمپایلر ها خود کمپایلر این وظیفه رو داره شما فقط توی استفاده از متغیر های مشترک باید مراقب باشی چون همون موقع استفاده کردن از متغیر ممکنه اینتراپت رخ بده
اگر از متغیر های زیاد هم استفاده می کنی ممکنه با کمبود RAM رو برو بشه بهتره کتغبر هات رو کم کنی و سعی کنی زیاد از زیر برنامه ها استفاده نکنی
سلام
برنامه بالا تنها جزئی از برنامه است و در آن واحد چند برنامه را باید اجراکند و استفاده از تاخیر اصلا منطقی نیست
حالا با این تدابیر من باید چه کار بکنم
فکر کنم باید قید AVR را بزنم یا ...
برنامت رو تازه دیدم ندیدم لینک گذاشتی
به نظر که سالم می یاد بیا به جای نوشتن دایم توی LCD هر وقت اینترات رخ داد تغییر رو نمایش بده با این روش نیاز نیست توی یه لوپ این کار رو بکنی یه چک هم بکن ببین توی یک ثانیه چند بار می نویسی شاید تعداد نوشتن زیاداین اتفاق رو به وجود م ییاره
قید AVR هم نیاز نیست بزنی قید Basic رو بزن
کاملا درسته ولی ممکنه بگی چطوری بدون حلقه و در هر بار سرریزی تایمر فقط یک بار lcd را رفرش کنم
لازم به ذکر است که بگم رفتم در قسمت علایق شخصی و "avr نه چیز دیگه" را به "bascom_avr نه چیز دیگه" تغییر دادم چون من باید این پروژه را با بیسیک برای یه بنده خدا بسازم حالا هم که موندم
شما اگه توابع رو از توی اون لوپ اصلی بر داری و ببری توی روتین تایمر که موقع سر ریز شدن اجرا می شه اجرا کنی به اضای هر تغییر عدد LCD رفرش می شه
سلام
ممنون از راهنمایی تون
من هر کاری کردم نشد یعنی یه بار دستورات lcd را تو سرریزی تایمر گزاشتم یه بار نزاشتم و هر جا که گزاشتم کار نکرد خوشبختانه دیگه نمی خوام به این شکل مدارو بسازم و با یه تغییر کوچیک تو برنامه این مشکل هم حل شد
صفحه‌ها: 1 2 3