الأخوة اعضاء المنتدي الكرام
السلام عليكم ورحمة لله وبركاته
من تجارب الأخوة الكرام زيادة عدد مخارج الكونتروللر وقد استفدت من هذا الكود الا اني اطمع في شرح وافي لكل اجزاءه وأطمع ان ازيد عدد المخارج الي 32 مخرج بزياده المتكاملة 4514 هذا شكل الدائرة علي بروتوس
وهذا رابط للكود بالبروتوس كامل
اخي الكريم حسن هادي محمود
اود فهم هذه الجزئية في الكود ومععرفة القيمة 60 كيف تم حسابها
كود:
while(1)
{
for(x=0;x<60;x++) display_BCD();
// clear "//" formthe next line to show the counter > each 7seg count from 0 to 9
// for(x=0;x<16;x++){num[x]++; if(num[x]==10)num[x]=0;}
}
وهذا الكود كاملا وادعو لأخيكم كاتب الكود
كود:
const char segment[] = {63, 6, 91,79,102, 109, 125, 7,127, 111};
char num[16];
int count;
char x,mm;
void display_BCD()
{
for(mm=0;mm<16;mm++)
{
porta=mm; // to control the commons of 7segments.
portb=~segment[num[mm]];
delay_ms(1);
}
}
void display ()
{
num[0]=0;
num[1]=1;
num[2]=2;
num[3]=3;
num[4]=4;
num[5]=5;
num[6]=6;
num[7]=7;
num[8]=8;
num[9]=9;
num[10]=1;
num[11]=2;
num[12]=3;
num[13]=4;
num[14]=5;
num[15]=6;
num[16]=7;
}
void main ()
{
portb=0xff;
trisb=0;
trisa=0;
display();
while(1)
{
for(x=0;x<60;x++) display_BCD();
// clear "//" formthe next line to show the counter > each 7seg count from 0 to 9
// for(x=0;x<16;x++){num[x]++; if(num[x]==10)num[x]=0;}
}
}
اشكر كل من مد يد العون لنا وجزاكم الله بكل خير
|
سلام عليكم
اخي كريم بالنسبه للكود سأشرحه لك
كود:
const char segment[] = {63, 6, 91,79,102, 109, 125, 7,127, 111};
هذه ثوابت لسفن سكمنت نوع انود مشترك وهي تمثل الارقام 0,1,2,3,4,5,6,7,8,9
كود:
void display_BCD()
{
for(mm=0;mm<16;mm++)
{
porta=mm; // to control the commons of 7segments.
portb=~segment[num[mm]];
delay_ms(1);
}
}
اولا لماذا تم العد الى mm=16 الجواب لانك اسي ديكودر عدد الاطراف ( output) هي 16
ملاحظه دائما ديكودر output =2^input
مثلا عدد الادخالات هي 3 يعني عدد اخراجات ايسي =2^3=8
ديكودر الموجود في مشروع هو 4 ادخلات يعني 16 خرج وبتالي يعمل كتالي
0000 q0=1
0001 q1=1
0010 q2=1
1111 q15=1
اي انه دائما احد اطرافه يكون بساوي 1 وهذا يعني نستطيع استخدام هذه متكامله لتشغيل سفن سكنمنت
ولكن كم سفن سكمنت سوف نستطيع تشغيلها الجواب عاى حسب الاطراف وهنا بالمشروع نستطيع تشغيل 16 خانه من سفن سكمنت
ولكن كيف ازيد ذلك
الجواب ببساطه ان لكل ديكودر له طرف يسمى INH هذا طرف اذا تم تفعيله بتشتغل هذه متكامله وعدم تفعيله بيتوقف عمل متكامله وبتالي تستطيع انت ربط 32 مخرج بنفس الربط الا انك سوف تربط طرف INH الى مايكرو كنترولر
يعني باختصار تربط نفس الادخلات لكل متكاملين
اما خرج فيوصل الى 32 خانه لسفن سكمنت او حسب الذي تريده
اما طرف INH من كل متكامله بيوصل للمايكروكنترولر (( طبعا انت تفعل طرف للمتكامله الي انت بتستخدمها ))
بالنسبه لهذا الكود
كود:
for(x=0;x<60;x++) display_BCD();
لماذا اختار 60
انا لاارى اي شيئ يمكنك اختيار اكثر من ذلك
اخي كريم حسب هذا مشروع كما رايته هو بيحتاج منك استخدام DS1307 لغرض ضبط الوقت والتاريخ