1. خانه
  2. آموزش
  3. جلسه نوزدهم _ نحوه راه اندازی سون سگمنت و برنامه آن در محیط STM32CubeIDE (بخش دوم)

جلسه نوزدهم _ نحوه راه اندازی سون سگمنت و برنامه آن در محیط STM32CubeIDE (بخش دوم)

دوره آموزشی میکرو کنترلرهای STM32 _ راه اندازی سون سگمنت(بخش دوم)

در ادامه آموزش STM32 با استفاده از توابع HALدر این جلسه قصد داریم تا با نحوه برنامه نویسی و نمایش اعداد ۰ تا ۹ را بر روی سون سگمنت آشنا شویم و با استفاده از یک حلقه For اعداد مورد نظر را بصورت پیوسته و با یک فاصله زمانی ثابت نمایش دهیم.

در جلسه قبل با ساختمان داخلی سون سگمنت آشنا شدیم و پایه های مورد نظر برای راه اندازی آن را در میکرو و با کمک نرم افزار STM32CubeMX مشخص نمودیم و برای هر پایه نامی مستعار را متناسب به سگمنتی که به آن متصل می شود مشخص نمودیم.

با توجه به اینکه سگمنت مورد نظر ما کاتد مشترک یا آند مشترک باشد برای نمایش اعداد سگمنت های مورد را باید Set یا Reset نماییم در این مطلب ما از سگمنت های کاتد مشترک استفاده می کنیم و با این شرایط برای نمایش هر عدد باید سگمنت های مورد نظر را Set نماییم و پایه مشترک را نیز به زمین یا منفی تغذیه متصل نماییم.
برای نمونه اگر ما بخواهیم عدد ۲ را روی سون سگمنت نمایش دهیم با توجه به تصویر زیر باید سگمنت های A,B,D,E,G را Set نماییم و برای نمایش بقیه اعداد نیز باید به همین ترتیب سگمنت های فعال مربوط به هر عدد را مشخص نماییم.

Segment_Show_2

پس از مشخص نمودن سگمنت های فعال هر عدد آن ها را در جایی یادداشت می کنیم. حال به سراغ توضیح برنامه می رویم.
پس از انتخاب گزینه Generate Code در نرم افزار STM32CubeMX کد اولیه برنامه تولید می شود و با توجه به اینکه ما برای پایه های متصل شده به سگمنت ها نام های متناظر با آنها را انتخاب نموده ایم در فایل main.h نام ها را بصورت define تعریف نموده است که می توانید آنها را در تصویر زیر مشاهده نمایید.

Pin_Define

در ادامه با توجه به اینکه برای راه اندازی سون سگمنت نیاز داریم تا سگمنت ها را Set و Reset نماییم یا به عبارتی باید آنها را High یا Low نماییم خطوط زیر را نیز به فایل main.h اضافه می کنیم.

SegA_High

با اضافه نمودن این define از این به بعد هرگاه خواستیم تا پایه متصل به سگمنت A را Set یا High نماییم از دستور Segment_A_High استفاده می کنیم.

SegA_Low

از دستور بالا نیز در زمان هایی که بخواهیم پایه متصل به سگمنت A را Reset یا Low نماییم استفاده می شود.
این define ها را برای بقیه سگمنت ها نیز به برنامه اضافه می کنیم.

Seg_Define

حال به سراغ فایل main.c می رویم و خطوط اضافه شده به برنامه را توضیح می دهیم. برای خوانا تر شدن برنامه یک تابع را به برنامه اضافه می کنیم و وظیفه آن دریافت اعداد بین ۰ تا ۹ می باشد و با توجه به آرگومان ورودی سگمنت ها را متناسب با آرگومان ورودی Set یا Reset می نماید.

Function_Pro

این خط تابع نمایش اعداد را با توجه به آرگومان ورودی انجام می دهد.

Function

با صدا زدن این تابع در ابتدا تمام سگمنت ها Reset می شوند و پس از آن با توجه به آرگومان ورودی وارد یک switch می شویم که درون آن با توجه به مقدار ورودی تابع case متناسب با آن انتخاب می شود و درون هر case کد های مربوط به سگمنت های فعال هر عدد که قبلا آنها را یافته بودیم قرار می گیرد. این switch دارای ۱۰ case می باشد که اعداد ۰ تا ۹ را پشتیبانی می کند و دارای یک default می باشد که در صورتیکه هیچ کدام یک از case ها انتخاب نشدند و آرگومان ورودی تابع با هیچ کدام از آنها برابر نبود وارد آن می شود.

default

درون default تمامی سگمنت ها Set یا High می شوند.
برنامه اصلی از یک حلقه for تشکیل شده است که می توانید تصویر آن را در زیر مشاهده نمایید.

While

درون حلقه for متغیر Show_Number از ۰ تا ۹ تغییر می کند و با هر بار اجرا دستورات درون حلقه یکی به متغیر Show_Number اضافه می شود و مقدار آن به تابع Select_Number اضافه می شود و پس از فعال شدن سگمنت های متناسب با عدد مورد نظر یک ثانیه متوقف می شود و دوباره یکی به متغیر Show_Number اضافه می نماید و مقدار مورد نظر را روی سون سگمنت نمایش می دهد. این رویه تکرار می شود تا شرط دیگر برقرار نباشد و از حلقه for خارج شود و پس از آن با توجه به اینکه حلقه for درون یک while قرار دارد مجددا حلقه for با عدد صفر شروع به کار می کند. بدین ترتیب بصورت پیوسته اعداد بین ۰ تا ۹ روی سگمنت نمایش داده می شود.
نکته:
با توجه به ابعاد سون سگمنت ها و میزان مصرف جریان و ولتاژ کاری آنها در نمونه های عملی سعی کنید از ترانزیستور یا درایور های موجود در بازار برای راه اندازی سگمنت ها استفاده نمایید و از اتصال مستقیم آنها به میکرو اجتناب نمایید.

زندگی تون پر از نور و مسیرتون سبز

محمد هادی دشتی

لینک های مرتبط با آموزش:
جلسه اول_معرفی هسته آرم و میکروکنترلرهای ۳۲ بیتی شرکت ST

جلسه دوم_معرفی نرم افزارهای مورد نیازجهت برنامه نویسی و پروگرام

جلسه سوم _ آموزش نحوه دانلود آخرین نسخه از نرم افزار STM32CubeIDE

جلسه چهارم _نصب نرم افزار STM32CubeIDE و نصب کتابخانه

جلسه پنجم _ نحوه انجام تنظیمات در نرم افزار STM32CubeMX برای تولید کد برنامه چشمک زن

جلسه ششم _ برنامه نویسی یک چشمک زن ساده با استفاده از نرم افزار STM32CubeIDE

جلسه هفتم _ نحوه انجام تنظیمات پایه به صورت ورودی در نرم افزار STM32CubeMX و برنامه نویسی یک کلید

جلسه هشتم _ معرفی نرم افزار STM32 Flash Loader Demonstrator (پروگرامر سریال) 

جلسه نهم _ نحوه راه اندازی ال سی دی کاراکتری (قسمت اول)

جلسه دهم _ نحوه راه اندازی ال سی دی کاراکتری _ افزودن کتابخانه (قسمت دوم)

جلسه یازدهم _ نحوه راه اندازی ال سی دی کاراکتری _ معرفی توابع (قسمت سوم)

جلسه دوازدهم _ دوره آموزشی میکرو کنترلرهای STM32 _ راه اندازی واحد ADC(بخش اول)

جلسه سیزدهم_دوره آموزشی میکرو کنترلرهای STM32 _ راه اندازی واحد ADC(بخش دوم)

جلسه چهاردهم_دوره آموزشی میکرو کنترلرهای STM32 _ راه اندازی واحد تایمر(بخش اول)

جلسه پانزدهم_دوره آموزشی میکرو کنترلرهای STM32 _ راه اندازی واحد تایمر(بخش دوم)

جلسه شانزدهم _ نحوه راه اندازی وقفه با تحریک خارجی(جلسه اول)

جلسه هفدهم _ راه اندازی وقفه با تحریک خارجی (بخش دوم)

جلسه هجدهم_دوره آموزشی میکرو کنترلرهای STM32 _ راه اندازی سون سگمنت(بخش اول)

جلسه بیستم _ نحوه راه اندازی واحد کانتر ونحوه انجام تنظیمات در محیط STM32CubeMX(بخش اول)

جلسه بیست و یکم _ نحوه راه اندازی کانتر و برنامه آن در محیط STM32CubeIDE (بخش دوم)

جلسه بیست و دوم _ نحوه راه اندازی واحد PWM (بخش اول) 

جلسه بیست و سوم _ نحوه راه اندازی واحد PWM (بخش دوم)

جلسه بیست و چهارم _ معرفی واحد UART و سطوح منطقی ولتاژ و انواع مبدل ها(بخش اول)

جلسه بیست پنجم _ نحوه راه اندازی واحد UART ونحوه انجام تنظیمات در محیط STM32CubeMX(بخش دوم)

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

این فیلد را پر کنید
این فیلد را پر کنید
لطفاً یک نشانی ایمیل معتبر بنویسید.
برای ادامه، شما باید با قوانین موافقت کنید