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.
- Đâ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);
}
- Ảnh mô phỏng protues.
- Đâ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.
EmoticonEmoticon