ابر شمارنده ۲۴ رقم با avr

چگونه با شیفت رجیستر و آی سی لچ یک ابر شمارنده طراحی کنیم؟

مثالی که در ادامه مشادهده خواهید کرد یک شمارنده ۲۴ رقم با استفاده از آی سی لچ ۷۴۵۷۳ و شیفت رجیستر ۷۴۵۹۵ می باشد

این مثال برای درک بهتر شما عزیزان از نحوه کار آی سی لچ و شیفت رجیستر می باشد

برای بزرگنمایی روی عکس کلیک کنید

در مورد عکس بالا نباید به هیچ عنوان وحشت زده شوید! توصیه می کنم اگر نحوه عملکرد ای سی لچ و شیفت رجیستر را نمی دانید یا یاد ندارید آموزش هر کدام جداگانه در سایت موجود است ابتدا برگردید مطالعه کنید و سپس این پست را دنبال کنید

اگر به عکس بالا نگاه کنید ما از ۲۴ عدد سون سگمنت تکی استفاده کرده ایم برای اینکه پورت کافی برای راه اندازی تک تک سون سگمنتها را نداریم مجبوریم از المانی استفاده کنیم که دیتای هر سون سگمنت را در خود ذخیره کند و همینطور هر وقت بخواهیم باید بتوانیم این اطلاعات را آپدیت کنیم

برای این المان از ای سی لچ ۷۴۵۷۳ استفاده کرده ایم و روش کار بدین صورت است که ابتدا دیتای مربوط به سون سگمنت رقم اول را در پورت ورودی آی سی لچ قرار می دهیم سپس آی سی لچ سون سگمنت اول را انتخاب می کنیم تا دیتا به خروجی راه یابد نحوه انتخاب آی سی لچ هم توسط شیفت رجیستر ۷۴۵۹۵ صورت می گیرد

بدین صورت که دیتای سون سگمنت را در ای سی لچ سون سگمنت اولی قرار می دهیم سپس توسط شیفت رجیستر ای سی لچ سون سگمنت اولی را انتخاب می کنیم تا دیتا در خروجی لود می شود ،خروجی هر ای سی لچ هم به سون سگمنت وصل می شود بنابراین دیتا به سون سگمنت خواهد رسید بعد از اینکه دیتای رقم اول در سون سگمنت لود کردیم به ترتیب این مراحل را برای سون سگمنت دوم بعد سوم و تا رقم ۲۴ این کار را انجام می دهیم

نکته:در هر لحظه تنها یک ای سی لچ باید فعال شود

بنابراین این شمارنده ۸۰ بیتی می تواند تا عدد ۹۹۹,۹۹۹,۹۹۹,۹۹۹,۹۹۹,۹۹۹,۹۹۹,۹۹۹ را بشمارد

این عدد به حروف می شود:

نهصد و نود و نه تریلیارد و نهصد و نود و نه تریلیون و نهصد و نود و نه بیلیارد و نهصد و نود و نه بیلیون و نهصد و نود و نه میلیارد و نهصد و نود و نه میلیون و نهصد و نود و نه هزار و نهصد و نود و نه

این پروژه صرفا جنبه آموزشی دارد ، اگر از امروز بخواهید این شمارنده را فعال کنید و میکروکنترلر با سرعت کریستال ۸ مگا هرتز شروع به شمارش کند شاید بعد از چند سال دوباره عدد به صفر برسد…

برنامه در کامپایلر کدویژن نوشته شده و شما با الهام گیری از کد می توانید پروژه های متنوعی انجام دهید.

برنامه در کامپایلر کدویژن:

برنامه شامل دو تابع disable_all و enable_segment و یک تابع اصلی main می باشد

تابع disable_all:

این تابع شیفت رجیستر ها را کنترل می کند هر شیفت رجیستر مسئولیت کنترل هشت عدد آی سی لچ را بر عهده دارد با استفاده از تابع disable_all  حالت انتخاب همه ی آی سی های لچ را غیر فعال می کنیم

تابع enable_segment:

این تابع هم در هربار فراخوانی تنها یکی از ای سی های لچ را فعال می کند این تابع دو پارامتر دارد پارامتر اول مقدار یک تا ۲۴ را می پذیرد و این به این معنی می باشد که اگر مقدار پارامتر اول را برابر با یک قرار دهید ای سی لچ انتخاب می شود و دیتا به سون سگمنت رقم اولی فرستاده خواهد شد اگر مقدار پارامتر را ۲ قرار دهید دیتا به سون سگمنت رقم دوم فرستاده خواهد شد و همینطور می توانید یک حلقه ۱ تا ۲۴ تعریف کنید و دیتا را به سون سگمنتها بفرستید

پارامتر دوم این تابع هم دیتا می باشد اگر من بخواهم که روی سون سگمن کاتد مشترک عدد ۵ نمایش داده شود پس مثلما پارامتر دوم را باید برابر با ۱۰۹ قرار دهید یا می توانید دیتای اعداد ۰ تا ۹ را در یک ارایه ذخیره کنید و دیتا را از اریه بخوانید

در تابع اصلی هم ابتدا همه سلکتور یا انتخابگر های ای سی های لچ را غیر فعال کردیم سپس با استفاده از حلقه for شروع به ارسال دیتا برای نمایش در سون سگمنت استفاده کردیم.

می توانید برنامه و فایل شبیه ساز را از باکس دانلود ، دانلود کنید…

تهیه و تنظیم :mculibrary.ir

  • برای شبیه سازی نیاز به پروتیوس 8.10 به بالا دارید.
mast3r

علاقه مند به طراحی سیستم های میکروکنترلری و الکترونیک دیجیتال و مدارات منطقی دیجیتال ، برنامه نویسی اپلیکیشن های اندروید مرتبط با سخت افزار... برنامه نویسی کلیه میکرو کنترلر های سری avr و pic و stm32 و stm8 و ...

نوشته‌های مرتبط

قوانین ارسال دیدگاه

  • دیدگاه های فینگلیش تایید نخواهند شد.
  • دیدگاه های نامرتبط به مطلب تایید نخواهد شد.
  • از درج دیدگاه های تکراری پرهیز نمایید.
  • در هنگام درج نظر از به کار بردن کلمات نامتعارف خودداری کنید.
دیدگاه‌ها

*
*

پانزده − 7 =

question