Chào các bạn! Vì nhiều lý do từ nay Truyen2U chính thức đổi tên là Truyen247.Pro. Mong các bạn tiếp tục ủng hộ truy cập tên miền mới này nhé! Mãi yêu... ♥

Chương trình nhấp nháy LED PIC

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. Bản thân tôi cũng vậy, bài học đầu tiên là

nháy LED và quét LED 7 thanh

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

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.

XEM HÌNH VẼ

Mã nguồn chương trình nạp vào PIC

//================================================= =======

// Ten chuong trinh : Mach nhay den LED

// Nguoi thuc hien : linhnc308

// Ngay thuc hien : 13/03/2006

// Phien ban : 1.0

// 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

//‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐

// Ngay hoan thanh : 13/06/2006

// Ngay kiem tra : 13/06/2006

// Nguoi kiem tra : linhnc308

//‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐

// 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);

}

}

Qua ví dụ đơn giản trên bạn hiểu cách xuất dữ liệu ra một cổng của PIC và dùng các

hàm tạo trễ.

Thủ tục thiết lập vào ra cho một cổng hay một chân của PIC

‐ Ghi giá trị vào thanh ghi điều khiển chế độ của cổng tương ứng là TRISx

o Bit 0 ứng với chân xuất dữ liệu

o Bit 1 ứng với nhận dữ liệu

o Thanh ghi TRISx có thể câu hình theo từng bit

‐ Khi muốn xuất dữ liệu, ví dụ ra PORTB, câu lệnh là: PORTB = gia_tri;

‐ Khi muôn nhận dữ liệu từ PORTB, câu lệnh là: data_in = PORTB;

Về các hàm tạo trễ, trong CCS hỗ trọ sẵn 3 loại hàm tạo trễ là:

‐ delay_cycles(gia_tri): gia_tri là thời gian trễ tính theo số chu kỳ máy

‐ delay_us(gia_tri): Tạo trễ Micro giây

‐ delay_ms(gia_trị): Tạo trễ Mili giây

Bản chất của các hàm tạo trễ là đưa Vi điều khiển vào một vòng lặp chẳng làm gì cả cho

đủ số thời gian mà ta cần. Ngoài việc dùng hàm tạo trễ có sẵn ta có thể tự viết hàm tạo trễ

dùng bộ Timer

Bạn đang đọc truyện trên: Truyen247.Pro

Tags: