قسم الميكروكنترولر والروبوت ودوائر الاتصال بالحاسب الالي قسم المتحكمات الـ microcontroller و المعالجات microprocessor و التحكم الرقمي بالكمبيوتر CNC والانظمة الآلية والروبوت Robots

أدوات الموضوع

الصورة الرمزية F.Abdelaziz
F.Abdelaziz
:: استاذ و مشرف قسم الالكترونيات ::
تاريخ التسجيل: May 2007
المشاركات: 6,894
نشاط [ F.Abdelaziz ]
قوة السمعة:333
قديم 25-02-2012, 06:22 PM المشاركة 1   
افتراضي مشروع مقياس درجة حرارة رقمى با ستخدام الميكروكونترولر PIC16F877و حساس درجة الحرارة LM Twitter FaceBook Google+



مشروع مقياس درجة حرارة رقمى با ستخدام الميكروكونترولر PIC16F877A حساس درجة الحرارة LM35

عرض نتائج المشروع :







مقدمة :
مقياس الحرارة الرقمي هو اختيار جيد كمشروع للدخول إلى عالم الميكروكنترولر لأنه يوفر فرصة للتعرف على استخدام أجهزة الاستشعار لقياس إشارات العالم الحقيقى التناظرية .
يعتمد هذا المشروع على الميكروكونترولر PIC16F877A وحساس درحة الحرارة من النوع LM35 . الحساس LM35 هو حساس تناظرى يقوم بتحويل درجة الحرارة المحيطة به إلى جهد تناظرى . يوصل خرج الحساس إلى أحد المداخل التناظرية للميكروكونترولر لاستخلاص قيمة معادلة لدرجة الحرارة في الشكل الرقمي . يتم عرض درجة الحرارة المحسوبة على شاشة وحدة عرض LCD من النوع 16X2 أى سطرين بكل سطر 16حرف في شكل مقياس مئوى°C.

المعلومات النظرية :

اعلانات

الصورة الرمزية F.Abdelaziz
F.Abdelaziz
:: استاذ و مشرف قسم الالكترونيات ::
تاريخ التسجيل: May 2007
المشاركات: 6,894
نشاط [ F.Abdelaziz ]
قوة السمعة:333
قديم 26-02-2012, 01:35 PM المشاركة 2   
افتراضي


البرنامج :
سوف نستخدم المترجم MikroC Pro for PIC .

















اعلانات اضافية ( قم بتسجيل الدخول لاخفائها )
  

الصورة الرمزية F.Abdelaziz
F.Abdelaziz
:: استاذ و مشرف قسم الالكترونيات ::
تاريخ التسجيل: May 2007
المشاركات: 6,894
نشاط [ F.Abdelaziz ]
قوة السمعة:333
قديم 26-02-2012, 01:41 PM المشاركة 3   
افتراضي




كود:
 
/*
Digital Thermometer using PIC16F877A and LM35
Oscillator * 4MHz, MCLR Enabled, PWRT Enabled, WDT OFF
Eng.F.Abdelaziz
http://www.eeecb.com/vb/index.php
*/
// LCD module connections
sbit LCD_RS at RD0_bit;
sbit LCD_EN at RD1_bit;
sbit LCD_D4 at RD4_bit;
sbit LCD_D5 at RD5_bit;
sbit LCD_D6 at RD6_bit;
sbit LCD_D7 at RD7_bit;
sbit LCD_RS_Direction at TRISD0_bit;
sbit LCD_EN_Direction at TRISD1_bit;
sbit LCD_D4_Direction at TRISD4_bit;
sbit LCD_D5_Direction at TRISD5_bit;
sbit LCD_D6_Direction at TRISD6_bit;
sbit LCD_D7_Direction at TRISD7_bit;
// End LCD module connections
// Define Messages
char message0[] = "LCD Initialized";
char message1[] = "Room Temperature";
// String array to store temperature value to display
char *tempC = "000.0";
// Variables to store temperature values
unsigned int tempinC;
unsigned long temp_value;
void Display_Temperature( ) {
 // convert Temp to characters
     if (tempinC/10000)
// 48 is the decimal character code value for displaying 0 on LCD
     tempC[0] = tempinC/10000  + 48;
     else tempC[0] = ' ';
     tempC[1] = (tempinC/1000)%10 + 48;        // Extract tens digit
     tempC[2] =  (tempinC/100)%10 + 48;          // Extract ones digit
// convert temp_fraction to characters
   tempC[4] =  (tempinC/10)%10 + 48;        // Extract tens digit
// print temperature on LCD
 Lcd_Out(2, 1, tempC);
 }
void main() {
ADCON1 = 0b00000001;   // Connect AN3 , select Vref=1.2V
TRISD = 0b00000000;   // PORTD All Outputs
TRISA = 0xFF;    // PORTA All Inputs
 Lcd_Init();                          // Initialize LCD
 Lcd_Cmd(_LCD_CLEAR);               // CLEAR display
Lcd_Cmd(_LCD_CURSOR_OFF);           // Cursor off
 Lcd_Out(1,1,message0);
 Delay_ms(1000);
Lcd_Out(1,1,message1);               // Write message1 in 1st row
 // Print degree character
  Lcd_Chr(2,6,223);
  // Different LCD displays have different char code for degree symbol
 // if you see greek alpha letter try typing 178 instead of 223
   Lcd_Chr(2,7,'C');
 
while(1) {
  temp_value = ADC_Read(0);
  temp_value = temp_value*1168;
  tempinC = temp_value/100;
  Display_Temperature();
  Delay_ms(1000);    // Temperature sampling at 1 sec interval
               } 
}



الصورة الرمزية Abdw9
Abdw9
:: عضو فضي ::
تاريخ التسجيل: Nov 2011
الدولة: السودان
المشاركات: 557
نشاط [ Abdw9 ]
قوة السمعة:78
قديم 25-04-2012, 08:00 AM المشاركة 4   
not funny مهمه للغاية حساس lm35



كود:
 
/*
Digital Thermometer using PIC16F877A and LM35
Oscillator * 4MHz, MCLR Enabled, PWRT Enabled, WDT OFF
Eng.F.Abdelaziz
http://www.eeecb.com/vb/index.php
*/
// LCD module connections
sbit LCD_RS at RD0_bit;
sbit LCD_EN at RD1_bit;
sbit LCD_D4 at RD4_bit;
sbit LCD_D5 at RD5_bit;
sbit LCD_D6 at RD6_bit;
sbit LCD_D7 at RD7_bit;
sbit LCD_RS_Direction at TRISD0_bit;
sbit LCD_EN_Direction at TRISD1_bit;
sbit LCD_D4_Direction at TRISD4_bit;
sbit LCD_D5_Direction at TRISD5_bit;
sbit LCD_D6_Direction at TRISD6_bit;
sbit LCD_D7_Direction at TRISD7_bit;
// End LCD module connections
// Define Messages
char message0[] = "LCD Initialized";
char message1[] = "Room Temperature";
// String array to store temperature value to display
char *tempC = "000.0";
// Variables to store temperature values
unsigned int tempinC;
unsigned long temp_value;
void Display_Temperature( ) {
 // convert Temp to characters
     if (tempinC/10000)
// 48 is the decimal character code value for displaying 0 on LCD
     tempC[0] = tempinC/10000  + 48;
     else tempC[0] = ' ';
     tempC[1] = (tempinC/1000)%10 + 48;        // Extract tens digit
     tempC[2] =  (tempinC/100)%10 + 48;          // Extract ones digit
// convert temp_fraction to characters
   tempC[4] =  (tempinC/10)%10 + 48;        // Extract tens digit
// print temperature on LCD
 Lcd_Out(2, 1, tempC);
 }
void main() {
ADCON1 = 0b00000001;   // Connect AN3 , select Vref=1.2V
TRISD = 0b00000000;   // PORTD All Outputs
TRISA = 0xFF;    // PORTA All Inputs
 Lcd_Init();                          // Initialize LCD
 Lcd_Cmd(_LCD_CLEAR);               // CLEAR display
Lcd_Cmd(_LCD_CURSOR_OFF);           // Cursor off
 Lcd_Out(1,1,message0);
 Delay_ms(1000);
Lcd_Out(1,1,message1);               // Write message1 in 1st row
 // Print degree character
  Lcd_Chr(2,6,223);
  // Different LCD displays have different char code for degree symbol
 // if you see greek alpha letter try typing 178 instead of 223
   Lcd_Chr(2,7,'C');
 
while(1) {
  temp_value = ADC_Read(0);
  temp_value = temp_value*1168;
  tempinC = temp_value/100;
  Display_Temperature();
  Delay_ms(1000);    // Temperature sampling at 1 sec interval
               } 
}


أخي العزيز ف عبدالعزيز جزاك الله الف خير وبركة وأنعم عليك الله بمحض كرمه وجزيل فضله وجودة مبذول بالجد رائع جدا قمة في الروعوة والإبداع , نفعنا الله بعلومكم اجمعين مشكورين .
وبعد :
انا والحمدلله قمت بتصميم هذا المشروع ونفذ معاي ويرجع هذا الفضل من بعد الله لك أخي الكريم ,,,, ولكن ...:
ولأهمية الموضوع انا عايز منك مساعة بسيطة او اي حد بيقدر يساعدني في هذا المشروع ,,,,,
عايز أصمم وبالفعل مشروع طبقا لهذا المشروع ولكن توجب علي بتغير بعض الأشياء مثل الـ . pic16f877 بـ.ATMEGA16 وقمة حقيقة بتعديل بعض التعليمات لتتوافق مع الـ. ATMEGA16 ...
ولكن المشكلة التي ظهرة لي بعد التعديل :
وجود رسالة خطأ فقط في الموضع التالي :
>>>
ADCON1 = 0b00000001;
والذي علمته ان هذا التعليمة خاصة بالبن الخاص بجهد المرجع الموجب AN3 في الـ. Pic16f877 وهذا البن أو الرجل غير متوفر في الـ. ATMEGA16 هل يرجع تلك المشكلة لهذا السبب ؟ ام ماذا ؟ .... ام ما هو الحلل ؟
افيدوني أعانكم الله وبارك الله فيكم أجمعين


mohmady
:: مهندس ::
تاريخ التسجيل: Jun 2012
المشاركات: 15
نشاط [ mohmady ]
قوة السمعة:0
قديم 29-06-2012, 02:24 PM المشاركة 5   
افتراضي


يا اخي انا عامل نفس الموضوع بس في اختلاف انا استخدمت كرستال 4mhz و الكود مختلف هايفرق في النتيجه بس انا بستقابل علي السيريال بورت


الصورة الرمزية kaoutar11
kaoutar11
:: مهندس متواجد ::
تاريخ التسجيل: Feb 2012
الدولة: Algeria
المشاركات: 145
نشاط [ kaoutar11 ]
قوة السمعة:0
قديم 23-07-2012, 11:48 PM المشاركة 6   
ha شاشة LCD


السلام عليكم و رحمة الله و بركاته:
أخواني اريد مساعدة حول ربط شاشة السيدي lcd بالميكروكنترلور و كيفية عمل لغة البرمجة بالميكروسي عند ربط الشاشة بالبك(أي ماهي الأوامر للتعرف على اlcd) أرجوا شرح الأوامر خطوة خطوة


عبدالله نعمان
:: مهندس متواجد ::
تاريخ التسجيل: May 2006
المشاركات: 176
نشاط [ عبدالله نعمان ]
قوة السمعة:0
قديم 17-03-2016, 10:59 AM المشاركة 7   
افتراضي


موضوع ممتاز....

إضافة رد

العلامات المرجعية

«     الموضوع السابق       الموضوع التالي    »
أدوات الموضوع

الانتقال السريع إلى


الساعة معتمدة بتوقيت جرينتش +3 الساعة الآن: 09:29 PM
موقع القرية الالكترونية غير مسؤول عن أي اتفاق تجاري أو تعاوني بين الأعضاء
فعلى كل شخص تحمل مسئولية نفسه إتجاه مايقوم به من بيع وشراء وإتفاق وأعطاء معلومات موقعه
التعليقات المنشورة لا تعبر عن رأي موقع القرية الالكترونية ولايتحمل الموقع أي مسؤولية قانونية حيال ذلك (ويتحمل كاتبها مسؤولية النشر)

Powered by vBulletin® Version 3.8.6, Copyright ©2000 - 2025