Saturday, May 21, 2016

BÀI 4 : GIAO TIẾP NÚT NHẤN PIC16F877A XC8

8:03:00 AM - By Unknown 0

1. Giới thiệu
Nói về nút nhấn (button) thì có lẽ chúng ta đã quá quen với nó rồi thậm chí chúng ta chúng ta còn tiếp xúc với nó hằng ngày nữa, ví dụ như : bàn phím máy tính, các thiết bị điều khiển tivi, máy điều hòa…..
2. Các loại button.
Nút nhấn thường thì có kích thước 6 – 12mm tùy thuộc vào mục đích sử dụng các bạn có thể lựa chọn loại nút nhấn phù hợp với mục đích của mình.
Loại này tuy là 4 chân, nhưng thực chất cũng chỉ là 2 chân mà thôi, bạn xem hình dưới là rõ ngay.
Hiện nay trên thị trường có rất nhiều loại nút nhấn khác nhau và giá thành cũng khác nhau. Độ bền của nút nhấn cũng khá cao. Và hầu như nó được sử dụng hầu hết trên các board mạch điện tử nên các bạn cần phải nắm chắc được bài này !
3. Nút nhấn trong mô phỏng.
a. Tích cực mức thấp.
nút nhấn tích cực thấp
b. Tích cực mức cao.
Đây là ảnh mô phỏng protues.
Đây là code chương trình.
#include <stdio.h>
#include <stdlib.h>
#define _XTAL_FREQ 8000000 // if 4Mhz is XT
#include <xc.h>
// 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 = 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 main(void)
{
    TRISA = 0X01;
    TRISB = 0X01;
    TRISD = 0X00;
    PORTD = 0X00;
    ADCON1 = 0x07; // off ADC
    while(1)
    {
        if(PORTAbits.RA0==0)
        {
        __delay_ms(100);
        if(PORTAbits.RA0==0)
        {
            PORTDbits.RD0=1;
        }
        }
        if(PORTBbits.RB0==1)
        __delay_ms(100);
        if(PORTBbits.RB0==1)
        {
            PORTDbits.RD0=0;
        }
    }
}
Chương trình trên khá đơn giản các bạn chỉ cần xét trạng thái của nút nhấn khi bị tác động sau đó cho nó thực hiện 1 đoạn chương trình mà các bạn mong muốn ! Chú ý nếu các bạn dùng PORTA dùng làm PORT I/O thì phải tắt chức năng ADC của con PIC đi nha ! Đây là lệnh tắt chức năng ADC của PIC16F877A ADCON1 = 0x07; Ai không hiểu chỗ nào 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