منتديات الهندسة الكهربية والإلكترونية والميكاترونكس والكومبيوتر
هل تريد التفاعل مع هذه المساهمة؟ كل ما عليك هو إنشاء حساب جديد ببضع خطوات أو تسجيل الدخول للمتابعة.

دليل ربط شاشة LCD نوع 2X16 بالميكروكونترولر PIC16F877A مع استخدام المترجم CCS C :

اذهب الى الأسفل

دليل ربط شاشة LCD نوع 2X16 بالميكروكونترولر PIC16F877A مع استخدام المترجم CCS C : Empty دليل ربط شاشة LCD نوع 2X16 بالميكروكونترولر PIC16F877A مع استخدام المترجم CCS C :

مُساهمة من طرف Admin الجمعة أبريل 24, 2015 9:42 am




دليل ربط شاشة LCD نوع 2X16 بالميكروكونترولر PIC16F877A مع استخدام المترجم CCS C :

دليل ربط شاشة LCD نوع 2X16 بالميكروكونترولر PIC16F877A مع استخدام المترجم CCS C : 115

المحتويات :
• توصيل الهاردوير .
• الملف LCD.C .
• أمثلة .
أولا : توصيل الهارد وير :
1- الملف LCD.C قائم على توصيل شاشة LCD فى وضع 4-bit ، والذى يستخدم فقط الأربعة أطراف العليا لبيانات وحدة شاشة LCD ( الأطراف DB4,DB5,DB6,DB7) .
2- الملف LCD.C يجعل الوضع الافتراضى لجميع التوصيلات إلى المنفذ Port D . إذا رغبت فى استخدام المنفذ Port B ، عندئذ فإن السطر التالى :
#define use_portb_lcd TRUE
ينبغى أن يكون فى برنامجك قبل أن يتم ضم الملف LCD.C .
3- المخطط التالى يبين كيفية التوصيل :

دليل ربط شاشة LCD نوع 2X16 بالميكروكونترولر PIC16F877A مع استخدام المترجم CCS C : 213

ثانيا : الملف LCD.C :
• الملف LCD.C يأتى ضمن برمجيات المترجم CCS C  فى المسار Program Files/PICC/Drivers .
• بضم هذا الملف فى مقدمة برنامجك يمكنك استخدام الدوال التالية :
1- الدالة lcd_init() . وينبغى أن تكون فى الدالة الرئيسية main() تلى أى إعلانات لمتغيرات . هذه الدالة تقوم بتهيئة وحدة شاشة LCD وبالتالى يجب تشغيلها قبل تشغيل أى دالة أخرى لها علاقة بعمل وحدة LCD .
2- الدالة lcd_putc(c) . والتى تقوم بعرض الحرف ‘c’ فى الموضع التالى بوحدة LCD ، على سبيل المثال lcd_putc(‘H’); تعرض الحرف H (لاحظ وجود الحرف المفرد داخل أقواس مفردة).
• إذا كان الحرف هو ‘\f’ عندئذ يتم مسح الشاشة ،
• وإذا كان الحرف  هو ‘\n’ عندئذ يتم الذهاب إلى السطر رقم “2” ،
• وإذا كان الحرف  هو ‘\b’ فإن المؤشر يتحرك للخلف لموقع واحد .
• هذه الدالة تعمل أيضا مع السلاسل النصية ، على سبيل المثال lcd_putc(“Hello world”); تطبع سلسلة الحروف Hello world (لاحظ وجود السلسلة النصية أى الحروف المتعددة داخل أقواس مزدوجة).
3- الدالة lcd_gotoxy(x,y) ، والتى تستخدم فى تحريك المؤشر الرأسى إلى أى موقع فى السطر رقم “1” (إذا كان y=1) أو فى السطر رقم “2” (إذا كان y=2) ، على سبيل المثال : lcd_gotoxy(8,2); تنقل المؤشر إلى موضع الحرف “8” بالسطر رقم “2” .
4- الدالة lcd_getc(x,y) ، والتى تعيد الحرف المعروض على السطر “y” والموقع “x” ، على سبيل المثال : digit = lcd_getc(8,2); ، تعين المتغير digit بالقيمة المعروضة على السطر “2” والموضع “8” .

ثالثا :  أمثلة :
البرنامج الأساسى :  عرض كلمات الترحيب


الكود:


#include <16f877A.h>
#use delay (clock = 20000000)
#include <lcd.c>

void main()
{
   int i=0;
  
   lcd_init();
   Delay_ms(100);
  
   while(TRUE)
   {
     lcd_putc('\f'); //Clear Display
     lcd_putc("Hello World");
     Delay_ms(2000);
     lcd_putc('\f'); //Clear Display
     lcd_putc("Welcome To");
     lcd_gotoxy(1,2);
     lcd_putc("LCD Library");
     Delay_ms(2000);
     lcd_putc('\f');
     printf(lcd_putc,"Count = %d", i);
     Delay_ms(2000);
     i++;
   }
}



النتيجة :

دليل ربط شاشة LCD نوع 2X16 بالميكروكونترولر PIC16F877A مع استخدام المترجم CCS C : 312

ملاحظة هامة :
1- لتغيير أطراف توصيل وحدة LCD بأطراف الميكروكونترولر يجب إعلان إعادة تعريف الأطراف الجديدة فى بداية البرنامج حتى قبل توجيه الضم #include<16F877A> كما يلى :


الكود:


/LCD Module Connections  
#define LCD_RS_PIN      PIN_D1                                  
#define LCD_RW_PIN      PIN_D2
#define LCD_ENABLE_PIN  PIN_D3
#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()
{
   int i=0;
  
   lcd_init();
   Delay_ms(100);
  
   while(TRUE)
   {
     lcd_putc('\f'); //Clear Display
     lcd_putc("Hello World");
     Delay_ms(2000);
     lcd_putc('\f'); //Clear Display
     lcd_putc("Welcome To");
     lcd_gotoxy(1,2);
     lcd_putc("LCD Library");
     Delay_ms(2000);
     lcd_putc('\f');
     printf(lcd_putc,"Count = %d", i);
     Delay_ms(2000);
     i++;
   }
}



2- لتغيير منفذ التوصيل ليكون المنفذ Port B ،على سبيل المثال ، نستخدم الصيغة التالية :



الكود:


/*LCD Module Connections  
#define LCD_RS_PIN      PIN_D1                                  
#define LCD_RW_PIN      PIN_D2
#define LCD_ENABLE_PIN  PIN_D3
#define LCD_DATA4       PIN_D4                                    
#define LCD_DATA5       PIN_D5                                    
#define LCD_DATA6       PIN_D6                          
#define LCD_DATA7       PIN_D7
//End LCD Module Connections*/

#define use_portb_lcd TRUE

#include <16f877a.h>
#use delay (clock = 20000000)
#include <lcd.c>
 



void main()
{
   int i=0;
  
   lcd_init();
   Delay_ms(100);
  
   while(TRUE)
   {
     lcd_putc('\f'); //Clear Display
     lcd_putc("Hello World");
     Delay_ms(2000);
     lcd_putc('\f'); //Clear Display
     lcd_putc("Welcome To");
     lcd_gotoxy(1,2);
     lcd_putc("LCD Library");
     Delay_ms(2000);
     lcd_putc('\f');
     printf(lcd_putc,"Count = %d", i);
     Delay_ms(2000);
     i++;
   }
}
 


دليل ربط شاشة LCD نوع 2X16 بالميكروكونترولر PIC16F877A مع استخدام المترجم CCS C : 412



Admin
Admin

عدد المساهمات : 1194
تاريخ التسجيل : 28/01/2014

https://fathallaabdelaziz.forumarabia.com

الرجوع الى أعلى الصفحة اذهب الى الأسفل

الرجوع الى أعلى الصفحة

- مواضيع مماثلة
» تقنيات عرض الرسائل والإعلانات على شاشات الليد ماتريكس مع المترجم CCS C والمترجم ميكروسى برو: مقدمة : مبدأ عمل شاشة العرض LED dot matrix :
» المؤقتات والمقاطعة والميكروكونترولر PIC16F877A مع المترجم CCS C :
» تدريب : استخدام المحول ADC لقياس درجة الحرارة بالحساس LM35 مع المترجم CCS C :
» مشروع متحكم فى درجة حرارة (بيان وتحكم) مع استخدام موديول ADC والحساس LM35 و LCD و RS232 مع المترجم CCS C
» التدريب الثالث : إنشاء عداد بمفتاح ضاعط أو بحساس لعد الأشياء من “0” إلى “99” باستخدم وحدتى عرض سفن سيجمنت مع استخدام ترانزستورات ومع المترجم CCS C .

 
صلاحيات هذا المنتدى:
لاتستطيع الرد على المواضيع في هذا المنتدى