Chatbox

Các bạn vui lòng dùng từ ngữ lịch sự và có văn hóa,sử dụng Tiếng Việt có dấu chuẩn. Chúc các bạn vui vẻ!
22/10/2016 08:10 # 1
tanphuong85
Cấp độ: 37 - Kỹ năng: 38

Kinh nghiệm: 142/370 (38%)
Kĩ năng: 98/380 (26%)
Ngày gia nhập: 19/01/2010
Bài gởi: 6802
Được cảm ơn: 7128
Chia sẻ đèn giao thông ngã tư PIC16F877A CCS


Chia sẻ đèn giao thông ngã tư PIC16F877A CCS

Tác giả: HUỲNH NGỌC LÂM
Nguồn: https://xcvn.blogspot.com


Chào các bạn trong bài đăng trước mình đã hướng dẫn các bạn về đèn giao thông ngã tư nhưng là chạy 1 cách tư động nên trong bài này hướng dẫn các bạn điều khiển bằng nút nhấn nha !

Ảnh mô phỏng protues.

đèn giao thông ngã tư pic16f877a

Đây là code chương trình.

// Được viết bằng ngôn ngữ : CCS
// Phần mềm mô phỏng Protues 8

#include <16f877a.h>

#use delay (clock=4000000)

#use fast_io(d)

#use fast_io(b)

#use fast_io(c)

#use fast_io(a)

#byte portd=0x08

#bit ra0=0x05.0 // Binh thuong

#bit ra1=0x05.1 // Gio cao diem

#bit ra2=0x05.2 // Ban dem

#bit ra3=0x05.3 // Nut chuyen che do

#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<50;b++)

    {

    }

 }

//-------------hien thi---------------------

void ht1(void)

 {

  int c;

  for(c=0;c<50;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;

   }

 }


void main(void)

 {

 set_tris_d(0x00);

 set_tris_b(0xff);

 set_tris_c(0x00);

 set_tris_a(0xff);

 output_d(0xFF);

 rc0=tat;

 rc5=tat;

 rc1=tat;

 rc2=tat;

 rc3=tat;

 rc4=tat;

  while(true)

   {

///--------------che do binh thuong -----------------   

   if(!ra0)

   {

   delay_ms(100);

   while(!ra0)

   {

   binhthuong:

    num1=35;

    num2=30;

    do

    { 

     set_tris_b(0x00);

     rc0=bat;

     rc5=bat;

     rc1=tat;

     rc2=tat;

     rc3=tat;

     rc4=tat;

     ht1();

     num1--;

     num2--;

    }

                  while(num2!=0);

                  num2=num1=5;

                  do

                   {

                   set_tris_b(0x00);

                   rc1=bat;

                   rc5=bat;

                   rc0=tat;

                   rc2=tat;

                   rc3=tat;

                   rc4=tat;

                   ht1();

                   num1--;

                   num2--;

                   }

     while(num2!=0);

     num1=30;

     num2=35;

     do

     {

     set_tris_b(0x00);

     rc2=bat; 

     rc3=bat;

     rc0=tat;

     rc1=tat;

     rc4=tat;

     rc5=tat;

     ht1();

     num1--;

     num2--;

     }

                   while(num1!=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);

                  goto binhthuong;

    }

    }

//---------------gio cao diem--------------------------    

   if(!ra1)

   {

   delay_ms(100);

   while(!ra1)

   {

    caodiem:

    num1=60;

    num2=55;

    do

    { 

     set_tris_b(0x00);

     rc0=bat;

     rc5=bat;

     rc1=tat;

     rc2=tat;

     rc3=tat;

     rc4=tat;

     ht1();

     num1--;

     num2--;

    }

                  while(num2!=0);

                  num2=num1=5;

                  do

                   {

                   set_tris_b(0x00);

                   rc1=bat;

                   rc5=bat;

                   rc0=tat;

                   rc2=tat;

                   rc3=tat;

                   rc4=tat;

                   ht1();

                   num1--;

                   num2--;

                   }

     while(num2!=0);

     num1=55;

     num2=60;

     do

     {

     set_tris_b(0x00);

     rc2=bat; 

     rc3=bat;

     rc0=tat;

     rc1=tat;

     rc4=tat;

     rc5=tat;

     ht1();

     num1--;

     num2--;

     }

                   while(num1!=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);

                  goto caodiem;

    }

    }

    

//-------------------ban dem---------------

   if(!ra2)

   {

   delay_ms(100);

   while(!ra2)

   {

                   dem:

                   rc4=bat;

                   rc1=bat;

                   delay_ms(1000);

                   rc4=tat;

                   rc1=tat;

                   goto dem;

   }

   }

//---------------------- ket thuc chuong trinh ----------------------

   }

 }  

Nguồn: http://hqdt.vn/baiviet/chia-se-den-giao-thong-nga-tu-pic16f877a-ccs.html




 
Các thành viên đã Thank tanphuong85 vì Bài viết có ích:
Copyright© Đại học Duy Tân 2010 - 2024