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

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

a_7amasha
:: مهندس ::
تاريخ التسجيل: Nov 2010
الدولة: Cairo
المشاركات: 36
نشاط [ a_7amasha ]
قوة السمعة:0
قديم 22-01-2012, 07:19 AM المشاركة 1   
ha مساعدة في مشروع شاشة LCD و LM35 ؟ Twitter FaceBook Google+



السلام عليكم و رحمة الله و بركاته

انا استعمل pic 16f877A و MikroC v4.6 في مشروع شاشه LCD 16*2 و LM35 و سنسرور ضوء, و أريد تركيبهم في سياره. الكود التالي يعمل بكفاءه!
كود:
// Lcd pinout settings
sbit LCD_RS at RB4_bit;
sbit LCD_EN at RB5_bit;
sbit LCD_D7 at RB3_bit;
sbit LCD_D6 at RB2_bit;
sbit LCD_D5 at RB1_bit;
sbit LCD_D4 at RB0_bit;

// Pin direction
sbit LCD_RS_Direction at TRISB4_bit;
sbit LCD_EN_Direction at TRISB5_bit;
sbit LCD_D7_Direction at TRISB3_bit;
sbit LCD_D6_Direction at TRISB2_bit;
sbit LCD_D5_Direction at TRISB1_bit;
sbit LCD_D4_Direction at TRISB0_bit;

float x,y,m,n,i=0; char txt[12];
char txt1[12];
int a=10;
void main()
{
Lcd_Init();
Lcd_Cmd(_LCD_CURSOR_OFF);
TRISC=0;
TRISD=255;
portc.b0=0;
portc.b0=1;
Lcd_Out(1, 3, "Hello Ahmad !");
delay_ms(300);
portc.b0=0;
delay_ms(5000);
lcd_Cmd(_LCD_CLEAR);
Lcd_Out(1, 1, "Temp=");
x=adc_read(0);
y=(x*500)/1024;
floattostr(y,txt);
lcd_out(1,6,txt);
lcd_chr_cp(223);
lcd_chr_cp('c');
if(y>=30)
{
 Lcd_Out(2, 1, "I think its hot");
  delay_ms(3000);
}
else
{

  Lcd_Out(2, 1, "I think its cold");
  delay_ms(3000);
}
if(portd.B0==1)
{
  lcd_Cmd(_LCD_CLEAR);
    Lcd_Out(1, 1, "no need to turn");
        Lcd_Out(2, 1, "on the lights");
    delay_ms(3000);
}
else
{
   lcd_Cmd(_LCD_CLEAR);
    Lcd_Out(1, 1, "Its better to");
    Lcd_Out(2, 1, "turn on the ligh");
    delay_ms(3000);
}
lcd_Cmd(_LCD_CLEAR);
    Lcd_Out(1, 1, "car will lock in");

    for(a=10;a>=0;a--)
    {
     inttostr(a,txt1);
     lcd_out(2,4,txt1);
     delay_ms(500);

    }
  lcd_Cmd(_LCD_CLEAR);
    Lcd_Out(1, 4, "car locked");


}
Proteus:


و لكن عند زيادة اي سطر بعد كده يظهرلي هذا ال error:
IRP bit must be set manually for indirect access to 'txt' variable
IRP bit must be set manually for indirect access to 'txt1' variable


فأنا اريد زيادة الكود بعد كده while(1) l و اوامر اخري كثيره...
فلا اعلم اين الخطأ هل هو في كتابه الكود أو في الـ MicroC ؟؟



و شكرا مقدما


التعديل الأخير تم بواسطة : a_7amasha بتاريخ 22-01-2012 الساعة 07:32 AM
اعلانات

Imozar
:: مهندس متميز ::
تاريخ التسجيل: Dec 2011
المشاركات: 318
نشاط [ Imozar ]
قوة السمعة:0
قديم 22-01-2012, 10:04 AM المشاركة 2   
افتراضي


MikroC يطلب منك ان تقوم بإعداد البت IRP بطريقة يدوية.
إذا كان فهمي صحيحا فهو يخبرك انه عاجز عن الدخول الى بنك الذاكرة لاضافة ماتريد إضافته .
والحل في نظره هو ان تتعامل مع أقسام الذاكرة بطريقة indirect access او الولوج غير المباشر (ترجمة رديئة، لكن لم أجد غيرها) .
المتمرسون بلغة الاسمبلي Assembly language يعرفون ما معنى ذلك .
البتIRP هو البت السابع في المسجل الشهير status :
http://upload.wikimedia.org/wikipedi...ocPIC16F84.png
وإذا كان فهمي صحيحا فالميكروسي يطلب ادخال تعليمات بالاسمبلي .
قد تجد الحل بالميكروسي مع المتحكم الذي لديك ،لكن البعض ينصح باستخدام السلسلة 18F للبرمجة بحرية ودون الدخول في هذه المتاهات .


التعديل الأخير تم بواسطة : Imozar بتاريخ 22-01-2012 الساعة 10:21 AM السبب: تصحيح إملائي
اعلانات اضافية ( قم بتسجيل الدخول لاخفائها )
  

a_7amasha
:: مهندس ::
تاريخ التسجيل: Nov 2010
الدولة: Cairo
المشاركات: 36
نشاط [ a_7amasha ]
قوة السمعة:0
قديم 23-01-2012, 11:31 AM المشاركة 3   
افتراضي


شكرا Imozar للرد,لكن انا خبرتي ليست كافيه للتعامل مع PIC18f448, فهل يوجد حل اخر ؟؟ اذا كان الحل الوحيد هو استخدام PIC18f448 فهل من الممكن مساعدتي بشرح الاختلافات بينها و بين PIC16f877a ؟

شكرا


Imozar
:: مهندس متميز ::
تاريخ التسجيل: Dec 2011
المشاركات: 318
نشاط [ Imozar ]
قوة السمعة:0
قديم 23-01-2012, 04:08 PM المشاركة 4   
افتراضي


ولا أنا أخي ، حاليا لاتعامل إلا مع بضع بيكات من فئة 16 ف . لكن اظن انه بالنسبة لمشروعك ان الانتقال من 16877 الى 18448 لن يكون مشكلة . ربما يجب فقط الانتباه الى الاعدادات configuration .


a_7amasha
:: مهندس ::
تاريخ التسجيل: Nov 2010
الدولة: Cairo
المشاركات: 36
نشاط [ a_7amasha ]
قوة السمعة:0
قديم 23-01-2012, 04:19 PM المشاركة 5   
افتراضي


شكرا Imozar سأحاول أستخدام 18448,,,,


Imozar
:: مهندس متميز ::
تاريخ التسجيل: Dec 2011
المشاركات: 318
نشاط [ Imozar ]
قوة السمعة:0
قديم 23-01-2012, 04:37 PM المشاركة 6   
افتراضي


أتمنى لك التوفيق.
وان شاء الله تكون هي البداية للانتقال الى السلسلة 18 بإمكانياتها الجيدة .


a_7amasha
:: مهندس ::
تاريخ التسجيل: Nov 2010
الدولة: Cairo
المشاركات: 36
نشاط [ a_7amasha ]
قوة السمعة:0
قديم 24-01-2012, 10:25 AM المشاركة 7   
ha


المشكلة دلوقتي إني ورطت نفسي في حاجة تانية, جربت تنزيل نسخة mickroC pro v4.6 مرة أخرى ولكني نسيت كيف استخدم الكرك!! فهل من مساعدة؟

إضافة رد

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

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

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


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

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