Đồ án Lập trình C cho Vi điều khiển 8051 - Đại học Công nghiệp TP HCM

Đồ án lập trình C cho vi điều khiển 8051: Tài liệu, code mẫu và hướng dẫn chi tiết giúp bạn hoàn thành đồ án một cách hiệu quả nhất.

Chuyên ngành

Công nghệ điện tử

Người đăng

Ẩn danh

Thể loại

Đồ án tốt nghiệp

2007

70
1
0

Phí lưu trữ

30 Point

Tóm tắt

I. Tổng Quan Về Lập Trình C Cho Vi Điều Khiển 8051 Khởi Đầu Dễ Dàng

Ngày nay, vi điều khiển đã len lỏi vào mọi ngóc ngách của cuộc sống, từ thiết bị gia dụng đến dây chuyền sản xuất công nghiệp. Việc sử dụng vi điều khiển trong thiết kế hệ thống giúp giảm chi phí, hạ giá thành sản phẩm và nâng cao độ ổn định. Trên thị trường có vô số họ vi điều khiển như 8051 của Intel, 68HC11 của Motorola, PIC của Microchip... Mỗi họ đều có ưu điểm riêng, nhưng 8051 vẫn giữ một vị thế quan trọng nhờ tính đơn giản, dễ học và được hỗ trợ rộng rãi. Việc phát triển ứng dụng vi xử lý đòi hỏi kiến thức cả về phần cứng lẫn phần mềm. Tính đa dạng của ứng dụng phụ thuộc vào việc lựa chọn vi xử lý và kỹ thuật lập trình. Các bộ vi xử lý hiện diện trong các thiết bị điện tử hiện đại: từ đầu đĩa CD, máy thu hình đến các thiết bị điều khiển trong công nghiệp. Lĩnh vực ứng dụng rất rộng lớn: nghiên cứu khoa học, truyền dữ liệu, công nghiệp, năng lượng, giao thông và y tế. Tùy theo kinh nghiệm, người lập trình có thể sử dụng các ngôn ngữ khác ngoài hợp ngữ như C, C++, Visual Basic để tạo ra những chương trình chất lượng cao hơn. Đồ án này tập trung vào việc sử dụng ngôn ngữ C để lập trình vi điều khiển 8051, một kỹ năng quan trọng cho bất kỳ kỹ sư điện tử nào.

1.1. Tại Sao Nên Chọn Ngôn Ngữ C Cho Lập Trình 8051

Ngôn ngữ C mang lại nhiều lợi thế so với hợp ngữ khi lập trình vi điều khiển 8051. Đầu tiên, C dễ đọc và dễ bảo trì hơn, giúp giảm thời gian phát triển và gỡ lỗi. Thứ hai, C cho phép viết code có tính di động cao, nghĩa là có thể tái sử dụng code cho các vi điều khiển khác nhau. Thứ ba, Compiler C cho 8051 thường tối ưu hóa code tốt hơn so với việc viết bằng tay bằng hợp ngữ, dẫn đến hiệu suất tương đương hoặc thậm chí tốt hơn. Theo tài liệu gốc, việc sử dụng các ngôn ngữ bậc cao như C và C++ giúp tạo ra “những chương trình chất lượng cao hơn” so với hợp ngữ, cho thấy tầm quan trọng của việc nắm vững lập trình C cho 8051.

1.2. Các Khái Niệm Cơ Bản Về Vi Điều Khiển 8051 Cần Nắm Vững

Để bắt đầu lập trình C cho vi điều khiển 8051, cần nắm vững một số khái niệm cơ bản. Điều này bao gồm kiến trúc của chip 8051, các thanh ghi chức năng đặc biệt (SFR), cách truy cập bộ nhớ, và cách sử dụng các peripheral như Timer 8051, Interrupt 8051, và Serial communication 8051. Hiểu rõ sơ đồ chân 8051 và các chức năng của từng chân là điều cần thiết. Ngoài ra, cần làm quen với các công cụ phát triển như trình biên dịch Keil C51 và các trình mô phỏng như Proteus 8051. Tìm hiểu Datasheet 8051 cũng là một bước quan trọng để hiểu rõ các thông số kỹ thuật và khả năng của vi điều khiển.

1.3. Giới Thiệu Vi Điều Khiển AT89C51 Và Ứng Dụng

AT89C51 là một biến thể phổ biến của họ vi điều khiển 8051. Nó có 4KB bộ nhớ Flash, 128 byte RAM, 32 chân GPIO 8051, và các peripheral cơ bản như timer và UART. AT89C51 được sử dụng rộng rãi trong các ứng dụng như điều khiển đèn LED 8051, hiển thị trên LCD 8051, điều khiển động cơ, và giao tiếp nối tiếp. Nó là một lựa chọn tốt cho người mới bắt đầu học lập trình nhúng 8051 vì tính đơn giản và được hỗ trợ tốt. AT89S52AT89C2051 cũng là những lựa chọn phổ biến khác, mỗi loại có những đặc điểm riêng phù hợp với các ứng dụng khác nhau.

II. Thiết Lập Môi Trường Lập Trình C Cho 8051 Hướng Dẫn Chi Tiết

Để bắt đầu lập trình C cho 8051, cần thiết lập một môi trường phát triển phù hợp. Công cụ phổ biến nhất là Keil C51, một trình biên dịch và IDE mạnh mẽ hỗ trợ nhiều vi điều khiển 8051 khác nhau. Quá trình thiết lập bao gồm cài đặt Keil C51, cấu hình project, và lựa chọn target phù hợp. Ngoài ra, cần cài đặt các trình mô phỏng như Proteus 8051 để kiểm tra và gỡ lỗi code trước khi nạp vào Hardware 8051 thực tế. Việc thiết lập môi trường Debug 8051 một cách chính xác là rất quan trọng để đảm bảo quá trình phát triển diễn ra suôn sẻ.Theo tài liệu, Keil SoftWare 8051 cung cấp các công cụ để “biên tập mã C, tập hợp những tập tin assembly, liên kết và định vị những đoạn chương trình hướng đối tượng… khởi tạo file HEX, và trình gỡ lỗi”, cho thấy tính toàn diện của công cụ này.

2.1. Cài Đặt Và Cấu Hình Trình Biên Dịch Keil C51

Quá trình cài đặt Keil C51 khá đơn giản. Tải xuống phiên bản mới nhất từ trang web chính thức của Keil và làm theo hướng dẫn cài đặt. Sau khi cài đặt, cần cấu hình project bằng cách chọn vi điều khiển mục tiêu (ví dụ: AT89C51), chọn trình biên dịch C51, và thiết lập các tùy chọn biên dịch như memory model và optimization level. Đảm bảo rằng đường dẫn đến trình biên dịch và các thư viện được thiết lập đúng cách. Kiểm tra lại Compiler C cho 8051 đã được cài đặt và kích hoạt thành công.

2.2. Sử Dụng Proteus Để Mô Phỏng Code C Trên 8051

Proteus 8051 là một trình mô phỏng mạch điện mạnh mẽ cho phép kiểm tra code C trên vi điều khiển 8051 mà không cần phần cứng thực tế. Để sử dụng Proteus, cần tạo một sơ đồ mạch điện ảo bao gồm chip 8051 và các peripheral liên quan (ví dụ: LED, LCD). Sau đó, nạp file HEX được tạo ra từ Keil C51 vào chip 8051 trong Proteus. Chạy mô phỏng để xem kết quả và gỡ lỗi code. Điều này giúp tiết kiệm thời gian và chi phí so với việc thử nghiệm trực tiếp trên phần cứng.

2.3. Các Lỗi Thường Gặp Khi Thiết Lập Môi Trường Và Cách Khắc Phục

Một số lỗi thường gặp khi thiết lập môi trường bao gồm lỗi không tìm thấy trình biên dịch, lỗi liên kết thư viện, và lỗi cấu hình memory model không phù hợp. Kiểm tra kỹ các đường dẫn, tùy chọn biên dịch, và đảm bảo rằng tất cả các thư viện cần thiết đã được thêm vào project. Nếu gặp lỗi mô phỏng trong Proteus 8051, kiểm tra kết nối giữa các linh kiện, đảm bảo rằng file HEX đã được nạp đúng cách, và kiểm tra các thông số cấu hình của chip 8051. Tham khảo các diễn đàn và tài liệu trực tuyến để tìm giải pháp cho các lỗi cụ thể.

III. Cấu Trúc Chương Trình C Cơ Bản Cho 8051 Bí Quyết Viết Code Hiệu Quả

Cấu trúc chương trình C cho 8051 có một số khác biệt so với lập trình C trên máy tính. Cần khai báo các thanh ghi chức năng đặc biệt (SFR) bằng cách sử dụng các header file đặc biệt như reg51.h hoặc reg52.h. Hàm main() là điểm khởi đầu của chương trình. Trong hàm main(), cần khởi tạo các peripheral, thiết lập các ngắt, và viết vòng lặp chính để thực hiện các tác vụ điều khiển. Cần chú ý đến việc quản lý bộ nhớ và tránh sử dụng các hàm thư viện tiêu chuẩn có thể gây ra overhead không cần thiết. Theo như tài liệu gốc đã nêu, việc tạo 1 project trong keil nên khởi tạo kèm mã khởi động CPU STARUP.A51 để bảo đảm phần cứng CPU tương thích với project.

3.1. Khai Báo Và Sử Dụng Các Thanh Ghi Chức Năng Đặc Biệt SFRs

Các thanh ghi chức năng đặc biệt (SFRs) là các thanh ghi đặc biệt được sử dụng để điều khiển các peripheral của chip 8051. Để truy cập SFRs trong C, cần khai báo chúng bằng cách sử dụng các header file như reg51.h hoặc reg52.h. Các SFRs được khai báo như các biến unsigned char hoặc unsigned int và có thể được truy cập trực tiếp bằng tên của chúng. Ví dụ, để điều khiển port 1, có thể sử dụng SFR P1. Việc khai báo và sử dụng SFRs đúng cách là rất quan trọng để lập trình giao tiếp 8051 với các thiết bị bên ngoài.

3.2. Hàm Main Và Vòng Lặp Chính Trong Lập Trình 8051

Hàm main() là điểm khởi đầu của mọi chương trình C. Trong lập trình C cho 8051, hàm main() thường chứa các bước khởi tạo hệ thống, thiết lập các ngắt, và vòng lặp chính. Vòng lặp chính là một vòng lặp vô hạn (thường là while(1)) chứa các tác vụ điều khiển cần được thực hiện liên tục. Ví dụ, trong một ứng dụng điều khiển đèn LED, vòng lặp chính có thể chứa code để bật tắt đèn LED theo một chu kỳ nhất định. Việc thiết kế vòng lặp chính một cách hiệu quả là rất quan trọng để đảm bảo hệ thống hoạt động ổn định và đáp ứng nhanh chóng.

3.3. Quản Lý Bộ Nhớ Và Tối Ưu Hóa Code Trong Lập Trình C Cho 8051

Vi điều khiển 8051 có bộ nhớ rất hạn chế, vì vậy việc quản lý bộ nhớ và tối ưu hóa code là rất quan trọng. Tránh sử dụng các biến toàn cục không cần thiết, sử dụng các kiểu dữ liệu nhỏ nhất có thể, và tránh sử dụng các hàm thư viện tiêu chuẩn có thể gây ra overhead không cần thiết. Sử dụng các kỹ thuật tối ưu hóa code như loop unrolling và inline functions để giảm thời gian thực thi. Sử dụng các công cụ phân tích bộ nhớ để phát hiện và khắc phục các vấn đề rò rỉ bộ nhớ. Điều này đặc biệt quan trọng trong lập trình nhúng 8051, nơi hiệu suất và bộ nhớ là những yếu tố then chốt.

IV. Lập Trình Các Peripheral Cơ Bản Của 8051 Bằng C Thực Hành Chi Tiết

Để khai thác tối đa sức mạnh của vi điều khiển 8051, cần nắm vững cách lập trình các peripheral cơ bản như GPIO, timer, UART, và ADC. Việc lập trình GPIO cho phép điều khiển các chân I/O để giao tiếp với các thiết bị bên ngoài như đèn LED, nút nhấn, và cảm biến. Lập trình Timer cho phép tạo ra các xung thời gian chính xác để thực hiện các tác vụ định thời và điều khiển. Lập trình UART cho phép giao tiếp nối tiếp với các thiết bị khác như máy tính và các vi điều khiển khác. Lập trình ADC cho phép đọc các tín hiệu tương tự từ các cảm biến. Theo tài liệu gốc, P1 và P2 được dùng để nhập tín hiệu số và từ AD00 đến AD03 để nhập tín hiệu tương tự.

4.1. Điều Khiển GPIO Bật Tắt Đèn LED Và Đọc Trạng Thái Nút Nhấn

Để điều khiển GPIO, cần khai báo SFR tương ứng với port cần điều khiển (ví dụ: P1). Để bật một đèn LED kết nối với chân P1.0, cần gán giá trị 1 cho bit 0 của SFR P1: P1 |= (1 << 0);. Để tắt đèn LED, cần gán giá trị 0: P1 &= ~(1 << 0);. Để đọc trạng thái của một nút nhấn kết nối với chân P1.1, cần kiểm tra giá trị của bit 1 của SFR P1: if (P1 & (1 << 1)) { ... }. Chú ý đến việc sử dụng các điện trở kéo lên hoặc kéo xuống để đảm bảo trạng thái logic xác định khi nút nhấn không được nhấn.

4.2. Sử Dụng Timer Để Tạo Xung Thời Gian Chính Xác

Để sử dụng timer, cần cấu hình các SFR liên quan đến timer (ví dụ: TMOD, TCON, TH0, TL0). Chọn chế độ hoạt động của timer (ví dụ: timer mode 1), thiết lập giá trị khởi tạo cho timer, và bật timer bằng cách set bit TRx trong SFR TCON. Để tạo ra một xung thời gian chính xác, cần tính toán giá trị khởi tạo cho timer dựa trên tần số clock của chip 8051 và thời gian mong muốn của xung. Sử dụng ngắt timer để thực hiện các tác vụ định thời khi timer tràn.

4.3. Giao Tiếp Nối Tiếp UART Để Truyền Dữ Liệu

Để sử dụng UART, cần cấu hình các SFR liên quan đến UART (ví dụ: SCON, TMOD, TH1, PCON). Chọn chế độ hoạt động của UART (ví dụ: UART mode 1), thiết lập tốc độ baud, và bật UART bằng cách set bit REN trong SFR SCON. Để truyền dữ liệu, cần ghi dữ liệu vào SFR SBUF. Để nhận dữ liệu, cần đọc dữ liệu từ SFR SBUF. Sử dụng ngắt UART để xử lý các sự kiện truyền và nhận dữ liệu. Chú ý đến việc tính toán giá trị cho SFR TH1 để đạt được tốc độ baud mong muốn.

V. Ứng Dụng Lập Trình C Cho 8051 Dự Án Thực Tế Và Nghiên Cứu

Lập trình C cho 8051 có rất nhiều ứng dụng thực tế, từ các thiết bị gia dụng đơn giản đến các hệ thống điều khiển công nghiệp phức tạp. Ví dụ, có thể sử dụng 8051 C programming để điều khiển robot, hệ thống nhà thông minh, hệ thống giám sát môi trường, và các thiết bị y tế. Các Projects 8051 thường bao gồm việc giao tiếp với các cảm biến, điều khiển động cơ, hiển thị thông tin trên LCD, và truyền dữ liệu qua giao tiếp nối tiếp. Việc nghiên cứu và phát triển các ứng dụng 8051 là một lĩnh vực đầy tiềm năng cho các kỹ sư điện tử.

5.1. Thiết Kế Hệ Thống Điều Khiển Đèn LED Ma Trận Sử Dụng 8051

Hệ thống điều khiển đèn LED ma trận là một ví dụ điển hình về ứng dụng của lập trình C cho 8051. Để điều khiển LED ma trận, cần sử dụng GPIO để quét các hàng và cột của ma trận LED. Sử dụng timer để tạo ra tần số quét đủ cao để tránh hiện tượng nhấp nháy. Sử dụng các thuật toán hiển thị để hiển thị các ký tự và hình ảnh trên ma trận LED. Ứng dụng này đòi hỏi kỹ năng lập trình GPIOTimer 8051 thành thạo.

5.2. Xây Dựng Hệ Thống Giám Sát Nhiệt Độ Sử Dụng Cảm Biến Và LCD

Hệ thống giám sát nhiệt độ là một ứng dụng khác của lập trình C cho 8051. Để xây dựng hệ thống này, cần sử dụng ADC để đọc tín hiệu từ cảm biến nhiệt độ. Sử dụng LCD 8051 để hiển thị giá trị nhiệt độ. Sử dụng các thuật toán xử lý tín hiệu để lọc nhiễu và hiệu chỉnh sai số của cảm biến. Ứng dụng này đòi hỏi kỹ năng lập trình ADClập trình LCD thành thạo.

5.3. Phát Triển Robot Điều Khiển Từ Xa Sử Dụng Giao Tiếp Không Dây

Robot điều khiển từ xa là một ứng dụng phức tạp hơn của lập trình C cho 8051. Để xây dựng robot này, cần sử dụng GPIO để điều khiển động cơ. Sử dụng UART để giao tiếp với module không dây (ví dụ: Bluetooth, WiFi). Sử dụng các thuật toán điều khiển để điều khiển chuyển động của robot. Ứng dụng này đòi hỏi kỹ năng lập trình GPIO, lập trình UART, và kiến thức về điều khiển động cơ.

VI. Kết Luận Và Hướng Phát Triển Của Lập Trình C Cho 8051

Lập trình C cho vi điều khiển 8051 là một kỹ năng quan trọng cho bất kỳ kỹ sư điện tử nào. Nó cho phép tạo ra các ứng dụng nhúng mạnh mẽ và linh hoạt. Mặc dù chip 8051 có bộ nhớ hạn chế và tốc độ xử lý không cao, nhưng nó vẫn là một lựa chọn tốt cho nhiều ứng dụng đơn giản và chi phí thấp. Trong tương lai, với sự phát triển của các vi điều khiển mới mạnh mẽ hơn, lập trình C vẫn sẽ là một công cụ quan trọng để khai thác tối đa sức mạnh của chúng.

6.1. Tóm Tắt Các Kỹ Năng Cần Thiết Để Thành Thạo Lập Trình C Cho 8051

Để thành thạo lập trình C cho 8051, cần nắm vững các kỹ năng sau: kiến trúc chip 8051, lập trình C cơ bản, lập trình peripheral (GPIO, timer, UART, ADC), quản lý bộ nhớ, tối ưu hóa code, và sử dụng các công cụ phát triển (Keil C51, Proteus). Thực hành nhiều bài tập lập trình 8051 và tham gia vào các Projects 8051 là cách tốt nhất để nâng cao kỹ năng.

6.2. Các Ngôn Ngữ Lập Trình Nhúng Thay Thế Cho C Và Ưu Nhược Điểm

Ngoài C, có một số ngôn ngữ lập trình nhúng khác như C++, MicroPython, và Assembly. C++ cung cấp các tính năng hướng đối tượng giúp code dễ bảo trì và tái sử dụng hơn, nhưng có thể gây ra overhead lớn hơn. MicroPython là một ngôn ngữ scripting dễ học và dễ sử dụng, nhưng có hiệu suất thấp hơn. Assembly cho phép điều khiển phần cứng một cách trực tiếp, nhưng khó đọc và khó bảo trì. Lựa chọn ngôn ngữ phù hợp phụ thuộc vào yêu cầu cụ thể của ứng dụng.

6.3. Hướng Nghiên Cứu Và Phát Triển Các Ứng Dụng Lập Trình C Cho 8051 Trong Tương Lai

Trong tương lai, có thể nghiên cứu và phát triển các ứng dụng lập trình C cho 8051 trong các lĩnh vực như Internet of Things (IoT), robot, và hệ thống điều khiển thông minh. Cần tập trung vào việc tối ưu hóa code để đạt được hiệu suất cao và tiết kiệm năng lượng. Nghiên cứu và sử dụng các giao thức giao tiếp mới để kết nối chip 8051 với thế giới bên ngoài. Phát triển các thư viện phần mềm và các công cụ hỗ trợ để đơn giản hóa quá trình phát triển ứng dụng.

22/09/2025

Trích đoạn nội dung tài liệu

CHƯƠNG 1: GIỚI THIỆU BỘ VI ĐIỀU KHIỂN 89C2051 và 89C51 I.GIỚI THIỆU BỘ VI ĐIỀU KHIỂN 89C2051 I.1 CÁC ĐẶC ĐIỂM  Tương thích với các sản phẩm của họ MSC-51.  2K byte bộ nhớ Flash lập trình được.  Khả năng :1000 chu kì ghi/xóa.  Tầm điện áp hoạt động từ 2,7 V đến 6V  Tầm tần số hoạt động từ 0 Hz đến 21 MHz  2 mức khóa bộ nhớ chương trình (program memory).

 RAM bên trong (internal RAM) có dung lượng 128 x 8 bit.  15 đường I/O lập trình được.  2 bộ định thời /đếm 16 bit.  Kênh nối tiếp UART lập trình được.

 Các ngõ ra kích LED trực tiếp.  Mạch so sánh tương tự trên chip (on-chip analog comparator).  Các chế độ nghỉ công suất thấp và chế độ giảm công suất.2 MÔ TẢ Chip AT89C2051 là chip vi điều khiển CMOS 8 bit điện áp thấp, hiệu suất cao có 2K byte bộ nhớ Flash chỉ đọc, xóa được và lập trình được PEROM (Flash programmable and erasable readonly memory). Linh kiện này được sản xuất bằng cách sử dụng công nghệ bộ nhớ không thay đổi mật độ cao của Atmel và tương thích với tập tệp của MCS-51 chuẩn công nghiệp.

Bằng cách kết hợp một CPU 8-bit đa năng và linh hoạt với Flash trên chip đơn tinh thể , Atmel AT89C2051 là chip vi điều khiển mạnh cung cấp giải pháp linh động cao và mang lại hiệu quả về giá thành cho nhiều ứng dụng điều khiển nhúng (embedded control application). AT89C2051 cung cấp các đặc tính chuẩn sau đây : bộ nhớ Flash 2K byte , 128 byte RAM , 15 đường I/O, 2 bộ định thời/đếm 16-bit , kiến trúc ngắt hai mức 5 vector, port nối tiếp hoàn toàn song công , mạch so sánh tương tự chính xác, mạch dao động và tạo xung clock trên chip. Ngoài ra AT89C2051 được thiết kế có mạch logic tĩnh cho hoạt động giảm đến tần số 0 Hz và hỗ trợ 2 chế độ tiết kiệm công suất lựa chọn được bằng phần mềm. Chế dộ nghĩ ( idle mode ) sẽ dùng CPU nhưng vẫn cho phép RAM, các bộ định thời/đếm, port nối tiếp và hệ thống ngắt tiếp tục hoạt động.

Chế độ giảm công suất duy trì nội dung của RAM nhưng làm dừng mạch dao động, không cho phép mọi chức năng khác của chip hoạt động cho đến lần reset cứng kế tiếp (nghĩa là ta thiết lập lại trạng thái ban đầu [reset] cho chiop bằng mạch điện bên ngoài). SVTH:Lê Văn Long & Đặng Đức Trung CDDT6K Trang 6 Đồ Án Tốt Nghiệp GVHD:Huỳnh Minh Ngọc I.3 CẤU HÌNH CHÂN Hình 1.4 SƠ ĐỒ KHỐI SVTH:Lê Văn Long & Đặng Đức Trung CDDT6K Trang 7 Đồ Án Tốt Nghiệp GVHD:Huỳnh Minh Ngọc Hình 1. REGISTER: thanh ghi địa chỉ RAM.  RAM: vùng nhớ truy cập ngẫu nhiên (RAM).

 FLASH: vùng nhớ FLASH.  B REGISTER:thanh ghi B.  ACC: thanh chứa.  STACK POINTER: con trỏ vùng nhớ xếp chồng.

 PROGRAM ADDRESS REGISTER: thanh ghi địa chỉ chương trình.  TMP1: thanh ghi tạm 1  TMP2: thanh ghi tạm 2  ALU: đơn vị số học/logic.  BUFFER: bộ đệm.  PC INCREMENTER: bộ tăng thanh ghi đếm chương trình PC.

 INTERRUPT, SERIAL PORT AND TIMER BLOCKS: các khối ngắt, port nối tiếp và định thời.  PROGRAM COUNTER: bộ đếm chương trình PC. SVTH:Lê Văn Long & Đặng Đức Trung CDDT6K Trang 8 Đồ Án Tốt Nghiệp GVHD:Huỳnh Minh Ngọc  PSW: từ trạng thái chương trình.  TIMING AND CONTROL:mạch logic điều khiển và định thời.

 INSTRUCTION REGISTERED: thanh ghi lệnh.  DPTR: con trỏ dữ liệu.  PORT1 LATCH: bộ chốt port 1.  PORT3 LATCH: bộ chốt port 3.

 ANALOG COMPARTOR:bộ so sánh tương tự.  OSC:mạch dao động.  PORT 1 DRIVERS: các mạch kích port 1.  PORT 3 DRIVERS: các mạch kích port 3.5 MÔ TẢ CHÂN VCC Chân cấp điện áp Vcc cho chip.

GND Chân nối đất. Port 1 Port 1 là port I/O (port nhập/xuất: input/output port) hai chiều 8-bit. Các chân của port từ P1.7 cung cấp các mạch kéo lên bên trong (internal pull-ups).1 yêu cầu các mạch kéo lên bên ngoài .1 cũng còn được sử dụng làm ngõ vào dương (AIN0) và ngõ vào âm (ÁIN), theo thứ tự, của mạch so sánh tương tự chính xác trên chip (on – chip precision analog comparator). Các mạch đệm ngõ ra (output buffer) của port 1 có thể hút dòng 20mA và kích trực tiếp các bộ hiện thị LED.

Khi các logic 1 được ghi đến các chân của port 1, các chân này có thể được sử dụng làm các ngõ vào. Khi các chân từ P1.7 được sử dụng làm các ngõ vào và được kéo xuống mức thấp từ bên ngoài, chúng sẽ cung cấp dòng (IIL) do các mạch kéo lên bên trong. Port 1 cũng nhận dữ liệu chương trình hay dữ kiệu mã (code data) trong thời gian lập trình và kiểm tra bộ nhớ Flash. Port 3 Các chân của port 3 từ P3.7 là chân I/O hai chiều với các mạch kéo lên bên trong.6 được nối dây cứng làm ngõ vào nối đến ngõ ra của mạch so sánh trên chip và không thể truy cập như một chân I/O có mục đích tổng quát.

Các mạch đệm ngõ ra của port 3 có thể hút dòng 20mA.Khi các logíc được ghi đến các chân của port 3, các chân này được kéo lên mức cao bởi các mạch kéo lên bên trong và có thể được sử dụng làm các ngõ vào. Khi là các ngõ vào, các chân nào của port 3 được kéo xuống mức thấp bởi mạch bên ngoài sẽ cung cấp dòng (IIL) do các mạch kéo lên. Các chân của port 3 còn được sử dụng cho các chức năng đặc biệt khác của AT89C2051 như được liệt kê dưới đây ( bảng 11,1). Port 3 cũng nhận một số tín hiệu điều khiển để lập trình và kiểm tra bộ nhớ Flash.1 RST Ngõ vào reset (thiết lập lại trạng thái ban đầu).

Tất cả các chân I/O được reset đến mức logíc ngay sau khi RST lên mức cao. Việc duy trì chân RST ở mức cao trong 2 chu kỳ máy trong khi mạch dao động đang hoạt động sẽ reset chip. SVTH:Lê Văn Long & Đặng Đức Trung CDDT6K Trang 9 Đồ Án Tốt Nghiệp GVHD:Huỳnh Minh Ngọc XTAL 1 Ngõ vào đến mạch khuếch đại dao động đảo và ngõ vào đến mạch tạo xung clock bên trong. XTAL 2 Ngõ ra từ mạch khuếch đại dao động đảo.6 CÁC ĐẶC TÍNH CỦA MẠCH DAO ĐỘNG.

XTAL XTAL vàngõ 1là vào ngõ và 2theo ra,thứ của tự, mạch khuếch đại đảo thể có được cấu hình trở thành để mạch dao động trên chip như được trình hình bày ở1. Một tinh thể thạch anh hoặc mạch cộng hưởng gốm đều thể dụng có sửđược. Để kích chip nguồnxung từ clock bên ngoài, chân XTAL không sẽ2 kết nối Không có yêu cầu nào về chu kỳ nhiệm vụ (duty cycle) của tín hiệu xung clock bên ngoài vì ngõ vào đến mạch vì ngõ vào đến mạch tạo xung clock bên trong sẽ đi qua một flipflop làm nhiệm vụ chia 2 tần số, nhưng các đặc tính về điện áp tối thiểu và tối đa của mức cao và mức thấp phải được xem xét.3 các kết nối của mạch dao động. C1,C2=30pF ý: Lưu 10pF đối với các thạch anh ; C1,C2=40pF 10pF đối với các bộ cộng hưởng gốm.4: Cấu hình kích xung clock bên ngoài.7CÁC THANH GHI CHỨC NĂNG ĐẶC BIỆT SFR SVTH:Lê Văn Long & Đặng Đức Trung CDDT6K Trang 10 Đồ Án Tốt Nghiệp GVHD:Huỳnh Minh Ngọc Bảng 1.2 Các giá trị khi reset và bản đồ các SFR của AT89C2051 Một bản đồ vùng nhớ trên chip được gọi là không gian thanh ghi chức năng đặc biệt SFR (special function registor) được trình bày ở bản trên đây (bảng 1.

Lưu ý rằng không phải tất cả địa chỉ đều bị chiếm bởi các thanh ghi này, các địa chỉ không bị chiếm có thể không được thực hiện trên chip. Các truy cập đọc đến các địa chỉ này trong trường hợp tổng quát, sẽ trả về dữ liệu ngẫu nhiên và các truy cập ghi sẽ có tác động không rõ ràng. Phần mêm của người sử dụng không nên ghi các logic 1 đến các vị trí nhớ không được liệt kê vì chúng có thể được sử dụng trong các sản phẩm tương lai để đáp ứng các đặt tính mới. Trong trường hợp đó, các giá trị do reset hoặc các giá trị không tích cực của các bit mới sẽ luôn luôn bằng 0.8 CÁC GIỚI HẠN TRÊN MỘT SỐ LỆNH AT89C2051 là một thành viên tiết kiệm và có hiệu quả về giá thành của họ vi đièu khiển đang phát triển của Atmel.

Chip này chứa 2K bộ nhớ chương trình Flash. Chip này hoàn toàn tương thích với kiến trúc MCS-51và có thể được lập trình bằng cấch sử dụng tập lệnh MCS-51. tuy nhiên, có vài cân nhắc mà ta ohải chú ý khi sử dụng một số lập trình của chip này. Tất cả các lệnh liên quan đến các hoạt động nhảy và rẽ nhánh sẽ bị giới hạn, chẳn hạn như địa chỉ đíh rơi vào trong không gian nhớ của chip, không gian này là 2K byte với AT89C2051.

Vấn đề này là trách nhiệm của nguowif lập trình phần mềm. Thí dụ, lệnh LJMP 7E0H sẽ là lệnh hợp lệ đối với AT89C2051 (có 2K byte bộ nhớ chương trình)trong khi đó lệnh LJMP 900H là lệnh không hợp lệ. Các lệnh rẽ nhánh SVTH:Lê Văn Long & Đặng Đức Trung CDDT6K Trang 11 Đồ Án Tốt Nghiệp GVHD:Huỳnh Minh Ngọc LCALL,LMJP, ACALL, AJMP,SJMP ,JMP@A+DPTR- Các lệnh rẽ nhánh không điều kiện này sẽ thực thi đúng miễn là người lập trình lưu ý rằng địa chỉ đích rẽ nhánh phải nằm trong giới hạn vật lý của kích thước bộ nhớ chương trình (các vị trí nhớ từ 00H đến 7FFH đối với AT89C2051). Việc vi phạm các giới hạn khong gian vật lý có thể gây ra hành vi không biết được của chương trình CJNE [.

], JB, JNB, JC, JNC, JBC, JZ, JNZ - Với các lệnh rẽ nhánh có điều kiện này, các quy luật giống như ở trên cũng được áp dụng. Một lần nữa, việc vi phạm các giơis hạn bộ nhớ vật lý sẽ làm cho chương trình thực hti không đúng. Đối với các ứng dụng bao gồm các cách ngắt, các vị trí địa chỉ của chương trình phục vụ ngắt (interrupt service rountine) bình thường của cấu trúc họ 89C2051 được bảo toàn. Các lệnh liên quan đến MOVX, bộ nhớ dữ liệu AT89C2051 chứa 128 byte bộ nhớ dữ liệu bên trong (intenal data memory).

Như vậy trong AT89C2051,kích thước của bộ xếp chồng (stack depth) được giới hạn tới 128 byte, đay là dung lượng của RAM có sẳn. Việc truy cạp bộ nhớ bên ngoài không được hỗ trợ trong chip này và việc thưc thi chương trình bên ngoài cũng không được hỗ trợ. Như vậy không có lệnh MOVX [. ] nào chứa trong chương trình.

Nội dung được bảo vệ bản quyền — Tải xuống đầy đủ