QC

LED Blinking with PIC16f877A Microcontroller

Trong hai hướng dẫn trước, chúng tôi đã thảo luận về Cách bắt đầu với PIC bằng trình biên dịch MPLABX và XC8, chúng tôi cũng đã thực hiện Chương trình nhấp nháy đèn LED đầu tiên với PIC và xác minh nó bằng mô phỏng. Bây giờ đã đến lúc chúng ta bắt tay vào làm việc với phần cứng. Trong hướng dẫn này, chúng tôi sẽ xây dựng một mạch nhỏ trên Bảng mạch Perf để nhấp nháy đèn LED bằng PIC. Chúng tôi sẽ kết xuất chương trình vào bộ vi điều khiển PIC của chúng tôi và xác minh Đèn LED nhấp nháy. Để lập trình MCU PIC, chúng tôi sẽ sử dụng MPLAB IPE.

Vật liệu thiết yếu:

Như đã thảo luận trong hướng dẫn trước của chúng tôi, chúng tôi sẽ cần các tài liệu sau:

  • PicKit 3
  • PIC16F877A IC
  • 40 - Pin IC holder
  • Perf board
  • 20 MHz Crystal OSC
  • Female and Male Bergstick pins
  • 33pf Capacitor - 2Nos, 100uf and 10uf cap.
  • 680 ohm, 10K and 560ohm Resistor
  • LED of any color
  • 1Soldering kit
  • IC 7805
  • 12V adapter


Circuit and Hardware:



Trong mạch trên, tôi đã sử dụng một 7805 để điều chỉnh đầu ra 5V đến MCU PIC của tôi. Bộ điều chỉnh này sẽ được cấp nguồn bằng bộ chuyển đổi ổ cắm trên tường 12V. Đèn LED ĐỎ được sử dụng để cho biết PIC có được cấp nguồn hay không. Đầu nối J1 được sử dụng để lập trình ICSP. Các chân được kết nối như đã thảo luận trong bảng trên.


MCLR chân đầu tiên phải được giữ ở mức cao với sự trợ giúp của 10k theo mặc định. Điều này sẽ ngăn MCU đặt lại. Để thiết lập lại MCU, chân MCLR phải được giữ xuống đất có thể được thực hiện với sự trợ giúp của công tắc SW1.


Đèn LED được kết nối với chân RB3 thông qua một điện trở có giá trị 560 ohms (Xem máy tính điện trở LED). Nếu mọi thứ đều phù hợp sau khi chương trình của chúng tôi được tải lên, đèn LED này sẽ nhấp nháy dựa trên chương trình. Toàn bộ mạch được xây dựng trên Perfboard bằng cách hàn tất cả các thành phần trên đó như bạn có thể thấy trong hình ảnh ở trên cùng.

// 'C' source line config statements

// CONFIG
#pragma config FOSC = HS        // Oscillator Selection bits (HS 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 = ON       // Brown-out Reset Enable bit (BOR enabled)
#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)

// #pragma config statements should precede project file includes.
// Use project enums instead of #define for ON and OFF.

#include <xc.h>

    #define _XTAL_FREQ 20000000 //Specify the XTAL crystall FREQ

void main() //The main function
{
TRISB=0X00; //Instruct the MCU that the PORTB pins are used as Output.
PORTB=0X00; //Make all output of RB3 LOW

while(1) //Get into the Infinie While loop
{
    RB3=1; //LED ON
    __delay_ms(100); //Wait
    RB3=0; //LED OFF
    __delay_ms(100); //Wait
    
    //Repeat. 
}

}







Hex

 :020000040800F2 :10000000000003200D3700085D3700085D37000849 :100010005D3700085D3700085D3700085D37000870 :100020000000000000000000000000005D...