Đồ án tốt nghiệp công nghệ điện tử: Lập trình C cho vi điều khiển 8051

Đồ án tốt nghiệp lập trình C cho vi điều khiển 8051 hướng dẫn chi tiết cách lập trình, ứng dụng thực tế và giải pháp tối ưu hiệu quả.

Chuyên ngành

Công nghệ điện tử

Người đăng

Ẩn danh

Thể loại

Đồ án tốt nghiệp
66
7
0

Phí lưu trữ

30 Point

Mục lục chi tiết

1. PHẦN I: TỔNG QUAN VỀ ĐỀ TÀI

1.1. ĐẶT VẤN ĐỀ

1.2. NỘI DUNG CỦA ĐỀ TÀI

2. PHẦN II: NỘI DUNG ĐỀ TÀI

2.1. CHƯƠNG 1: GIỚI THIỆU BỘ VI ĐIỀU KHIỂN 89C2051 và 89C51

2.1.1. GIỚI THIỆU BỘ VI ĐIỀU KHIỂN 89C2051

2.1.2. CÁC ĐẶC ĐIỂM

2.1.3. MÔ TẢ

2.1.4. CẤU HÌNH CHÂN

2.1.5. MÔ TẢ CHÂN

2.1.6. CÁC ĐẶC TÍNH CỦA MẠCH DAO ĐỘNG

2.1.7. CÁC THANH GHI CHỨC NĂNG ĐẶC BIỆT SFR

2.1.8. CÁC GIỚI HẠN TRÊN MỘT SỐ LỆNH

2.1.9. CÁC BIT KHOÁ BỘ NHỚ CHƯƠNG TRÌNH

2.1.10. CHẾ ĐỘ NGHỈ

2.1.11. CHẾ ĐỘ GIẢM CÔNG SUẤT

2.1.12. LẬP TRÌNH FLASH

2.1.13. CÁC CHẾ ĐỘ LẬP TRÌNH FLASH

2.1.14. CÁC ĐẶC ĐIỂM LẬP TRÌNH FLASH

2.1.15. CÁC ƯỚC LƯỢNG CỰC ĐẠI TUYỆT ĐỐI

Tóm tắt

I. Tổng quan về đề tài

Đồ án tốt nghiệp lập trình C cho vi điều khiển 8051 tập trung vào việc ứng dụng vi điều khiển trong các thiết bị điện tử hiện đại. Vi điều khiển đã trở thành một phần không thể thiếu trong đời sống và sản xuất, giúp giảm chi phí thiết kế và nâng cao tính ổn định của hệ thống. Các họ vi điều khiển như 8051, PIC, và Z80 được sử dụng rộng rãi trong nhiều lĩnh vực, từ công nghiệp đến y tế. Đề tài này nhấn mạnh tầm quan trọng của việc lựa chọn vi điều khiển phù hợp và kỹ thuật lập trình hiệu quả để giải quyết các bài toán đa dạng.

1.1. Đặt vấn đề

Vi điều khiển đã trở thành công nghệ cốt lõi trong các thiết bị điện tử hiện đại. Sự phát triển của các hệ vi xử lý đòi hỏi kiến thức sâu rộng về cả phần cứng và phần mềm. Đề tài này tập trung vào vi điều khiển 8051, một trong những họ vi điều khiển phổ biến nhất, và ứng dụng ngôn ngữ C để lập trình. Việc sử dụng ngôn ngữ C giúp tạo ra các chương trình chất lượng cao, dễ bảo trì và mở rộng.

1.2. Nội dung đề tài

Đề tài bao gồm các nội dung chính: khảo sát vi điều khiển AT89C51AT89C2051, giới thiệu phần mềm Keil µVision 2, và ứng dụng ngôn ngữ C để lập trình điều khiển LED. Các ứng dụng cụ thể bao gồm điều khiển LED đơn, LED 7 đoạn, và LED ma trận. Đề tài cũng đưa ra kết luận và hướng phát triển trong tương lai.

II. Giới thiệu bộ vi điều khiển 89C2051 và 89C51

Bộ vi điều khiển 89C205189C51 là hai thành viên quan trọng trong họ 8051. 89C2051 là một vi điều khiển CMOS 8-bit với bộ nhớ Flash 2K byte, RAM 128 byte, và 15 đường I/O. Nó được thiết kế để tối ưu hóa hiệu suất và tiết kiệm năng lượng, phù hợp cho các ứng dụng nhúng. 89C51 cũng là một vi điều khiển mạnh mẽ với các tính năng tương tự, nhưng có bộ nhớ lớn hơn và nhiều chức năng nâng cao hơn.

2.1. Đặc điểm của 89C2051

89C2051 có các đặc điểm nổi bật như tương thích với họ MSC-51, bộ nhớ Flash 2K byte, và khả năng hoạt động ở điện áp thấp từ 2.7V đến 6V. Nó cũng hỗ trợ các chế độ tiết kiệm năng lượng như chế độ nghỉchế độ giảm công suất. Các tính năng này làm cho 89C2051 trở thành lựa chọn lý tưởng cho các ứng dụng nhúng yêu cầu hiệu suất cao và tiết kiệm năng lượng.

2.2. Cấu hình chân và sơ đồ khối

89C2051 có cấu hình chân đơn giản với các chân I/O, VCC, và GND. Sơ đồ khối của 89C2051 bao gồm các thành phần chính như ALU, bộ đếm chương trình, và các khối ngắt. Các chân Port 1Port 3 được sử dụng cho các chức năng I/O và các tín hiệu điều khiển đặc biệt. Sơ đồ khối này giúp hiểu rõ hơn về cách 89C2051 hoạt động và tương tác với các thiết bị ngoại vi.

III. Ứng dụng ngôn ngữ C và Assembly

Đề tài tập trung vào việc ứng dụng ngôn ngữ CAssembly để lập trình điều khiển LED. Ngôn ngữ C được ưa chuộng do tính linh hoạt và dễ bảo trì, trong khi Assembly được sử dụng để tối ưu hóa hiệu suất. Các ứng dụng cụ thể bao gồm điều khiển LED đơn, LED 7 đoạn, và LED ma trận. Các ví dụ mã nguồn được cung cấp để minh họa cách lập trình hiệu quả trên vi điều khiển 8051.

3.1. Lập trình LED đơn và LED 7 đoạn

Lập trình LED đơnLED 7 đoạn là các bài toán cơ bản trong lập trình vi điều khiển. Đề tài cung cấp các ví dụ mã nguồn bằng ngôn ngữ C để điều khiển LED đơn và hiển thị số trên LED 7 đoạn. Các ví dụ này giúp người học hiểu rõ cách tương tác với các chân I/O của vi điều khiển và cách viết mã hiệu quả.

3.2. Lập trình LED ma trận

Lập trình LED ma trận là một bài toán phức tạp hơn, đòi hỏi kiến thức về quét LED và điều khiển nhiều LED cùng lúc. Đề tài cung cấp các ví dụ mã nguồn bằng ngôn ngữ C để điều khiển LED ma trận, giúp hiển thị các ký tự và hình ảnh động. Các ví dụ này minh họa cách sử dụng các bộ định thời và ngắt để tạo hiệu ứng hiển thị mượt mà.

IV. Kết luận và hướng phát triển

Đề tài Đồ án tốt nghiệp lập trình C cho vi điều khiển 8051 đã thành công trong việc ứng dụng ngôn ngữ C để lập trình vi điều khiển 8051. Các kết quả đạt được bao gồm việc điều khiển thành công LED đơn, LED 7 đoạn, và LED ma trận. Đề tài cũng đưa ra các hướng phát triển trong tương lai, bao gồm việc tích hợp thêm các tính năng nâng cao và ứng dụng vi điều khiển trong các lĩnh vực mới như IoT và robot.

4.1. Kết luận

Đề tài đã chứng minh được tính hiệu quả của việc sử dụng ngôn ngữ C để lập trình vi điều khiển 8051. Các kết quả thực nghiệm cho thấy các chương trình được viết bằng C có hiệu suất cao và dễ bảo trì. Đề tài cũng cung cấp các tài liệu hướng dẫn chi tiết, giúp người học dễ dàng tiếp cận và áp dụng vào thực tế.

4.2. Hướng phát triển

Trong tương lai, đề tài có thể được mở rộng bằng cách tích hợp thêm các tính năng nâng cao như điều khiển động cơ, cảm biến, và giao tiếp không dây. Việc ứng dụng vi điều khiển trong các lĩnh vực mới như IoT và robot cũng là một hướng phát triển tiềm năng. Các nghiên cứu tiếp theo có thể tập trung vào việc tối ưu hóa hiệu suất và tiết kiệm năng lượng của vi điều khiển.

12/02/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 9 Tương thích với các sản phẩm của họ MSC-51. 9 2K byte bộ nhớ Flash lập trình được. 9 Khả năng :1000 chu kì ghi/xóa. 9 Tầm điện áp hoạt động từ 2,7 V đến 6V 9 Tầm tần số hoạt động từ 0 Hz đến 21 MHz 9 2 mức khóa bộ nhớ chương trình (program memory).

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

9 Các ngõ ra kích LED trực tiếp. 9 Mạch so sánh tương tự trên chip (on-chip analog comparator). 9 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 3 Đồ Án Tốt Nghiệp 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 4 Đồ Án Tốt Nghiệp Hình 1. REGISTER: thanh ghi địa chỉ RAM. 9RAM: vùng nhớ truy cập ngẫu nhiên (RAM).

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

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

9INTERRUPT, SERIAL PORT AND TIMER BLOCKS: các khối ngắt, port nối tiếp và định thời. 9PROGRAM COUNTER: bộ đếm chương trình PC. 9PSW: từ trạng thái chương trình. 9TIMING AND CONTROL:mạch logic điều khiển và định thời.

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

9ANALOG COMPARTOR:bộ so sánh tương tự. 9OSC:mạch dao động. 9PORT 1 DRIVERS: các mạch kích port 1. 9PORT 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 SVTH:Lê Văn Long & Đặng Đức Trung CDDT6K Trang 5 Đồ Án Tốt Nghiệp 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. 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 1 và XTAL 2 là ngõ vào và ngõ ra, theo thứ tự, của mạch khuếch đại đảo có thể được cấu hình để trở thành mạch dao động trên chip như được trình bày ở hình 1. Một tinh thể thạch anh hoặc mạch cộng hưởng gốm đều có thể sử dụng được. Để kích chip từ nguồnxung clock bên ngoài, chân XTAL 2 sẽ không kết nối trong khi chân ATAL 1 được kích như được trình bày ở hình 1. 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.

Lưu ý: C1,C2=30pF ± 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. SVTH:Lê Văn Long & Đặng Đức Trung CDDT6K Trang 6 Đồ Án Tốt Nghiệp I.7CÁC THANH GHI CHỨC NĂNG ĐẶC BIỆT SFR 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ệ.

SVTH:Lê Văn Long & Đặng Đức Trung CDDT6K Trang 7 Đồ Án Tốt Nghiệp Các lệnh rẽ nhánh 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. Một trình dịch hợp ngữ (assembler) điển hình của 89C51 vẫn dịch các lệnh này,ngay cả khi chúng được viết dưới dạng vi phạm các giới hạn đã đề cập ở trên.

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

Đồ án tốt nghiệp lập trình C cho vi điều khiển 8051 là một tài liệu chuyên sâu dành cho những ai đam mê lập trình nhúng và vi điều khiển. Bài viết tập trung vào việc hướng dẫn chi tiết cách lập trình C cho vi điều khiển 8051, một dòng vi điều khiển phổ biến trong các ứng dụng điện tử. Đồ án này không chỉ cung cấp kiến thức nền tảng mà còn đưa ra các ví dụ thực tế, giúp người đọc dễ dàng áp dụng vào các dự án của mình. Đặc biệt, nó phù hợp cho sinh viên kỹ thuật đang tìm kiếm tài liệu tham khảo chất lượng để hoàn thành đồ án tốt nghiệp.

Nếu bạn quan tâm đến các chủ đề liên quan như điều khiển thiết bị từ xa, hãy khám phá Luận văn tốt nghiệp điều khiển thiết bị từ xa qua điện thoại và giao tiếp máy tính. Để mở rộng kiến thức về lập trình và xử lý dữ liệu, Luận văn thạc sĩ khoa học máy tính nghiên cứu các phương pháp trích xuất thông tin trong ảnh tài liệu và ứng dụng là một lựa chọn tuyệt vời. Ngoài ra, nếu bạn muốn tìm hiểu sâu hơn về các thuật toán mã hóa, đừng bỏ qua Nghiên cứu thuật toán mã hóa có xác thực NORX luận văn thạc sĩ. Mỗi bài viết này sẽ mang đến cho bạn những góc nhìn mới và kiến thức bổ ích để phát triển kỹ năng chuyên môn.