 |
:: عضو ذهبي ::
تاريخ التسجيل: Apr 2011
الدولة: مصر .. محافظة دمياط
المشاركات: 1,682
|
|
نشاط [ عبدالله حجازى ]
قوة السمعة:
|
|
31-12-2019, 04:43 AM
المشاركة 76
|
|
السلام عليكم ورحمة الله
السلام عليكم ورحمة الله
أخي الكريم لقد تم تعديل البرنامج والغاء الشاشة..

كود:
// ENG / ABDALLA HEGAZY **
// DATA / 2019/12/30 **
// controller **
#define MOTOR_vibrator_M11 PORTC.F7
#define MOTOR_Mixing_M62 PORTC.F6
#define Helical_motor_M61 PORTC.F5
#define MOTOR_Y33 PORTC.F4
#define MOTOR_Water_valve_Y32 PORTA.F5
#define SENSOR_LEVEL_1 PORTD.F2
#define SENSOR_LEVEL_2 PORTD.F3
#define SENSOR_LEVEL_3 PORTD.F4
#define SENSOR_LEVEL_4 PORTD.F5
#define SENSOR_LEVEL_5 PORTD.F6
#define SENSOR_LEVEL_6 PORTD.F7
#define END_ALL Helical_motor_M61 =0; MOTOR_Y33 =0; MOTOR_Mixing_M62 =0; MOTOR_vibrator_M11=0; MOTOR_Water_valve_Y32 =0;
#define BEZR PORTD.F1=1; delay_ms(350); PORTD.F1=0; delay_ms(200);
#define BEZRR PORTD.F1=1; delay_ms(270); PORTD.F1=0; delay_ms(50); PORTD.F1=1; delay_ms(270); PORTD.F1=0; delay_ms(1500);
#define END_OFF PORTD.F1=1; delay_ms(3000); PORTD.F1=0; delay_ms(50);
unsigned X1=0,X2=0,X3=0,M=0,A=0;
unsigned DATA_SHOW=0,DATA_SHOW2=0;
unsigned W1=0,W2=0,W3=0,W4=0,W5=0;
//===================================//
//Timer0
//Prescaler 1:8; TMR0 Preload = 6; Actual Interrupt Time : 1 ms
//Place/Copy this part in declaration section
void InitTimer0(){
OPTION_REG = 0x82;
TMR0 = 6;
INTCON = 0xA0;
}
void Interrupt(){
if (TMR0IF_bit){
TMR0IF_bit = 0;
TMR0 = 6;
//Enter your code here
if ( W2==1 ){ W3++; }
if ( W3==250 ){PORTE.F0=1; }
if ( W3==550 ){PORTE.F0=0; W3=0; }
if ( W4==1 ){ W5++; }
if ( W5==250 ){PORTB.F7=1; }
if ( W5==550 ){PORTB.F7=0; W5=0; }
}
}
//===================================//
void AUTO() {
W1=0; W2=1;
while(X1==0){
if (Button(&PORTE, 1, 10, 0)){END_ALL END_OFF X1=1; } //END PROGRAM //
while(X1==0)
{
if(W1==0 ){
MOTOR_vibrator_M11=1; MOTOR_Water_valve_Y32 =1; W1=1; }
if (Button(&PORTE, 1, 10, 0)){END_ALL X1=1; } //END PROGRAM //
if( SENSOR_LEVEL_1 ==1 ){ MOTOR_Mixing_M62 =1; }
if( SENSOR_LEVEL_2 ==1 ){ Helical_motor_M61 =1; }
if( SENSOR_LEVEL_3 ==1 ){ MOTOR_vibrator_M11=0; }
if( SENSOR_LEVEL_4 ==1 )
{
MOTOR_Water_valve_Y32 =0; for(X3=0; X3<M; X3++){ delay_ms(60000); }
MOTOR_Y33 =1;
X1=1;
}
}
X1=0;
while( X1==0 )
{
if (Button(&PORTE, 1, 10, 0)){END_ALL END_OFF X1=1; } //END PROGRAM //
if( SENSOR_LEVEL_1 ==0){
for(X3=0; X3<M; X3++){ delay_ms(60000); }
END_ALL
X1 =1;
}
}
delay_ms(1000);
if (Button(&PORTE, 1, 10, 1)){ delay_ms(50); X1=0; }
X1=1; W2=0; PORTE.F0=0;
}
}
//====================================//
//************************************//
void MANUAL() {
W1=0; W4=1;
while(X1==0){
while(X1==0)
{
if(W1==0 ){
MOTOR_vibrator_M11=1; MOTOR_Water_valve_Y32 =1; W1=1; }
if( SENSOR_LEVEL_1 ==1 ){ MOTOR_Mixing_M62 =1; }
if( SENSOR_LEVEL_2 ==1 ){ Helical_motor_M61 =1; }
if( SENSOR_LEVEL_3 ==1 ){ MOTOR_vibrator_M11=0; }
if( SENSOR_LEVEL_4 ==1 )
{
MOTOR_Water_valve_Y32 =0; for(X3=0; X3<M; X3++){ delay_ms(60000); }
MOTOR_Y33 =1;
X1=1;
}
}
X1=0;
while( X1==0 )
{
if( SENSOR_LEVEL_1 ==0){
for(X3=0; X3<M; X3++){ delay_ms(60000); }
END_ALL
X1 =1;
}
}
X1=0; delay_ms(1000);
if (Button(&PORTE, 1, 10, 1)){END_ALL END_OFF X1=1; W4=0; PORTB.F7=0; }
}
W4=0;
}
//===========================================//
void SET_PROGRAM() {
PORTB.F0=1;
PORTD.F1=1; delay_ms(800); PORTD.F1=0; delay_ms(500);
PORTD.F1=1; delay_ms(800); PORTD.F1=0; delay_ms(500);
X2=0;
while(X2==0)
{
PORTB.F1=1;
if(PORTC.F1==1){BEZR M ++; }
if(PORTC.F2==1){BEZR M =0; }
if(PORTC.F3==1){BEZR X2=1; }
if( M > 20 ){ M =0; }
} EEPROM_Write(0, M); delay_ms(10);
X2=0; PORTB.F2=1; PORTB.F1=0;
while(X2==0)
{
if(PORTC.F1==1){BEZR A ++; }
if(PORTC.F2==1){BEZR A =0; }
if(PORTC.F3==1){BEZR X2=1; }
if( A > 20 ){ A =0; }
}
PORTB.F0=0; PORTB.F2=0;
X2=0; EEPROM_Write(1, A); delay_ms(10);
}
//===========================================//
//************************************//
void main() {
TRISB=0; PORTB=0;
TRISD=252; PORTD=0;
TRISC=15; PORTC=0;
TRISA=1; PORTA=0;
TRISE=6; PORTE=0;
ADC_Init(); // Initialize ADC module with default settings //
adcon1=0x07;
InitTimer0();
BEZRR BEZRR BEZRR delay_ms(250);
M = EEPROM_Read(0);
A = EEPROM_Read(1);
/*EEPROM_Write(0, 0);
EEPROM_Write(1, 0);
EEPROM_Write(2, 0);
EEPROM_Write(3, 0);*/
//====================//
while(1){
PORTE.F0=0;
PORTB.F7=0;
if (Button(&PORTC, 0, 10, 1)) {BEZR delay_ms(350); SET_PROGRAM();} // SET //
if (Button(&PORTE, 1, 10, 1))
{
delay_ms(5000);
if (Button(&PORTE, 1, 10, 1)){ X1=0; BEZR AUTO(); }
}
if (Button(&PORTE, 2, 10, 1))
{
delay_ms(5000);
if (Button(&PORTE, 2, 10, 1)){ X1=0; BEZR MANUAL(); }
}
}
}
شرح البرنامج وطريقة تشغيلة
أولا في بداية توصيل التيار للدائرة تصدر 3 اصوات جرس لتخبرك أن البرنامج جاهز للعمل ..
هنا يجب ضبط واختيار وقت البرنامج الأول والثاني .. أضغط علي مفتاح ( الضبط ). وأرفع صابعك من علي المفتاح عند سماع صوت البازر ..
بعد ذالك تجد ذالك تجد ثلاث صفارات بازر متتالية وتلاحظ ليد TEMER قد اشتعل لخبرك بأنك الأن في قائمة الضبط وبعد ذالك تجد الليد . TEM_1. قد اشتعل لخبرك أنك تختار وتضبط وقت البرنامج الأول بعد ذالك اضغط علي مفتاح. DOWN لتصفير التايمر وبعد ذالك اضغط علي مفتاح . UP ضغطة سريعة وسوف تلاحظ اصدار صوت بازر وهنا أنت اخترت واحد دقيقة وعند الضغط علي مفتاح. . UP مرة اخرة يصدر صوت بازر وهنا اصبح الوقت دقيقتان وهكذا كل ضغطة تزود دقيقة .. بعد اختيار عدد الدقائق للتايمر الأول .. أضغط علي مفتاح. OK لحفظ الحالة وسوف تلاحظ ان الليد TEM_1 قد انطفأ والليد TEM_2 اشتعل وعند اشتعال الليد. TEM_2 هنا يخبرك بأنك في قائمة ضبط التايمر الثاني .. وبنفس الشرح أضغط علي مفتاح. DOWN لتصفير التايمر وبعد ذالك ضغط علي مفتاح . UP ضغطة سريعة لذيادة عدد الدقائق اللتي تريدها. وبعد ذالك اضغط علي مفتاح OK هنا البرنامج قد تم ضبط الأوقات وجاهز للتشغيل دورة واحدة أ تشغيل تلقائي ...
وباقي خطوات البرنامج انت تعرفها حيث سوف يتفاعل البرنامج مع الحساسات ..
بالنسبة لمفتاحان تشغيل دورة واحدة أو تلقائي ..
هنا لو تم لف مفتاح الثلاث تكات ووقفت مثلا علي التكة الثانية سوف ينتظر البرنامج 5 سواني لو مازلت واقف علي التكة الثانية سوف يدخل البرنامج في تشغيل دورة واحدة .. وهنا البرنامج يعطي للمستخدم 5 سواني عند تحريك مفتاح التشغيل ليري أين وقفت وعندها ينفذ أمر التشغيل علي حسب مكان المفتاح ...
التعديل الأخير تم بواسطة : عبدالله حجازى بتاريخ 31-12-2019 الساعة 05:21 AM
|