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

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

الصورة الرمزية F.Abdelaziz
F.Abdelaziz
:: استاذ و مشرف قسم الالكترونيات ::
تاريخ التسجيل: May 2007
المشاركات: 6,894
نشاط [ F.Abdelaziz ]
قوة السمعة:328
قديم 25-02-2012, 11:20 AM المشاركة 57   
افتراضي



البرنامج :







كود:
/* Project: Digital Voltmeter based on PIC16F877
   Oscillator * 4MHz, MCLR Enabled, PWRT Enabled, WDT OFF
*/ 
// 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
char Message1[] = "DVM Project";
char *volt = "00.0 V";
unsigned int ADC_Value, DisplayVolt;
void main() {
   
  TRISD = 0b00000000;   // PORTD All Outputs
  
 Lcd_Init();           // Initialize LCD
 Lcd_Cmd(_LCD_CLEAR);        // CLEAR display
 Lcd_Cmd(_LCD_CURSOR_OFF);  // Cursor off
 Lcd_Out(1,1,Message1);
 
while(1) {
  ADC_Value = ADC_Read(0);
  DisplayVolt = ADC_Value * 2;
  volt[0] = DisplayVolt/1000 + 48;
  volt[1] = (DisplayVolt/100)%10 + 48;
  volt[3] = (DisplayVolt/10)%10 + 48;
  Lcd_Out(2,5,volt);
delay_ms(500);      // Hold for 500 ms
 }  
}     // End main()

اعلانات

الصورة الرمزية F.Abdelaziz
F.Abdelaziz
:: استاذ و مشرف قسم الالكترونيات ::
تاريخ التسجيل: May 2007
المشاركات: 6,894
نشاط [ F.Abdelaziz ]
قوة السمعة:328
قديم 25-02-2012, 11:25 AM المشاركة 58   
افتراضي


النتائج :








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

الصورة الرمزية F.Abdelaziz
F.Abdelaziz
:: استاذ و مشرف قسم الالكترونيات ::
تاريخ التسجيل: May 2007
المشاركات: 6,894
نشاط [ F.Abdelaziz ]
قوة السمعة:328
قديم 25-02-2012, 06:23 PM المشاركة 59   
افتراضي


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

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







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

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


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


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


















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




كود:
 
/*
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
               } 
}



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


نفس البرنامج مع تعديل قيمة جهد المرجع (الإسناد) ليكون 2.5V لأن شركة ميكروشيب ذكرت فى الداتا شيت بأنه ينصح أن يكون الحد الأدنى لجهد المرجع هو 2V .



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


كود:
/* Digital Thermometer using PIC16F877A and LM35 sensor at AN0 Vref+=2.5V at AN3 , Vref-=Vss 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 message1[] = "Temperature:-"; // String array to store temperature value to display char *tempC = "000.0"; // Variables to store temperature values unsigned int tempinF, tempinC; unsigned long temp_value; void Display_Temperature() { // convert Temp to characters if (tempinC/10000) 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,message1); // Write message1 in 1st row // Print degree character Lcd_Chr(2,6,223); //Lcd_Chr(2,15,223); // different LCD displays have different char code for degree // 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*244; tempinC = temp_value/10;
Display_Temperature(); Delay_ms(1000); } }


الصورة الرمزية F.Abdelaziz
F.Abdelaziz
:: استاذ و مشرف قسم الالكترونيات ::
تاريخ التسجيل: May 2007
المشاركات: 6,894
نشاط [ F.Abdelaziz ]
قوة السمعة:328
قديم 27-02-2012, 10:08 PM المشاركة 64   
افتراضي


مشروع مقياس و متحكم فى درجة الحرارة بمدخلين تناظريين وثلاثة مخارج رقمية ووحدة عرض LCD
البرنامج :
1- التعليقات :


2- تعريف المترجم بأطراف توصيل وحدة العرض LCD


إضافة رد

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

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

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


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

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