BÀI 1 : CHỚP TẮT LED PIC16F877A XC8

2:08: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 về I/O của PIC16F877A cụ thể là chớp tắt led. Nhưng trước tiên chúng ta tìm hiểu về các PORT của PIC16F877A.
- Chức năng các chân của PORTA
1. Chân RA0/AN0
- RA0: xuất/ nhập số - bit thứ 0 của port A.
- AN0: ngõ vào tương tự của kênh thứ 0.
2. Chân RA1/AN1 
- RA1: xuất/nhập số - bit thứ 1 của port A.
- AN1: ngõ vào tương tự của kênh thứ 1.
3. Chân RA2/AN2/VREF-/CVREF
- RA2: xuất/nhập số - bit thứ 2 của port A.
- AN2: ngõ vào tương tự của kênh thứ 2.
- VREF-: ngõ vào điện áp chuẩn (thấp) của bộ ADC.
- CVREF: điện áp tham chiếu VREF ngõ vào bộ so sánh.
4. Chân RA3/AN3/VREF+
- RA3: xuất/nhập số - bit thứ 3 của port A.
- AN3: ngõ vào tương tự kênh thứ 3.
- VREF+: ngõ vào điện áp chuẩn (cao) của bộ A/D.
5. Chân RA4/TOCKI/C1OUT 
- RA4: xuất/nhập số – bit thứ 4 của port A.
- TOCKI: ngõ vào xung clock từ bên ngoài cho Timer0.
- C1OUT: ngõ ra bộ so sánh 1.
6. Chân RA5/AN4/ SS/ C2OUT 
- RA5: xuất/nhập số – bit thứ 5 của port A.
- AN4: ngõ vào tương tự kênh thứ 4.
- SS : ngõ vào chọn lựa SPI tớ (Slave SPI device).
- C2OUT: ngõ ra bộ so sánh 2.
- Chức năng các chân của PORTB
1 Chân RB0/INT
 -  RB0: xuất/nhập số – bit thứ 0 của port B.
 - INT: ngõ vào nhận tín hiệu ngắt ngoài.
2. Chân RB1
 -  RB1: xuất/nhập số – bit thứ 1 của port B.
3. Chân RB2
 -  RB2: xuất/nhập số – bit thứ 2 của port B.
4. Chân RB3
 -  RB3: xuất/nhập số – bit thứ 3 của port B.
5. Chân RB4
 -  RB4: xuất/nhập số – bit thứ 4 của port B.
6. Chân RB5
 -  RB5: xuất/nhập số – bit thứ 5 của port B.
7.Chân RB6
 -  RB6: xuất/nhập số.
8. Chân RB7
 -  RB7: xuất/nhập số.

Chức năng các chân của PORC
1. Chân RC0/T1OSO/T1CKI (15): có 3 chức năng:
 -  RC0: xuất/nhập số – bit thứ 0 của port C.
 -  T1OSO: ngõ ra của bộ dao động Timer1.
 -  T1CKI: ngõ vào xung clock từ bên ngoài Timer1.
2. Chân RC1/T1OSI/CCP2 (16): có 3 chức năng:
 - RC1: xuất/nhập số – bit thứ 1 của port C.
 - T1OSI: ngõ vào của bộ dao động Timer1.
 - CCP2: ngõ vào Capture2, ngõ ra compare2, ngõ ra PWM2.
3. Chân RC2 /P1A/CCP1 (17): có 3 chức năng:
 - RC2: xuất/nhập số – bit thứ 2 của port C.
 - P1A: ngõ ra PWM.
 - CCP1: ngõ vào Capture1, ngõ ra compare1, ngõ ra PWM1 .
4. Chân RC3/SCK/SCL (18): có 3 chức năng:
 - RC3: xuất/nhập số – bit thứ 3 của port C.
 - SCK: ngõ vào xung clock nối tiếp đồng bộ/ngõ ra của chế độ SPI.
 - SCL: ngõ vào xung clock nối tiếp đồng bộ/ngõ ra của chế độ I2C.
5. Chân RC4/SDI/SDA (23): có 3 chức năng:
 - RC4: xuất/nhập số – bit thứ 4 của port C.
 - SDI: ngõ vào dữ liệu trong truyền dữ liệu kiểu SPI.
 - SDA: xuất/nhập dữ liệu I2C.
6. Chân RC5/SDO (24): có 2 chức năng:
 - RC5: xuất/nhập số – bit thứ 5 của port C.
 - SDO: ngõ xuất dữ liệu trong truyền dữ liệu kiểu SPI.
7. Chân RC6/TX/CK (25): có 3 chức năng:
 - RC6: xuất/nhập số – bit thứ 6 của port C.
 - TX: ngõ ra phát dữ liệu trong chế độ truyền bất đồng bộ USART.
 - CK: ngõ ra cấp xung clock trong chế độ truyền đồng bộ USART.
8. Chân RC7/RX/DT
 - RC7: xuất/nhập số – bit thứ 7 của port C.
 -  RX: ngõ vào nhận dữ liệu trong chế độ truyền bất đồng bộ EUSART.
 - DT: ngõ phát và nhận dữ liệu ở chế độ truyền đồng bộ EUSART.

Chức năng các chân của PORD
1. Chân RD0
 - RD0: xuất/nhập số – bit thứ 0 của port D.
 - Chân RD1

2.RD1: xuất/nhập số – bit thứ 1 của port D.
3. Chân RD2
 - RD2: xuất/nhập số – bit thứ 2 của port D.
4.Chân RD3
 - RD3: xuất/nhập số – bit thứ 3 của port D.
5. Chân RD4
 - RD4: xuất/nhập số – bit thứ 4 của port D.
6. Chân RD5
 - RD5: xuất/nhập số – bit thứ 5 của port D.
 -  ngõ ra PWM.
7. Chân RD6
 -  RD6: xuất/nhập số – bit thứ 6 của port D.
8. Chân RD7
 - RD7: xuất/nhập số – bit thứ 7 của port D.

Chức năng các chân của PORE
1 Chân RE0/AN5 (8): có 2 chức năng:
- RE0: xuất/nhập số.
- AN5: ngõ vào tương tự 5.
2.Chân RE1/AN6 (9): có 2 chức năng:
- RE1: xuất/nhập số.
- AN6: ngõ vào tương tự kênh thứ 6.
3. Chân RE2/AN7 (10): có 2 chức năng:
- RE2: xuất/nhập số.
- AN7: ngõ vào tương tự kênh thứ 7.
Trong bài này thì mình sẽ hướng dẫn các bạn mắc led theo 2 kiểu đó là Anode chung theo hình bên dưới.
led anode chung
Nếu nối led theo kiểu này thì muốn led sáng ta phải xuất ra mức 0 thì led mới sáng được.
Còn đây là cách nối led theo kiểu Cathode chung.
led cathode chung
Nếu nối led theo kiểu này thì muốn led sáng ta phải xuất ra mức 1 thì led mới sáng được.
- Dưới đây là ảnh mô phỏng Protues.
blink led pic16f877a xc8
- Đây là code chương trình.
#include <stdio.h>
#include <stdlib.h>
#define _XTAL_FREQ 4000000
#include <xc.h>
// CONFIG
#pragma config FOSC = XT        // Oscillator Selection bits (XT oscillator)
#pragma config WDTE = OFF       // Watchdog Timer Enable bit (WDT disabled)
#pragma config PWRTE = OFF      // Power-up Timer Enable bit (PWRT disabled)
#pragma config BOREN = OFF      // Brown-out Reset Enable bit (BOR disabled)
#pragma config LVP = OFF        // Low-Voltage (Single-Supply) In-Circuit Serial Programming Enable bit (RB3 is digital I/O, HV on MCLR must be used for programming)
#pragma config CPD = OFF        // Data EEPROM Memory Code Protection bit (Data EEPROM code protection off)
#pragma config WRT = OFF        // Flash Program Memory Write Enable bits (Write protection off; all program memory may be written to by EECON control)
#pragma config CP = OFF         // Flash Program Memory Code Protection bit (Code protection off)
void GPIO_init (void);
void Anode (void);
void Cathode (void);
void main (void)
{
    GPIO_init();
    while(1)
    {
        __delay_ms(100);
        Anode();
        Cathode();
        __delay_ms(100);
    }
}
void GPIO_init(void)
{
    TRISBbits.TRISB0 = 0; // RB0 LÀ OUTPUT
    TRISBbits.TRISB7 = 0; // RB7 LÀ OUTPUT
    PORTBbits.RB0 = 1; // OFF LED RB0
    PORTBbits.RB7 = 0; // OFF LED RB7
}
void Anode (void)
{
    PORTBbits.RB0 = 0;  
    __delay_ms(500);
    PORTBbits.RB0 = 1;
}
void Cathode (void)
{
    PORTBbits.RB7 = 1;
    __delay_ms(500);
    PORTBbits.RB7 = 0;
}
- Video mô phỏng protues.
- Link download project : Click here

Share this

Related Posts

Previous
Next Post »

2 nhận xét

Write nhận xét
April 14, 2016 at 1:50 PM delete

anh cho e hỏi e không tìm thấy file def_877a để xem như thế nào, nên nó báo lỗi

Reply
avatar
April 14, 2016 at 6:19 PM delete

File đó lên mạng download về chứ k có sẵn đây ak ! Mà bài này viết bằng XC8 mà sao hỏi về CCS !

Reply
avatar