GIÁO TRÌNH VI ĐIỀU KHIỂN DRAFT ĐƢỜNG KHÁNH SƠN Trang 1 MỤC LỤC MỤC LỤC 1 DANH MỤC HÌNH ẢNH 3 LỜI NÓI ĐẦU 5 Chƣơng 1 TỔNG QUAN VỀ VI ĐIỀU KHIỂN 6 1 1 Khái quát về vi điều khiển 6 1 2 Phân loại vi điều.
GIÁO TRÌNH VI ĐIỀU KHIỂN DRAFT MỤC LỤC MỤC LỤC DANH MỤC HÌNH ẢNH .3 LỜI NÓI ĐẦU .5 Chƣơng 1: TỔNG QUAN VỀ VI ĐIỀU KHIỂN 1.1 Khái quát vi điều khiển 1.2 Phân loại vi điều khiển ứng dụng 1.2.1 Phân loại 1.2.2.Ứng dụng 10 1.3 Sơ đồ khối vi điều khiển 11 Chƣơng 2: KIẾN TRÚC VI ĐIỀU KHIỂN 14 2.1 Khái quát chung 14 2.2 Giới thiệu vi điều khiển PIC 16F877A 14 2.3 Tổ chức nhớ 20 2.3.1 Bộ nhớ chƣơng trình 20 2.3.2 Bộ nhớ liệu 21 2.3.2.1 Thanh ghi chức đặc biệt SFR 22 2.3.2.2 Thanh ghi mục đích chung GPR 24 2.3.3 Stack 24 2.4 Các cổng xuất nhập PIC 16F877A 24 2.4.1 PORT A 25 2.4.2 PORT B 26 2.4.3 PORT C 26 2.4.4 PORT D 26 2.4.5 PORT E 26 2.5 Hoạt động Reset 27 2.6 Chế độ tiết kiệm lƣợng 29 Chương 3: LẬP TRÌNH CHO VI ĐIỀU KHIỂN 33 3.1.Giới thiệu phần mềm lập trình mơ 33 3.2.Trình biên dịch, ngơn ngữ lập trình cho vi điều khiển 34 3.3.Cấu trúc chƣơng trình vi điều khiển bƣớc lập trình 36 3.3.1.Khai báo tiền xử lý 36 3.3.2.Phần khai báo biến toàn cục 37 3.3.3.Phần khai báo, định nghĩa chƣơng trình 38 3.3.4.Phần chƣơng trình chính: 38 3.3.5.Các cấu trúc thuật tốn ngơn ngữ CCS 38 3.3.6.Các toán tử CCS 40 3.3.7.Các hàm số học CCS 40 3.3.8.Các hàm vào CCS 41 3.3.9.Các hàm tạo trễ 41 3.4.Điều khiển xuất nhập liệu (input, output, GPIO) 42 3.5.Các chuyển đổi tín hiệu ADC, COMPARATOR, CCP 46 Chƣơng 4: HOẠT ĐỘNG ĐỊNH THỜI (TIMER/COUNTER) 58 4.1 Mở đầu 58 4.2 Nguyên lý hoạt động định thời 58 4.2.1.Chế độ định thời: 58 ĐƢỜNG KHÁNH SƠN Trang GIÁO TRÌNH VI ĐIỀU KHIỂN DRAFT 4.2.2.Chế độ đếm 59 4.3 TIMER 60 4.4 TIMER 63 4.5 TIMER 64 4.6 Một số ứng dụng định thời 66 Chƣơng 5: GIAO TIẾP VÀ TRUYỀN DỮ LIỆU VỚI VI ĐIỀU KHIỂN 71 5.1.GIAO TIẾP NỐI TIẾP 71 5.1.1 USART 71 5.1.1.1 USART BẤT ĐỒNG BỘ 72 5.1.1.2 USART ĐỒNG BỘ 76 5.2 MSSP 81 5.2.1 SPI 82 5.2.2.I2C 87 Chƣơng 6: HOẠT ĐỘNG NGẮT 105 6.1 Mở đầu 105 6.2 Tổ chức xử lý ngắt 105 6.3 Thiết kế chƣơng trình xử lý ngắt 106 6.5 Các ngắt định thời 108 6.6 Các ngắt port nối tiếp 109 6.7 Các ngắt 111 TÀI LIỆU THAM KHẢO 117 ĐƢỜNG KHÁNH SƠN Trang GIÁO TRÌNH VI ĐIỀU KHIỂN DRAFT DANH MỤC HÌNH ẢNH Hình 1.1: Cấu trúc chung họ vi điều khiển 11 Hình 2.1: Các dạng sơ đồ chân vi điều khiển PIC16F877A/ PIC16F874A 16 Hình 2.2: Sơ đồ khối vi điều khiển PIC16F877A 17 Hình 2.3: Chức chân vi điều khiển PIC16F877A 18 Hình 2.4: Bộ nhớ chƣơng trình PIC16F877A 21 Hình 2.5: Bộ nhớ liệu PIC16F877A 22 Hình 2.6: Mạch reset qua pin MCLR 27 Hình 2.7: Sơ đồ chế độ reset PIC 16F877A 29 Hình 2.8: RC oscillator 32 Hình 3.1: Mơ chƣơng trình bật tắt đèn led port proteus 46 Hình 3.2: Sơ đồ khối chuyển đổi ADC 48 Hình 3.3: Các cách lƣu kết chuyển đổi AD 48 Hình 3.4: Nguyên lý hoạt động so sánh đơn giản 49 Hình 3.5: Các chế độ hoạt động comparator 50 Hình 3.6: Sơ đồ khối tạo điện áp so sánh 51 Hình 3.7: Sơ đồ khối CCP 53 Hình 3.8: Sơ đồ khối CCP (Compare mode) 54 Hình 3.9: Sơ đồ khối CCP (PWM mode) 55 Hình 3.10: Các tham số PWM 56 Hình 4.1: Sơ đồ khối timer 61 Hình 4.2: Sơ đồ khối timer 65 Hình 4.3: Mơ dùng ngắt timer định 1s 67 Hình 4.4: Mô đo tốc độ động sử dụng timer 70 Hình 5.1: Sơ đồ khối khối truyền liệu USART 72 Hình 5.2: Sơ đồ khối khối nhận liệu USART 74 Hình 5.3: Sơ đồ khối MSSP (giao diện SPI) 82 Hình 5.4: Sơ đồ khối chuẩn giao tiếp SPI 85 Hình 5.5: Giản đồ xung SPI chế độ Master mode 86 Hình 5.6: Giản đồ xung SPI chế độ Slave mode 87 Hình 5.7: Sơ đồ khối MSSP (I2C Slave mode) 89 Hình 5.8: Giản đồ xung I2C Slave mode bit địa trình nhận liệu (bit SEN=0) 92 Hình 5.9: Giản đồ xung I2C Slave mode 10 bit địa trình nhận liệu (bit SEN=0) 92 Hình 5.10: Giản đồ xung I2C Slave mode bit địa trình nhận liệu (bit SEN=1) 93 Hình 5.11: Giản đồ xung I2C Slave mode 10 bit địa trình nhận liệu (bit SEN=1) 93 Hình 5.12: Giản đồ xung I2C Slave mode bit địa trình truyền liệu 95 Hình 5.13: Giản đồ xung I2C Slave mode 10 bit địa trình truyền liệu 95 Hình 5.14: Giản đồ xung I2C Slave nhận địa GCA 96 Hình 5.15: Sơ đồ khối MSSP ( I2C Master mode) 96 ĐƢỜNG KHÁNH SƠN Trang GIÁO TRÌNH VI ĐIỀU KHIỂN DRAFT Hình 5.16: Sơ đồ khối BRG (Baud Rate Benerator) I2C Master mode 97 Hình 5.17: Giản đồ xung I2C Master mode trình tạo điều kiện Start 98 Hình 5.18: Giản đồ xung I2C Master mode trình tạo điều kiện Stop 99 Hình 5.19: Giản đồ I2C Master mode trình tạo điều kiện Start liên tục 100 Hình 5.20: Giản đồ xung I2C Master mode trình truyền liệu 101 Hình 5.21: Giản đồ xung I2C Master mode trình nhận liệu 102 Hình 5.22: Sơ đồ PortD PortE hoạt động chế độ PSP Slave mode 104 Hình 6.1: Sơ đồ logic tất ngắt vi điều khiển PIC 16F877A 106 Hình 6.2: Mơ ngắt với PIC 16F877A 116 ĐƢỜNG KHÁNH SƠN Trang GIÁO TRÌNH VI ĐIỀU KHIỂN DRAFT LỜI NĨI ĐẦU Giáo trình đƣợc biên soạn để phục vụ cho việc giảng dạy môn Vi điều khiển ngành điện tử, điện công nghiệp, điện tử, tự động hóa Nội dung giáo trình gồm chƣơng trình bày vấn đề sau : - Tổng quan vi điều khiển - Kiến trúc vi điều khiển - Lập trình cho vi điều khiển - Hoạt động định thời (Timer/Counter) - Giao tiếp truyền liệu với vi điều khiển - Hoạt động ngắt Thơng qua giáo trình sinh viên nắm đƣợc kiến thức vi điều khiển ứng dụng thực tế Hiểu đƣợc nguyên lý hoạt động, cấu trúc hệ vi xử lý vi điều khiển Nắm đƣợc ngơn ngữ lập trình để lập trình ứng dụng với vi điều khiển Nhận biết đƣợc xu hƣớng phát triển liên quan đến vi điều khiển Để sử dụng giáo trình có hiệu cao sinh viên cần xem kỹ phần lý thuyết để nắm đƣợc khái niệm Sau áp dụng vào giải tập cuối chƣơng Bên cạnh sinh viên cần tham gia đầy đủ buổi thực hành phịng thí nghiệm Do lần đầu biên soạn nên khó tránh khỏi sai sót, tác giả mong nhận đƣợc ý kiến đóng góp quý báu từ q thầy cơ, bạn sinh viên để có điều kiện sửa chữa bổ sung giáo trình hồn thiện Tác giả Đường Khánh Sơn ĐƢỜNG KHÁNH SƠN Trang GIÁO TRÌNH VI ĐIỀU KHIỂN DRAFT Chương 1: TỔNG QUAN VỀ VI ĐIỀU KHIỂN 1.1 Khái quát vi điều khiển Khái niệm vi xử lý vi điều khiển Về hai khái niệm không khác nhiều, “vi xử lý” thuật ngữ chung dùng đề cập đến kỹ thuật ứng dụng công nghệ vi điện tử, cơng nghệ tích hợp khả xử lý theo chƣơng trình vào lĩnh vực khác Vào giai đoạn đầu trình phát triển công nghệ vi xử lý, chip (hay vi xử lý) đƣợc chế tạo tích hợp phần cứng thiết yếu nhƣ CPU mạch giao tiếp CPU phần cứng khác Trong giai đoạn này, phần cứng khác (kể nhớ) thƣờng khơng đƣợc tích hợp chip mà phải ghép nối thêm bên Các phần cứng đƣợc gọi ngoại vi (Peripherals) Về sau, nhờ phát triển vƣợt bậc cơng nghệ tích hợp, ngoại vi đƣợc tích hợp vào bên IC ngƣời ta gọi vi xử lý đƣợc tích hợp thêm ngoại vi “vi điều khiển” Vi xử lý có khối chức cần thiết để lấy liệu, xử lý liệu xuất liệu sau xử lý Và chức vi xử lý xử lý liệu, chẳng hạn nhƣ cộng, trừ, nhân, chia, so sánh.v.v Vi xử lý khơng có khả giao tiếp trực tiếp với thiết bị ngoại vi, có khả nhận xử lý liệu Để vi xử lý hoạt động cần có chƣơng trình kèm theo, chƣơng trình điều khiển mạch logic từ vi xử lý xử lý liệu cần thiết theo yêu cầu Chƣơng trình tập hợp lệnh để xử lý liệu thực lệnh đƣợc lƣu trữ nhớ, công việc thực hành lệnh bao gồm: nhận lệnh từ nhớ, giải mã lệnh thực lệnh sau giải mã Để thực công việc với thiết bị cuối cùng, chẳng hạn điều khiển động cơ, hiển thị kí tự hình đòi hỏi phải kết hợp vi xử lý với mạch điện giao tiếp với bên đƣợc gọi thiết bị I/O (nhập/xuất) hay gọi thiết bị ngoại vi Bản thân vi xử lý đứng khơng có nhiều hiệu sử dụng, nhƣng phần máy tính, hiệu ứng dụng vi xử lý lớn Vi xử lý kết hợp với thiết bị khác đƣợc sử hệ thống lớn, phức tạp đòi hỏi phải xử lý lƣợng lớn phép tính phức tạp, có tốc độ nhanh Chẳng hạn nhƣ hệ thống sản xuất tự động công nghiệp, tổng đài điện thoại, robot có khả hoạt động phức tạp v.v ĐƢỜNG KHÁNH SƠN Trang GIÁO TRÌNH VI ĐIỀU KHIỂN DRAFT Bộ vi xử lý có khả vƣợt bậc so với hệ thống khác khả tính tốn, xử lý, thay đổi chƣơng trình linh hoạt theo mục đích ngƣời dùng, đặc biệt hiệu toán hệ thống lớn Tuy nhiên ứng dụng nhỏ, tầm tính tốn khơng địi hỏi khả tính tốn lớn việc ứng dụng vi xử lý đòi hỏi khối mạch điện giao tiếp phức tạp Các khối bao gồm nhớ để chứa liệu chƣơng trình thực hiện, mạch điện giao tiếp ngoại vi để xuất nhập điều khiển trở lại, khối liên kết với vi xử lý thực đƣợc cơng việc Để kết nối khối địi hỏi ngƣời thiết kế phải hiểu biết rõ thành phần vi xử lý, nhớ, thiết bị ngoại vi Hệ thống đƣợc tạo phức tạp, chiếm nhiều không gian, mạch in phức tạp vấn đề trình độ ngƣời thiết kế Kết giá thành sản phẩm cuối cao, không phù hợp để áp dụng cho hệ thống nhỏ Vì nên nhà chế tạo tích hợp nhớ số mạch giao tiếp ngoại vi với vi xử lý vào IC đƣợc gọi Microcontroller (Vi điều khiển) Vi điều khiển có khả tƣơng tự nhƣ khả vi xử lý, nhƣng cấu trúc phần cứng dành cho ngƣời dùng đơn giản nhiều Vi điều khiển đời mang lại tiện lợi ngƣời dùng, họ không cần nắm vững khối lƣợng kiến thức 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 trở nên đơn giản nhiều có khả giao tiếp trực tiếp với thiết bị bên Vi điều khiển đƣợ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 khả xử lý bị giới hạn (tốc độ xử lý chậm khả tính tốn hơn, dung lƣợng chƣơng trình bị giới hạn) Tuy nhiên vi điều khiển có giá thành rẻ nhiều so với vi xử lý, việc sử dụng đơn giản, đƣợc ứng dụng rộng rãi vào nhiều ứng dụng có chức đơn giản, khơng địi hỏi tính toán phức tạp Năm 1976 Intel giới thiệu vi điều khiển 8748, chip tƣơng tự nhƣ vi xử lý chip họ MCS-48 Độ phức tạp, kích thƣớc khả vi điều khiển tăng thêm bậc quan trọng vào năm 1980 intel tung chip 8051, vi điều khiển họ MCS-51 chuẩn công nghệ cho nhiều họ vi điều khiển đƣợc sản xuất sau Sau nhiều họ vi điều khiển nhiều nhà chế tạo khác lần lƣợt đƣợc đƣa thị trƣờng với tính đƣợc cải tiến ngày mạnh ĐƢỜNG KHÁNH SƠN Trang GIÁO TRÌNH VI ĐIỀU KHIỂN DRAFT 1.2 Phân loại vi điều khiển ứng dụng 1.2.1 Phân loại Độ dài ghi Dựa vào độ dài ghi lệnh vi điều khiển mà ngƣời ta chia loại vi điều khiển bit, 16 bit, hay 32 bit Các loại vi điều khiển 16 bit có độ dài lệnh lớn nên tập lệnh nhiều hơn, phong phú Tuy nhiên chƣơng trình viết vi điều khiển 16 bit viết vi điều khiển bit với chƣơng trình thích hợp Kiến trúc CISC (Complex Instruction Set Computer) RISC (Reduced Instruction Set Computer) Vi điều khiển CISC vi điều khiển có tập lệnh phức tạp Các vi điều khiển có số lƣợng lớn lệnh nên giúp cho ngƣời lập trình linh hoạt dễ dàng viết chƣơng trình Vi điều khiển RISC vi điều khiển có tập lệnh đơn giản Chúng có số lƣợng nhỏ lệnh đơn giản Do đó, chúng địi hỏi phần cứng hơn, giá thành thấp hơn, nhanh so với CISC Tuy nhiên địi hỏi ngƣời lập trình phải viết chƣơng trình phức tạp hơn, nhiều lệnh Kiến trúc Harvard kiến trúc Vonneumann Kiến trúc Harvard sử dụng nhớ riêng biệt cho chƣơng trình liệu Bus địa bus liệu độc lập với nên trình truyền nhận liệu đơn giản Kiến trúc Vonneumann sử dụng chung nhớ cho chƣơng trình liệu Điều làm cho vi điều khiển gọn nhẹ hơn, giá thành rẻ Một số loại vi điều khiển có thị trường: - Vi điều khiển MCS-51 Họ vi điều khiển MCS-51 Intel sản xuất vào năm 1980 IC thiết kế cho ứng dụng hƣớng điều khiển Các IC hệ thống vi xử lý hoàn chỉnh bao gồm các thành phần hệ vi xử lý: CPU, nhớ, mạch giao tiếp, điều khiển ngắt MCS-51 họ vi điều khiển sử dụng chế CISC, có độ dài thời gian thực thi lệnh khác Tập lệnh cung cấp cho MCS-51 có lệnh dùng cho điều khiển xuất/nhập tác động đến bit MCS-51 bao gồm nhiều vi điều khiển khác nhau, vi điều khiển 8051 có 4KB ROM, 128 byte RAM 8031, khơng có ROM nội, phải sử dụng nhớ Sau này, nhà sản xuất khác nhƣ Siemens, Fujitsu, ĐƢỜNG KHÁNH SƠN Trang GIÁO TRÌNH VI ĐIỀU KHIỂN DRAFT …cũng đƣợc cấp phép làm nhà cung cấp thứ hai MCS-51 bao gồm nhiều phiên khác nhau, phiên sau tăng thêm số ghi điều khiển hoạt động MCS-51 AT89C51 vi điều khiển Atmel sản xuất, chế tạo theo công nghệ CMOS - Vi điều khiển AVR AVR kiến trúc Harvard sửa đổi 8-bit RISC đơn chip vi điều khiển đƣợc phát triển Atmel vào năm 1996 Các AVR họ vi điều khiển sử dụng on-chip nhớ flash để lƣu trữ chƣơng trình, trái với One-Time Programmable ROM, EPROM EEPROM đƣợc sử dụng vi điều khiển khác vào lúc AVR kiến trúc máy Modified Harvard với chƣơng trình liệu đƣợc lƣu trữ hệ thống nhớ vật lý riêng biệt xuất không gian địa khác nhau, nhƣng có khả đọc ghi liệu từ nhớ cách sử dụng lệnh đặc biệt - Vi điều khiển PIC PIC họ vi điều khiển RISC đƣợc sản xuất cơng ty Microchip Technology Dịng PIC PIC1650 đƣợc phát triển Microelectronics Division thuộc General Instrument PIC bắt nguồn chữ viết tắt "Programmable Intelligent Computer" (Máy tính khả trình thông minh) sản phẩm hãng General Instruments đặt cho dòng sản phẩm họ PIC1650 Lúc này, PIC1650 đƣợc dùng để giao tiếp với thiết bị ngoại vi cho máy chủ 16 bit CP1600, vậy, ngƣời ta gọi PIC với tên "Peripheral Interface Controller" (Bộ điều khiển giao tiếp ngoại vi) CP1600 CPU tốt, nhƣng lại hoạt động xuất nhập, PIC 8-bit đƣợc phát triển vào khoảng năm 1975 để hỗ trợ hoạt động xuất nhập cho CP1600 PIC sử dụng microcode đơn giản đặt ROM, mặc dù, cụm từ RISC chƣa đƣợc sử dụng thời bây giờ, nhƣng PIC thực vi điều khiển với kiến trúc RISC, chạy lệnh chu kỳ máy (4 chu kỳ dao động) Năm 1985 General Instruments bán phận vi điện tử họ, chủ sở hữu hủy bỏ hầu hết dự án - lúc lỗi thời Tuy nhiên PIC đƣợc bổ sung EEPROM để tạo thành điều khiển vào khả trình Ngày nhiều dịng PIC đƣợc xuất xƣởng với hàng loạt module ngoại vi tích hợp sẵn (nhƣ USART, PWM, ADC ), với nhớ chƣơng trình từ 512 Word đến 32K Word ĐƢỜNG KHÁNH SƠN Trang GIÁO TRÌNH VI ĐIỀU KHIỂN DRAFT 1.2.2.Ứng dụng Vi điều khiển dùng thiết kế loại máy tính nhúng Máy tính nhúng có hầu hết thiết bị tự động thông minh ngày Chúng ta dùng vi điều khiển để thiết kế điều khiển cho sản phẩm nhƣ: Trong sản phẩm dân dụng: - Nhà thơng minh: Cửa tự động, khóa số, tự động điều tiết ánh sáng thông minh (bật/tắt đèn theo thời gian, theo cƣờng độ ánh sáng, ) - Điều khiển thiết bịt từ xa (qua điều khiển, qua tiếng vỗ tay, ) - Điều tiết ẩm, điều tiết nhiệt độ, điều tiết khơng khí, gió - Hệ thống vệ sinh thông minh, Trong quảng cáo: - Các loại biển quảng cáo nháy chữ - Quảng cáo ma trận LED (một màu, màu, đa màu) - Điều khiển máy bạt quảng cáo, Các máy móc dân dụng - Máy điều tiết độ ẩm cho vƣờn - Buồng ấp trứng gà/vịt - Đồng hồ số, đồng hồ số có điều khiển theo thời gian Các sản phẩm giải trí - Máy nghe nhạc - Máy chơi game - Đầu thu kỹ thuật số, đầu thu set-top-box, Trong thiết bị y tế: - Máy móc thiết bị hỗ trợ: máy đo nhịp tim, máy đo đƣờng huyết, máy huyết áp, điện tim đồ, điện não đồ,… - Máy cắt/mài kính - Máy chụp chiếu (city, X-quang, ) Các sản phẩm công nghiệp: - Điều khiển động - Điều khiển số (PID, mờ, ) ĐƢỜNG KHÁNH SƠN Trang 10 ... vấn đề sau : - Tổng quan vi điều khiển - Kiến trúc vi điều khiển - Lập trình cho vi điều khiển - Hoạt động định thời (Timer/Counter) - Giao tiếp truyền liệu với vi điều khiển - Hoạt động ngắt Thơng... vi? ??t vi điều khiển 16 bit vi? ??t vi điều khiển bit với chƣơng trình thích hợp Kiến trúc CISC (Complex Instruction Set Computer) RISC (Reduced Instruction Set Computer) Vi điều khiển CISC vi điều. .. 1.2 Phân loại vi điều khiển ứng dụng 1.2.1 Phân loại Độ dài ghi Dựa vào độ dài ghi lệnh vi điều khiển mà ngƣời ta chia loại vi điều khiển bit, 16 bit, hay 32 bit Các loại vi điều khiển 16 bit