مقالات آموزشی

آموزش راه اندازی نمایشگر سون سگمنت توسط AVR

راه اندازی سون سگمنت توسط AVR با اتمل استادیو

آموزش راه اندازی نمایشگر سون سگمنت (هفت بخشی) توسط میکروکنترلر AVR با کامپایلر اتمل استودیو:

در این مقاله، نحوه راه اندازی نمایشگر سون سگمنت (Seven Segments) یا نمایشگر هفت بخشی توسط میکروکنترلر AVR را آموزش می دهیم.

آموزش راه اندازی نمایشگر سون سگمنت توسط AVR

در شکل فوق یک نمایشگر سون سگمنت دارای 4 رقم (ِِDigit دیجیت) را مشاهده می کنید. هر رقم از این نمایشگر، شامل 8 عدد دیود نورانی (LED) می باشد که هر کدام یک بخش از عدد را تشکیل می دهد.

با اعمال ولتاژ مناسب به هر کدام از این LED ها آن بخش نورانی می شود.

نمایشگر سون سگمنت به طور کلی دارای دو مدل کاتد مشترک و یا آند مشترک می باشد. در سون سگمنت های کاتد مشترک ، کاتد تمام ال ای دی ها به یکدیگر متصل می باشد. به این پایه در سون سگمنت پایه مشترک یا Common اطلاق می شود. در سون سگمنت های آند مشترک ، آند تمام ال ای دی ها به یکدیگر متصل می باشد.

نحوه راه اندازی نمایشگر سون سگمنت:

برای روشن نمودن یک رقم در سون سگمنت های کاتد مشترک، ابتدا باید به پایه مشترک آن زمین یا صفر منطقی اعمال کنیم. سپس برای روشن نمودن هر کدام از بخش های سون سگمن باید به آن پین ولتاژ مثبت میکروکنترلر را اعمال کنیم. برای محدود کردن جریان هر کدام از ال ای دی های سون سگمنت باید با آن یک مقاومت 330 اهم سری کنیم.

برای روشن نمودن یک رقم در سون سگمنت های آند مشترک، ابتدا باید به پایه مشترک آن 5 ولت یا یک منطقی اعمال کنیم. سپس برای روشن نمودن هر کدام از بخش های سون سگمن باید به آن پین زمین یا صفر منطقی میکروکنترلر را اعمال کنیم. برای محدود کردن جریان هر کدام از ال ای دی های سون سگمنت باید با آن یک مقاومت 330 اهم سری کنیم.

شکل زیر شماتیک یک سون سگمنت سه رقمی و شکل قرار گرفتن ال ای دی های آن را نشان می دهد. همچنین ابعاد و اندازه و سایز یک سون سگمنت سه رقمی نشان داده شده است.

نمایشگر های سون سگمنت، انواع مختلفی دارند. مدل های یک رقمی تا 8 رقمی در بازار و در شکل های مختلف موجود می باشد. همچنین این نوع نمایشگر ها در انواع رنگ قرمز، سبز، زرد و آبی وجود دارند.

آموزش راه اندازی نمایشگر سون سگمنت توسط AVR

 

پین های یک نمایشگر سون سگمنت:

شکل زیر پین های یک نمایشگر سون سگمنت 4 رقمی نمایش می دهد.

نمایش پین های سون سگمنت 4 رقمی

 

در این آموزش نحوه استفاده از کتابخانه سون سگمنت 4 رقمی با کامپایلر اتمل استودیو را، توضیح خواهیم داد.

در شکل زیر شماتیک یا فایل شبیه سازی راه اندازی نمایشگر سون سگمنت (7 Segments) با میکروکنترلر Atmega16 را مشاهده می کنید. نمایشگر سون سگمنت در عمل دارای 4 پین کنترلی به نام Enable1  تا Enable4 می باشد.

برای اینکه بتوانیم روی هر رقم (دیجیت) از این نمایشگر 4 بخشی یک عدد نمایش دهیم، باید ابتدا پین فعال سازی آن رقم را فعال کنیم. و پین وضعیت مابقی رقم ها را غیر فعال کنیم. پین های فعال سازی (Enable) برای این امر در نمایشگر قرار داده شده است. در عمل برای کنترل پین Enable از یک ترانزیستور استفاده می کنیم.

راه اندازی سون سگمنت توسط AVR با اتمل استادیو راه اندازی سون سگمنت توسط AVR با اتمل استادیو

شماتیک مدار راه اندازی نمایشگر سون سگمنت:

در شکل زیر، شماتیک عملی استفاده از یک نمایشگر توسط میکروکنترلر را مشاهده می کنید. در نقشه شماتیک زیر برای اینکه LED مربوط به یک بخش از یک رقم را بخواهیم فعال کنیم باید به پین متناظر آن، یک منطقی و یا ولتاژ 5 ولت اعمال کنیم. همچنین برای انتخاب رقم مورد نظر باید به پین Enable متناظر با آن رقم یک منطقی و با ولتاژ 5 ولت اعمال کنیم.

راه اندازی سون سگمنت توسط AVR با اتمل استادیو

 

درایور نوشته شده برای راه اندازی نمایشگر سون سگمنت، در کامپایلر اتمل استودیو هر دو نوع سون سگمنت کاتد مشترک و یا آند مشترک را شامل می شود. برای تنظیم نمودن اینکه از کدام مدل نمایشگر سون سگمنت می خواهیم استفاده کنیم (کاتد مشترک یا آند مشترک)، در کتابخانه ssegments.h و در قسمت زیر می توان براحتی این تنظیم را انجام داد.

//#define COMMON_ANODE_SS

 #define COMMON_CATHODE_SS

در این برنامه مدل نمایشگر کاتد مشترک فعال (COMMON_CATHODE_SS) و نمایشگر آند مشترک غیر فعال (COMMON_ANODE_SS) یا کامنت (Comment) شده است. این بدلیل استفاده از نمایشگر سون سگمنت کاتد مشترک می باشد. در صورت استفاده از نمایشگر سون سگمنت آند مشترک برنامه را به صورت زیر اصلاح می کنیم.

#define COMMON_ANODE_SS

 //#define COMMON_CATHODE_SS

 

در صورت استفاده از سون سگمنت آند مشترک باید سخت افزار مورد نیاز آن را نیز، تغئیر دهیم. بر فرض مثال بجای استفاده از ترانزیستور NPN باید از ترانزیستور PNP به عنوان کنترل پین های Enable استفاده شود.

 

برای یادگیری ساخت منابع تغذیه بدون ترانس این مقاله را مطالعه کنید.

 

در این برنامه روتین در حلقه اصلی برنامه (main.c) راه اندازی نمایشگر سون سگمنت توضیح می دهیم.

//----------------------------------------

// Main Initialization

//----------------------------------------

// Initialize Hardwares

hardwares_Init();                     //در این قسمت سخت افزار های داخلی میکروکنترلر تماما غیر فعال می گردند.

// Initialize IO

io_Init();                       //در این قسمت ورودی-خروجی های میکروکنترلر تنظیم اولیه می شوند.

// Initialize seven segments

ssegments_Init();               // در این قسمت ورودی-خروجی های میکروکنترلر برای راه اندازی سون سگمنت تنظیم اولیه می شوند.

// Blink heart beat to indicate alive

HB_LED_On();                          //در این قسمت دیود نورانی متصل شده به میکروکنترلر یک چشمک یا بلینک می کند

_delay_ms(50);

HB_LED_Off();

_delay_ms(50);

//----------------------------------------

 

در زیر برنامه نوشته شده در حلقه بی نهایت (Loop اصلی) برنامه راه اندازی نمایشگر 7 Segments توضیح داده شده است.

 

//------------------------------------------

// Show loop counter in seven segments

itoa(loopCntr , tempStr , 10);   //در این قسمت متغیر شمارنده حلقه اصلی تبدیل به یک رشته کارکتری می شود.

//ssegments_PutC('a',0);         //در این قسمت کارکتر روی نمایشگر نشان داده می شود.

ssegments_PutS(tempStr,10);      //در این قسمت رشته کارکتری معادل شمارنده حلقه برای نمایش روی سون سگمنت 4 رقمی نمایش داده می شود.

//------------------------------------------

if (loopCntr > 9999)             //شمارنده شروع به افزایش می کند و در صورت بزگتر شدن از عدد 9999 برابر 0 می شود.

{

loopCntr = 0;

}

else

{

loopCntr++;

}

//------------------------------------------




//------------------------------------------

// Blink heart beat to indicate alive

HB_LED_Tgl();

_delay_ms(20);

//------------------------------------------

 

برای استفاده از کتابخانه ssegments.h اتمل استودیو در پروژه خود ابتدا آن را باز کنید و تنظیمات ورودی-خروجی های مورد نیاز را طبق پروژه خود تنظیم کنید.

//-------------------------------------------------------------------------------------

// 7segments Enable 1 definition

#define EN1_DDR       DDRC       // تنظیم جهت (دایرکشن) ورودی-خروجی فعال سازی رقم 1 سون سگمنت

#define EN1_PORT      PORTC      // تنظیم پورت فعال سازی رقم 1 سون سگمنت

#define EN1_BIT       PC1        // تنظیم پین فعال سازی رقم 1 سون سگمنت




#define EN1_INIT()         sbi(EN1_DDR , EN1_BIT)

#ifdef     COMMON_CATHODE_SS

     #define EN1_HIGH()    sbi(EN1_PORT , EN1_BIT)

     #define EN1_LOW()     cbi(EN1_PORT , EN1_BIT)

#else

     #define EN1_HIGH()    cbi(EN1_PORT , EN1_BIT)

     #define EN1_LOW()     sbi(EN1_PORT , EN1_BIT)

#endif

//-------------------------------------------------------------------------------------

// 7segments Enable 2 definition

#define EN1_DDR       DDRC       // تنظیم جهت (دایرکشن) ورودی-خروجی فعال سازی رقم 2 سون سگمنت

#define EN1_PORT      PORTC      // تنظیم پورت فعال سازی رقم 2 سون سگمنت

#define EN1_BIT       PC0        // تنظیم پین فعال سازی رقم 2 سون سگمنت




#define EN2_INIT()         sbi(EN2_DDR , EN2_BIT)

#ifdef     COMMON_CATHODE_SS

     #define EN2_HIGH()    sbi(EN2_PORT , EN2_BIT)

     #define EN2_LOW()     cbi(EN2_PORT , EN2_BIT)

#else

     #define EN2_HIGH()    cbi(EN2_PORT , EN2_BIT)

     #define EN2_LOW()     sbi(EN2_PORT , EN2_BIT)

#endif

//-------------------------------------------------------------------------------------

 

به همین ترتیب برای تمامی ورودی-خروجی ها تنظیمات مربوطه را انجام دهید.  

 

نکته بسیار مهم:

همانطور که می دانید سرعت شبیه سازی یک مدار در نرم افزار شبیه سازی Proteus با سرعت انجام آن در عمل بسیار متفاوت می باشد. به همین دلیل در کتابخانه ssegments.c یک خط تعریف (define) استفاده شده تا در صورت نیاز بتوان عملکرد مدار و سورس کد را در شبیه سازی نرم افزار Proteus مشاهده نمود. برای استفاده عملی از این کد حتما باید این خط از برنامه Comment شود.

#define SIMULATION_MODE

 

برای دانلود فایل سورس کد راه اندازی نمایشگر سون سگمنت چهار رقمی توسط میکروکنترلر AVR و کامپایلر اتمل استودیو روی باکس زیر کلیک کنید.

دانلود فایل سورس کد و فایل شبیه سازی

محمود باقریان

درباره محمود باقریان

مهراد کیت با ۱۵ سال سابقه در زمینه طراحی سیستم های کنترل از راه دور و تولید تجهیزات خانه هوشمند و هر گونه هوشمند سازی توسط مهندسین داخلی آماده ارائه محصولات و خدمات می باشد.

2 دیدگاه در “آموزش راه اندازی نمایشگر سون سگمنت توسط AVR

  1. jamal music گفت:

    ممنون و تشکر و قدردانی از زحمت شما

    1. ممنون از انرژی مثبت شما دوست عزیز

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

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

Time limit is exhausted. Please reload the CAPTCHA.