در ادامه مجموعه آموزش های میکروکنترلر PIC توسط کامپایلر CCS C ، در این قسمت به عنوان تمرین آموزش های جلسات قبل، برنامه یک تایمر ساده که قابلیت زمان گیری تا 99 ثانیه را دارد می نویسیم. در جلسات آینده با استفاده از تایمرهای میکروکنترلر، همین برنامه را به شکل دقیق تر می نویسیم. شکل زیر شماتیک این برنامه را نشان می دهد.
عملکرد مدار به اینگونه است که با وصل کلید Start/Stop تایمر شروع به شمارش می کند و با قطع آن تایمر می ایستد و آخرین عدد شمارش شده بر روی سون سگمنت باقی می ماند. همچنین در هر لحظه با زدن کلید Reset تایمر به عدد صفر باز می گردد.
در این برنامه ما از وقفه شماره دو برای کلید Reset استفاده کرده ایم و کدهای مربوط به کلید Start/Stop را در حلقه اصلی برنامه نوشتیم.
در بخش های قبلی آموزش در مورد راه اندازی سون سگمنت تک رقمی توضیح دادیم. در این آموزش نحوه ی کار با سون سگمنت چند رقمی را یاد می گیریم.
برای شروع مانند جلسات قبلی آموزش، تنظیمات نوع میکروکنترلر و کلاک را انجام می دهیم. تنظیمات پایه های میکروکنترلر را مطابق شکل زیر انجام می دهیم.
در ابتدای برنامه متغیری برای شمارش زمان به نام counter تعریف می کنیم. همچنین در وقفه مربوط به کلید Reset مقدار این شمارنده را صفر می کنیم. در ابتدای حلقه main کدهای مربوط به سون سگمنت کاتد مشترک را اضافه می کنیم.
متغیر i را برای ایجاد زمان یک ثانیه تعریف می کنیم. همچنین دو متغیر با نام های first_digit و second_digit برای نمایش رقم یکان و دهگان بر روی سون سگمنت تعریف می کنیم.
در حلقه ی دائمی برنامه یا همان حلقه while(True) ، یک حلقه while به منظور بررسی وضعیت کلید Start_Stop تعریف می کنیم و تا زمانی که این کلید وصل می باشد، کدهای درون این حلقه اجرا می شود.
در درون این حلقه برای نمایش رقم یکان و دهگان، ابتدا پایه های کنترلی هر رقم را با توجه به این که سون سگمنت کاتد مشترک است صفر می کنیم و سپس رقم یکان و دهگان را بر روی هر سگمنت حدود 5 میلی ثانیه نمایش می دهیم و به دلیل تکرار این فرایند، اعداد روی سگمنت ثابت نشان داده خواهد شد.
برای ایجاد زمان یک ثانیه از حلقه for استفاده کرده ایم. مقدار عدد لازم برای تکرار این حلقه برای ایجاد زمان یک ثانیه به صورت تقریبی و با آزمون و خطا به دست می آید.
در ادامه برنامه نیز در صورتی که کلید Start_Stop وصل نباشد، عدد شمارنده را روی سون سگمنت نمایش می دهیم.
شکل زیر نتایج شبیه سازی را نشان می دهد.
- تمرین : کد مربوط به ریست کردن تایمر را بدون وقفه بنویسید.
- تمرین : با استفاده از سون سگمنت 4 رقمی محدوده تایمر را تا عدد 9999 افزایش دهید.
امیدوارم این بخش هم برای شما مفید باشد. اگر سوالی داشتید در بخش نظرات مطرح کنید.
اگر این نوشته برایتان مفید بود لطفا کامنت بنویسید.
سلام جواب این تمرین را داریدتمرین : با استفاده از سون سگمنت 4 رقمی محدوده تایمر را تا عدد 9999 افزایش دهید.
ضمن عرض سلام و خسته نباشید ,ممنون از سایت خوب و پر محتواتون.