Skip to main content

Posts

Bài 2: Dùng vi điều khiển 16F887 điều khiển 8 led đơn sáng dần tắt dần từ phải sang trái mô phỏng trên Proteus

Sơ đồ mạch:   Hình 1.  Sơ đồ mạch  điều khiển 8 led đơn sáng dần tắt dần từ phải sang trái Chương trình: #INCLUDE <16F887.H> #FUSES NOWDT,PUT,HS,NOPROTECT,NOLVP #USE DELAY(CLOCK=20M) UNSIGNED INT8 I, X; VOID MAIN() {      SET_TRIS_D(0x00); X=0X00; OUTPUT_D(X); DELAY_MS(500);      WHILE(TRUE)      {            FOR (I=0;I<8;I++)           {                 X = (X<<1)+0X01; OUTPUT_D(X); DELAY_MS(500);           }           FOR (I=0;I<8;I++)           {                 X = (X<<1); OUTPUT_D(X); DELAY_MS(500);           }      } } Giải thích chương trình: Khởi tạo portD là xuất dữ liệu, gán biến X bằng 0x00, xuất giá trị của X ra portD làm 8 led tắt, delay. Vòng lặp for thứ nhất thực hiện 8 lần: tiến hành xoay trái dữ liệu của X và cộng với 0x01. Khi xoay trái dữ liệu thì số 0 được đẩy vào, cộng với 0x01 là để đẩy số 1 vào X. Dữ liệu biến X được xuất ra portD điều khiển led sáng dần, sau 8 lần thì X sẽ bằng 1111_1111 – 8 led sáng hết. Vòng lặp for thứ hai thực hiện

Bài 1: Dùng vi điều khiển 16F887 điều khiển 8 led đơn sáng tắt mô phỏng trên Proteus

Sơ đồ mạch: Hình 1. Sơ đồ điểu khiển led đơn mô phỏng trên Proteus Mạch dùng portD kết nối với 8 led đơn. Mức logic 0 làm led tắt, mức logic 1 làm led sáng.  Chương trình: #INCLUDE <16F887.H> #FUSES NOWDT, PUT, HS, NOPROTECT, NOLVP #USE DELAY(CLOCK=20M) VOID MAIN() {    SET_TRIS_D(0x00);    WHILE(TRUE)    {         OUTPUT_D(0xFF);   DELAY_MS(1000);       OUTPUT_D(0x00); DELAY_MS(1000);    } } Giải thích ý nghĩa chương trình: Hàng thứ nhất “ #INCLUDE <16F887.H> ” là khai báo thư viện đang sử dụng là PIC 16F887. Hàng thứ hai “ #FUSES NOWDT, PUT, HS, NOPROTECT, NOLVP ” là khai báo cấu hình cho PIC. Hàng thứ ba “ #USE DELAY(CLOCK=20M) ” khai báo tần số tụ thạch anh mà vi điều khiển sử dụng, với khai báo trên thì tần số sử dụng là 20MHz. Các hàm định thời là: o DELAY_MS(VALUE) - Thời gian định thời là mili giây. o DELAY_US(VALUE) - Thời gian định thời là µS. Chương trình chính gồm:  Lệnh “ SET_TRIS_D(0x00); ” có chức năng khởi tạo portD là port xuất. Lệnh “ OUTPUT_D(0xFF); ” c