Bài 3: Dùng vi điều khiển 16F887 kết nối với 1 led 7 đoạn anode chung và viết chương trình đếm từ 0 đến 9 với thời gian trễ tuỳ chọn mô phỏng trên Proteus

  • Sơ đồ mạch: dùng portD kết nối với 1 led 7 đoạn anode chung. Mức logic 1 làm led tắt, mức logic 0 làm led sáng, điện trở hạn dòng cho led là 330Ω.
Hình 1. Sơ đồ mạch đếm từ 0 đến 9 dùng led 7 đoạn anode chung
  • Chương trình:

#INCLUDE <16F887.H>
#FUSES NOWDT,PUT,HS,NOPROTECT,NOLVP
#USE DELAY(CLOCK=20M)
CONST UNSIGNED CHAR MA7DOAN [10]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90};
SIGNED INT DEM;
UNSIGNED INT MA_DEM;
VOID MAIN()

   SET_TRIS_D(0x00);
   WHILE(TRUE)
   { 
      FOR (DEM=0;DEM<10;DEM++)
      {
         MA_DEM = MA7DOAN[DEM];
         OUTPUT_D(MA_DEM);
         DELAY_MS(1000);
      }
   }
}
  • Giải thích chương trình:
Sau các lệnh khai báo thư viện, cấu hình và khai báo tần số sử dụng là khai báo mảng chứa mã 7 đoạn và các biến đếm, biến chứa mã. Chương trình chính khởi tạo các portB là xuất, cho vòng lặp for với biến “DEM” chạy từ 0 đến 9, tiến hành giải mã và gởi mã led 7 đoạn tương ứng với biến DEM ra port để hiển thị, delay và lặp lại.
Tài liệu tham khảo: 
  1. Nguyễn Đình Phú (2014). Giáo trình VI ĐIỀU KHIỂN PIC 16F887.
Link download code: https://drive.google.com/file/d/1N_fZSbWFjCbskKIaTwgkNI2L0__BqbGw/view

Comments