Tổng quan về 8051

8051 là một dòng chip nhập môn cho lập trình viên nhúng, chúng được sử dụng trong giảng dạy trong các trường đại học, cao đẳng rất lâu rồi. Hiện nay 8051 ít được sử dụng hơn do đã cũ. Nhưng để nhập môn lập trình vi điều khiển thì vẫn rất tuyệt vời.

Bài 1 Trong serie Học lập trình 8051 từ A tới Z

Lịch sử của 8051

Vào năm 1981. Hãng Intel giới thiệu một số bộ vi điều khiển được gọi là 8051. Bộ vi điều khiển này có 128 byte RAM, 4K byte ROM trên chíp, hai bộ định thời, một cổng nối tiếp và 4 cổng (đều rộng 8 bit) vào ra tất cả được đặt trên một chíp. Lúc ấy nó được coi là một “hệ thống trên chíp”. 8051 là một bộ xử lý 8 bit có nghĩa là CPU chỉ có thể làm việc với 8 bit dữ liệu tại một thời điểm.

Dữ liệu lớn hơn 8 bit được chia ra thành các dữ liệu 8 bit để cho xử lý. 8051 có tất cả 4 cổng vào – ra I/O mỗi cổng rộng 8 bit. Mặc dù 8051 có thể có một ROM trên chíp cực đại là 64 K byte, nhưng các nhà sản xuất lúc đó đã cho xuất xưởng chỉ với 4K byte ROM trên chíp. Điều này sẽ được bàn chi tiết hơn sau này.SmartElex AT89S52 Development Board 3

8051 đã trở nên phổ biến sau khi Intel cho phép các nhà sản xuất khác sản xuất và bán bất kỳ dạng biến thế nào của 8051 mà họ thích với điều kiện họ phải để mã lại tương thích với 8051. Điều này dẫn đến sự ra đời nhiều phiên bản của 8051 với các tốc độ khác nhau và dung lượng ROM trên chíp khác nhau được bán bởi hơn nửa các nhà sản xuất. 

Điều này quan trọng là mặc dù có nhiều biến thể khác nhau của 8051 về tốc độ và dung lương nhớ ROM trên chíp, nhưng tất cả chúng đều tương thích với 8051 ban đầu về các lệnh. Điều này có nghĩa là nếu ta viết chương trình của mình cho một phiên bản nào đó thì nó cũng sẽ chạy với mọi phiên bản bất kỳ khác mà không phân biệt nó từ hãng sản xuất nào.

Đặc tính Số lượng
ROM trên chíp

RAM

Bộ định thời

Các chân vào – ra

Cổng nối tiếp

Nguồn ngắt

4K byte

128 byte

2

32

1

6

Các dòng 8051 thông dụng

Bộ vi điều khiển 8051 có cấu trúc không quá phức tạp, các bạn có thể xem hình sau:

word image 8203 1

Bộ vi điều khiển AT8951 của Atmel Corporation

AT8951 là phiên bản 8051 có ROM trên chíp là bộ nhớ Flash. Phiên bản này rất thích hợp cho các ứng dụng nhanh vì bộ nhớ Flash có thể được xóa trong vài giây (chứ không phải 20 phút như 8751).

Dĩ nhiên là để dùng AT8951 cần phải có một bộ đốt ROM hỗ trợ bộ nhớ Flash, song lại không cần bộ xóa ROM vì bộ nhớ Flash được xóa bằng bộ đốt PROM. Để tiện sử dụng, hiện nay Hãng Atmel đang nghiên cứu một phiên bản của AT89C51 có thể được lập trình qua cổng COM của máy tính IBM PC và như vậy sẽ không cần bộ đốt PROM.

Các phiên bản của 8051 của Atmel (Flash ROM)

word image 8203 3

Thông số về kiểu đóng vỏ và tốc độ của bộ vi điều khiển cũng được thể hiện ở ký hiệu. Ví dụ, chữ “C” đứng trước số 51 ở ký hiệu AT89C51-12PC là để chỉ công nghệ CMOS (tiêu thụ năng lượng thấp), “12” để chỉ tốc độ 12MHZ và “P” là kiểu đóng vỏ DIP, chữ “C” cuối cùng là ký hiệu cho thương mại (ngược lại với chữ “M” là quân sự). AT89C51-12PC rất thích hợp cho các thử nghiệm của học sinh, sinh viên.

Bộ vi điều khiển DS5000 của Hãng Dallas Semiconductor

Một phiên bản phổ biến khác nữa của 8051 là DS5000 của Hãng Dallas Semiconductor. Bộ nhớ ROM trên chip của DS5000 là NV-RAM. DS5000 có khả năng nạp chương trình vào ROM trên chip trong khi nó vẫn ở trong một hệ thống mà không cần phải lấy ra. Cách thực hiện là dùng qua cổng COM của máy tính IBM PC.

Đây là một điểm mạnh rất được ưa chuộng. Ngoài ra, NV-RAM còn có ưu việt cho phép thay đổi nội dung ROM theo từng byte. Nhắc lại là, bộ nhớ Flash và EPROM phải được xóa hết trước khi lập trình lại.

Các phiên bản 8051 của hãng Dallas Semiconductor

word image 8203 4

Lưu ý đồng hồ thời gian thực RTC khác với bộ định thời Timer. RTC tạo và lưu giữ thời gian của ngày (giờ, phút, giây) và ngày tháng (ngày, tháng, năm) kể cả khi tắt nguồn.

Còn có nhiều phiên bản DS5000 với những tốc độ và kiểu đóng gói khác nhau. Ví dụ, DS5000-8-8 có 8K NV-RAM và tốc độ 8MHZ. Thông thường DS5000-8-12 là thích hợp cho các nghiên cứu, thử nghiệm của sinh viên.

word image 8203 5

Phiên bản OTP của 8051

Phiên bản OTP (One Time Programmable) của 8051 là các chip 8051 có thể lập trình được một lần và được nhiều hãng sản xuất khác nhau cung cấp. Các phiên bản Flash và NV-RAM thường được dùng để phát triển sản phẩm mẫu khi sản phẩm mẫu được hoàn tất thì phiên bản OTP của 8051 được dùng để sản xuất hàng loạt vì giá thành trên một đơn vị sản phẩm sẽ rẻ hơn nhiều.

Họ 8051 của hãng Philips

Một nhà sản xuất quan trọng khác của họ 8051 là Philips Corporation. Quả thực hãng này có một dải lựa chọn các bộ vi điều khiển họ 8051 rất rộng. Nhiều sản phẩm của hãng đã gộp luôn một số chức năngnhuw bộ chuyển đổi ADC, DAC, cổng I/O mở rộng, cả các phiên bả OTP và Flash.

Thông số của AT89S52

AT89S52 là một trong những bộ vi điều khiển phổ biến của họ Atmel, vi điều khiển AT89S52 là vi điều khiển công nghệ CMOS 8 bit có bộ nhớ Flash 8kb và bộ nhớ RAM 256 byte. 

Nó có thể hoạt động ở tần số tối đa là 33MHz bằng cách sử dụng bộ dao động bên ngoài. Giống như các bộ vi điều khiển khác, nó có các chân GPIO, ba bộ định thời 16 bit, một cổng giao tiếp UART song công (truyền tín hiệu theo cả 2 hướng), ba bộ định thời 16 bit, bộ tạo dao động trên chip.

A picture containing knife Description automatically generated

Hơn nữa, nó có 40 chân, trong đó có 32 chân GPIO. AT89S52 cũng có bộ đếm thời gian Watchdog có sẵn để vận hành chế độ tối ưu năng lượng cho bộ vi điều khiển. 

Bộ vi điều khiển này ứng dụng trong thiết bị gia đình đến ngành công nghiệp cung cấp khả năng điều khiển digital cho các hệ thống nhúng.

Các tính năng và thông số kỹ thuật của AT89S52:

word image 8203 7

Một số tính năng chi tiết nổi bật được liệt kê dưới đây:

  • Là bộ vi điều khiển công nghệ CMOS hiệu suất cao tích hợp công nghệ Flash
  • Hoạt động ở dải điện áp rộng 4 – 5.5V, vì vậy nó là một IC công suất thấp.
  • Thiết bị hỗ trợ lập trình bên trong ở cả chế độ page và byte của bộ nhớ Flash.
  • Tần số hoạt động lên đến 33MHz nhưng có thể thay đổi để tiết kiệm năng lượng.
  • Module có thời gian lập trình nhanh với 10.000 chu kỳ đọc / ghi.
  • Bộ nhớ RAM 256 × 8 bit.
  • Giao tiếp nối tiếp thông qua module UART song công.
  • Nó có một chân reset, ba bộ định thời 16 bit và tám bộ ngắt.
  • AT89S52 có hai chế độ nguồn. Đầu tiên là chế độ nhàn rỗi, trong đó thiết bị xử lý dừng hoạt động trong khi ngoại vi vẫn tiếp tục hoạt động. Thứ hai là chế độ tắt nguồn sẽ tạm dừng bộ dao động và các chức năng khác và lưu nội dung RAM.
  • Bộ đếm thời gian Watchdog để hoạt động khởi động thiết bị từ chế độ ngủ và có thể được kích hoạt hoặc hủy kích hoạt thông qua lập trình

Tại sao nên học 8051

Có rất nhiều câu hỏi đặt ra khi bắt đầu học lập trình nhúng – vi điều khiển. Ví dụ như: Nên bắt đầu với dòng vi xử lý, vi điều khiển nào? chúng nó khác gì nhau? … 

Với câu hỏi đầu tiên: Nên bắt đầu với dòng vi xử lý, vi điều khiển nào? Theo mình, và một số người đi trước cũng như trong chương trình đại học (ở đây là trường BKHN) thì nên bắt đầu với 8051.

Lý do bởi vì:

  • 8051 có kiến trúc đơn giản, không phức tạp như các dòng chip STM32, PIC…
  • Dễ lập trình và nạp chương trình
  • Tài liệu dễ tìm do các trường đại học thường đào tạo dòng này làm cơ bản
  • Có thể dùng Proteus để giả lập, tiết kiệm chi phí học tập

Sau khi hiểu kiến trúc, cách hoạt động của vi xử lý, vi điều khiển, các kiến thức về điện tử, GPIO, Timer, ADC, Interrupt, … và các protocol cơ bản thì việc học các dòng cao hơn như AVR, PIC, ARM, … sẽ dễ dàng hơn rất nhiều.

Vậy học 8051 như thế nào?

Nói ở trên nghe có vẻ dễ, nhưng đến lúc làm cũng không khó chút nào. Cách học tốt nhất là “hành”.

Có 3 thứ để bạn bắt đầu học lập trình 8051 cũng như một vi điều khiển bất kì:

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

Phần mềm hay môi trường tích hợp (IDE) là nơi chúng ta viết chương trình, biên dịch, nạp và debug. Có nhiều công cụ lập trình khác nhau nhưng ở VN thông dụng nhất vẫn là sử dụng Keil C

Mình sẽ hướng dẫn các bạn sử dụng Keil C trong các bài 2: Cài đặt Keil C và proteus lập trình 8051

Công cụ mô phỏng hoặc mạch thực tế

Nếu có điều kiện chúng ta nên sắm cho mình một cái KIT 8051 để nạp thực tế. Có thể là kit 8051 riêng lẻ sau đó mua thêm các linh kiện khác hoặc started KIT 805, đã bao gồm các linh kiện khác trên mạch và có example cho người sử dụng rồi.

kit 8051 trang

Nếu không có điều kiện mua, các bạn có thể download phần mềm mô phỏng Proteus để sử dụng. Nó cũng khá chính xác, nhưng tốt nhất vẫn nên mua KIT nhé. Không có gì tuyệt vời hơn việc bạn lập trình sau đó nhìn thấy mạch hoạt động được thực tế đâu.
8051 proteus

Công cụ nạp chương trình

Nếu sử dụng vi điều khiển thực thì chắc chắn phải có mạch nạp. Có 2 loại mạch nạp đó là song song và ISP.
Với mạch nạp song song, bạn phải tháo chip sau đó cắm vào đế nạp để nạp chương trình. Điều này khá là bất tiện khi lúc nào cũng phải tháo ra cắm vào để nạp code. Không kể sẽ bị gãy chân khi cắm sai.

180S

Để giải quyết được vấn đề đó, các bạn nên mua mạch nạp ISP. Khi thiết kế mạch, thiết kế khay cắm ISP để cắm mạch nạp cho mạch. Một lưu ý đó là mạch nạp ISP chỉ sử dụng trên dòng chip AT89S51, S52 chứ ko hoạt động trên dòng AT89C51, C52 nhé.

mach nap 8051 isp

Tài liệu lập trình 8051

Đầu tiên đó là Datasheet của dòng chip các bạn sử dụng. Ở đây mình sử dụng đó là AT89S52, các bạn download tại link: https://www.keil.com/dd/docs/datashts/atmel/at89s52_ds.pdf

Thứ 2 đó là tài liệu lập trình, bao gồm cách tổ chức bộ nhớ, thanh ghi, cách hoạt động của ngoại vi… Các bạn down load tại link: https://ww1.microchip.com/downloads/en/DeviceDoc/doc1919.pdf

Kiến truc at89S52
Kiến trúc AT89S52

Kết 

Hi vọng bạn đã có cái nhìn tổng quan về dòng vi điều khiển 8051, đặc biệt là họ AT89S52 của Atmel. Chúng ta sẽ bắt đầu ngay sau bài này để chinh phục dòng chip này nhé.
Đừng quên gia nhập Hội Anh Em Nghiện Lập trình để giao lưu và học hỏi nhé!!!

5/5 - (3 bình chọn)

Để lại một bình luận

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *