السلام عليكم ورحمه الله وبركاته ..
اقدم لكم اليوم ....
نظام الكتروني لشحن البطاريه وفصل الشحن عند الإكتمال اتوماتيكي,,
يتميز بسهوله تنفيذ الدائرة الإلكترونيه ... وايضااااا يصلح للإستخدام مع انواع كثيرة من البطاريات .. وايضااااا يصلح مع تطبيقات ومشاريع عديده .. تحتاج الي مراقبه حاله معينه .. أو جهد كهربي ..
اليكم الدائرة ..
كود البرنامج ..
كود:
#define FOSC_HS 0X31FB ;
#define temr delay_ms(350);
unsigned int ADC_LUX, ADC_ADJ;
unsigned long int TCOUNT;
// Interrupt Handler
void interrupt()
{
ADC_ADJ= ADC_Read(1);
// Timer0 Interrupt - Freq = 15.26 Hz - Period = 0.065536 seconds
if (INTCON.TMR0IF == 1) // timer 0 interrupt flag
{
TCOUNT = TCOUNT + 1;
if (TCOUNT == 100000) //332300 COUNT EQUALS TO 8 HOURS
TCOUNT = 0;
// GPIO.GP4 = ~GPIO.GP4; // Toggle PORTB bit0 LED
INTCON.TMR0IF = 0; // clear the flag
INTCON.TMR0IE = 1; // reenable the interrupt
TMR0 = 0; // reset the timer preset count
}
}
//********************************************************//
void main() {
FOSC_HS
ADC_Init();
ADCON0 = 0x00;
ANSEL = 0X03; // AN0 & AN1 CONFIGURED AS ANALOGUE INPUT
TRISIO = 0b00001010;
GPIO = 0X00;
CMCON = 10;
//Timer0 Registers Prescaler= 256 - TMR0 Preset = 0 - Freq = 15.26 Hz - Period = 0.065536 seconds
OPTION_REG.T0CS = 0; // bit 5 TMR0 Clock Source Select bit...0 = Internal Clock (CLKO) 1 = Transition on T0CKI pin
OPTION_REG.T0SE = 0; // bit 4 TMR0 Source Edge Select bit 0 = low/high 1 = high/low
OPTION_REG.PSA = 0; // bit 3 Prescaler Assignment bit...0 = Prescaler is assigned to the Timer0
OPTION_REG.PS2 = 1; // bits 2-0 PS2:PS0: Prescaler Rate Select bits
OPTION_REG.PS1 = 1;
OPTION_REG.PS0 = 1;
TMR0 = 0; // preset for timer register
// Interrupt Registers
INTCON = 0; // clear the interrpt control register
INTCON.TMR0IE = 1; // bit5 TMR0 Overflow Interrupt Enable bit...1 = Enables the TMR0 interrupt
INTCON.TMR0IF = 0; // bit2 clear timer 0 interrupt flag
INTCON.GIE = 1; // bit7 global interrupt enable
loop1: GPIO=0;
delay_ms(500);
while(1)
{
GPIO=0; temr GPIO=1; temr
GPIO=5; temr GPIO=21; temr
if(ADC_ADJ>1000){ GPIO=53; temr goto loop; }
}
loop:
GP5_bit=1; temr
while(1)
{
GP4_bit=1; GP2_bit=1;GP0_bit=1;temr GP4_bit=0; GP2_bit=0;GP0_bit=0;temr
if(ADC_ADJ<900){ GPIO=0; temr goto loop1; }
}
}
سيتم وضع شرح مختصر لفكرة عمل البرنامج والدائرة ..
تحياتي للجميع ...
وكل عام وأنتم بخير وأسرة المنتدي الكبير ..
"" القرية الإلكترونية ""