 |
:: عضو ذهبي ::
تاريخ التسجيل: Apr 2011
الدولة: مصر .. محافظة دمياط
المشاركات: 1,682
|
|
نشاط [ عبدالله حجازى ]
قوة السمعة:
|
|
18-06-2020, 08:08 AM
المشاركة 15
|
|
السلام عليكم ورحمه الله
وعد الحر دين عليه
وكما وعدتكم أصدقائي اقدم لكم الأصدار الأول لنظام إدارة
وسيطرة علي ماكينة إعادة لف المحركات
عداد سهل في الضبط مع ليدات مساعدة لتخبر المستخدم بحالة العداد
مثل قائمة ضبط العداد وحالة المحرك يعمل أو متوقف وحاله الأرقام عند
انتهاء العدد اللذي توافق مع العدد المدخل للعداد
مع امكانيه عمل ايقاف مؤقت للعداد وتشغيله
أقول أن هذا هو الإصدار الأول للنظام عداد وتحكم في ماكينة اعادة
لف المحركات لأن توجد اضافات سوف اضيفها في الأصدار الثاني
حيث سيكون هناك تحكم في سرعة المحرك واختيار عدد الدورات في الدقيقه
مخطط الدائرة لأطراف المعالج مع المكونات المحيطه

كما نعلم هذا المخطط لتوضيح أطراف المحرك ووظيفة كل طرف
وعند التنفيذ العملي سيكون علي كل واحد اختيار المكونات اللازمه لطبيعة
عمله واختيار المحرك المناسب وهكذا من مكونات
البرنامج / الكود
كود:
// ENG ABDALLA HYGAZY //
// COUNTER CONTROL //
// DATA 2020/6/17 //
// Frequency 8 MHz //
// PIC16F877A //
// Site https://www.qariya.info/vb/showthread.php?t=247636 //
#define The_engine_stops PORTD.f3
#define MOTOR_Brakes PORTD.f2
#define MOTOR PORTD.f0
#define DP PORTB.f7
#define BUZ PORTD.F1=1; delay_ms(250); PORTD.F1=0; delay_ms(80);
#define BUZ_count_is_over for(X=0;X<4;X++){PORTD.F1=1; delay_ms(550); PORTD.F1=0; delay_ms(150); }
//********************========************************//
unsigned int STOP=0,NEXT,X;
unsigned int DATA_1,DATA_2,DATA_3,DATA_4,DATA_CC;
unsigned int AA1=0,AA2,AA3,AA4=0,AA5=0,a1=0,Brakes=0,START;
unsigned short mask(unsigned short num);
long tlong;
//********************========************************//
//======================= show_adc ==========================================//
/*void show_adc() {
adc_rd = ADC_Read(0);
tlong = (long)adc_rd * 5000;
tlong = tlong / 1023;
}*/
//=============== show_adc === END ========================================//
//=========================== void SETENG ================================//
void SETENG(){ PORTC.F6=1;
DATA_1 = DATA_1 / 1000;
DATA_2 = DATA_2 / 100;
DATA_3 = DATA_3 / 10 ;
while (NEXT==0) {
PORTA=1;
PORTB=mask(DATA_1);delay_ms(1);
//********************************************************//
if(PORTD.F7==1){ DATA_1 ++; delay_ms(350);}
if(PORTD.F6==1){ DATA_1 --; delay_ms(350);}
if(DATA_1>9 ){ DATA_1 =9; delay_ms(20);}
if(DATA_1<0 ){ DATA_1 =0; delay_ms(20);}
if(PORTD.F5==1){BUZ BUZ NEXT=1; delay_ms(500);}
//********************************************************//
}
EEPROM_Write(0, DATA_1); delay_ms(10); NEXT=0;
//=============================================================================//
while (NEXT==0) {
PORTA=1;
PORTB=mask(DATA_1); delay_ms(1);
PORTA=2;
PORTB=mask(DATA_2); delay_ms(1);
//********************************************************//
if(PORTD.F7==1){ DATA_2 ++; delay_ms(350);}
if(PORTD.F6==1){ DATA_2 --; delay_ms(350);}
if(DATA_2>9 ){ DATA_2 =9; delay_ms(20);}
if(DATA_2<0 ){ DATA_2 =0; delay_ms(20);}
if(PORTD.F5==1){BUZ BUZ NEXT=1; delay_ms(500);}
//********************************************************//
}
EEPROM_Write(1, DATA_2); delay_ms(10); NEXT=0;
//================================================================================//
while (NEXT==0) {
PORTA=1;
PORTB=mask(DATA_1); delay_ms(1);
PORTA=2;
PORTB=mask(DATA_2); delay_ms(1);
PORTA=4;
PORTB=mask(DATA_3); delay_ms(1);
//********************************************************//
if(PORTD.F7==1){ DATA_3 ++; delay_ms(350);}
if(PORTD.F6==1){ DATA_3 --; delay_ms(350);} // MEN HONAA KAMEEL //
if(DATA_3>9 ){ DATA_3 =9; delay_ms(20);}
if(DATA_3<0 ){ DATA_3 =0; delay_ms(20);}
if(PORTD.F5==1){BUZ BUZ NEXT=1; delay_ms(500);}
//********************************************************//
}
EEPROM_Write(2, DATA_3); delay_ms(10); NEXT=0; // STOP=0;
//========================================================================//
while (NEXT==0) {
PORTA=1;
PORTB=mask(DATA_1); delay_ms(1);
PORTA=2;
PORTB=mask(DATA_2); delay_ms(1);
PORTA=4;
PORTB=mask(DATA_3); delay_ms(1);
PORTA=8;
PORTB=mask(DATA_4); delay_ms(1);
//********************************************************//
if(PORTD.F7==1){ DATA_4 ++; delay_ms(350);}
if(PORTD.F6==1){ DATA_4 --; delay_ms(350);}
if(DATA_4>9 ){ DATA_4 =9; delay_ms(20);}
if(DATA_4<0 ){ DATA_4 =0; delay_ms(20);}
if(PORTD.F5==1){BUZ BUZ NEXT=1; delay_ms(500);}
//********************************************************//
}
EEPROM_Write(3, DATA_4); delay_ms(10); NEXT=0; STOP=0; // MEN HONAA KAMEEL //
//========================================================================//
DATA_1 = DATA_1 *1000;
DATA_2 = DATA_2 *100;
DATA_3 = DATA_3 *10;
tlong = DATA_1 + DATA_2 + DATA_3 + DATA_4;
}
//=============== void SETENG ===== END ==============================//
//============ Timer0 =========== InitTimer0 ========================//
//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;
}
//======================== END ===============================//
//======================== Interrupt ===============================//
void Interrupt(){
if (TMR0IF_bit){
TMR0IF_bit = 0;
TMR0 = 6;
//Enter your code here
AA4++; AA5++;
if( AA4==1000 ) { AA4=0; }
if(STOP==0)
{
if(AA5==1)
{
a1 = tlong / 1000;
PORTA=1;
PORTB=mask(a1); a1=0;
}
if(AA5==2)
{
a1 = (tlong % 1000)/100;
PORTA=2;
PORTB=mask(a1); a1=0;
}
if(AA5==3)
{
a1 = (tlong % 1000)%100/10;
PORTA=4;
PORTB=mask(a1); a1=0;
}
if(AA5==5)
{
a1 = (tlong % 1000)%100%10;
PORTA=8;
PORTB=mask(a1); a1=0;
}
if(AA5==6){ AA5=0;}
if(tlong>9999){ tlong=9999; PORTD.F0=0; }
}
if(PORTD.F5==1){ BUZ BUZ STOP=1; SETENG();}
}
}
//=================== Interrupt == END ===============================//
//======================== void main ==========================//
void main() {
TRISB=0; PORTB=0;
TRISD=240; PORTD=0;
TRISC=128; PORTC=0;
TRISE=7; PORTE=0;
TRISA=0; PORTA=0;
CMCON=0;
ADCON0=0x00;
InitTimer0();
DATA_1 = EEPROM_Read(0); delay_ms(10);
DATA_1 = DATA_1 *1000;
DATA_2 = EEPROM_Read(1); delay_ms(10);
DATA_2 = DATA_2 *100;
DATA_3 = EEPROM_Read(2); delay_ms(10);
DATA_3 = DATA_3 *10;
DATA_4 = EEPROM_Read(3); delay_ms(10);
delay_ms(1000);
BUZ BUZ
loop:
PORTD.F3=1; PORTC.F0=0; Brakes=0; MOTOR_Brakes=0;
PORTC.F1=0;
tlong = DATA_1 + DATA_2 + DATA_3 + DATA_4;
DATA_CC = tlong ;
while(1){
if(PORTD.F4==1)
{
delay_ms(250);
MOTOR=1; MOTOR_Brakes=0;PORTC.F1=1; The_engine_stops=0; tlong =0;
while(Brakes==0){
if(PORTC.F7==1 && START==0) { while(PORTC.F7==1){ }tlong ++; }
if(tlong >= DATA_CC )
{
MOTOR=0; MOTOR_Brakes=1; The_engine_stops=1;
PORTC.F0=1; Brakes=1; BUZ_count_is_over START=0; goto loop;
}
if(PORTD.F4==1) { MOTOR=0; MOTOR_Brakes=1; delay_ms(250); START++; }
if(START==1 ) { The_engine_stops=1; MOTOR=0; }
if(START==2 ) { MOTOR_Brakes=0; The_engine_stops=0; MOTOR=1; START=0; }
}
}
}
}
//====================== void main === END ==========================//
//======================== switch (num) ==========================//
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 ==========================//
رابط تحميل المشروع / مخطط / محكاة / كود البرنامج
https://drive.google.com/drive/folde...oz?usp=sharing
التعديل الأخير تم بواسطة : عبدالله حجازى بتاريخ 18-06-2020 الساعة 08:35 AM
|