مقدمه
تابلوی قیمت نوعی نمایشگر است که اکثرا در فروشگاه ها، صرافی ها و … قابل مشاهده است. این تابلوها در انواع مختلف نظیر تابلوی روان، تابلوی ثابت و بعضی نیز به صورت تابلوهای دیجیتالی (سون سگمنت دار) موجود می باشد. این تابلوها قابل توسعه و برنامه ریزی است؛ حال می تواند به صورت آنلاین (متصل به کامپیوتر یا شبکه اینترنتی) برنامه ریزی شده و قیمت ها را بروزرسانی کند (مانند تابلوهای نمایش ارز در صرافی ها)، یا اینکه به صورت آفلاین از قبل توسط کامپیوتر برنامه ریزی شده، در حافظه خود ذخیره کرده و آن ها را به صورت استاتیک و ثابت نمایش دهد (مانند تابلوهای قیمت در فروشگاه ها، رستوران ها و …).
شرح مدار
پروژه ای که در اختیار شما قرار گرفته شده است، نوعی تابلوی قیمت با نمایشگر دیجیتالی سون سگمنت می باشد که می تواند 16 قیمت مختلف (با 8 رقم تعبیه شده برای هر قیمت) را نمایش دهد. برنامه ریزی تابلو به صورت کاملا مستقل توسط دکمه های تعبیه شده در مدار انجام گرفته و پس از تنظیم شدن، در حافظه EEPROM میکروکنترلر ذخیره می شود. لازم به ذکر است این نوع حافظه با قطع شدن تغذیه میکروکنترلر، پاک نمی شود و تنها زمانی قابل پاک شدن است که میکروکنترلر دوباره پروگرام شود.
توضیحات بخش برنامه ریزی مدار: جهت برنامه ریزی و تنظیم قیمت های موردنظر، سه عدد دکمه Menu و Up و Down تعبیه شده است. با فشردن دکمه Menu، مدار به حالت MenuStep = 1، یعنی به حالت انتخاب شماره (ایندکس) قیمت می رود و سون سگمنت های قیمت شماره موردنظر روشن و بقیه قیمت ها خاموش می شود. این به منزله آن است که آیا می خواهید قیمت شماره یک را تنظیم کنید یا خیر. چنانچه دکمه Menu دوباره فشرده شود، به حالت MenuStep = 2، یعنی تنظیم هر یک از ارقام قیمت موردنظر می رویم. با هر بار فشردن دکمه Menu، به تنظیم رقم بعدی خواهیم رفت. به هنگام اتمام تنظیم رقم هشتم (رقم آخر) قیمت، با فشردن دکمه Menu، تنظیمات ایجاد شده بر روی آن قیمت در حافظه EEPROM ذخیره شده و به MenuStep = 1 باز می گردیم. چنانچه عملیات برنامه ریزی و تنظیم قیمت ها به پایان رسید و نمی خواهید قیمت دیگری را تنظیم کنید، کافیست دکمه Exit را بفشارید تا به حالت MenuStep = 0 بروید.
توضیحات بخش درایو سون سگمنت ها: شاید برای شما سوال ایجاد شود که چطور می توان این تعداد سون سگمنت (16 × 8 = 128) را توسط میکروکنترلر (با توجه به محدود بودن پایه ها و پورت های خروجی میکروکنترلر) کنترل نمود. اما گفتنی است که این عمل توسط آی سی های لچ Latch قابل انجام می باشد. آی سی های لچ در واقع بافرهای سه حالتی (Tri-state Buffer) می باشد که می تواند داده ها (رجیسترها) را عبور دهد یا به حالت مقاومت بینهایت (High Impedance) رود و عملا هیچ ریجستری را از ورودی بافر عبور ندهد و یا به عبارتی مدارباز شود. همانطور که در شکل (1) مشاهده می کنید، پایه LE مربوط به فعال نمودن آی سی لچ است. پایه OE در واقع همان فرمان منطقی 0 یا 1 است که از سوی میکروکنترلر به آی سی انتقال می یابد. ضمن توجه به مکمل بودن این پایه، به ازای مقدار 0 منطقی، پایه کنترل هر یک از بافرهای سه حالتی، 1 شده و آن را به حالت Buffer معمولی می برد و به ازای مقدار 1 منطقی، بافرهای سه حالتی به حالت High Impedance می رود.
برای این کار بایستی مدار کلی را با قسمت بندی کردن، به مدارات جزئی تبدیل نمود؛ یعنی، هر مجموعه سون سگمنت هشتایی را یک مدار جداگانه تصور کرده و هر مجموعه را به صورت نوبتی درایو می کنیم؛ به این صورت که ابتدا هشت عدد سون سگمنت اول را با ارسال فرمان 1 منطقی به پایه OE آی سی لچ مربوطه، وارد مدار درایوینگ کرده و قابلیت نمایش داده های مربوط به آن را در یک مدت زمان بسیار کم (8 میلی ثانیه: هر سگمنت یک میلی ثانیه روشن است) می دهیم. پس از آن با ارسال فرمان 0 منطقی به سر OE آی سی، هشت عدد سون سگمنت را از مدار قطع می کنیم (در این حالت داده های ورودی لچ، در خروجی لچ تاثیر نمی گذارند). حال نوبت به هشت عدد سون سگمنت بعدی می رسد و آن ها نیز مشابه همان فرایند، داده های خود را نمایش می دهد و دوباره خاموش شده و … .
شماتیک مدار
بخش دانلود
شامل موارد زیر:
- فایل شبیه سازی Proteus 8.8
- سورس کد کامل برنامه به زبان سی (کدویژن CodeVision)
- سورس کد کامل برنامه به زبان بیسیک (بسکام Bascom)
- شماتیک مدار به صورت PDF
- کد هگز مخصوص پروگرام کردن میکروکنترلر
توجهات:
خیلی عالی بود مثل بقیه دست شما درد نکنه