Saturday, May 21, 2016

BÀI 2 : HIỆU ỨNG LED PIC16F877A XC8 (P1)

7:33:00 AM - By Unknown 0

Trong bài đăng này mình sẽ hướng dẫn các bạn chớp tắt nhiều LED cùng lúc cũng như 1 số hiệu ứng đơn giản như : Xen kẻ, nữa sáng nữa tắt,sáng hết tắt hết …. Để tạo được nhứng hiệu ứng đơn giản như vậy thì mình sẽ giới thiệu với các bạn bảng mã HEX để giúp chúng ta dễ dàng tạo ra nhưng hiệu ứng đơn giản trên.
Trước tiên là bảng mã HEX từ 0 -15 như hình 1.
- Và đây là bảng tính mã HEX cụ thể để xuất ra các chân của Vi Điều Khiển để điều khiền LED sáng theo mong muốn. Các bạn xem hình 2.
- Như các bạn biết PORTB thì có 8bit từ chân RB0 - RB7, trong bài mắc led theo kiểu Cathode chung nên nếu muốn LED sáng thì phải xuất mức 1 thì LED mới sáng như vậy nếu muốn LED sáng hết thì PORTB = 0XFF. 
- Đây là nhưng hiệu ứng vô cùng đơn giản mục đính của bài này là giúp các bạn có kiến thức về cách tính nã nhị phân BCD và cách điều khiển 1 PORT của Vi Điều Khiển. Mình sẽ hướng dẫn các bạn đi từ những cái cơ bản nhất nên nếu ai chưa hiểu gì thì comments bên dưới nha !
Đây là ảnh mô phỏng proteus.
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 SANGHET (void);
void TATHET (void);
void XENKE (void);
void SANGNUA (void);
void main (void)
{
    GPIO_init();
    while(1)
    {
        SANGHET();
        __delay_ms(500);       
        TATHET();
        __delay_ms(500);        
        XENKE();
        __delay_ms(500);        
        SANGNUA();
        __delay_ms(500);
    }
}
void GPIO_init(void)
{
    TRISB = 0X00;
    PORTB = 0X00;
}
void SANGHET (void)
{
    PORTB = 0XFF;
}
void TATHET (void)
{
    PORTB = 0X00;
}
void XENKE (void)
{
    PORTB = 0XAA;
    __delay_ms(500);
    PORTB = 0X55;
}
void SANGNUA (void)
{
    PORTB = 0X0F;
    __delay_ms(500);
    PORTB = 0XF0;
}
Phần chương trình trên mình đã chia ra thành từng hàm con nhỏ để các bạn dễ hiểu hơn về cách chương trình nó hoạt động như thế nào ! Đây là những phần cơ bản nhất của con PIC nên ai chưa hiểu cái gì thì comments bên dưới nha !
Link download project : Click here

Tôi là một người đam mê viết BLOG. Tuy tôi không phải là một người giỏi nhưng tôi muốn chia sẽ những gì tôi biết cho các bạn. Tôi hy vọng nó sẽ giúp được các bạn một phần nào đó !
Follow me @Programming PIC
Subscribe to this Blog via Email :

0 nhận xét:

Powered by Blogger.
back to top