Đèn giao thông PIC16F877A CCS

10:33:00 AM
Chào các bạn trong bài đăng này mình sẽ hướng dẫn các bạn làm 1 ứng dụng nhỏ sử dụng PIC16F877A cụ thể là đèn giao thông.

- Ảnh mô phỏng protues.


đèn giao thông pic16f877a ccs

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

#include <16f877a.h>
#include <def_877a.h>
#fuses NOLVP,NOWDT,PUT,XT
#use delay(clock=4000000)
void GPIO_init(void);
signed char digit =0 ;
const unsigned char seg[10]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F};
void main(void)
{
    GPIO_init();
    ADCON1 = 0x07;
    while(TRUE)
    {
            OUTPUT_HIGH(PIN_A0);
            OUTPUT_LOW(PIN_A1);
            OUTPUT_LOW(PIN_A2);
            for(digit=30;digit>=0;digit--)
            {
                OUTPUT_B(seg[digit/10]);
                OUTPUT_D(seg[digit%10]);
                delay_ms(1000);
            }
            OUTPUT_LOW(PIN_A0);
            OUTPUT_HIGH(PIN_A1);
            OUTPUT_LOW(PIN_A2);
            for(digit=5;digit>=0;digit--)
            {
                OUTPUT_B(seg[digit/10]);
                OUTPUT_D(seg[digit%10]);
                delay_ms(1000);
            }
            OUTPUT_LOW(PIN_A0);
            OUTPUT_LOW(PIN_A1);
            OUTPUT_HIGH(PIN_A2);
            for(digit=10;digit >= 0;digit--)
            {
                OUTPUT_B(seg[digit/10]);
                OUTPUT_D(seg[digit%10]);
                delay_ms(1000);
            }
    }
}

void GPIO_init (void)
{
    SET_TRIS_A(0X00);
    OUTPUT_A(0X00);
    SET_TRIS_B(0X00);
    OUTPUT_B(0X00);
    SET_TRIS_C(0X00);
    OUTPUT_C(0X00);
    SET_TRIS_D(0X00);
    OUTPUT_D(0X00);
}

- Link download project.

Share this

Related Posts

Previous
Next Post »