ساعت ورژن2
پروژه: افزایش ساعت دیجیتال با استفاده از LCD و کلید فشار
در این پروژه، با استفاده از میکروکنترلر ATmega32، یک LCD کاراکتری و یک کلید فشار، ساعتی دیجیتال پیادهسازی خواهیم کرد که هر بار با فشار دادن کلید، مقدار ساعت (H) یک واحد افزایش مییابد. این پروژه از یک مقاومت 10 کیلو اهم برای محدود کردن جریان کلید استفاده میکند و زمان به صورت HH:MM:SS بر روی LCD نمایش داده میشود.
هدف این پروژه نمایش زمان دیجیتال و امکان افزایش ساعت از طریق فشردن کلید است. با هر بار فشردن کلید، مقدار ساعت به صورت خودکار افزایش مییابد و در LCD نمایش داده میشود.
موارد مورد نیاز:
– میکروکنترلر ATmega32
– LCD کاراکتری
– کلید فشار (با مقاومت 10 کیلو اهم)
– مقاومتها (برای محدود کردن جریان)
– برد بورد و سیمهای اتصال
این پروژه به شما کمک میکند تا با نحوه استفاده از کلیدها، نمایش زمان و تعامل با ورودیهای دیجیتال در ATmega32 آشنا شوید.
#include
#include
#include
#include
int shahin = 0;
int h,m,s;
char c[16];
void main(void)
{
lcd_init(16);
lcd_putsf("time:");
DDRA.0=0;
while (1)
{
sprintf(c,"%02d:%02d:%02d",h,m,s);
lcd_gotoxy(0,1);
lcd_puts(c);
s=s+1;
if (s == 60){m = m+1; s=0;}
if (m == 60){h = m+1; m=0;}
if (h == 24){h=0;}
if (PINA.0==1&&shahin==0){h = h+1;shahin = 1;}
if (PINA.0==0&&shahin==1){shahin = 0;}
delay_ms(50);
}
}
این کد یک ساعت دیجیتال ساده را با استفاده از میکروکنترلر ATmega32 و LCD کاراکتری پیادهسازی میکند. ساعت در قالب HH:MM:SS روی LCD نمایش داده میشود. در ابتدا متغیرهای ساعت (h)، دقیقه (m) و ثانیه (s) به صفر مقداردهی میشوند. سپس ساعت هر ثانیه یک واحد افزایش مییابد و در صورت رسیدن ثانیه به 60، دقیقه یک واحد افزایش مییابد. همچنین در صورت رسیدن دقیقه به 60، ساعت یک واحد افزایش مییابد.
در این کد، یک کلید به پین A0 متصل است که با فشار دادن آن، مقدار ساعت یک واحد افزایش مییابد. متغیر `shahin` برای جلوگیری از تغییرات مکرر ساعت هنگام نگه داشتن کلید، استفاده میشود. اگر کلید فشار داده شود (`PINA.0 == 1`)، ساعت یک واحد افزایش مییابد و پس از رها کردن کلید (`PINA.0 == 0`)، این تغییر متوقف میشود.
کد از تاخیر 50 میلیثانیه برای بروز رسانی وضعیتها و جلوگیری از تغییرات ناخواسته استفاده میکند.