طب دلوقتى انتم ريسيتم على انهى دايره
انا عاوز اعمل الحاجات دى بس توهت منكم
عرض للطباعة
طب دلوقتى انتم ريسيتم على انهى دايره
انا عاوز اعمل الحاجات دى بس توهت منكم
الموضوع و قف على كده و لا ايه
المفروض ان الاجازه ابتدت
ياريت الموضوع يكمل يا جماعه هيبقى سبق لنايل موتورز و اعضاء نايل موتورز
عاوزين نستفاد
جميل جدا ان تستخدم علمك في اسعاد الاخرين
ربنا يوفقك
انا عملت البرنامج بتاع الpic بلغة C
بس لسه ما اشتريتش اي حاجة
وادى الكود للى عايز يكمل معايا
كود:const char LED_MASK[10] = {0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F};
unsigned counter;
long tmp, icounter; // counter variable, temporary variable
long rpm;
unsigned cylinders = 4 ;
int leds ;
unsigned tmpled ;
unsigned i ;
unsigned played = 0 ;
unsigned digit ;
void interrupt() {
if (INTCON.INTF) {
counter++;
while(PORTB.F0);
}
if (INTCON.T0IF) {
icounter++;
if(icounter == 8)
{
if(~counter%2 && counter) counter++;
rpm = counter * 2 *60 * 2 /cylinders ;
icounter = 0;
counter = 0 ;
if(rpm >= 10000 ) rpm = 9999 ;
}
TMR0 = 12 ;
}
INTCON = 0xB0;
}//~
char Extract_Digit(unsigned number, char position) {
// Function extracts digit from 4-digit number according to position
// (0 is most significant)
char digit0, digit1, digit2, digit3;
// Note: unsigned literals in arithmetic expressions produce less code!
delay_ms(10) ;
digit0 = number%10u; // least significant digit
if (position == 0) return digit0;
digit1 = (number%100u)/10u;
if (position == 1) return digit1;
digit2 = (number%1000u)/100u;
if (position == 2) return digit2;
digit3 = number/1000u; // most significant digit
if (position == 3) return digit3;
return 0;
}
void main() {
TRISA = 0; // PORTA is output
TRISD = 0; // PORTD is output
TRISB = 255;
TRISC = 0;
TRISE = 0;
OPTION_REG = 0x07 ;
INTCON = 0xB0;
rpm = 4;
counter = 0;
icounter = 0;
Sound_Init(&PORTE, 0);
PORTD = LED_MASK[6];
PORTA = 1;
delay_ms(1000);
do { // main loop
// Backup counter as interrupt might change it
tmp = rpm;
// Display digit0 (least significant)
PORTA = 0;
PORTD = LED_MASK[Extract_Digit(tmp,0)];
PORTA = 1; // Ones display on
Delay_ms(10);
// Display digit1
PORTA = 0; // All displays off
if (tmp >= 10u) PORTD = LED_MASK[Extract_Digit(tmp,1)]; else PORTD = 0 ;
PORTA = 2; // Tens display on
Delay_ms(10);
// Display digit2
PORTA = 0; // All displays off
if (tmp >= 100u) PORTD= LED_MASK[Extract_Digit(tmp,2)]; else PORTD = 0 ;
PORTA = 4; // Hundreds display on
Delay_ms(10);
// Display digit3 (most significant)
PORTA = 0; // All displays off
if (tmp >= 1000u) PORTD = LED_MASK[Extract_Digit(tmp,3)]; else PORTD = 0 ;
PORTA = 8; // Thousands display on
Delay_ms(10);
tmpled = 1 ;
leds = rpm /1000u;
for( i=0;i< leds ; i++) tmpled = tmpled * 2 ;
PORTC = tmpled - 1 ;
delay_ms(1);
if ( rpm >= 6500 && !played)
{
Sound_Play(12000, 500);
played = 1 ;
}
else if (rpm < 6500 && played)
{
played = 0;
}
} while (1); // endless loop
}
تسلم ايدك يا عمرو باشا
والله يااستاذ خالد انا لسة هاخلص امتحانات على 31 / 7 معلش بقى اصلى جامعة مفتوحة
والاخ midomizo مشغول برضة تقريبا لحد اخر شهر 7
احنا كنا متفقين اننا نشوف حد يعملنا الكود بتاع البرنامج وهانشترى بروجرامر ونجرب لو نفع يبقى خلاص نبدا ننفذ على طول
ولو نفعت هانبقى نجيب عداد من بتوع قياس الشحن مثلا بتاع البطارية ودة تمنة مش غالى ونشيل منة المكونات ونحط الدايرة والسفن سيجمنت جواة دى الفكرة الى كانت فى بالى
مثلا زى الصورة دى
http://img810.imageshack.us/img810/3674/img0071b.jpg
الشغل هايبقى باذن الله على ال بك 16f84
لان دة تقريبا اقل بك فى السوق ولو حد يعرف بك تانى احسن منة يا ريت يقولنا
مش فاكر يا ميسو كان فى حد فى موضوع عداد الحرارة الديجيتال الى انت كنت عايز تعملة كان فى حد مع الاخوة عمل الدايرة وبرمجها كمان وباعتلنا صورتها من برنامج بروتيس
بس مش فاكر مين
بس ماعتقدش ان الدايرة هاتبقى صعبة يعنى يا معلم السفن سيجمنت والبك والكريستالة وخلاص على كدة