Lập trình Timer0, Tạo chu kỳ điều khiển led đơn nhấp nháy

Lập trình Timer0 để nhấp nháy led đơn được sử dụng nhiều trong hệ thống công nghiệp, các đề tài đơn lẻ và đặc biệt được cho ra đề thi vi điều khiển rất nhiều. Timer giúp tạo trễ chính xác tương đối, Timer0 có thể tạo delay, tạo xung PWM hoặc có thể điều khiển các hệ thống theo thời gian quy định

Mua linh kiện điện tử tại
Điện tử Nhật Tùng

Liên hệ làm mạch 

Phone: 0967.551.477

Zalo: 0967.551.477

Email: dientunhattung@gmail.com

Địa Chỉ: 171/25 Lê Văn Thọ, P8, Gò Vấp, Tp HCM

Chi tiết: Nhận làm mạch và đồ án Điện tử

 

Khóa học Vi điều khiển có phí

Hình thức học: Video hoặc Kèm trực tiếp
===>>>>  Kích vào hình để được biết thêm chi tiết

khóa học lập trình vi điều khiển online

Tải File bài giải

Pass giải nén: Huynhnhattung.com
===>>>   Nếu bạn chưa có phần mềm giải nén:

Hướng dẫn Tải và Cài đặt phần mềm giải nén Winrar

Video Lập trình Timer0,
Tạo chu kỳ điều khiển led đơn nhấp nháy

Blog Lập trình Timer0,
Tạo chu kỳ điều khiển led đơn nhấp nháy

Đề bài lập trình Timer0:

lap-trinh-timer0-tao-chu-ky-timer-nhap-nhay-led-don1

Bài giải lập trình Timer0:

Phần cứng chương trình lập trình Timer0:

  • Yêu cầu đề bài đưa ra tính timer0 để tạo ra chu kỳ nhấp nháy led đơn.
  • Sử dụng dao động ngoài thạch anh 20M gắn vào chân OSC1 OSC2. Đây là mô phỏng nên mình lười không gắn vào.
  • Sử dụng 8 Led đơn được điều khiển sáng tắt. Tính trở 330 tham khảo tại giáo trình thầy Nguyễn Đình Phú.
  • Các linh kiện chính cần sử dụng tham khảo tại.
Thông số kỹ thuật Mua Linh kiện
Pic16F887 Pic16F877
Led đơn Led đơn
Điện trở Điện trở
Nút nhấn Nút nhấn
Thạch anh Thạch anh

 

tao-chu-ky-timer-nhap-nhay-led-don

 

Phần mềm lập trình Timer0:

Khai báo thư viện tiền sử lý của lập trình Nút nhấn:

  • Vi điều khiển hiện tại mình đan dùng là Pic16F887
  • Hiện dùng thạch anh ngoài và thạch anh ngoài khai báo 20M bằng lệnh #Fuses  HS  và  #delay(clock=20M).  
  • Địa chỉ biến cờ tràn của timer00x0b.2 tức là địa chỉ 0x0b và vị trí 2. Tên thanh ghi TMR0IF vì vậy việc định nghĩa đúng tên làm rõ được chức năng của biến đan dùng, nếu các bạn không nhớ tên có thể định nghĩa bất cứ tên mà bạn mong muốn chỉ cần tuân thủ các điều kiện đặt tên.
  • Tên khai báo biến phụ thuộc vào chức năng để khai báo cho phù hợp. 
  • Khi các biến không biết được giá trị cuối thì nên khai báo signed int32 tức khai báo biến có dấu 32bit, lúc này giá trị rất rộng không sợ bị thiếu. Khi chương trình có trạng thái đối lập nhau thì nên khai báo biến 1bit để dễ lập trình.

lap-trinh-timer0-tao-chu-ky-timer-nhap-nhay-led-don2

Chương trình chính thực hiện toàn bộ hoạt động của vi điều khiển dùng lập trình nút nhấn

  • Bắt đầu chương trình chính phải khởi tạo ngõ vào ra cho vi điều khiển. Một chân của vi điều khiển thì làm nhiệm vụ I/O vì thế phải khỏi tạo.
    Port C xuất dữ liệu cho led đơn vì vậy xuất khởi tạo là 0x00.
  • Sử dụng timer0 để đếm thời gian 10s nên khai báo t0_internal và sử dụng bộ chia timer04. từ đó suy ra cách tính:
    20M/4=5M sử dụng bộ chia 4 là chia của phần cứng do nhà sản xuất quy định.
    5M/2=1.25M sử dụng bộ chia 2 của timer0, từ đó suy ra f = 1.25M   => T = 0.8uS.
    Timer0 đếm 8bit => 2^8 = 256 xung    => t0 max = 0.8uS x 256 = 0.2048ms . Nên sử dụng số 0.2048ms để tính đừng quy đổi ra xấp xỉ sẽ dẫn đến sai số.
    Chọn thời gian tràn timer00.2ms    => bắt đầu đếm từ 6.
  • Kiểm tra nếu TMR0IF=1 timer0 đã đếm tràn tức timer0 đã đếm tới ngưỡng 255 thì tiến hành xóa cờ tràn tức cho TMR0IF=0, sau đó khởi tạo lại Timer0 về 6 để chu kỳ sau được 0.2ms.
  • MSSV của mình là 417. Vì vậy timer tràn 2085 lần được 417ms. 1/3 = 139ms tức tràn 695 lần. Cách sắp xếp của led không giống nhau vì vậy muốn led sáng xuất 0xab. Led tắt xuất 0x54.

tao-chu-ky-timer-nhap-nhay-led-don3

Chúc các bạn có một kỳ thi thành công…!!!

Leave a Reply

chatzalo