سون سگمنت
پروژه: کنترل نمایش عدد و روشن کردن LED با دو سون سگمنت و ATmega32
در این پروژه، با استفاده از میکروکنترلر ATmega32، دو سون سگمنت و یک LED را کنترل خواهیم کرد. هدف این است که با هر بار افزایش عدد، وضعیت نمایش عدد در سون سگمنتها تغییر کند و هنگامی که عدد به 27 برسد، LED روشن شود و نمایش عدد در سون سگمنتها متوقف گردد.
موارد مورد نیاز:
– میکروکنترلر ATmega32
– 2 سون سگمنت
– 1 LED
– مقاومت (برای محدود کردن جریان LED)
– برد بورد و سیمهای اتصال
در این پروژه، عدد به طور پیوسته بر روی دو سون سگمنت نمایش داده میشود. هر بار که عدد به 27 رسید، LED روشن میشود و نمایش در سون سگمنتها متوقف میگردد. این پروژه به شما کمک میکند تا با نحوه کار با سون سگمنتها، ورودیها و خروجیها در میکروکنترلر ATmega32 آشنا شوید و نحوه کنترل چندین نمایشگر و LED را در یک پروژه دیجیتال یاد بگیرید.
#include
#include
int seg[10] = {0x3F,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
int i , j ;
void main(void)
{
DDRA.0 = 1;
DDRC = 0XFF;
DDRD = 0XFF;
while (1)
{
for (j = 9 ; j >= 0 ; j = j - 1 ){
PORTD = seg[j];
for (i= 9 ; i >= 0 ; i = i - 1 ){
PORTC = seg[i];
delay_ms(30);
if(i == 7 && j == 2){PORTA.0 = 1;while(1){}}
}
}
}
}
این کد برای نمایش اعداد از 99 تا 0 به صورت نزولی بر روی دو سون سگمنت و روشن کردن LED در هنگام رسیدن به عدد 27 طراحی شده است. آرایه `seg` حاوی مقادیر باینری برای اعداد 0 تا 9 است که برای نمایش روی سون سگمنتها استفاده میشود. در حلقه اصلی، ابتدا شمارش نزولی از 99 تا 0 انجام میشود، به این صورت که دو سون سگمنت به ترتیب از پورتهای D و C به اعداد 9 تا 0 متصل هستند. برای هر ترکیب عددی از 99 تا 0، مقدار مربوطه به سون سگمنتها ارسال میشود و پس از هر تغییر، تاخیر 30 میلیثانیه اعمال میشود. وقتی عدد 27 نمایش داده میشود (عدد 2 روی سون سگمنت اول و 7 روی سون سگمنت دوم)، LED متصل به پورت A روشن میشود و سپس حلقه به طور کامل متوقف میشود. این کد به شما امکان میدهد تا از سون سگمنتها برای نمایش اعداد دو رقمی استفاده کرده و در صورت رسیدن به عدد خاص، یک عملیات مانند روشن کردن LED را انجام دهید.