تدريب : برنامج إنشاء ساعة بسيطة قابلة للإعداد (الضبط) باستخدام وحدة العرض LCD :
البرنامج :
كود:
//LCD Module Connections
//#define LCD_ENABLE_PIN PIN_D0
//#define LCD_RS_PIN PIN_D1
//#define LCD_RW_PIN PIN_D2
//#define LCD_DATA4 PIN_D4
//#define LCD_DATA5 PIN_D5
//#define LCD_DATA6 PIN_D6
//#define LCD_DATA7 PIN_D7
//End LCD Module Connections
#include <16f877a.h>
#use delay (clock = 20000000)
#include <lcd.c>
void main () // main function
{
int HOUR=0, MINUTE = 0, SECOND = 0;
lcd_init();
while (TRUE) // to repeat block. Infinite loop.
{
SECOND ++;
if (SECOND> 59 || input (PIN_B0))
{
SECOND = 0;
MINUTE ++;
}
if (MINUTE> 59 || input (PIN_B1))
{
MINUTE = 0;
HOUR ++;
}
if (HOUR> 23) HOUR = 0;
printf (lcd_putc, "\f%02u:%02u:%02u", HOUR, MINUTE, SECOND);
delay_ms (1000);
}
}
النتيجة :

|
تحية من كل القلب للأستاذ فتح الله عبد العزيز
حقا دروس رائعة ومفهومة وواضحة جدا
اعمل على تطبيق وفهم كل مثال قبل الانتقال للتالي
ومن خلال التطبيق تظهر لدي بعض الملاحظات اشاركها مع حضرتك
في برنامج تدريب الساعة وجدت ان اضيف في بداية البرنامج وقبل حلقة while
تأخير زمني delay_ms(1000);
السبب ليحسب زمن ثانية قبل ان تعرضها الشاشة لأول مرة
void main()
{
int hour=0, minute=0, second=0;
lcd_init();
delay_ms(1000);
while(true)
{
second++;
if(second>59 || input(pin_b0))
|
فهل ما قمت به من تعديل صحيح او لا ؟
ثانيا ما هي دقة هذه الساعة لقد تم وضع تأخير زمني قدره ثانية في أخر البرنامج ولكن اعتقد ان التعليمات السابقة ستأخذ وقتا لتنفيذها فيصبح لدي زمن اكبر قليلا من الثانية.
ارجو التوضيح مع الشكر سلفا