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

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

tarek_tito22
:: مهندس ::
تاريخ التسجيل: Mar 2012
المشاركات: 19
نشاط [ tarek_tito22 ]
قوة السمعة:0
قديم 28-11-2013, 11:00 AM المشاركة 1   
افتراضي طلب:طريقة عرض متغيرين float علي lcd بالميكروسي Twitter FaceBook Google+



اريد كود لعرض متغيرين علي lcd المتغيرين هما حساسات ntc اريد اظهار قرائة الحساس الاول ف الصف العلوي للشاشه وقراءة الحساس الثاني في الصف السفلي للشاشه حاولت كثير ولكن عند التطبيق علي البروتس اجد ان القراءه لا تظهر وان عالامة الدرجه وحرف c تظهر وتختفي ولا توجد قراءه

الكود الذي استخدمته اريد ان اعرف ما الخطأ

sbit LCD_RS at RC0_bit;
sbit LCD_EN at RC1_bit;
sbit LCD_D4 at RC4_bit;
sbit LCD_D5 at RC5_bit;
sbit LCD_D6 at RC6_bit;
sbit LCD_D7 at RC7_bit;
sbit LCD_RS_Direction at TRISC0_bit;
sbit LCD_EN_Direction at TRISC1_bit;
sbit LCD_D4_Direction at TRISC4_bit;
sbit LCD_D5_Direction at TRISC5_bit;
sbit LCD_D6_Direction at TRISC6_bit;
sbit LCD_D7_Direction at TRISC7_bit;
float vt,rt,temp,y;
float vs,rs,temps,ys;
char temperature[4];
char ts[4];
void main()
{
TRISA=0B11111111;
TRISB=0;
TRISC=0;
PORTA=0;
PORTB=0;
PORTC=0;
Lcd_Init();
Lcd_Cmd(_LCD_CLEAR);
Lcd_Cmd(_LCD_CURSOR_OFF);
Lcd_Chr(1,11,223);
Lcd_Chr(1,12,'C');
Lcd_Chr(2,11,223);
Lcd_Chr(2,12,'C');
while(1)
{
vt=ADC_Read(0);
vt=(vt*5)/1024;
rt=(vt*10000)/(5-vt);
y=1 / (0.001129148 + (0.000234125 *log(rt)) + (0.0000000876741 *log(rt * rt * rt)));
temp=y-273.15;
intToStr(temp,temperature);
Lcd_out(1,5,temperature);
vs=ADC_Read(2);
vs=(vs*5)/1024;
rs=(vs*10000)/(5-vs);
ys=1 / (0.001129148 + (0.000234125 *log(rs)) + (0.0000000876741 *log(rs * rs * rs)));
temps=ys-273.15;
intToStr(temps,ts);
Lcd_out(2,5,ts);
}
}

اعلانات

حسين البغدادي
:: مهندس متواجد ::
تاريخ التسجيل: Apr 2013
الدولة: Baghdad
المشاركات: 61
نشاط [ حسين البغدادي ]
قوة السمعة:0
قديم 29-11-2013, 09:34 PM المشاركة 2   
افتراضي


اخي العزيز .. الحل هو بتحويل الfloat الى char لكي تتمكن من عرضه على الشاشه lcd ويتم ذلك باستخدام هذه الداله

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

الصورة الرمزية NOUR P.4
NOUR P.4
:: مهندس متواجد ::
تاريخ التسجيل: Jun 2010
المشاركات: 185
نشاط [ NOUR P.4 ]
قوة السمعة:0
قديم 30-11-2013, 11:07 PM المشاركة 3   
افتراضي


السلام عليكم
اخي الكريم هل لك بإجابتي عن بعض الأسئلة... حتى نتمكن من مساعدتك بالشكل الصحيح و ذلك بكتابة كود ابسط واسرع من حيث قلة العمليات الحسابية التي فيه
اولا ماهي اعلى درجة حرارة يمكن قراءتها
ثانيا كم من الفولت يتغير مقابل تغير درجة واحدة
باجابتك على هذه الأسئلة سنكتب برنامج بسيط ومختصر جدا لحساب الحرارة سوية بإذن الله.......
وفقك الله وإيانا لما يحب و يرضى


الصورة الرمزية حسن هادي محمود
حسن هادي محمود
:: عضو ذهبي ::
تاريخ التسجيل: Sep 2012
الدولة: العراق /البصره
المشاركات: 2,688
نشاط [ حسن هادي محمود ]
قوة السمعة:136
قديم 01-12-2013, 02:09 AM المشاركة 4   
افتراضي


اريد كود لعرض متغيرين علي lcd المتغيرين هما حساسات ntc اريد اظهار قرائة الحساس الاول ف الصف العلوي للشاشه وقراءة الحساس الثاني في الصف السفلي للشاشه حاولت كثير ولكن عند التطبيق علي البروتس اجد ان القراءه لا تظهر وان عالامة الدرجه وحرف c تظهر وتختفي ولا توجد قراءه

الكود الذي استخدمته اريد ان اعرف ما الخطأ

sbit LCD_RS at RC0_bit;
sbit LCD_EN at RC1_bit;
sbit LCD_D4 at RC4_bit;
sbit LCD_D5 at RC5_bit;
sbit LCD_D6 at RC6_bit;
sbit LCD_D7 at RC7_bit;
sbit LCD_RS_Direction at TRISC0_bit;
sbit LCD_EN_Direction at TRISC1_bit;
sbit LCD_D4_Direction at TRISC4_bit;
sbit LCD_D5_Direction at TRISC5_bit;
sbit LCD_D6_Direction at TRISC6_bit;
sbit LCD_D7_Direction at TRISC7_bit;
float vt,rt,temp,y;
float vs,rs,temps,ys;
char temperature[4];
char ts[4];
void main()
{
TRISA=0B11111111;
TRISB=0;
TRISC=0;
PORTA=0;
PORTB=0;
PORTC=0;
Lcd_Init();
Lcd_Cmd(_LCD_CLEAR);
Lcd_Cmd(_LCD_CURSOR_OFF);
Lcd_Chr(1,11,223);
Lcd_Chr(1,12,'C');
Lcd_Chr(2,11,223);
Lcd_Chr(2,12,'C');
while(1)
{
vt=ADC_Read(0);
vt=(vt*5)/1024;
rt=(vt*10000)/(5-vt);
y=1 / (0.001129148 + (0.000234125 *log(rt)) + (0.0000000876741 *log(rt * rt * rt)));
temp=y-273.15;
intToStr(temp,temperature);
Lcd_out(1,5,temperature);
vs=ADC_Read(2);
vs=(vs*5)/1024;
rs=(vs*10000)/(5-vs);
ys=1 / (0.001129148 + (0.000234125 *log(rs)) + (0.0000000876741 *log(rs * rs * rs)));
temps=ys-273.15;
intToStr(temps,ts);
Lcd_out(2,5,ts);
}
}
السلام عليكم
اخي عندي ملاحظات
1- اعرض مشروعك بشكل كامل يعني ملف بروتيس والبرمجه حتى نعدل عليه
2- انت لم تعرف مداخل ايهما تعمل انلوك وايهما تعمل ديجيتل وبطبيعي الان لايظهر عندك شيئ لان كل بورتات التي تتعامل مع انلوك هي انلوك وهذه تؤثر على مخارج الشاشه
3- يوجد طريقه افضل للتعامل مع float وذلك عن طريق مصفوفات
اعرف اولا طريقه أظهار الرقم كتالي
كود:
char *txt="000.00cm";
وهذا عند عرض
كود:
lcd_out(1,1,"DIST=");
       distance=100;
       distance=distance*time/58; // distance in "cm"
       /*inttostr(distance,txt);
       for(x=0;x<14;x++)if(txt[x]!=' ')lcd_chr_cp(txt[x]);
       lcd_out_cp("cm");*/ 
                                    // eample distance =123.45 now cancel . then distance=12345
       txt[0]=(distance/10000 )+48; // 12345/10000=1.2345    =1
       txt[1]=(distance/1000)%10 +48;//12.345   =12       %10=2
       txt[2]=(distance/100)%10 +48;//123.45  =123        %10=3
       txt[4]=(distance/10 )%10 +48;//1234.5  =1234       %10=4
       txt[5]=distance%10 +48;//           %10 from distance =5
       lcd_out_cp(txt);
هذا مقتبس من كود مسافه يمكنك الاستفاده منه

4- اخي كريم انا مرت كتبت كود شبيه بالكود ولكني استخدمت سفن سكمنت
كود:
void caculated_temperature()
{
 temp=ADC_Read(9);
 temp=temp*5000/1023;
 zz=(1/ (log( ( temp*(R1+R2)-(5000*R2) )/((5000-temp)*R25))/B +3.354e-3) )-273.15; // equation fot NTC
 temp2=zz;
 if(zz>=100)temp2=99; // max value beacuse using 7seg two segment only
 if(zz<=1)temp2=0;
 show_7seg(temp2);
}


keidk
:: مهندس متواجد ::
تاريخ التسجيل: Jun 2012
المشاركات: 184
نشاط [ keidk ]
قوة السمعة:0
قديم 01-12-2013, 01:30 PM المشاركة 5   
x4


الحل بسيط بدل كود
IntToStr
الى
FloatToStr


tarek_tito22
:: مهندس ::
تاريخ التسجيل: Mar 2012
المشاركات: 19
نشاط [ tarek_tito22 ]
قوة السمعة:0
قديم 09-12-2013, 01:50 PM المشاركة 6   
افتراضي


ده ملف فيه الكود اللي كتبته والدائره علي البروتس
الدائره عباره عن حساسين حراره ntc اريد عرض دجة الحراره في شاشه واحده
الصف العلوي حراره الحساس الاول وفي الصف السفلي حراره الحساس الثاني
الكود انا كتبتبه بس فيه غلطه مش عارف فين ياريت خبراء الميكرو يساعدوني

الرابط اهو
http://www.eyesfile.ca/e57hjm6moh3b/tarek.rar.html


الصورة الرمزية حسن هادي محمود
حسن هادي محمود
:: عضو ذهبي ::
تاريخ التسجيل: Sep 2012
الدولة: العراق /البصره
المشاركات: 2,688
نشاط [ حسن هادي محمود ]
قوة السمعة:136
قديم 09-12-2013, 02:35 PM المشاركة 7   
افتراضي


ده ملف فيه الكود اللي كتبته والدائره علي البروتس
الدائره عباره عن حساسين حراره ntc اريد عرض دجة الحراره في شاشه واحده
الصف العلوي حراره الحساس الاول وفي الصف السفلي حراره الحساس الثاني
الكود انا كتبتبه بس فيه غلطه مش عارف فين ياريت خبراء الميكرو يساعدوني

الرابط اهو
http://www.eyesfile.ca/e57hjm6moh3b/tarek.rar.html
السلام عليكم
ممكن اخي تعطيني معادله حساس NTC وسأقوم بترتيب الكود لك ان شالله


tarek_tito22
:: مهندس ::
تاريخ التسجيل: Mar 2012
المشاركات: 19
نشاط [ tarek_tito22 ]
قوة السمعة:0
قديم 09-12-2013, 03:10 PM المشاركة 8   
افتراضي


مشكور علي اهتمامك يا بشمهندس حسن
ده رابط فيه المعادله والكود بلغة السي و الدائرة علي البروتس
اروجو يا بشمهندس حسن توضيح خطئي ف الكود اللي انا كتبته عشان استفاد اكتر ده الرابط

http://www.eyesfile.ca/qsg74qth1m16/tarek.rar.html

اتمني التوفيق ليا دائما

إضافة رد

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

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

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


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

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