Bộ hẹn giờ và bộ đếm trong Vi điều khiển 8051 và các ứng dụng của nó

Hãy Thử Công Cụ CủA Chúng Tôi Để LoạI Bỏ Các VấN Đề





Nhiều cái của ứng dụng vi điều khiển yêu cầu đếm các sự kiện bên ngoài như tần số của các đợt phát xung và tạo ra độ trễ thời gian bên trong chính xác giữa các hoạt động của máy tính. Cả hai tác vụ này đều có thể được thực hiện bằng các kỹ thuật phần mềm, nhưng các vòng lặp phần mềm để đếm và tính thời gian sẽ không cho kết quả chính xác hơn là các chức năng quan trọng hơn không được thực hiện. Để tránh những vấn đề này, bộ định thời và bộ đếm trong bộ điều khiển vi mô là những lựa chọn tốt hơn cho các ứng dụng đơn giản và chi phí thấp. Những bộ hẹn giờ và bộ đếm này được sử dụng làm ngắt trong vi điều khiển 8051 .

Có hai bộ định thời và bộ đếm 16 bit trong Vi điều khiển 8051 : bộ định thời 0 và bộ định thời 1. Cả bộ định thời đều bao gồm thanh ghi 16 bit trong đó byte thấp hơn được lưu trong TL và byte cao hơn được lưu trong TH. Timer có thể được sử dụng như một bộ đếm cũng như cho hoạt động định thời phụ thuộc vào nguồn xung đồng hồ đến bộ đếm.




Bộ hẹn giờ và bộ đếm

Bộ hẹn giờ và bộ đếm

Bộ đếm và Bộ định thời trong vi điều khiển 8051 chứa hai thanh ghi chức năng đặc biệt: TMOD (Thanh ghi chế độ bộ định thời) và TCON (Thanh ghi điều khiển bộ định thời), được sử dụng để kích hoạt và cấu hình bộ đếm thời gian và bộ đếm .



Điều khiển chế độ hẹn giờ (TMOD): TMOD là một thanh ghi 8 bit được sử dụng để chọn bộ định thời hoặc bộ đếm và chế độ bộ định thời. 4 bit thấp hơn được sử dụng cho hoạt động điều khiển của bộ định thời 0 hoặc bộ đếm0, và 4 bit còn lại được sử dụng cho hoạt động điều khiển của bộ định thời1 hoặc bộ đếm 1. Thanh ghi này có trong thanh ghi SFR, địa chỉ cho thanh ghi SFR là thứ 89.

Kiểm soát chế độ hẹn giờ (TMOD)

Kiểm soát chế độ hẹn giờ (TMOD)

Cánh cổng: Nếu bit cổng được đặt thành ‘0’, thì chúng ta có thể bắt đầu và dừng bộ đếm thời gian “phần mềm” theo cách tương tự. Nếu cổng được đặt thành ‘1’, thì chúng ta có thể thực hiện bộ đếm thời gian phần cứng.

C / T: Nếu bit C / T là ‘1’, thì nó đang hoạt động như một chế độ bộ đếm và tương tự khi đặt C +
= / T bit là ‘0’ nó đang hoạt động như một chế độ hẹn giờ.


Chế độ chọn bit: M1 và M0 là các bit chọn chế độ, được sử dụng để chọn các hoạt động của bộ định thời. Có bốn chế độ để vận hành bộ hẹn giờ.

Chế độ 0: Đây là chế độ 13 bit có nghĩa là hoạt động của bộ đếm thời gian hoàn thành với các xung “8192”.

Chế độ 1: Đây là chế độ 16 bit, có nghĩa là hoạt động của bộ đếm thời gian hoàn thành với xung đồng hồ tối đa là “65535”.

Chế độ 2: Chế độ này là chế độ tự động tải lại 8 bit, có nghĩa là hoạt động của bộ đếm thời gian chỉ hoàn thành với xung đồng hồ “256”.

Chế độ 3: Chế độ này là chế độ hẹn giờ phân tách, có nghĩa là các giá trị tải trong T0 và tự động khởi động T1.

Các bit lựa chọn chế độ

Các bit lựa chọn chế độ

Lựa chọn chế độ Các giá trị của bộ định thời và bộ đếm trong 8051

Các giá trị lựa chọn chế độ của bộ hẹn giờ và bộ đếm

Các giá trị lựa chọn chế độ của bộ hẹn giờ và bộ đếm

Thanh ghi điều khiển bộ định thời (TCON): TCON là một thanh ghi khác dùng để điều khiển hoạt động của bộ đếm và bộ định thời trong vi điều khiển. Nó là một thanh ghi 8 bit, trong đó bốn bit phía trên chịu trách nhiệm về bộ định thời và bộ đếm và các bit phía dưới chịu trách nhiệm về ngắt.

Thanh ghi điều khiển hẹn giờ (TCON)

Thanh ghi điều khiển hẹn giờ (TCON)

TF1: TF1 là viết tắt của bit cờ ‘timer1’. Bất cứ khi nào tính toán thời gian trễ trong timer1, TH1 và TL1 tự động đạt đến giá trị lớn nhất là “FFFF”.

EX: while (TF1 == 1)

Bất cứ khi nào TF1 = 1, sau đó xóa bit cờ và dừng bộ định thời.

TR1: TR1 là viết tắt của bit bắt đầu hoặc dừng timer1. Việc bắt đầu hẹn giờ này có thể thông qua hướng dẫn phần mềm hoặc thông qua phương pháp phần cứng.

EX: gate = 0 (khởi động bộ đếm thời gian 1 thông qua hướng dẫn phần mềm)
TR1 = 1 (Bắt đầu hẹn giờ)

TF0: TF0 là viết tắt của cờ-bit ‘timer0’. Bất cứ khi nào tính toán độ trễ thời gian trong timer1, TH0 và TL0 sẽ tự động đạt đến giá trị lớn nhất là 'FFFF'.

EX: while (TF0 == 1)
Bất cứ khi nào TF0 = 1, thì xóa bit cờ và dừng bộ định thời.

TR0: TR0 là viết tắt của bit start hoặc stop ‘timer0’, việc khởi động bộ đếm thời gian này có thể thông qua hướng dẫn phần mềm hoặc thông qua phương pháp phần cứng.

EX: gate = 0 (khởi động bộ đếm thời gian 1 thông qua hướng dẫn phần mềm)
TR0 = 1 (Bắt đầu hẹn giờ)

Tính toán độ trễ thời gian cho vi điều khiển 8051

Bộ vi điều khiển 8051 hoạt động với tần số 11,0592 MHz.

Tần số 11.0592MHz = 12 pules

1 xung clock = 11.0592MHz / 12

F = 0,921 MHz

Thời gian trễ = 1 / F

T = 1 / 0,92MHz

T = 1.080506 us (cho chu kỳ ‘1’)

1000us = 1MS

1000ms = 1sec

Quy trình tính toán chương trình trễ

1. Đầu tiên chúng ta phải tải giá trị thanh ghi TMOD cho ‘Timer0’ và ‘Timer1’trong các chế độ khác nhau. Ví dụ, nếu chúng ta muốn vận hành timer1 ở mode1, nó phải được cấu hình là “TMOD = 0x10”.

2. Bất cứ khi nào chúng ta vận hành bộ đếm thời gian ở chế độ 1, bộ định thời sẽ nhận xung tối đa là 65535. Sau đó, các xung thời gian trễ được tính toán phải được trừ đi các xung tối đa và sau đó được chuyển đổi thành giá trị thập lục phân. Giá trị này phải được tải ở bit cao hơn của timer1 và bit thấp hơn. Hoạt động hẹn giờ này được lập trình bằng nhúng C trong một vi điều khiển .

Ví dụ: thời gian trễ 500us

500us / 1.080806us

461 bản

P = 65535-461

P = 65074

65074 được chuyển đổi bằng hệ thập lục phân = FE32

TH1 = 0xFE

TL1 = 0x32

3. Khởi động bộ đếm thời gian1 “TR1 = 1”

4. Giám sát bit cờ “while (TF1 == 1)”

5. Xóa bit cờ “TF1 = 0”

6. Xóa bộ hẹn giờ “TR1 = 0”

Chương trình ví dụ:

Chương trình- 1

Chương trình- 1

Chương trình- 2

Chương trình- 2

Chương trình- 3

Chương trình- 3

Bộ đếm trong 8051

Chúng ta có thể sử dụng một bộ đếm bằng cách giữ C / T bit cao, tức là logic ‘1’ trong thanh ghi TMOD. Để hiểu rõ hơn, chúng tôi đã đưa ra một chương trình sử dụng bộ đếm thời gian 1 làm bộ đếm. Ở đây các đèn LED được kết nối với 8051 Cổng 2 và chuyển sang chân P3.5 của timer1 và do đó, nếu công tắc được nhấn, giá trị sẽ được tính. Nếu không, một cảm biến được kết nối bên ngoài với chân bộ đếm này làm đầu vào thực hiện hoạt động đếm này.

Chương trình truy cập

Chương trình truy cập

Các ứng dụng của bộ định thời và bộ đếm trong 8051

Bộ đếm kỹ thuật số với 8051

Bộ đếm số với 8051 đạt được bằng cách lập trình vi điều khiển như đã thảo luận ở trên và bằng cách gắn một hệ thống cảm biến vào nó. Bộ đếm đối tượng này sử dụng cảm biến IR phát hiện chướng ngại vật gần nó và cũng cho phép chân của bộ vi điều khiển 06. Khi một đối tượng đi qua các cảm biến, bộ vi điều khiển sẽ nhận được tín hiệu ngắt từ các cảm biến IR và tăng số lượng được hiển thị trên màn hình 7 đoạn.

Bộ đếm kỹ thuật số với 8051

Bộ đếm kỹ thuật số với 8051

Mạch trễ thời gian Sử dụng vi điều khiển 8051

Hình dưới đây cho thấy hoạt động hẹn giờ có thể được thực hiện như thế nào để chuyển đổi các đèn LED một cách hiệu quả. Hoạt động trễ thời gian cho bộ đèn LED được lập trình trong bộ vi điều khiển theo cách đã thảo luận ở trên. Ở đây, một bộ đèn LED được kết nối với cổng 2 bằng một hệ thống cung cấp chung. Khi mạch này được bật dựa trên thời gian trễ chương trình trong vi điều khiển một cách thích hợp, các đèn LED này được bật.

Thời gian trễ mạch

Thời gian trễ mạch

Đây là tất cả về bộ đếm thời gian và bộ đếm vi điều khiển 8051 với các mạch lập trình và ứng dụng cơ bản. Chúng tôi hy vọng rằng thông tin của bài viết này có thể cung cấp cho bạn đủ dữ liệu để hiểu rõ hơn về khái niệm này. Hơn nữa, bất kỳ nghi ngờ kỹ thuật nào về lập trình 8051 và các mạch của nó, bạn có thể liên hệ với chúng tôi bằng cách bình luận bên dưới.

Tín ảnh:

  • Bộ đếm kỹ thuật số với 8051 bởi Cirstoday
  • Thời gian trễ mạch bằng vshamu