اطلاعیه

Collapse
No announcement yet.

روشن کردن LED با یک کی پد

Collapse
X
 
  • فیلتر
  • زمان
  • Show
Clear All
new posts

    روشن کردن LED با یک کی پد

    سلام به همه ی دوستان
    یک LED دارم و یک صفحه کلید 4*4 و یک PIC . اگه کلید 1 صفحه کلید رو یک ثانیه نگه دارم LED 1 به مدت 10s روشن باشد و اگر کلید 1 صفحه کلید رو 2s نگه دارم LED به مدت 9s روشن باشد و این رویه تا زمان 10s ادامه داشته باشد به این صورت که اگر کاربر کلید 1 صفحه کلید رو به مدت 10 ثانیه پایین نگه دارد LED هم به مدت 1s روشن باشد .
    حالا از اونجایی که من نه با PIC کار کردم نه با زبان C اگه دوستان تنها دستوراتی از c رو که در این پروژه به کار می آیند رو معرفی کنند ممنون میشم در ضمن من کامپایلر CCS رو نصب کردم نظرتون چیه ؟در مقایسه با بقیه کامپایلر ها چطوری؟ خوبه یا نه به فکر یکی دیگه باشم ؟
    این صورت سئوالی بود که چند وقت پیش گذاشتم ...
    پیغام تیم نظارتی دوست عزیز برای چندمین بار هست که شما تاپیکی با نام نامناسب ایجاد می کنید. لطفاً جهت حفظ نظم ، نام تاپیک را مرتبط با موضوع تاپیک انتخاب نمایید
    حالا من اشتباه کردم ببخشید . چرا دیگه گزینه های پاسخ رو برمی دارید ؟ من نمیدونم چرا همیشه حاشیه ها از اصل موضوع مهمتره ؟!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
    حالا در هر صورت چون مشکلم حل شده این تاپیک رو مجددا گذاشتم . شاید بدرد کس دیگه ایم بخوره
    //// this project adjust the lighting ON and OFF the LED according by
    ////the holding time of key 1 at 4*4 key pad
    ////////////////Define variants////////////////////
    unsigned short kp;
    unsigned char txt[1];
    unsigned char txt1[1];
    unsigned short kp1;
    unsigned short count;
    /////////////This Function showes numbers on the LCD and according the time of
    ////////////holding the key 1 turn on and turn off the LED
    void LCDshow(){
    kp = Keypad_Read();
    if (kp==1) count++;
    WordToStr(kp, txt);
    Lcd_out(1, 10,txt);
    WordToStr(count, txt1);
    Lcd_out(2, 10,txt1);
    delay_ms(500);
    Lcd_Cmd(LCD_CLEAR);
    if (kp!=1) {
    if(count==2) {portc.f0=1;delay_ms(10000);portc.f0=0;}
    if(count==4) {portc.f0=1;delay_ms(9000);portc.f0=0;}
    if(count==6) {portc.f0=1;delay_ms(8000);portc.f0=0;}
    if(count==8) {portc.f0=1;delay_ms(7000);portc.f0=0;}
    if(count==10) {portc.f0=1;delay_ms(6000);portc.f0=0;}
    if(count==12) {portc.f0=1;delay_ms(5000);portc.f0=0;}
    if(count==14) {portc.f0=1;delay_ms(4000);portc.f0=0;}
    if(count==16) {portc.f0=1;delay_ms(3000);portc.f0=0;}
    if(count==18) {portc.f0=1;delay_ms(2000);portc.f0=0;}
    if(count==20) {portc.f0=1;delay_ms(1000);portc.f0=0;}
    count=0;
    }
    }
    /////////////Main Function/////////////////////////////////////////
    void main() {
    // portc.f0=0;
    trisc.f0 =0;
    Keypad_Init(&PORTB);
    Lcd_Config(&PORTc,1,2,0,7,5,4,3); // Initialize LCD on PORTC
    Lcd_Cmd(LCD_CLEAR); // Clear display
    Lcd_Cmd(LCD_CURSOR_OFF); // Cursor off
    Lcd_Out(1, 1, "Key :"
    while(1){
    LCDshow();
    }
    }

    #2
    پاسخ : روشن کردن LED با یک کی پد

    حالا میخوام زمان یک ثانیه رو با تایمر بسازم کسی میتونه کمک کنه ؟ من از کامپایلر میکرو سی استفاده میکنم و pic16F873A

    دیدگاه


      #3
      پاسخ : روشن کردن LED با یک کی پد

      سلام به همگی
      کسی میدونه مشکل این کدها چیه ؟ این error میده : Assigning to non-lvalue
      int count = 0;
      void main ()
      {
      portb=0;
      trisb=0;
      TMR0=0;
      T0CS=0;
      T0SE=0;
      PSA=0;
      PS0=1;
      PS1=1;
      PS2=1;
      while(1)
      {
      while(!t0if)
      {
      t0if=0;
      count++;
      if(count==15) {count=0;
      portb=~portb;
      }
      }
      }
      }
      من میخوام هر یک ثانیه پورت B تغییر وضعیت بده در ضمن من از کامپایلر میکروسی و PIC16F877 استفاده میکنم .

      دیدگاه


        #4
        پاسخ : روشن کردن LED با یک کی پد

        نوشته اصلی توسط mahdi-firoozi
        سلام به همگی
        کسی نظری نداره ؟!! بد جوری کلافم کرده . :angry:
        سلام.
        کدها رو به صورت زیر تغییر بدید. در ضمن سعی کنید نام رجیسترها و پورت ها رو با حروف بزرگ بنویسید.



        int count = 0;

        void main ()
        {


        portb=0;
        trisb=0;

        TMR0=0;
        OPTION_REG.T0CS=0;
        OPTION_REG.T0SE=0;
        OPTION_REG.PSA=0;
        OPTION_REG.PS0=1;
        OPTION_REG.PS1=1;
        OPTION_REG.PS2=1;

        while(1)
        {
        while(!INTCON.TMR0IF)
        {
        INTCON.TMR0IF=0;
        count++;
        if(count==15)
        {

        count=0;
        portb=~portb;

        }
        }
        }
        }

        دیدگاه

        لطفا صبر کنید...
        X