I. GIỚI THIỆU CHUNG
Nhấp nháy LED có thể coi là một chương trình “Kinh điển”. Mỗi người khi bắt tay vào học VĐK thì bài học đầu tiên là làm nhấp nháy một hay vài con LED trên chân VĐK. Trong tài liệu này tôi cũng chọn bài tập đó để bắt đầu.
Mục đích của bài như trên đã nói: Làm nhấp nháy 8 LED tại PORTB của PIC 16F877A,thời gian trễ do người lập trình định trước.
Những điều thu được qua bài học:
‐ Vẽ một mạch điện tử hoàn chỉnh dùng OrCad 9.2
‐ Tạo một Dự án trong CCS (cái này đã nói trong phần 2)
‐ Tệp định nghĩa các thanh ghi của PIC do người dùng tạo ra
‐ Thiết lập chế độ vào ra cho một cổng của PIC
‐ Sử dụng hàm tạo trễ thời gian
II.Sơ đồ kết nối
Dưới đây là sơ đồ phần cứng. Trong sơ đồ các LED được mắc chung lên dương nguồn thông qua điện trở. Gia trị điện trở thay đổi trong khoảng 100Ω cho đến 560Ω tùy theo độ sáng của LED mà ta muốn và cũng để đảm bảo dòng qua mỗi LED không quá 20mA khi nguồn cấp là 5V. Như vậy để làm sáng LED ta chỉ việc đưa mức 0 ra các chân PIC và ngược lại để tắt ta đưa mức 1.
III.CODE MẪU
//================================================= =======
// Ten chuong trinh : Mach nhay den LED
// Mo ta phan cung : Dung PIC16F877A ‐ thach anh 20MHz
// : LED giao tiep voi PORTB
// : Cuc am cua LED noi voi PORTB
// : RB0 ‐ RB7 la cac chan output
//‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐
// Chu thich : dung che do Power On Reset, PORTB = 00000000
// : chuong trinh viet cho PIC Tutorial
// : chuong trinh nay hoan toan mien phi va co the dung cho
// : moi muc dich khac nhau
//================================================= =======
#include <16f877a.h>
#include <def_877a.h>
#device *=16 ADC=8
#FUSES NOWDT, HS, NOPUT, NOPROTECT, NODEBUG, NOBROWNOUT,
NOLVP, NOCPD, NOWRT
#use delay(clock=20000000)
void main()
{
// Thiet lap che do cho PORTB
TRISB = 0x00; // Tat ca PORTB deu la cong xuat du lieu
PORTB = 0xFF; // Tat het cac LED
While(1)
{
PORTB = 0; // Cho các LED sáng
delay_ms(250); // Tạo thời gian trễ 250ms
PORTB = 0xFF;
delay_ms(250);
}
}
- Bit 0 ứng với chân xuất dữ liệu
- Bit 1 ứng với nhận dữ liệu
- Thanh ghi TRISx có thể câu hình theo từng bit