Ngày 25/05/2016 20:50:22 / Lượt xem: 10488 / Người đăng:
lam3ngon
/ Tác giả: Huỳnh Ngọc Lâm
/ Nguồn: Programming PIC
BÀI 4 : Mô phỏng PIC16F877A (XC8) giao tiếp với nút nhấn
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.
3. Nút nhấn trong mô phỏng.
a. Tích cực mứ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;
}
}
}
Code và mô phỏng được làm trên MPLAB X IDE và XC8 và Protues 8.1