الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

ٍسؤال في المسح الرقمي

مغلقرائج
بدأه tell me في 5 أكتوبر 2004 · 56 رد · 11,787 مشاهدة · في الأرشيف
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم

لدي مشكلة وهي كيف يكون الكود عندما يكون لدينا شاشتي إظهار أوثلاث أوأربع حيث أن الأظهار من الصفر إلى التسعة بسيط

أما عندما يتعلق الأمر في الخانة الثانية هنا تكمن المشكلة؟

كيف سنعرف أننا وصلنا إلى الرقم 10 ومن ثم نرسل الرقم1 إلى الشاشة الثانية ثم نرسل الأرقام من 0--9 إلى الشاشة الأولى

كيف سنعرف أننا وصلنا إلى الرقم 20 ومن ثم نرسل الرقم2 إلى الشاشة الثانية ثم نرسل الأرقام من 0--9 إلى الشاشة الأولى

كيف سنعرف أننا وصلنا إلى الرقم 100 ومن ثم نرسل الرقم1 إلى الشاشة الثالثة ثم نرسل الأرقام من 0--9 إلى الشاشة الأولى فالثانية

وهكذا--------------

البرنامج عبارة عداد نبضات على القطبRB0/INT ويتم المسح ضمن روتين خدمة المقاطعة

ربما أطلت في السؤال ولكني أراه يهم شريحة واسعة من المهتمين بتقنية الأظهار

{وقل ربي زدني علماً}

#2

مع ان سؤالك ليس واضحا بشكل كبير الا اننى ساجيبك بما فهمت، قم بتجزئة الرقم الى بايتات مثل بايت للآحاد و بايت للعشرات وكذلك للمئات الخ و كل خانة تكون مرجعية لشاشة.

اذا لم اكن فهمت سؤالك ارجو اعادة توضيحه.

39_22.gif

تزود من التقوى فإنك لا تدري *** إذا جن ليل هل تعيش إلى الفجر

فكم من فتى أمسى وأصبح ضاحكاً *** وقد نسجت أكفانه وهو لا يدري

لقراءة القرآن الكريم و سماعه و تفسيره ........

ماذا يعني انني مسلم سني؟

قصة غريبة

ConflictResolution.gif

#3

أخ عماد

العداد وصل إلى الرقم9 وأ ظهره على الشاشة

الآن سيأتي الرقم 10 إذاً أصبحنا في بايت العشرات

السؤال:

الكود الأول : كيف سنحدد أننا الآن أصبحنا في بايت العشرات

ومن ثم نرسل الرقم1 إلى الشاشة الثانية ثم نرسل الأرقام من 0__9 إلى الشاشة الأولى

الكود الثاني: وهو مشابه للأول وهو أنه عندما أظهرنا الرقم 19كيف سنحدد أننا عند الرقم 20 بعد ذلك

ومن ثم نرسل الرقم2 إلى الشاشة الثانية ثم نرسل الأرقام من 0__9 إلى الشاشة الأولى

الكود الثالث: هل ينطبق مع الأول و الثاني عندما نصل الى بايت المئات

الكود الرابع : وهو قائمة البايتات : هل القائمة الرئيسية من 0__9 سنستخدمها في

بايت العشرات وبالتالي المئات

وما المقصود بتجزئة الرقم الى بايتات مثل بايت للآحاد و بايت للعشرات وكذلك للمئات الخ و كل خانة تكون مرجعية لشاشة.

لذلك أرجو أن تدرج لي الكود الرابع

أرجو أن يكون قد توضح السؤال وأن لا أكون قد أضجرتك

tell me

{وقل ربي زدني علماً}

#4

الاخ tell me لاني لا اعلم الكثير عن الدائرة لديك لذا اجيبك بما استطيع، اقول حول الرقم الثنائي الى BCD او من الاساس اجعل BCD هو الاصل ثم تاخذ اول اربعة بت وتكون خانة الاحاد و الاربع التالية خانة العشرات و هكذا و اذا لم تتضح لك الرؤية ارجو وضع الجزء الذي يهمك من الدائرة حتى اطلع عليها و اجيبك.

39_22.gif

تزود من التقوى فإنك لا تدري *** إذا جن ليل هل تعيش إلى الفجر

فكم من فتى أمسى وأصبح ضاحكاً *** وقد نسجت أكفانه وهو لا يدري

لقراءة القرآن الكريم و سماعه و تفسيره ........

ماذا يعني انني مسلم سني؟

قصة غريبة

ConflictResolution.gif

#5

هذه دائرة مشابهة للتي عندي

bcd_51020041023100.3064081.gif

وأرجو أن تكتب لي مثال لكود العشرات إذا لم يكن عندك مانع

tell me

{وقل ربي زدني علماً}

#6
tell me كتب:
البرنامج عبارة عداد نبضات على القطبRB0/INT ويتم المسح ضمن  روتين  خدمة المقاطعة

بالضبط عليك كتابة برنامج لهذه المقاطعة بحيث تبدل اثنائها الخرج فمرة تخرج خانة الآحاد فقط ومرة تخرج خانة العشرات فقط و على سبيل المثال الذبذبة تكون 200 هيرتز كدخل على القطبRB0/INT. بعملية التناوب هذه ستظهر خانة الآحاد و العشرات للعين بشكل متصل حيث انك لا تستطيع اخراجهما معا.

39_22.gif

تزود من التقوى فإنك لا تدري *** إذا جن ليل هل تعيش إلى الفجر

فكم من فتى أمسى وأصبح ضاحكاً *** وقد نسجت أكفانه وهو لا يدري

لقراءة القرآن الكريم و سماعه و تفسيره ........

ماذا يعني انني مسلم سني؟

قصة غريبة

ConflictResolution.gif

#7

أخ عماد

يبدو أنك لم تقرأ الرد الثاني جيداً

الكود الأول : كيف سنحدد أننا الآن أصبحنا في بايت العشرات

وبالتالي نرسل خانة العشرات للشاشة الثانية ثم نرسل خانة الآحاد للشاشةالأولى

اقتباس
فمرة تخرج خانة الآحاد فقط ومرة تخرج خانة العشرات فقط

هذا كود الآحاد

retlw b'00001100' ;1

retlw b'10110110' ;2

retlw b'10011110' ;3

retlw b'11001100' ;4

retlw b'11011010' ;5

retlw b'11111010' ;6

retlw b'01001110' ;7

retlw b'11111110' ;8

retlw b'11011110' ;9

أنا أريد كود العشرات؟؟؟؟

تم تعديل هذه المشاركة بواسطة tell me في 6 أكتوبر 2004 في 19:37

{وقل ربي زدني علماً}

#8

ربما اكون الان فهمت ما تريده - آمل ذلك - واضح اخي من الرسم ان الاقطاب 17 و 18 هما اللذان يحددان الخانة اكانت آحاد ام عشرات ويبقى الكود نفسه كما كتبته انت - في الرد الاخير -، فقط تغير في 17 و 18 لتغيير الخانة و لا تكتبهما معا، اي اما 17 او 18 في اية لحظة. و لا تتردد بالسؤال.

39_22.gif

تزود من التقوى فإنك لا تدري *** إذا جن ليل هل تعيش إلى الفجر

فكم من فتى أمسى وأصبح ضاحكاً *** وقد نسجت أكفانه وهو لا يدري

لقراءة القرآن الكريم و سماعه و تفسيره ........

ماذا يعني انني مسلم سني؟

قصة غريبة

ConflictResolution.gif

#9
اقتباس
و لا تتردد بالسؤال

جميل جداً يبدو أن روحك رياضية وأرجو أن لا أتعبها

والأجمل من ذلك هي سرعة ردك

بالنسبة لموضوع إطفاء الشاشات وتفعيلها والتأخير الزمني بينهما ليست مشكلة

الذي أريده هو:

الكود الأول : كيف سنحدد أننا الآن أصبحنا في بايت العشرات

هل سيكون هكذا:

movlw d'10'
xorlw d'10'
btfss status,z
goto digit
goto ten

عند الرقم 20

movlw d'20'
xorlw d'20'
btfss status,z
 goto ten      
 goto twenty

لنفرض أننا نريد إظهارالرقم 22 كيف سيكون الكود

{وقل ربي زدني علماً}

#10

آسف للتاخر في الرد، اريد ان اسئلك هل استطعت اظهار اي رقم على الآحاد؟ هل استطعت ذلك على العشرات؟ و لو بشكل منفرد، اذا استطعت ارجو ارفاق الكود.

39_22.gif

تزود من التقوى فإنك لا تدري *** إذا جن ليل هل تعيش إلى الفجر

فكم من فتى أمسى وأصبح ضاحكاً *** وقد نسجت أكفانه وهو لا يدري

لقراءة القرآن الكريم و سماعه و تفسيره ........

ماذا يعني انني مسلم سني؟

قصة غريبة

ConflictResolution.gif

#11

تفضل أخ عماد

ملف hex + ملف الإسمبلي + مخطط الدارة على برنامج proteus لمحاكاته

البرنامج كما ذكرت سابقاًعبارة عن عداد نبضات على القطبRB0/INT ويتم المسح ضمن روتين خدمة المقاطعة

عندالإقلاع يظهرعلى الشاشة الرقم صفر وعند ورود حافة صاعدة يظهر على الشاشة الرقم واحد

وهكذا-----

إلى أن يصل إلى النبضة التاسعة فيظهر الرقم تسعة لمدة ثانية يليها الحرفF إختصاراً ل FULL

عند النبضة التالية يظهر الرقم واحد وهكذا

و أنا بالأنتظار tell me

counter.zip

{وقل ربي زدني علماً}

#12

أرجو من الجميع المشاركة و إبداء ما لديهم من أفكارحول إظهار خانة العشرات

ولكم جزيل الشكر

{وقل ربي زدني علماً}

#13

الاخ tell me لم انسى موضوعك و لكني شغلت قليلا و الوقت ضاق قليلا في رمضان. اريد ان اسئلك : انت تقول نبضات على القطبRB0/INT الا ترى ان هناك تعديل لابد ان يتم اولا؟ حيث rb0/int هو قطب رقم 6 و انت تستخدمه لقيادة احد اقطاب الشاشة. فلو استخدمت الاقطاب 7-13 للشاشة و 6 كما ذكرت لنبضات المقاطعة لان البرمجة ستعتمد على التصميم. ام اني لم انتبه لشيئ معين؟؟

و هذه رسم لل pic16f84

pic16f84-pinout.gif

تم تعديل هذه المشاركة بواسطة عماد الخليل في 19 أكتوبر 2004 في 14:58

39_22.gif

تزود من التقوى فإنك لا تدري *** إذا جن ليل هل تعيش إلى الفجر

فكم من فتى أمسى وأصبح ضاحكاً *** وقد نسجت أكفانه وهو لا يدري

لقراءة القرآن الكريم و سماعه و تفسيره ........

ماذا يعني انني مسلم سني؟

قصة غريبة

ConflictResolution.gif

#14
اقتباس
ام اني لم انتبه لشيئ معين؟؟

هذه دائرة مشابهة للتي عندي كما أسلفت

اقتباس
فلو استخدمت الاقطاب 7-13 للشاشة و 6 كما ذكرت لنبضات المقاطعة

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

يبدو أخ عماد أنك رددت عليّ قبل مشاهدة الملف المرفق

ملاحظة: أرحب بأي تصحيح تجده أنت أو غيرك مناسباً

tell me

{وقل ربي زدني علماً}

#15

الاخ tell me جرب هذا الملف مؤقتا و شوف اذا كان يشتغل.

test.HEX

39_22.gif

تزود من التقوى فإنك لا تدري *** إذا جن ليل هل تعيش إلى الفجر

فكم من فتى أمسى وأصبح ضاحكاً *** وقد نسجت أكفانه وهو لا يدري

لقراءة القرآن الكريم و سماعه و تفسيره ........

ماذا يعني انني مسلم سني؟

قصة غريبة

ConflictResolution.gif

#16

الملف لايعمل أخ عماد

أرى أن يكون الملف بالإسمبلي لكي تعم الفائدة ( وذلك بعد إذنك طبعاً )

المخطط باستخدام شاشتين

counter.DSN

تم تعديل هذه المشاركة بواسطة tell me في 22 أكتوبر 2004 في 13:33

{وقل ربي زدني علماً}

#17

الاخ tell me ليس عندي البرنامج الذي يقرا هذا النوع من الرسومات (schematic) لهذا بامكانك فتح البرنامج على المخطط و اخذ لقطة للشاشة باستخدام ctrl + print screen ثم تلصقها باي برنامج رسم مثل paint و تقتطع الجزء الذي يهمك المهم تكون الصورة ثم ترفعها للموقع لاني و غيري غير قادرين على رؤية التصميم بعد التعديل و ربما يكون سبب الخطأ. بالنسبة للملف المرفق افتحه ببرنامج MPLAB IDE و اعمل IMPORT للملف و سوف تقرا الاسمبلى مؤقتا.

test.HEX

39_22.gif

تزود من التقوى فإنك لا تدري *** إذا جن ليل هل تعيش إلى الفجر

فكم من فتى أمسى وأصبح ضاحكاً *** وقد نسجت أكفانه وهو لا يدري

لقراءة القرآن الكريم و سماعه و تفسيره ........

ماذا يعني انني مسلم سني؟

قصة غريبة

ConflictResolution.gif

#18

تفضلوا

1_221020041343334.08572E-03.JPG

tell me

{وقل ربي زدني علماً}

#19

اخي tell me لماذا لم تجرب البرنامج الاخير و لا تنسى ان يكون هناك ذبذبة على int و اخبرني اذا اشتغل معك و اخبر عن الحالة هل هناك تغير على الشاشة.

البرنامج عملته بلغة سي و لهذا لم ارفق برنامج الاسمبلي و هذا هو برنامج السي والبرنامج التنفيذي مرفق.

#include <16f84.h>
#use delay(clock=4000000)
#fuses NOWDT,xt
setup_counters(RTCC_INTERNAL,RTCC_DIV_1);

char x=0,z=0;

#INT_EXT
void ext_isr(void)
{
char d1,d10,dx;
d1= x%10;
d10= (x-x%10)/10;
if (z%2)
{
output_low(PIN_A0);
output_high(PIN_A1);
dx=d1;
}
else
{
output_high(PIN_A0);
output_low(PIN_A1);
dx=d10;
}
switch (dx)
{
case 0:
output_high(PIN_B1);
output_high(PIN_B2);
output_high(PIN_B3);
output_high(PIN_B4);
output_high(PIN_B5);
output_high(PIN_B6);
output_low(PIN_B7);
break;
case 1:
output_low(PIN_B1);
output_high(PIN_B2);
output_high(PIN_B3);
output_low(PIN_B4);
output_low(PIN_B5);
output_low(PIN_B6);
output_low(PIN_B7);
break;
case 2:
output_high(PIN_B1);
output_high(PIN_B2);
output_low(PIN_B3);
output_high(PIN_B4);
output_high(PIN_B5);
output_low(PIN_B6);
output_high(PIN_B7);
break;
case 3:
output_high(PIN_B1);
output_high(PIN_B2);
output_high(PIN_B3);
output_high(PIN_B4);
output_low(PIN_B5);
output_low(PIN_B6);
output_high(PIN_B7);
break;
case 4:
output_low(PIN_B1);
output_high(PIN_B2);
output_high(PIN_B3);
output_low(PIN_B4);
output_low(PIN_B5);
output_high(PIN_B6);
output_high(PIN_B7);
break;
case 5:
output_high(PIN_B1);
output_high(PIN_B2);
output_high(PIN_B3);
output_high(PIN_B4);
output_high(PIN_B5);
output_high(PIN_B6);
output_high(PIN_B7);
break;
case 6:
output_high(PIN_B1);
output_low(PIN_B2);
output_high(PIN_B3);
output_high(PIN_B4);
output_low(PIN_B5);
output_high(PIN_B6);
output_high(PIN_B7);
break;
case 7:
output_high(PIN_B1);
output_high(PIN_B2);
output_high(PIN_B3);
output_low(PIN_B4);
output_low(PIN_B5);
output_low(PIN_B6);
output_low(PIN_B7);
break;
case 8:
output_high(PIN_B1);
output_high(PIN_B2);
output_high(PIN_B3);
output_high(PIN_B4);
output_high(PIN_B5);
output_high(PIN_B6);
output_high(PIN_B7);
break;
case 9:
output_high(PIN_B1);
output_high(PIN_B2);
output_high(PIN_B3);
output_low(PIN_B4);
output_low(PIN_B5);
output_high(PIN_B6);
output_high(PIN_B7);
break;
}
z++;
return;
}

void main(void)
{
disable_interrupts(INT_EXT);
disable_interrupts(global);
x++;
if (x>99) x=0;
enable_interrupts(INT_EXT);
enable_interrupts(global);
delay_ms(1000);
}

test.HEX

39_22.gif

تزود من التقوى فإنك لا تدري *** إذا جن ليل هل تعيش إلى الفجر

فكم من فتى أمسى وأصبح ضاحكاً *** وقد نسجت أكفانه وهو لا يدري

لقراءة القرآن الكريم و سماعه و تفسيره ........

ماذا يعني انني مسلم سني؟

قصة غريبة

ConflictResolution.gif

#20

تشكر أخ عماد على البرنامج ولكنه يعمل بشكل عشوائي يظهرعلى الشاشة اليسرى الرقم 8 ويختفي ويظهر أحياناً على الشاشة اليمنى

أما بشأن النبضات: عند إغلاق المفتاح تكون الحافة الصاعدة وبفتحه تكون الحافة الهابطة

أو باستخدام نبضات ساعة مباشرة

اقتباس
الاخ tell me ليس عندي البرنامج الذي يقرا هذا النوع من الرسومات (schematic

تفضل أخ عماد البرنامج + password

على فكرة البرنامج يحتوي على دارات احترافية با ستخدام المتحكم مكتوبة بلغة C

هنا

{وقل ربي زدني علماً}

#21

تاكد من ان هناك ذبذبة متواصلة على ext int و يفضل ان تكون بين 100 و 400 هيرتز و حتى لو كانت 10 هيرتز ستعمل و لكن الشاشات ستظهر بشكل متقطع. انتظر تاكيدك.

39_22.gif

تزود من التقوى فإنك لا تدري *** إذا جن ليل هل تعيش إلى الفجر

فكم من فتى أمسى وأصبح ضاحكاً *** وقد نسجت أكفانه وهو لا يدري

لقراءة القرآن الكريم و سماعه و تفسيره ........

ماذا يعني انني مسلم سني؟

قصة غريبة

ConflictResolution.gif

#22

التردد وضعته بالتدريج من 1 إلى 500 هرتز

إنارة الشاشات تبقى متقطعة فعلاً ولايظهر سوى الرقم ثمانية وأحياناً صفر

جربه لكي تتأكد

tell me

{وقل ربي زدني علماً}

#23

غيرت في الانتربت هل حدث تغيير؟؟

test.HEX

39_22.gif

تزود من التقوى فإنك لا تدري *** إذا جن ليل هل تعيش إلى الفجر

فكم من فتى أمسى وأصبح ضاحكاً *** وقد نسجت أكفانه وهو لا يدري

لقراءة القرآن الكريم و سماعه و تفسيره ........

ماذا يعني انني مسلم سني؟

قصة غريبة

ConflictResolution.gif

#24

لم يعد يخرج من المتحكم أية إشارة!!؟؟

{وقل ربي زدني علماً}

#25

و جدت ثلاثة ارباع الخطأ و ساعدل حتى يعمل باذن الله جرب هذا - الخطا الذي عدلته هو عدم وجود loop و كان ينتهي بدورة واحدة-.

#include <16f84.h>
#use delay(clock=4000000)
#fuses XT,NOWDT,NOPROTECT,NOPUT
setup_counters(RTCC_INTERNAL,RTCC_DIV_1);

char x=0,z=0;

#INT_EXT
void ext_isr(void)
{
char d1,d10,dx;
d1= x%10;
d10= (x-x%10)/10;
if (z%2)
{
output_low(PIN_A0);
output_high(PIN_A1);
dx=d1;
}
else
{
output_high(PIN_A0);
output_low(PIN_A1);
dx=d10;
}
switch (dx)
{
case 0:
output_high(PIN_B1);
output_high(PIN_B2);
output_high(PIN_B3);
output_high(PIN_B4);
output_high(PIN_B5);
output_high(PIN_B6);
output_low(PIN_B7);
break;
case 1:
output_low(PIN_B1);
output_high(PIN_B2);
output_high(PIN_B3);
output_low(PIN_B4);
output_low(PIN_B5);
output_low(PIN_B6);
output_low(PIN_B7);
break;
case 2:
output_high(PIN_B1);
output_high(PIN_B2);
output_low(PIN_B3);
output_high(PIN_B4);
output_high(PIN_B5);
output_low(PIN_B6);
output_high(PIN_B7);
break;
case 3:
output_high(PIN_B1);
output_high(PIN_B2);
output_high(PIN_B3);
output_high(PIN_B4);
output_low(PIN_B5);
output_low(PIN_B6);
output_high(PIN_B7);
break;
case 4:
output_low(PIN_B1);
output_high(PIN_B2);
output_high(PIN_B3);
output_low(PIN_B4);
output_low(PIN_B5);
output_high(PIN_B6);
output_high(PIN_B7);
break;
case 5:
output_high(PIN_B1);
output_high(PIN_B2);
output_high(PIN_B3);
output_high(PIN_B4);
output_high(PIN_B5);
output_high(PIN_B6);
output_high(PIN_B7);
break;
case 6:
output_high(PIN_B1);
output_low(PIN_B2);
output_high(PIN_B3);
output_high(PIN_B4);
output_low(PIN_B5);
output_high(PIN_B6);
output_high(PIN_B7);
break;
case 7:
output_high(PIN_B1);
output_high(PIN_B2);
output_high(PIN_B3);
output_low(PIN_B4);
output_low(PIN_B5);
output_low(PIN_B6);
output_low(PIN_B7);
break;
case 8:
output_high(PIN_B1);
output_high(PIN_B2);
output_high(PIN_B3);
output_high(PIN_B4);
output_high(PIN_B5);
output_high(PIN_B6);
output_high(PIN_B7);
break;
case 9:
output_high(PIN_B1);
output_high(PIN_B2);
output_high(PIN_B3);
output_low(PIN_B4);
output_low(PIN_B5);
output_high(PIN_B6);
output_high(PIN_B7);
break;
}
z++;
return;
}

void main(void)
{

while (1)
{
disable_interrupts(INT_EXT);
disable_interrupts(global);
x++;
if (x>99) x=0;
enable_interrupts(INT_EXT);
enable_interrupts(global);
delay_ms(300);
}
}

test.HEX

39_22.gif

تزود من التقوى فإنك لا تدري *** إذا جن ليل هل تعيش إلى الفجر

فكم من فتى أمسى وأصبح ضاحكاً *** وقد نسجت أكفانه وهو لا يدري

لقراءة القرآن الكريم و سماعه و تفسيره ........

ماذا يعني انني مسلم سني؟

قصة غريبة

ConflictResolution.gif

هذا الموضوع مغلق.

مواضيع مشابهة