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

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

Yassine AgH
:: مهندس ::
تاريخ التسجيل: Feb 2014
المشاركات: 2
نشاط [ Yassine AgH ]
قوة السمعة:0
قديم 26-03-2014, 12:23 PM المشاركة 1   
ha طلب شرح بخصوص مقياس حرارة + الدارة مبرمجة ب mikroc في الداخل Twitter FaceBook Google+



[CENTER]السلام عليكم
طلب مني انجاز مقياس حرارة بتوظيف المكركنترولر
فوجدت في احدى المواقع الاجنبية نمودج




والكود













// modules LCD connections
sbit LCD_RS at RB2_bit;
sbit LCD_EN at RB3_bit;
sbit LCD_D4 at RB4_bit;
sbit LCD_D5 at RB5_bit;
sbit LCD_D6 at RB6_bit;
sbit LCD_D7 at RB7_bit;

sbit LCD_RS_Direction at TRISB2_bit;
sbit LCD_EN_Direction at TRISB3_bit;
sbit LCD_D4_Direction at TRISB4_bit;
sbit LCD_D5_Direction at TRISB5_bit;
sbit LCD_D6_Direction at TRISB6_bit;
sbit LCD_D7_Direction at TRISB7_bit;
// Fin modules LCD connections

int t;
char a;
char lcd[] = "000 Degree";

void main()
{
ADCON1 = 0x04;
Lcd_Init();
Lcd_Cmd(_LCD_CURSOR_OFF);

do
{
Lcd_Cmd(_LCD_CLEAR);
Lcd_out(1,1, "Temperature:");
t = ADC_Read(0);

t = t * 0.4887; // 4.887 est la resolution du convertisseur ADC
a = t%10;
lcd[2] = a + '0';

t = t/10;
a = t%10;
lcd[1] = a + '0';

t = t/10;
a = t%10;
lcd[0] = a + '0';

Lcd_out(2,1,lcd);
Delay_ms(100);
}while(1);
}

والمطلوب هو شرح الية عمل المقياس + وشرح مفصل لاسطر الكود
وشكرا مسبقا











اعلانات

الصورة الرمزية Sallam
Sallam
:: مهندس متميز ::
تاريخ التسجيل: Mar 2006
الدولة: Syria
المشاركات: 518
نشاط [ Sallam ]
قوة السمعة:0
قديم 27-03-2014, 01:58 AM المشاركة 2   
افتراضي


[CENTER]السلام عليكم
طلب مني انجاز مقياس حرارة بتوظيف المكركنترولر
فوجدت في احدى المواقع الاجنبية نمودج




والكود


// modules LCD connections
sbit LCD_RS at RB2_bit;
sbit LCD_EN at RB3_bit;
sbit LCD_D4 at RB4_bit;
sbit LCD_D5 at RB5_bit;
sbit LCD_D6 at RB6_bit;
sbit LCD_D7 at RB7_bit;

sbit LCD_RS_Direction at TRISB2_bit;
sbit LCD_EN_Direction at TRISB3_bit;
sbit LCD_D4_Direction at TRISB4_bit;
sbit LCD_D5_Direction at TRISB5_bit;
sbit LCD_D6_Direction at TRISB6_bit;
sbit LCD_D7_Direction at TRISB7_bit;
// Fin modules LCD connections

int t;
char a;
char lcd[] = "000 Degree";

void main()
{
ADCON1 = 0x04;
Lcd_Init();
Lcd_Cmd(_LCD_CURSOR_OFF);

do
{
Lcd_Cmd(_LCD_CLEAR);
Lcd_out(1,1, "Temperature:");
t = ADC_Read(0);

t = t * 0.4887; // 4.887 est la resolution du convertisseur ADC
a = t%10;
lcd[2] = a + '0';

t = t/10;
a = t%10;
lcd[1] = a + '0';

t = t/10;
a = t%10;
lcd[0] = a + '0';

Lcd_out(2,1,lcd);
Delay_ms(100);
}while(1);
}

والمطلوب هو شرح الية عمل المقياس + وشرح مفصل لاسطر الكود
وشكرا مسبقا









أخي Yassine AgH
أهلا بك في القرية

بالنسبة للبك المستخدم هو 16F877A يحتوي على موديول ADC تحويل من أنالوج الى ديجيتال أي يستطيع استقبال الإشارة الواردة من حساس الحرارة LM35 وتحويلها الى قيمة رقمية تظهر على الشاشة

// modules LCD connections
sbit LCD_RS at RB2_bit;
sbit LCD_EN at RB3_bit;
sbit LCD_D4 at RB4_bit;
sbit LCD_D5 at RB5_bit;
sbit LCD_D6 at RB6_bit;
sbit LCD_D7 at RB7_bit;

sbit LCD_RS_Direction at TRISB2_bit;
sbit LCD_EN_Direction at TRISB3_bit;
sbit LCD_D4_Direction at TRISB4_bit;
sbit LCD_D5_Direction at TRISB5_bit;
sbit LCD_D6_Direction at TRISB6_bit;
sbit LCD_D7_Direction at TRISB7_bit;
// Fin modules LCD connections
هذه الأسطر هي لتوظيف أرجل المعالج للتوصيل مع الشاشة LCD
**************************

int t; تعريف متغير صحيح لحجز قيمة الحرارة المقرؤة
char a; تعريف وحجز متغير حرفي حجم 1 بايت
char lcd[] = "000 Degree"; تعريف مصفوفة حجم 1 بايت لعرض درجة الحرارة بثلاثة مراتب مع إظهار الكلمة Degree بعد درجة الحرارة
***********************************

void main() هنا بداية البرنامج الرئيسي
{
ADCON1 = 0x04; توظيف رجل المعالج كمدخل لقراءة الاشارة الأنالوج الواردة من حساس الحرارة
Lcd_Init(); دالة استدعاء للشاشة لتحضيرها لعرض البيانات عليها
Lcd_Cmd(_LCD_CURSOR_OFF); إلغاء تفعيل وإظهار مؤشر الكتابة على الشاشة

do بداية حلقة لقراءة قيمة القرارة وتحويلها وإظهارها على الشاشة
{
Lcd_Cmd(_LCD_CLEAR); دالة مسح الشاشة
Lcd_out(1,1, "Temperature:"); دالة لعرض الكلمة Temperature في السطر الأول بدءا من العمود الأول

***************************

t = ADC_Read(0); وضع القيمة المقرؤة من الرجل RA0 في المتغيّر t

t = t * 0.4887; // 4.887 est la resolution du convertisseur ADC
بما أن الموديول حجمه 10 بت فتكون قيمته 1024 إي يأخذ القيم من 0 وحتى 1023

وملاحظة عن الحساس بحيث أن كل درجة تقابل 10 ميلي فولت
أي عند جهد 5 فولت تكون درجة الحرارة المقابلة هي 500
5 * 1000 = 5000 ميلي فولت 5000 / 10 = 500 درجة

إذا يستطيع قراءة أكبر قيمة وقدرها 500 درجة عند جهد 5 فولت

ومنه 500 / 1023 = 0.4887
لمعرفة درجة الحرارة التي أخذناها من الموديول نقوم بضربها بالقيمة 0.4887

اذا تأخذ t نتيجة التحويل للمحول ADC

**********************
a = t%10;
lcd[2] = a + '0';

t = t/10;
a = t%10;
lcd[1] = a + '0';

t = t/10;
a = t%10;
lcd[0] = a + '0';

هذه الأسطر هي عملية فصل الأرقام اي المئات والعشرات والأحاد لعرضها بالترتيب الصحيح على الشاشة
*************************
Lcd_out(2,1,lcd);
Delay_ms(100);
}while(1);
}

وأخيرا بعد إيجاد المراتب الأحاد والعشرات والمئات

ومن خلال دالة Lcd_out نعرض الحرارة في السطر الثاني وبدءا من العمود الأول

ثم تأخير زمني قدره 100 ميلي ثانية قبل أن يتم قراءة الحرارة وعرضها من جديد

وأخيرا جملة }while(1); وتعني مادام الشرط محقق استمر بالقراءة والعرض

********************

بالنسبة للدارة المعروضة هي بغرض المحاكاة نجد المعالج 16F877A القطعة الرئيسية ثم حساسا الحرارة LM35 والشاشة LCD ومقاومة متغيرة مربوطة مع الشاشة من أجل التباين وفي المحاكاة غير ضرورية ولكن في الواقع عند التطبيق سنحتاجها لتظهر المحارف على الشاشة.



أرجو أن أكون قد أفدتك ولو بالقلي وبحسب إمكانياتي

أتمنى لك كل التوفيق

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

Yassine AgH
:: مهندس ::
تاريخ التسجيل: Feb 2014
المشاركات: 2
نشاط [ Yassine AgH ]
قوة السمعة:0
قديم 27-03-2014, 09:02 PM المشاركة 3   
افتراضي


اخي Sallam ترحب بك الجنة
وجد مشكور على الافادة..


الصورة الرمزية Sallam
Sallam
:: مهندس متميز ::
تاريخ التسجيل: Mar 2006
الدولة: Syria
المشاركات: 518
نشاط [ Sallam ]
قوة السمعة:0
قديم 27-03-2014, 11:34 PM المشاركة 4   
افتراضي


اخي Sallam ترحب بك الجنة
وجد مشكور على الافادة..
لا شكر على واجب وهذا ما عودنا عليه المشاركين والقائمين على منتدى القريةة الكريمة بألا يبخلوا علينا بأية فائدة

لذلك واجبنا أن نقتدي بهم وأتمنى أن أكون قد أفدتك بالشرح ووصلت لمرادك

مع كل التوفيق

إضافة رد

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

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

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


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

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