Hướng dẫn sử dụng vi điều khiển 8051

0
441

Trong bài viết này, chúng ta sẽ đi tìm hiểu về vi điều khiển 8051. Đầu tiên chúng ta sẽ tìm hiểu sự ra đời của vi điều khiển 8051 và quá trình phát triển của nó.

Thứ hai, tìm hiểu kiến trúc bên trong của vi điều khiển như sơ đồ cấu tạo, các thanh ghi, bộ định thời, bộ đếm, cổng serial, bộ ngắt và nhiều tính năng khác. Tiếp theo, sẽ xem xét nguyên làm việc với các thiết bị ngoại vi.

Thứ ba, sẽ xem xét sơ đồ chân và cách hoạt động của các chân tương ứng đặc biệt là các chân GPIO. Sau đó là cách lập trình các chân GPIO.

Giới thiệu vi điều khiển 8051

Tập đoàn Intel là công ty đầu tiên trình làng bộ vi điều khiển 8051 trên thị trường. Nó là một vi điều khiển 8-bit, có 128 byte RAM trên chip, ROM 4k byte. hai bộ định thời, một cổng nối tiếp (serial), bốn cổng I/O đa chức năng. Mỗi cổng có một thanh ghi 8-bit.

Bộ xử lý trung tâm cũng là 8 bit. Do đó muốn xử lý dữ liệu lớn hơn phải chia dữ liệu thành các dữ liệu 8-bit.

Ngoài ra, có nhiều phiên bản với tốc độ xử lý khác nhau, dung lượng RAM và ROM trên chip cũng được cung cấp. Nhưng tất cả các phiên bản này hoạt động giống nhau nên một chương trình điều khiển có thể nạp và chạy trên bất kỳ phiên bản nào của họ 8051.

Các tính năng chính và thiết bị ngoại vi

Đặc trưng Khả dụng
ROM 4K byte
RAM 128 byte
Chân I/O 32
Bộ định thời 2
Cổng nối tiếp 1
Bộ Ngắt 6

Sơ đồ sơ đồ chân vi điều khiển 8051

Có 40 chân khác nhau. Xem sơ đồ cấu hình chân 8051 theo hình dưới đây

Sơ đồ sơ đồ chân vi điều khiển 8051

Một số nhà sản xuất cũng có vi điều khiển 8051 20 chân với số lượng chân I/O ít hơn. Như thể hiện trong sơ đồ chân, nó có 40 chân trong số đó 32 chân dành riêng cho bốn cổng GPIO.

Chi tiết về cấu hình chân

  • Vcc: Chân cấp nguồn, điện áp hoạt động là 5V
  • GND: Chân nối đất hoặc 0V
  • Chân XTAL1 và XTAL2: Hai chân để nối với bộ dao động thạch anh bên ngoài. Bộ dao động có hai tụ gốm 30pF, một đầu tụ được nối với thạch anh, một đầu được nối với GND. Tốc độ xử lý của vi điều khiển 8051 phụ thuộc vào tần số dao động của bộ dao động ngoài. Nhưng mỗi vi điều khiển điều có tần số hoạt động tối đa nên cũng không thể lắp thêm nhiều bộ dao động để tăng tốc xử lý của vi điều khiển.

Chi tiết về cấu hình chân 

  • RST: là chân reset. Chân này hoạt động ở mức logic cao. Nếu bạn cấp cho chân này một mức điện áp cao thì 8051 sẽ được đặt lại về trạng thái ban đầu của chương trình. Nó sẽ xóa tất cả các giá trị của thanh ghi và đặt bộ đếm về 0. Hình dưới đây là hình của một mạch reset. Chân RST chỉ hoạt động khi bạn đặt vào một mức điện áp cao, nếu không nó sẽ không kích hoạt.

RST: là chân reset

  • EA: được sử dụng để lưu trữ chương trình. Tất cả họ vi điều khiển 8051 đều có ROM chip để lưu trữ chương trình. Với chức năng này, chân EA được kết nối với Vcc. EA là viết tắt của External Access.
  • PSEN: Chân số 29 là một chân đầu ra. Nó là viết tắt của “Program store enable” và được sử dụng để lập trình.
  • Các cổng I/O P0, P1, P2 và P3 dùng để giao tiếp vi điều khiển 8051 với các thiết bị bên ngoài.

Kiến trúc vi điều khiển 8051

Trong phần này chúng ta sẽ tìm hiểu về kiến ​​trúc bên trong và các thanh ghi chính của 8051. Thanh ghi được sử dụng chủ yếu trong lập trình vi điều khiển bằng hợp ngữ (ngôn ngữ assembly). Nhưng đối với lập trình c, chúng ta chỉ cần biết một số thanh ghi. Các thanh ghi được sử dụng để thực hiện các lệnh MOV và ADD.

Thanh ghi

Thanh ghi được sử dụng để lưu trữ các lệnh và dữ liệu tạm thời. Vi điều khiển 8051 có 8 thanh ghi. Các thanh ghi có 8 bit bắt đầu từ D0- D7.

Trong đó bit D0 là bit trọng số thấp nhất và D7 là bit trọng số cao nhất. Để xử lý dữ liệu lớn hơn 8 bit bạn phải chia dữ liệu đó thành các dữ liệu 8bit. Có hai loại thanh ghi là thanh ghi cho chức năng chung và thanh ghi chức năng đặc biệt. Dưới đây là các thanh ghi cho chức năng chung thường được sử dụng.

  • Thanh ghi A (Accumulator): Được sử dụng để thực hiện các phép toán số học và logic.
  • Thanh ghi B, R0, R1, R2, R3, R4, R5, R6, R7 (Được sử dụng để lưu trữ địa chỉ lệnh và dữ liệu).
  • DPTR (Con trỏ dữ liệu được sử dụng để truy cập và xử lý dữ liệu ở các chế độ định địa chỉ khác nhau) Nó có byte cao (DPH) và byte thấp (DPL) được sử dụng để lưu địa chỉ 16 bit. Có thể sử dụng nó như một thanh ghi cơ sở trong các lệnh jump, truyền dữ liệu bên ngoài và các lệnh thực thi.
  • PC (Bộ đếm chương trình là thanh ghi 16 bit, được sử dụng để lưu trữ địa chỉ của lệnh tiếp theo sẽ được thực thi).

Các kiểu dữ liệu

Vi điều khiển 8051 chỉ có một kiểu dữ liệu 8 bit. Kích thước thanh ghi cũng là 8 bit. Nếu dữ liệu lớn hơn 8 bit, thì bạn phải chia nhỏ dữ liệu thành các dữ liệu 8 bit để xử lý. Lệnh DB là chỉ thị dữ liệu được sử dụng rộng rãi nhất trong lập trình hợp ngữ.

Thanh ghi trạng thái chương trình

Thanh ghi trạng thái hay còn gọi là thanh ghi flag. Thanh ghi flag được sử dụng để hiển thị trạng thái các lệnh logic số học như bit nhớ, bit nhớ 0, v.v. PSW là một thanh ghi 8 bit.

Chỉ có 6 bit được sử dụng. Thanh ghi PSW còn được gọi là thanh ghi flag, mỗi thanh ghi flag có 8 bit flag. Bốn flag được gọi là flag điều kiện chỉ thực hiện lệnh nếu điều kiện được đáp ứng.

Các flag điều kiện này là: flag tràn OV (overflow), flag chẳn lẻ P (parity), flag nhớ phụ AC (auxiliary carry), flag nhớ CY (carry). Bit số 3 và số 4 của thanh ghi PSW được sử dụng để thay đổi thanh ghi lập trình. Bit số 1 và số 5 của thanh ghi trạng thái chương trình không được sử dụng và nó có thể được người lập trình sử dụng cho bất cứ chức năng nào.

Thanh ghi lập trình

32 byte RAM dành riêng cho các thanh ghi lập trình (bank) và stack. 32 byte này được chia thành bốn bank. Mỗi bank có 8 thanh ghi từ R0 đến R7. Thanh ghi bank 1 bắt đầu từ địa chỉ 00H đến 07H.

Thanh ghi bank số 2 bắt đầu từ địa chỉ 08H và kết thúc là 0FH. Thanh ghi bank số 3 bắt đầu từ 10H và kết thúc ở địa chỉ 17H. Thanh ghi bank cuối cùng có địa chỉ từ 18H đến 1FH.

Stack trong vi điều khiển 8051

Ngăn xếp (stack) là một phần của RAM được bộ xử lý sử dụng để lưu trữ dữ liệu hoặc địa chỉ tạm thời. Vì số lượng thanh ghi rất hạn chế để lưu trữ dữ liệu và địa chỉ nên stack rất qun trọng.

Con trỏ ngăn xếp (Stack pointer) của 8051 là 8 bit nên có thể chứa dữ liệu từ 00 đến FFH. Con trỏ ngăn xếp được CPU sử dụng để truy cập stack. Khi được kích hoạt, con trỏ ngăn xếp có giá trị là 07.

Có tổ chức bộ nhớ phức tạp. Bởi vì vi điều khiển 8051 có bus địa chỉ riêng biệt cho bộ nhớ chương trình, bộ nhớ dữ liệu và RAM mở rộng. Dựa trên kiến ​​trúc vi mạch Harvard do Harvard phát triển vào năm 1944.

Chế độ định địa chỉ

Bộ vi xử lý tìm nạp dữ liệu theo nhiều cách khác nhau. Dữ liệu thường được lưu trữ trong thanh ghi, bộ nhớ và có thể được sử dụng từ giá trị tức thời. Các cách truy cập dữ liệu khác nhau này được gọi là các chế độ định địa chỉ. Các bộ vi điều khiển khác nhau có các chế độ định địa chỉ khác nhau phụ thuộc vào thiết kế của nhà sản xuất. 8051 có 5 chế độ định địa chỉ.

  • Theo thứ tự (Indexed)
  • Gián tiếp qua thanh ghi (Register indirect)
  • Trực tiếp (Direct)
  • Theo thanh ghi (Register)
  • Tức thời (Immediate)

Lập trình cổng I/O vi điều khiển 8051

Có 4 cổng I/O để giao tiếp với ngoại vi. Bao gồm các cổng P0, P1, P2, P3, mỗi cổng có 8 bit. Mỗi bit tương ứng với một chân vào ra. Reset các chân này trở thành cổng đầu vào. Nói cách khác, chúng có thể được sử dụng làm đầu vào. Nhưng tất cả các cổng đều có thể được cấu hình làm đầu vào hoặc đầu ra.

Lập trình cổng I/O vi điều khiển 8051

Để sử dụng cổng 0 thì mỗi chân của cổng này phải được nối với điện trở kéo 10k ohm. Các cổng còn lại được cấu hình là ngõ vào hay ra bằng cách ghi 0 hoặc 1 cho tất cả các bit, không cần sử dụng điện trở kéo ở các cổng này.

Thông thường chúng ta chỉ truy cập một vài bit của một cổng. Bộ vi điều khiển 8051 có lệnh để bạn có thể truy cập được các bit riêng lẻ.

Ví dụ bạn muốn truy cập bit 0 ở cổng 1, bạn sẽ sử dụng lệnh bit P1.0 để truy cập đến bit 0 ở cổng 1. Tương tự bạn có thể truy cập bất kỳ bit nào ở bất kỳ cổng nào. Bạn có thể tự thực hiện điều này mời bạn xem phần cách lập trình trong phần sau của bài viết này. Xem hướng dẫn về cách sử dụng các cổng đầu vào đầu ra của vi điều khiển 8051:

  • Cách sử dụng các cổng đầu ra đầu vào của vi điều khiển 8051

Các tính năng của vi điều khiển 8051

Bộ vi điều khiển có các tính năng sau. Ngoài ra bạn có thể kết nối thêm các thành phần bổ sung để thêm tính năng:

  • ROM bên trong = 4k byte
  • RAM = 128k byte
  • Có 4 cổng I/O 8 bit
  • Một cổng giao tiếp nối tiếp
  • Có 210 bit bus địa chỉ
  • Bộ nhớ ngoài 64k byte cho code
  • Bộ nhớ ngoài 64k byte cho dữ liệu
  • Hai bộ định thời và bộ đếm 16 bit
  • Cổng giao tiếp nối tiếp UART
  • Ngắt (ngoài và trong)
  • chop clockg bên trong chip

Sơ đồ khối vi điều khiển 8051

Như đã đề cập trước đó, vi điều khiển 8051 có 4 cổng I/O, 2 bộ định thời có thể được sử dụng như một bộ định thời hoặc bộ đếm. Nó có một cổng giao tiếp nối tiếp có thể sử dụng như một cổng I/O hoặc giao tiếp UART. Tất cả các tính năng khác cũng được hiển thị trong sơ đồ khối. Sơ đồ khối của vi điều khiển 8051 được trình bày dưới đây.

Sơ đồ khối vi điều khiển 8051

Bộ định thời trong 8051

8051 có hai bộ định thời (timer). Bộ định thời là bộ đếm tăng lên một khi có một lệnh được thực thi. Thời gian tăng phụ thuộc vào tần số bộ dao động thạch anh. Để biết thêm thông tin về cách sử dụng hai bộ timer này như một bộ đếm thời gian hoặc bộ đếm lên, bạn có thể xem bài viết sau:

  • 8051 microcontroller timers

Ngắt ngoài

Vi điều khiển 8051 có 2 chân ngắt ngoài dùng để phát hiện các sự kiện bên ngoài. Có hai phương pháp để giám sát các sự kiện bên ngoài là phương pháp sử dụng ngắt và phương pháp polling. Để biết cách sử dụng ngắt mời bạn vào xem bài viết sau:

  • 8051 microcontroller interrupts

Cách để đo các giá trị analog bộ ADC

Vi điều khiển 8051 không tích hợp sẵn bộ chuyển đổi ADC. Như bạn đã biết, việc chuyển đổi analog sang digital có nhiều ứng dụng. Tất cả các vi điều khiển hoặc các thiết bị số chỉ trao đổi dưới dạng nhị phân 0 hoặc 1.

Vì vậy, để giao tiếp bất kỳ cảm biến analog nào với vi điều khiển, chúng ta cần sử dụng bộ chuyển đổi ADC. Chúng ta có thể giao tiếp bộ chuyển đổi ADC bên ngoài với bộ vi điều khiển 8051 để đo tín hiệu analog thực bên ngoài. Để biết thêm về cách giao tiếp 8051 với bộ chuyển đổi ADC, hãy xem hướng dẫn sau đây:

  • Interfacing ADC0804 with 8051 microcontroller

>>> Mời anh em xem thêm

Tôi là một người làm việc trong lĩnh vực cơ khí, thiết bị công nghiệp....Blog là nơi tôi chia sẻ thông tin hữu ích đến các bạn đọc.
Subscribe
Notify of
0 Bình luận
Inline Feedbacks
View all comments