السلام عليكم ورحمة الله
اقدم لكم مشروع لقياس مستوى الماء داخل الخزان ...
كود البرنامج
كود:
// **** ENG . ABDALLA HYGAZY **** //
// *** ELEMAN.ELECTRONIC*YAHOO.COM *** //
unsigned short mask(unsigned short num);
unsigned char a3=0,a2=0,a1=0;
void interrupt(){
portb=1;
portd=mask(a1);
delay_ms(5);
portb=2;
portd=mask(a2);
delay_ms(5);
portb=4;
portd=mask(a3);
INTCON=0b00100000;
TMR0=0;
}
void main() {
int x=0;
adcon1=0x06;
OPTION_REG=0b10000101;
INTCON=0b10100000;
TMR0=217;
TRISB=0; PORTB=0;
TRISC=0; PORTC=0;
TRISD=0; PORTD=0;
TRISA=63; PORTA=0;
TRISE=1; PORTE=0;
//**********************************//
staret:
a1=0; a2=0; a3=0;
while(1){
if(porta.f5==1){goto loop1;};
//*********************************//
}
loop1:
while(1){
a3=0;a2=2;a1=5;
if(porta.f4==1){goto loop2;}
if(porta.f5==0){goto staret;}
}
loop2:
while(1){
a3=0;a2=5;a1=0;
if(porta.f3==1){goto loop3;}
if(porta.f4==0){goto loop1;}
}
loop3:
while(1){
a3=0;a2=7;a1=0;
if(porta.f2==1){goto loop4;}
if(porta.f3==0){goto loop2;}
}
loop4:
while(1){
a3=0;a2=8;a1=0;
if(porta.f1==1){goto loop5;}
if(porta.f2==0){goto loop3;}
}
loop5:
while(1){
a3=0;a2=9;a1=0;
if(porta.f0==1){goto loop6;}
if(porta.f1==0){goto loop4;}
}
loop6:
while(1){
a3=1;a2=0;a1=0;
if(porta.f0==0){goto loop5;}
if(porte.f0==1){for(;;){if(porta.f0==0){goto loop5;}portc.f0=1;delay_ms(400);portc.f0=0;delay_ms(200);}}
}
}
unsigned short 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;
}
}
//*************** END ******************//
فكرة المشروع ..
هو .. يوجد 7 سوتشات لكل سوتش مرحلة معينة بيخرج بها قيمه على شاشات ال 7سيجمنت وهو بيبدأ من المفتاح رقم 5 من البورت (A) فى الميكروكنترولر ..
اذا تم الضغط على المفتاح الاول ... وهو رقم 5 من البورت (A) سوف يعطى قيه 25 % على شاشة ال 7سيجمنت ... ولو تم الضغط على المفتاح الثانى .. وهو رقم 4 من البورت (A ) سوف تذيد هذة القيمه الى ان تصل 50 % وهكذا الى ان يتم الضغط على كل السوتشات للوصل للسوتش رقم 6 وهو البن رقم 0 من البورت (A) ويوجد مفتاح سابع هذا المفتاح فائدته سوف يعطى انذار اذا تجاوز منسوب المياة الحد الاقصى فى الخزان هيضوى ليد فلاش للدلالة على ان مستوى المياة تعدى المنسوب المقرر له .. وطبعااا من الممكن استبدال الليد بأنذار صوتى ..
ملحوظة لازم تبدأ بالضغط على المفتاح رقم 5 .. ولذيادة القيمة لابد ان يكون الفتاح رقم 5 مستمر بالضغط عليه واضغط على المفتا حاللذى يليه
ملحوظات هول الدائرة أو البرنامج ..
عند توصيل الدائرة على ارض الواقع يجب الانتباة من توصيل اطراف السوتشات بطريقة صحيحه .. بمعنى انا مستخدم فى الدائرة اعلاة سوتشان عاديىه فقط لمحكاة الدائرة ,, ولكن عند توصيل الدائرة على ارض الواقع هيتم استبدال هذة السوتشات بلأسلاك نحاس لكل سوتش .. الفكرة انها . نوع الترنزوستر المستخدم هو .... PNP .... وطبعااا عشان نستخد الترنزوستر ده كمفتاح لازم نطبق جهد سالب بقيمه 400 ملى فولت على قاعدة الترنزوستر ليتم تفعيل الترنزوستر ويعمل كمفتاح ... طيب الفكرة هنا ان احنا هنوصل سلك قادم من قاعدة الترنزوستر وهنشيل العزل عن طرف السلط بمساحة واحد سنتم .. وهنضع سلك أخر بجوار السلك القادم من قاعدة كل ترنزوستر .. وعند صعود المياة الى السلكين هيتم توصيل تيار ضعيف من خلال مقاومة المياة وبالتالى هيشتغل الترنزوستر فى هذة الحالة كمفتاح ... وهنطبق نفس الفكرة مع باقى قواعد الترنزوسترات ....
صورة توضح طريقة توسيل حساسات مستوى الماء داخل الخزان ...

صورة الدائرة الالكترونية ....


رابط لتحميل المشروع كامل
http://download1513.mediafire.com/cp...8%A7%D9%86.rar
تحياتى لكم اخوكم عبدالله حجازى
.................................



:c hr: