LỜI NÓI ĐẦU Cùng với các mô đun của ngành Điện tử công nghiệp, mô đun Vi điều khiển là mô đun kỹ thuật chuyên ngành quan trọng của ngành điện tử, hiện nay mô đun được ứng dụng rộng rãi trong ngành kỹ thuật và các lĩnh vực điều khiển khác. Mô đun được ứng dụng cho tất cả sinh viên ngành Sửa chữa thiết bị tự động hóa của trường ta. Bởi vậy để tạo điều kiện cho việc học tập và nghiên cứu mô đun của học viên được thuận lợi trong quá trình học tập. Bộ môn Điện tử thuộc Khoa Điện – Điện tử - Ti học Trường cao đẳng nghề số 20/QK3 tổ chức biên soạn tài liệu: “ Vi điều khiển ” làm bài giảng lưu hành hội bộ.
Trong quá trình biên soạn chắc chắn sẽ không tránh khỏi những thiếu sót, bởi vậy tôi mong nhận được sự thông cảm và góp ý chân thành của các bạn đồng nghiệp để cho giáo trình ngày càng hoàn thiện hơn. Xin chân thành cảm ơn! 1 MỤC LỤC LỜI NÓI ĐẦU 1 MỤC LỤC 2 BÀI 1: SƠ LƯỢC VỀ LỊCH SỬ VÀ HƯỚNG PHÁT TRIỂN CỦA 5 VI ĐIỀU KHIỂN 1. Lịch sử phát triển 5 2. Vi điều khiển 6 3.
Lĩnh vực và ứng dụng 7 4. Hướng phát triển 7 BÀI 2: CẤU TRÚC HỌ VI ĐIỀU KHIỂN 8051 9 1. Cấu trúc Port I/O 12 4. Tổ chức bộ nhớ 12 4.
Bộ nhớ chương trình (ROM) 12 4. Bộ nhớ dữ liệu 13 5. Các thanh ghi chức năng đặc biệt 15 6. Bộ nhớ ngoài 18 6.1 Truy xuất bộ nhớ chương trình ngoài 19 6.2 Truy xuất bộ nhớ dữ liệu ngoài 20 6.
Giải mã địa chỉ 22 6.4 Các không gian nhớ chương trình và dữ liệu gối nhau 22 7. Các cải tiến của 8032/8052 23 8. Hoạt động Reset 24 BÀI 3: TẬP LỆNH 8051 25 1. Các cách định địa chỉ 25 2.
Định địa chỉ bằng thanh ghi 25 2. Định địa chỉ trực tiếp 26 2. Định địa chỉ gián tiếp 26 2. Định địa chỉ tức thời 26 2.
Định địa chỉ tương đối 26 2. Định địa chỉ tuyệt đối 27 2. Định địa chỉ dài 28 2. Định địa chỉ theo chỉ số 28 3.
Nhóm lệnh số học 28 3. Nhóm lệnh logic 37 3. Nhóm lệnh truyền dữ liệu 46 3. Nhóm lênh Boolean (xử lý bít) 52 3.
Nhóm lệnh rẽ nhánh chương trình 54 BÀI 4: BỘ ĐỊNH THỜI 61 1. Thanh ghi SFR của timer 63 2. Thanh ghi chế độ TMOD 63 2. Thanh ghi điều khiển TCON 64 3.
Các chế độ làm việc 65 3. Chế độ Timer 13 bit (chế độ 0) 65 3. Chế độ Timer 16 bit (chế độ 1) 66 3. Chế độ tự nạp lại 8 bit (Chế độ 2) 66 3.
Chế độ tách biệt Timer (Chế độ 3) 66 4. Nguồn cung cấp xung cho Timer 67 4. Chức năng định thời 67 4. Chức năng đếm sự kiện 67 5.
Khởi động, dừng, điều khiển Timer 68 6. Khởi tạo và truy xuất thanh ghi Timer 69 6. Đọc thời gian đang hoạt động 69 6. Thời gian ngắn và thời gian dài 70 7.
Timer 2 của 8052 72 BÀI 5: CỔNG NỐI TIẾP 74 1. Thanh ghi điều khiển 75 3. Chế độ làm việc 75 3. Thanh ghi dịch 8 bit 76 3.
Chế độ UART 8 bit có tốc độ baud thay đổi 78 3. UART 9 bit với tốc độ baud cố định 80 3. Chế độ UART với tốc độ baud cố định 80 4. Khởi tạo và truy suất thanh ghi PORT nối tiếp 81 4.
Cho phép nhận 81 4. Bít dữ liệu thứ 9 81 4. Thêm vào bít chẵn - lẻ 81 4. Truyền thông đa xử lý 82 6.
Tốc độ BAUD 83 BÀI 6: NGẮT 85 1. Tổ chức ngắt của 8051 86 3. Thiết kế chương trình dùng ngắt 89 5. Ngắt cổng nối tiếp 95 6.
Đồ thị thời gian của ngắt 101 BÀI 7: PHẦN MỀM HỢP NGỮ 103 1. Hoạt động của Assembler 104 3. Cấu trúc chương trình dữ liệu 106 4. Tính biểu thức trong khi hợp dịch 110 5.
Các điều khiển Assembler 123 6. Hoạt động liên kết 125 7. Macro 126 TÀI LIỆU THAM KHẢO 130 4 BÀI 1: SƠ LƯỢC VỀ LỊCH SỬ VÀ HƯỚNG PHÁT TRIỂN CỦA VI ĐIỀU KHIỂN 1. Lịch sử phát triển Bộ Vi xử lý có khả năng vượt bậc so với các hệ thống khác về khả năng tính toán, xử lý, và thay đổi chương trình linh hoạt theo mục đích người dùng, đặc biệt hiệu quả đối với các bài toán và hệ thống lớn.Tuy nhiên đối với các ứng dụng nhỏ, tầm tính toán không đòi hỏi khả năng tính toán lớn thì việc ứng dụng vi xử lý cần cân nhắc.
Bởi vì hệ thống dù lớn hay nhỏ, nếu dùng vi xử lý thì cũng đòi hỏi các khối mạch điện giao tiếp phức tạp như nhau. Các khối này bao gồm bộ nhớ để chứa dữ liệu và chương trình thực hiện, các mạch điện giao tiếp ngoại vi để xuất nhập và điều khiển trở lại, các khối này cùng liên kết với vi xử lý thì mới thực hiện được công việc. Để kết nối các khối này đòi hỏi người thiết kế phải hiểu biết tinh tường về các thành phần vi xử lý, bộ nhớ, các thiết bị ngoại vi. Hệ thống được tạo ra khá phức tạp, chiếm nhiều không gian, mạch in phức tạp và vấn đề chính là trình độ người thiết kế.
Kết quả là giá thành sản phẩm cuối cùng rất cao, không phù hợp để áp dụng cho các hệ thống nhỏ. Vì một số nhược điểm trên nên các nhà chế tạo tích hợp một ít bộ nhớ và một số mạch giao tiếp ngoại vi cùng với vi xử lý vào một IC duy nhất được gọi là Microcontroller-Vi điều khiển. Vi điều khiển có khả năng tương tự như khả năng của vi xử lý, nhưng cấu trúc phần cứng dành cho người dùng đơn giản hơn nhiều. Vi điều khiển ra đời mang lại sự tiện lợi đối với người dùng, họ không cần nắm vững một khối lượng kiến thức quá lớn như người dùng vi xử lý, kết cấu mạch điện dành cho người dùng cũng trở nên đơn giản hơn nhiều và có khả năng giao tiếp trực tiếp với các thiết bị bên ngoài.
Vi điều khiển tuy được xây dựng với phần cứng dành cho người sử dụng đơn giản hơn, nhưng thay vào lợi điểm này là khả năng xử lý bị giới hạn (tốc độ xử lý chậm hơn và khả năng tính toán ít hơn, dung lượng chương trình bị giới hạn). Thay vào đó, Vi điều khiển có giá thành rẻ hơn nhiều so với vi xử lý, việc sử dụng đơn giản, do đó nó được ứng dụng rộng rãi vào nhiều ứng dụng có chức năng đơn giản, không đòi hỏi tính toán phức tạp. Vi điều khiển được ứng dụng trong các dây chuyền tự động loại nhỏ, các robot có chức năng đơn giản, trong máy giặt, ôtô v. Năm 1976 Intel giới thiệu bộ vi điều khiển (microcontroller) 8748, một chip tương tự như các bộ vi xử lý và là chip đầu tiên trong họ MCS-48.
Độ phức tạp, kích thước và khả năng của Vi điều khiển tăng thêm một bậc quan trọng vào năm 1980 khi intel tung ra chip 8051, bộ Vi điều khiển đầu tiên của họ MCS-51 5 và là chuẩn công nghệ cho nhiều họ Vi điều khiển được sản xuất sau này. Sau đó rất nhiều họ Vi điều khiển của nhiều nhà chế tạo khác nhau lần lượt được đưa ra thị trường với tính năng được cải tiến ngày càng mạnh. Vi điều khiển 2. Nguyên lý cấu tạo Điểm cần lưu ý về vi điều khiển là sơ đồ khối cấu tạo của nó.
Cấu tạo một họ microcontroller chủ yếu dựa trên một kiểu tiêu chuẩn bao gồm các tính năng quan trọng nhất, nhiều chủng loại phù hợp với các lĩnh vực ứng dụng đặc biệt khác nhau, có thể kết hợp thêm thiết bị ngoại vi để tăng khả năng hoặc giảm nhỏ kích thước đến mức tối thiểu trong các ứng dụng chuyên biệt như: Kết nối bus, kết nối video hoặc điều khiển trực tiếp các cơ cấu hiển thị LCD.Với kiểu tiêu chuẩn cũng đủ dùng cho hầu hết các ứng dụng 2. Các kiểu cấu trúc bộ nhớ Các bộ vi xử lý và vi điều khiển hiện nay chủ yếu được chế tạo theo 2 kiểu cấu trúc khác nhau: Cấu trúc Von Neumann và Harvard. Cấu trúc Von Neumann Trong cấu trúc Von Neumann chỉ có một vùng địa chỉ tuyến tính bao gồm tất cả dữ liệu và lệnh điều khiển, độ lớn của vùng địa chỉ phụ thuộc vào chiều dài của bộ đếm chương trình, nếu không trang bị thêm linh kiện phụ thì việc định địa chỉ bộ nhớ chương trình và bộ nhớ dữ liệu không độc lập với nhau. Trong cấu trúc này chỉ tồn tại một bus dữ liệu và một bus địa chỉ để đọc-ghi dữ liệu và đọc lệnh điều khiển chương trình và không có khả năng thực hiện song song (truy xuất đồng thời bộ nhớ dữ liệu và bộ nhớ chương trình) 6 2.
Cấu trúc Harvard Gồm hai vùng địa chỉ riêng biệt cho bộ nhớ dữ liệu và bộ nhớ chương trình nên có thể truy xuất song song dữ liệu và lệnh điều khiển, cấu trúc này đặc biệt thích hợp với các vi điều khiển 16 và 32 bít vì làm tăng tốc độ làm việc. Nếu chỉ có một hệ thống bus như thường thấy ở vi điều khiển 8 bít thì việc truy xuất bộ nhớ dữ liệu hoặc bộ nhớ chương trình sẽ được thực hiện thông qua các tín hiệu điều khiển, nếu không có yêu cầu ghi vào bộ nhớ chương trình thì cấu trúc này còn cho phép tăng tính an toàn của chương trình 3. Lĩnh vực và ứng dụng - Hầu hết các thiết bị điện tử hiện nay đều sử dụng các chip vi điều khiển - Ứng dụng trong nhiều lĩnh vực khác nhau: + Điện thoại di động + Các thiết bị đo lường điện tử + Tivi, CD players, radio,… + Bàn phím PC + Các hệ thống bảo vệ, báo cháy…. Hướng phát triển Yêu cầu đặt ra cho vi điều khiển hiện nay là tăng lĩnh vực ứng dụng với tốc độ xử lý ngày càng nhanh và kích thước nhỏ gọn, công suất tiêu thụ thấp.
Vấn đề đặt ra là liệu với vi điều khiển 8 bít có còn phù hợp hay không ? hoặc trong tương lai phải thay bằng các vi điều khiển 16/32 bít. Khác với vi xử lý việc phát triển luôn kèm theo việc nâng cao khả năng tính toán bằng cách mở rộng hệ thống bus. Đối với vi điều khiển không nhất thiết phải như thế, một vi điều khiển 8 bít cũng đủ cho rất nhiều ứng dụng và vi 7 điều khiển 16 bít là hoàn toàn quá dư thừa, trong trường hợp cần giảm giá thành, kích thước và công suất tiêu thụ thì vi điều khiển 4 bít là giải pháp tối ưu.