مشروع التحكم في درجات الحراره

س ع ممكن مواضيع تخص شاشهlcd وsensor sd1820 والsensor ميقيس شنو المشكله تتوقعون؟

أولا لابد من الدائرة كى نحكم على الأداء
ثانيا رقم الشاشة غير مذكور
ثالثا هذا النص ينقصه ميكرو كونتروللر لأنه من يتحكم فى الحساس و يستخرج منه البيانات ثم يعرضها على الشاشة

الميكروكونترولر نوع 16f877a وطبعا هو نبرمجه حتى الشاشه تعمل بس اشلون ارفق الصوره حتى تتطلع عليهه؟

}// LCD module connections
sbit LCD_RS at RB4_bit;
sbit LCD_EN at RB5_bit;
sbit LCD_D4 at RB0_bit;
sbit LCD_D5 at RB1_bit;
sbit LCD_D6 at RB2_bit;
sbit LCD_D7 at RB3_bit;

sbit LCD_RS_Direction at TRISB4_bit;
sbit LCD_EN_Direction at TRISB5_bit;
sbit LCD_D4_Direction at TRISB0_bit;
sbit LCD_D5_Direction at TRISB1_bit;
sbit LCD_D6_Direction at TRISB2_bit;
sbit LCD_D7_Direction at TRISB3_bit;
// End LCD module connections

char txt1[] = “mikroElektronika”;
char txt2[] = “EasyPIC6”;
char txt3[] = “Lcd4bit”;
char txt4[] = “example”;

char i; // Loop variable

void Move_Delay() { // Function used for text moving
Delay_ms(500); // You can change the moving speed here
}

void main(){
ANSEL = 0; // Configure AN pins as digital I/O
ANSELH = 0;
C1ON_bit = 0; // Disable comparators
C2ON_bit = 0;

Lcd_Init(); // Initialize LCD

Lcd_Cmd(_LCD_CLEAR); // Clear display
Lcd_Cmd(_LCD_CURSOR_OFF); // Cursor off
Lcd_Out(1,6,txt3); // Write text in first row

Lcd_Out(2,6,txt4); // Write text in second row
Delay_ms(2000);
Lcd_Cmd(_LCD_CLEAR); // Clear display

Lcd_Out(1,1,txt1); // Write text in first row
Lcd_Out(2,5,txt2); // Write text in second row

Delay_ms(2000);

// Moving text
for(i=0; i<4; i++) { // Move text to the right 4 times
Lcd_Cmd(_LCD_SHIFT_RIGHT);
Move_Delay();
}

while(1) { // Endless loop
for(i=0; i<8; i++) { // Move text to the left 7 times
Lcd_Cmd(_LCD_SHIFT_LEFT);
Move_Delay();
}

for(i=0; i<8; i++) { // Move text to the right 7 times
Lcd_Cmd(_LCD_SHIFT_RIGHT);
Move_Delay();
}
}
}

}
}

هذا البرنامج الي برمجنه الميكروكونترولر

الميكروكونترولر نوع 16f877a وطبعا هو نبرمجه حتى الشاشه تعمل بس اشلون ارفق الصوره حتى تتطلع عليهه؟

المرفق الاتي يوضح ربط شاشهlcd والثاني يوضح الشاشه نفسهه الي نستخدمهه

أولا الرسم لا يطابق الدائرة فمثلا أول أمر
sbit LCD_RS at RB4_bit;
يوصف الطرف RS وهو المتحكم فى LCD-Register بأنه الطرف RB4 بينما الرسم RC0
و هكذا باقى الأطراف

ثانيا استخدام infinite loop قد لا يترك للميكرو فرصة مراعاة أى اوامر أخرى و يجب أن يخرج منها ولا سبيل أمامه إلا المقاطعة وهى غير مستخدمة

ثالثا لم يربط الميكرو بالحساس ولم يبرمج