Results for "Pic16f887"
Pic16F887 - Điều khiển 1 led đơn bằng 2 button .

Giới thiệu :

 Hôm nay mình sẽ hướng dẫn các bạn cách điều khiển 1 led đơn bằng 2 button đơn giản ( 1 button làm led sáng , 1 button làm led tắt ) sử dụng vi điều khiển pic 16f887 . Mời các bạn theo dõi !!!

Chuẩn bị :

Pic16f887 .
Led đơn ( màu sắc tùy ý ) .
Trở : 1 con  (  để bảo vệ led ( tùy theo màu sắc led )
         1 con (1k-10k)
1 button ( 2 pin )

Lắp mạch :


 Code :

#include <16f887.h>
#fuses noprotect, nowdt, nolvp, hs, put
#use delay(clock=20Mhz)
#define bt1 pin_B0
#define bt2 pin_B1
void main()
{
  set_tris_D(0x00);
  set_tris_B(0xff);
   while(TRUE)
   {
     if(!input(bt1))
      {
        do{}
        while (!input(bt1));//chống rung cho button
        output_high(pin_D0);
     }
     if(!input(bt2))
      {
        do{}
        while (!input(bt2));
        output_low(pin_D0);
     }
   }
}

Kết quả :



Có gì thắc mắc các bạn cứ nhận xét bên dưới bài viết nhé ^^ ,
Chúc các bạn thành công .

thitech Thứ Ba, 22 tháng 5, 2018
Pic16F887 - Điều khiển 2 led đơn bằng 1 button .

Giới thiệu :

 Hôm nay mình sẽ hướng dẫn các bạn cách điều khiển 2 led đơn bằng button đơn giản sử dụng vi điều khiển pic 16f887 . Mời các bạn theo dõi !!!

Chuẩn bị :

Pic16f887 .
2 Led đơn ( màu sắc tùy ý ) .
Trở : 2 con  (  để bảo vệ led ( tùy theo màu sắc led )
         1 con (1k-10k)

Lắp mạch :


 Code :

#include <16f887.h>
#fuses noprotect, nowdt, nolvp, hs, put
#use delay(clock=20Mhz)
#define button pin_B0
int8 i; // khai báo biến i
void main()
{
   set_tris_D(0x00);//khởi tạo port D xuất mức thấp
   set_tris_B(0xff);//khởi tạo port B xuất mức cao
   while(TRUE)//vòng lặp
   {
   i=0;//cho ban đầu i=0
      if(!input(button))// kiểm tra trạng thái button
      {
        do{}// chống rung
         while (!input(button));// bấm rồi nhả ra mới tăng giá trị biến i
         i++;
         if(i==4)// nếu i=4 cho i quay về 0
         {
           i=0;
         }
        delay_ms(5);
        if(i==0)
        {
          output_low(pin_D0);
          output_low(pin_D1);
        }
         if(i==1)
        {
          output_high(pin_D0);
          output_low(pin_D1);
        }
         if(i==2)
        {
          output_high(pin_D1);
          output_low(pin_D0);
        }
         if(i==3)
        {
          output_high(pin_D0);
          output_high(pin_D1);
        }
      }
   }

}

Kết quả :

Có gì thắc mắc các bạn cứ nhận xét bên dưới bài viết nhé ^^ ,
Chúc các bạn thành công .

thitech
Pic16F887 - Điểu khiển 1 led đơn bằng button .

Giới thiệu :

 Hôm nay mình sẽ hướng dẫn các bạn cách điều khiển 1 led đơn bằng button đơn giản sử dụng vi điều khiển pic 16f887 . Mời các bạn theo dõi !!!

Chuẩn bị :

Pic16f887 .
Led đơn ( màu sắc tùy ý ) .
Trở : 2 con ( 1 để bảo vệ led ( tùy theo màu sắc led ) 2 để hạn dòng vào pic ( 1k-10k)).

Lắp mạch :

 Code :

#include <16f887.h>
#fuses noprotect, nowdt, nolvp, hs, put
#use delay(clock=20Mhz)
#define led pin_D0// khai báo chân led
#define button pin_B0// khai báo chân button
void main()
{
 set_tris_D(0x00);// khởi tạo port D xuất mức thấp
 set_tris_B(0xff); // khởi tạo port B xuất mức cao
   while(TRUE)
   {
      if(input(button)==0)// nếu ngõ vào chân button là mức thấp thì xuất mức cao chân led
      {// lưu ý là khi nhấn nút phải giữ led mới sáng
       output_high(led);
      }
      else
      {
      output_low(led);// ngược lại mức thấp .
      }
   }

}

Kết quả :

 Khi chưa nhấn nút thì led tắt .

Khi nhấn giữ thì led sáng .
Chúc các bạn thành công .

thitech
Pic16F887 - Led trái tim .

Giới thiệu :

Hôm nay mình sẽ giới thiệu các bạn cách điều khiển 1 dãy led đơn hiển thị hiệu ứng theo hình trái tim ❤ sử dụng pic16f887 . Mời các bạn theo dõi ☺

Chuẩn bị :

Led đơn  : 32 con ( màu sắc tùy ý ) .
Trở : 32 con ( tùy màu sắc led mà chọn ) .
Pic 16F887 .

Lắp mạch :


Code :

#include <16F887.H>
#FUSES NOWDT,PUT,NOPROTECT,NOLVP,INTRC_IO
#USE DELAY(CLOCK=8M)
UNSIGNED INT32 I,X,Y,J,CD,DC,F,K;
VOID SANGHET()
{ SET_TRIS_B(0X00);SET_TRIS_C(0X00);SET_TRIS_D(0X00);SET_TRIS_A(0X00);

      OUTPUT_B(0XFF); OUTPUT_C(0XFF);OUTPUT_D(0XFF);OUTPUT_A(0XFF);
      DELAY_MS(1000);
      OUTPUT_B(0X00); OUTPUT_C(0X00);OUTPUT_D(0X00);OUTPUT_A(0X00);
      DELAY_MS(1000);
    
}
VOID SANGDUOI()
{SET_TRIS_b(0X00);SET_TRIS_C(0X00);SET_TRIS_D(0X00);SET_TRIS_A(0X00);
  X=0X00000000;
  FOR(I=0;I<32;I++)
   {
      X=(X<<1)+0X01;
      OUTPUT_B(X);
      OUTPUT_C(X>>8);
      OUTPUT_D(X>>16);
      OUTPUT_A(X>>24);
      DELAY_MS(100);
   }
   FOR(I=0;I<32;I++)
   { X=(X>>1);
   OUTPUT_B(X);
   OUTPUT_C(X>>8);
   OUTPUT_D(X>>16);
   OUTPUT_A(X>>24);
   DELAY_MS(100);
   }
}
 VOID SANGXENKE1()
   {
   for(I=0;I<2;I++)
   {
     SET_TRIS_b(0X00);SET_TRIS_C(0X00);SET_TRIS_D(0X00);SET_TRIS_A(0X00);
     OUTPUT_B(0XAA); OUTPUT_C(0XAA);OUTPUT_D(0XAA);OUTPUT_A(0XAA); DELAY_MS(300);
     OUTPUT_B(0X00); OUTPUT_C(0X00);OUTPUT_D(0X00);OUTPUT_A(0X00);DELAY_MS(100);
     OUTPUT_B(0X55); OUTPUT_C(0X55);OUTPUT_D(0X55);OUTPUT_A(0X55); DELAY_MS(300);
     OUTPUT_B(0X00); OUTPUT_C(0X00);OUTPUT_D(0X00);OUTPUT_A(0X00);DELAY_MS(100);
  
   }
   }
VOID SANGCAP()
  { SET_TRIS_B(0X00); SET_TRIS_C(0X00);SET_TRIS_D(0X00);SET_TRIS_A(0X00);X=0X00000000;Y=0X0000;
   FOR (I=0;I<16;I++)
   { 
     X=(X<<1)+0X0001; Y=(Y>>1)+0X8000;
    OUTPUT_B(X); OUTPUT_A(Y>>8);
    OUTPUT_C(X>>8);OUTPUT_D(Y);
    DELAY_MS(500);
   } 
  } 
VOID SANGCAP1()
  { SET_TRIS_B(0X00); SET_TRIS_C(0X00);SET_TRIS_D(0X00);SET_TRIS_A(0X00);X=0X00000000;Y=0X0000;
    FOR(I=0;I<16;I++)
  {
     X=(X>>1)+0X8000; Y=(Y<<1)+0X0001;
     OUTPUT_C(X>>8);OUTPUT_D(Y);
     OUTPUT_B(X);OUTPUT_A(Y>>8);
     DELAY_MS(300);
  }
  } 
VOID sangdon2()

{   CD=0X00000000;
   FOR ( J=16;J>0;J--)
   {
      DC=0X00000003;
      FOR(I=0;I<J;I++)
     {
       Y=CD+DC;
      OUTPUT_B(Y);  OUTPUT_C(Y>>8); OUTPUT_D(Y>>16);  OUTPUT_A(Y>>24); DELAY_MS(100);
      DELAY_MS(100);
      DC=(DC<<2);
     }
     CD=Y;
   }
}
VOID sangdon1()

{   CD=0X00000000;
   FOR ( J=32;J>0;J--)
   {
      DC=0X00000001;
      FOR(I=0;I<J;I++)
     {
       Y=CD+DC;
      OUTPUT_B(Y);  OUTPUT_C(Y>>8); OUTPUT_D(Y>>16);  OUTPUT_A(Y>>24); DELAY_MS(40);
      DELAY_MS(100);
      DC=(DC<<1);
     }
     CD=Y;
   }
}
VOID SANG1()
   { X=0X00000001;J=0X80000000;
      FOR(I=0;I<32;I++)
       {
         Y=X;
         OUTPUT_B(Y);  OUTPUT_C(Y>>8); OUTPUT_D(Y>>16);  OUTPUT_A(Y>>24);
         DELAY_MS(100);
         X=(X<<1);
       }
      FOR (I=0;I<32;I++)
      {
         F=J;
         OUTPUT_B(F);  OUTPUT_C(F>>8); OUTPUT_D(F>>16);  OUTPUT_A(F>>24);
         DELAY_MS(100);
         J=J>>1;
      }     
   }
VOID SANGNUA()
{CD=0X00000000;DC=0X00000000;
  FOR(I=16;I>0;I--)
   {X=0X0001;J=0X8000;
     FOR (K=0;K<I;K++)
      {
         Y=CD+X ; F=DC+J;
         OUTPUT_B(Y);  OUTPUT_C(Y>>8); OUTPUT_D(F);  OUTPUT_A(F>>8);
         DELAY_MS(100);
         X=(X<<1);J=(J>>1);
      }
     CD=Y ; DC=F;
   }
}
        
      
VOID MAIN()
{ SET_TRIS_B(0X00); SET_TRIS_C(0X00);SET_TRIS_D(0X00);SET_TRIS_A(0X00);
  WHILE (TRUE)
{
SANGHET();
SANGDUOI();
SANGXENKE1();
SANGCAP();
SANGCAP1();
SANGDON1();
SANGDON2();
SANG1();
SANGNUA();
}
}

Thành quả : 


Cũng khá đơn giản phải không nào ^^ Nếu các bạn có thắc mắc gì về bài viết thì hãy nhận xét bên dưới nhé !

thitech
Pic16F887- Điều khiển led chớp tắt .

Giới thiệu :

Hôm nay mình sẽ giới thiệu cho các bạn cách điều khiển 1 led đơn chớp tắt bằng vi điều khiển PIC16F887 . Đây là 1 số thông tin về pic16f887: Wiki Datasheet Sơ đồ chân

Chuẩn bị : 

Pic16F887.
1 led đơn ( đỏ ) .
Trở ( 330 ).

Lắp mạch : 



Code : (dùng  CCS C lập trình )

#include <16f887.h>  // khai báo thư viện pic 16f887
#FUSES NOWDT, HS, PUT, NOLVP, NOPROTECT
#use delay(clock=20M)//xung clock
void main()
{
   set_tris_D(0x00);// khởi tạo port D xuất mức 0 
   while(TRUE)//vòng lặp
   {
      output_high(pin_D0);   // xuất mức cao tại chân D0
      delay_ms(500);         // delay 500 mili s
      output_low(pin_D0);   // xuất mức thấp tại chân D0
      delay_ms(500);      
   }

}

Thành quả : 

Rất đơn giản đúng không nào ! Chúc các bạn thực hiện thành công .

thitech