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

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

soco roon
:: مهندس ::
تاريخ التسجيل: Feb 2013
المشاركات: 6
نشاط [ soco roon ]
قوة السمعة:0
قديم 14-02-2013, 09:00 PM المشاركة 1   
ha مساعده فى مشروع ميزان بال 16f877 Twitter FaceBook Google+



الحمد لله بقدر اقيس الفولت الى داخل للميكرو
وطبعا هو بيكون موجود فى adresh , adresl الخاصين بال adc
الحمد لله جمعت ال 2 ريجيستر فى مكان واحد
طبعا اكبر حاجه للبيك بالنسبه لل adc عدد 10-bit للتعبير عن قيمه الدخل
السؤال هنا بقى
حساسيه ال adc انا عملتها 4ملى فولت
بمعنى كل تغيير 4 ملى يزيد الريجيستر (10-bit ) بمقدار واحد
انا عايز اعرض الكلام ده على عدد 6 7seg
مثال لو كان ال 10-bit كلهم 1 معنى ذلك الشاشه تعرض 150.000
ولو كان 0000000001 يكون العرض 000.050
وهكذا
ارجو المساعده
وجزاكم الله خيرا

اعلانات

الصورة الرمزية vie.logic
vie.logic
:: مهندس متميز ::
تاريخ التسجيل: Nov 2011
الدولة: المغرب
المشاركات: 367
نشاط [ vie.logic ]
قوة السمعة:0
قديم 16-02-2013, 09:23 PM المشاركة 2   
افتراضي


السلام عليكم

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

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

soco roon
:: مهندس ::
تاريخ التسجيل: Feb 2013
المشاركات: 6
نشاط [ soco roon ]
قوة السمعة:0
قديم 18-02-2013, 02:02 AM المشاركة 3   
x4 جزاك الله خيرا اخى الكريم عالرد


انا الحمد لله توصلت لحل للمشكله
هى ببساطه المشكله كانت
عندى ريجيستر 10-bit يعنى اعلى قيمه ممكن يعدها الريجيستر هى 1024
وانا كنت عايز 1024 تتبعت على بورت خرج للشاشه ( 7seg ) بالرقم 150000
للتوضيح
الريجيستر الشاشه
1024 150000
1023 149950
1022 149900
-
--
-
2 000100
1 000050
0 000000

الحمد لله كانت المعادله هى ضرب قيمه الريجستر فى 50
وبعد ذلك الكشف عن قيمه خرج المعادله وارسال اكوادها الى خرج الميكرو
للشاشه
وده الكود

unsigned int adcf,aa,bb, digit,qq,ww,hh,ee,rr,tt;
unsigned mask(unsigned short num) {
switch (num) {
case 0 : return 0xC0;
case 1 : return 0xF9;

case 2 : return 0xA4;

case 3 : return 0xB0;
case 4 : return 0x99;
case 5 : return 0x92;
case 6 : return 0x82;
case 7 : return 0xF8;
case 8 : return 0x80;
case 9 : return 0x90;
}
}
void main() {
trisc=0;
trisd=0;
trisb=0;
trisa.f0=1;
adcon0=0x81;
adcon1=0xcf;
while(1)
{
delay_ms(1);
adcon0.f2=1;
while(adcon0.f2==1)
aa=adresh;
bb=aa<<8;
adcf=adresl|bb;
hh=adcf*5;
{
digit=hh %10u;
qq=mask(digit);
digit = (hh /10u)%10u;
ww=mask(digit);
digit = (hh/100u)%10u;
ee=mask(digit);
digit=(hh/1000u)%10u;
rr=mask(digit);
digit=(hh/10000);
tt = mask(digit);

}
portb=adcf;

portc=0;
portd=qq;
portc=1;
delay_ms(1);
portc=0;
portd=ww;
portc=2;
delay_ms(1);
portc=0;
portd=ee;
portc=4;
delay_ms(1);
portc=0;
portd=rr;
portc=8;
delay_ms(1);
portc=0;
portd=tt;
portc=16;
delay_ms(1);
}

}


اسف جدا جدا على الاطاله
ولكن لربما احد يستفيد من البرنامج وجزاكم الله عنا وعن المسلمين خيرا


الصورة الرمزية vie.logic
vie.logic
:: مهندس متميز ::
تاريخ التسجيل: Nov 2011
الدولة: المغرب
المشاركات: 367
نشاط [ vie.logic ]
قوة السمعة:0
قديم 19-02-2013, 06:23 AM المشاركة 4   
Smile


انا الحمد لله توصلت لحل للمشكله
هى ببساطه المشكله كانت
عندى ريجيستر 10-bit يعنى اعلى قيمه ممكن يعدها الريجيستر هى 1024
وانا كنت عايز 1024 تتبعت على بورت خرج للشاشه ( 7seg ) بالرقم 150000
للتوضيح
الريجيستر الشاشه
1024 150000
1023 149950
1022 149900
-
--
-
2 000100
1 000050
0 000000

الحمد لله كانت المعادله هى ضرب قيمه الريجستر فى 50
وبعد ذلك الكشف عن قيمه خرج المعادله وارسال اكوادها الى خرج الميكرو
للشاشه
وده الكود

unsigned int adcf,aa,bb, digit,qq,ww,hh,ee,rr,tt;
unsigned mask(unsigned short num) {
switch (num) {
case 0 : return 0xC0;
case 1 : return 0xF9;

case 2 : return 0xA4;

case 3 : return 0xB0;
case 4 : return 0x99;
case 5 : return 0x92;
case 6 : return 0x82;
case 7 : return 0xF8;
case 8 : return 0x80;
case 9 : return 0x90;
}
}
void main() {
trisc=0;
trisd=0;
trisb=0;
trisa.f0=1;
adcon0=0x81;
adcon1=0xcf;
while(1)
{
delay_ms(1);
adcon0.f2=1;
while(adcon0.f2==1)
aa=adresh;
bb=aa<<8;
adcf=adresl|bb;
hh=adcf*5;
{
digit=hh %10u;
qq=mask(digit);
digit = (hh /10u)%10u;
ww=mask(digit);
digit = (hh/100u)%10u;
ee=mask(digit);
digit=(hh/1000u)%10u;
rr=mask(digit);
digit=(hh/10000);
tt = mask(digit);

}
portb=adcf;

portc=0;
portd=qq;
portc=1;
delay_ms(1);
portc=0;
portd=ww;
portc=2;
delay_ms(1);
portc=0;
portd=ee;
portc=4;
delay_ms(1);
portc=0;
portd=rr;
portc=8;
delay_ms(1);
portc=0;
portd=tt;
portc=16;
delay_ms(1);
}

}


اسف جدا جدا على الاطاله
ولكن لربما احد يستفيد من البرنامج وجزاكم الله عنا وعن المسلمين خيرا
يسر الله لك عملك

إضافة رد

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

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

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


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

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