Các bạn tải link giáo trình:
Giáo trình : Vi điều khiển – Lý thuyết – Nguyễn Đình Phú
Giáo trình : Vi điều khiển – Thực hành – Nguyễn Đình Phú
Bài giảng: Vi điều khiển – Lý thuyết – Thực hành – Trương Ngọc Anh
Pass giải nén : Nhattungnt93Table of Contents
Nguyên lý kết nối đèn led vi điều khiển
Cách nối phần cứng

Giải thích cách nối
Đối với nguyên lý này muốn led sáng hay tắt phụ thuộc vào chân VDK Nếu VDK=1 thì hai đầu đều bằng 1 tức sảy ra hiện tượng đẳng áp nên làm led tắt. Nếu VDK=0 thì điện áp lúc này sẽ đổ nguồn qua chân A và qua chân VDK, led sáng Phần tính điện trở R32 thì đơn giản mình không bàn ở trong này nhé.Chương trình hiệu ứng đèn led tắt đuổi
Bắt đầu đi giải thích các phần nào.Khai báo thư viện cho led đơn sáng dần

- NOWDT: là không sử dụng bộ định thời giám sát (No watchdog timer)
- PUT: là sử dụng bộ định thời khi có nguồn để kéo dài them thời gian reset vi điều khiển để chờ nguồn điện ổn định, thời gian kéo dài thêm 72ms (Power up timer)
- HS: là sử dụng bộ dao động tần số cao từ 4MHz đến 20MHz (High Speed)
- NOPROTECT: là không sử dụng bảo vệ mã code nạp vào bộ nhớ flash bên trong
- NOLVP: là không sử dụng chế độ nạp code dùng nguồn điện áp thấp 5V mà dùng nguồn 12,5V.
- Ngoài ra thì còn nhiều thông số khác các bạn xem thêm trong thư viện Pic16F887 nhé.
Khai báo biến phục vụ cho chương trình led đơn

- Biến y dùng xuất giá trị ra cho led , vì nó 8bit nên chỉ xuất tối đa là 8 led thôi nhé
- Biến i dùng để đếm số vòng lặp for cho giá trị chỉ chạy từ 0 đến 8 hoặc 0 đến 16 nên không cần khai báo lớn nhằm tiết kiệm bộ nhớ.
- Biến h dùng lưu giá trị và xuất ra cho hai port C và D.
Các chương trình con đèn led chạy tắt đuổi
Chương trình con tắt dần 4 led từ trái qua phải.Có hai hình thức viết hiệu ứng tắt dần:
Kê khai từng giá trị cụ thể.
Hiệu ứng sáng đuổi 0000 1111 = 0x0f // cho sáng 4 led 1000 1111 = 0x8f // tắt led đầu tiên 0100 1111 = 0x4f // tắt led thứ hai 0010 1111 = 0x2f 0001 1111 = 0x1f Khi mình xuất số 0 thì led sáng, xuất số 1 thì led tắt. Các đổi từ số 2 sang số hex các bạn xem phần video nhé. Từ cách tính đó mình có được chương trình con như sau:Cách viết chương trình
Toán tử dịch >>
Toán từ dịch trái sang phải là >>, còn dịch phải sang trái là : << Nếu 1000 0000 >>1 thì được giá trị như bảng dưới1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
1 | 0 | 0 | 0 | 0 | 0 | 0 | |
0 | 1 | 0 | 0 | 0 | 0 | 0 | 0 |
Cách viết chương trình
Ví dụ
H = 0111 1111 1111 1111 Mình sắp xếp vào cho đúng nhé: giả sử 8 ô đầu là của Port C, còn lại của Port D Khi mình Output_d(h) thì VĐK chỉ lấy giá trị từ bít thấp lên bit cao, đủ 8 bit thì ngưng1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 |
0 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 |
Chương trình chính đèn led tắt đuổi
Các bạn xem đầy đủ chi tiết phần Video
https://www.youtube.com/watch?v=DU4wp4hjsng&t=221sBài giảng hôm nay dừng ở đây nhé hôm sau sẽ học:
==> Bài 8 – Chương trình đếm lên xuống hiển thị led 7 đoạnToàn bộ khóa học Vi điều khiển

Chúc các bạn thành công.!