جستجو در موضوعات الكترونيكهمه چیز درباره الکترونیک  

 

  سلام...به وبلاگ من خوش امدي


همه چیز درباره الکترونیک

پست الكترونيک

آرشيو

خانه

 

۱۳۸٤/٥/۱

 

 

 

برنامه c51اين پروژه برای کسانيکه علاقه مند به برنامه نويسی باميکرو 8051هستند اموزشی ومفيد هستش

توضيحات:

max7219به واسط سريال شبيه spiاحتياج دارد که توانايی استفاده از ۸۰۵۱ را به ما ميدهد از انجاکه تعداد پين های پورت i/oدر۸۰۵۱محدود است max7219اجازه ميدهد ۴ تايمر داشته باشيم و هر کدام از تايمرها دو منطق دارد برای خروجی از ای سی ۷۴۰۷ اپن کلکتور که در پروژه های ميکروکنترلری پر مصرف هست استفاده شده ۴ کليد فشاری برای set timeکردن هر تايمر استفاده ميشود هر تايمر دو ledدارد که تايمر ۱و۲ برای دقيقه و تايمر ۳و۴ برای شمارش ساعت به کار رفته هنگام تايم اوت صفحه نمايش صفر را نشان خواهد داد و بيت خروجی فعال می شود دو بازر برای الارم تايمر ۱و۲ استفاده می شود

سخت افزار:

mcuاستفاده شده ميکرو ۸۹۵۱با کريستال۱۱.۰۵۹۵mhzکه سيگنالهای clk,din,loadرا کهmax7219به ان احتياج دارد را توليد می کند

مدار داخلی ساده است و از درايوينگ جريان استفاده می کند ۱۵ ميلی امپر برای mc3040کافی است تراياک خروجی رله الکترومکانيکی ۲۲۰ ولت را درايو می کند از انجا که رله دو اتصال no,ncدارد بنابر اين دو عملکرد acتهيه ميکند حالت روشن  برای noوحالت خاموش برای nc

اين تايمر سوييچ اصلی برای روشن و خاموش کردن برد ندارد و از روش power down استفاده شده  وقتی همه ledها روشن هستن جريان dcدر حدود ۹۰ ميلی امپر جاری می شود و  در مد پاور داون جريان نزديک به ده ميلی امپر هست

نرم افزار:

هر ده ميلی ثانيه حلقه تکرار می شود و بر نامه های زير را انجام ميدهد(البته به خاطر فارسی بودن صفحات شما بر عکس ميبينيد)

 while(1)
  {
     while(!cputick)  // run following tasks every 10ms
     ;
     cputick = 0;
     set_timer();    // check key pressed 
     run_timer();    // run four timers
     key_release();    // check if key has been released
     updatedisplay();    // send data to MAX7219
     ring1();            // optional buzzer alarm1
     ring2();             // optional buzzer alarm2
  }

اين قسمت بيت ورودی داده شده را کنترل خواهد کرد (p3.2 تا p3.7)کنترل به وسيله andکردن بايت maskبا بيت مشخص شده انجام می شود مثلا در مورد p3.2 می خواهيم بيت ۲ از پورت ۳ را با بايت 0x04کنترل کنيم و اگر جواب صفر است flag1را يک ميکنيم که نشان ميدهد کليد يک فشار داده شده سپس index را کنترل ميکنيم اگر شرط بر قرار باشد تايمر يک بار گذاری خواهد شد برای بقيه کليد ها هم به مهين صورت است 

// reload preset time value from preset array for each key pressed

set_timer()
{
    if((flag1&1) == 0)    // enter only when keys have been released 
    {
    if((P3&0x04) == 0)
      {
        flag1 |= 1;
        if(index1>=9) index1 =0;
        timer1= preset_timer1[index1++];
      }

اگر هيچ کليدی فشار داده نشده باشد به صورت زير است يعنی همه بيت ها يک هستن وز مانی که کليدی فشار داده شد اين بيت صفر می شود

key_release()
{
    if((P3&0x3c) == 0x3c)
     flag1 &= ~1;
}

اين يک توضيح کوتاه راجع به برنامه بود با مراجعه به لينکهای زير می توانيد کل برنامه رو مشاهده کنيد وشماتيک مدار رو دريافت کنيد

Firmware (Micro-C for 8051)

Firmware (sdcc for 8051)

Intel Hex files (Micro-C for 8051)

ليست قطعات

شماتيک مدار(فايل pdf)

 

 پيام هاي ديگران ()

شيلا ستاري

لینک ها

پروژه های الکترونيک

انجمن تخصصي برق و الكترونيك

جستجو در موضوعات الكترونيك

بر و بچ برق

اموزش الكترونيك

اموزش ميكرو پي اي سي

اقاي لاچيني

لوگوي وبلاگ شما

Home افراد انلاين
Google




وبلاگ های دوستان