BÀI 43 : ĐÈN GIAO THÔNG NGÃ TƯ PIC17F877A CCS P1

1:54:00 AM
Chào các bạn trong bài đăng này mihf sẽ hướng dẫn các bạn làm 1 ứng dụng nhỏ sử dụng PIC16F877A đó là đèn giao thông ngã tư.
Đây là ảnh mô phỏng protues.
đèn giao thông ngã 4 pic16f877a ccs
Đây là code chương trình.
#include <16f877a.h>
#use delay (clock=4000000)
#use fast_io(d)
#use fast_io(b)
#use fast_io(c)
#byte portd=0x08
#bit rb0=0x06.0 // led1
#bit rb1=0x06.1 // led2
#bit rb2=0x06.2 // led3
#bit rb3=0x06.3 // led4
#bit rc0=0x07.0 // x1
#bit rc1=0x07.1 // v1
#bit rc2=0x07.2 // d1
#bit rc3=0x07.3 // x2
#bit rc4=0x07.4 // v2
#bit rc5=0x07.5 // d2
#define bat 1
#define tat 0
//=================
int m[10]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
int num1,donvi1,chuc1;
int num2,donvi2,chuc2;
//============delay=====
void delay(int ms)
 {
  int a,b;
  for(a=0;a<ms;a++)
   for(b=0;b<120;b++)
    {
   }
 }
//=========hien thi=============
void ht1(void)
 {
  int c;
  for(c=0;c<40;c++)
   {
   chuc1=num1/10;
   donvi1=num1%10;
   output_d(m[chuc1]);
   rb2=bat;
   delay(10);
   rb2=tat;
   output_d(m[donvi1]);
   rb3=bat;
   delay(10);
   rb3=tat;
   chuc2=num2/10;
   donvi2=num2%10;
   output_d(m[chuc2]);
   rb0=bat;
   delay(10);
   rb0=tat;
   output_d(m[donvi2]);
   rb1=bat;
   delay(10);
   rb1=tat;
   }
 }
//=========ham chinh==========
void main(void)
 {
 set_tris_d(0x00);
 set_tris_b(0xff);
 set_tris_c(0x00);
  while(true)
   { 
    num1=30;
    num2=35;
    do
    { 
     set_tris_b(0x00);
     rc0=bat;
     rc5=bat;
     rc1=tat;
     rc2=tat;
     rc3=tat;
     rc4=tat;
     ht1();
     num1--;
     num2--;
    }
                  while(num1!=0);
                  num1=num2=5;
                  do
                   {
                   set_tris_b(0x00);
                   rc1=bat;
                   rc5=bat;
                   rc0=tat;
                   rc2=tat;
                   rc3=tat;
                   rc4=tat;
                   ht1();
                   num1--;
                   num2--;
                   }
     while(num1!=0);
     num1=35;
     num2=30;
     do
     {
     set_tris_b(0x00);
     rc2=bat; 
     rc3=bat;
     rc0=tat;
     rc1=tat;
     rc4=tat;
     rc5=tat;
     ht1();
     num1--;
     num2--;
     }
                   while(num2!=0);
                   num1=num2=5;
                    do
                     {
                   set_tris_b(0x00);
                   rc2=bat;
                   rc4=bat;
                   rc0=tat;
                   rc1=tat;
                   rc3=tat;
                   rc5=tat;
                   ht1();
                   num1--;
                   num2--;
                      }
                  while(num1!=0);
   }
}  
Link download project : Click here

Share this

Related Posts

Previous
Next Post »

6 nhận xét

Write nhận xét
October 28, 2016 at 12:32 AM delete

cho e hỏi ad dùng viết code bằng gì đó ạ: MPLAB, Keil C..hay gì ạ.

Reply
avatar
October 28, 2016 at 1:29 AM delete

cho e hỏi ad dùng viết code bằng gì đó ạ: MPLAB, Keil C..hay gì ạ.

Reply
avatar
June 30, 2017 at 6:20 PM delete

bạn ơi cho mình hỏi. cách tính thời gian delay trong hàm delay bạn dùng ạ

Reply
avatar
April 5, 2018 at 4:08 AM delete This comment has been removed by the author.
avatar
December 3, 2019 at 7:34 AM delete

cho e xin sơ đồ nguyên lý vs ạ

Reply
avatar