Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 133 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
133
Dung lượng
10,88 MB
Nội dung
Mục lục Nội dung Mục lục CHƯƠNG HỌ VIĐIỀUKHIỂN MCS-51 1.1 Tổng quan 1.2 Phân biệt vi xử lý viđiềukhiển 1.3 Họ viđiềukhiển MCS-51 1.3.1 Lịch sử phát triển họ MCS-51 1.3.2 Khảo sát viđiềukhiển 89S52 .12 1.3.2.1 Tổng quát 12 1.3.2.2 Sơ đồ chân 14 1.3.2.3 Cấu trúc port xuất nhập 19 1.3.2.4 Tổ chức nhớ 19 1.3.2.5 Các ghi có chức đặc biệt 23 1.3.2.6 Bộ nhớ .28 1.3.2.7 Hoạt động Reset 29 1.4 Hoạt động định thời 30 1.4.1 Tổng quát 30 1.4.2 Các ghi điềukhiển Timer .31 1.4.3 Các chế độ hoạt động 33 1.5 Hoạt động port nối tiếp .37 1.5.1 Tổng quát 37 1.5.2 Thanh ghi điềukhiển port nối tiếp - SCON 38 1.4.3 Các chế độ hoạt động 39 1.6 Hoạt động ngắt 46 1.6.1 Tổng quát 46 1.6.2 Các ghi điềukhiển ngắt .47 BàigiảngViđiềukhiển Ứng dụng 1.6.3 Các hoạt động ngắt 47 CHƯƠNG 2: PHẦN MỀM HỖ TRỢ CHO MÔ ĐUN 53 2.1 Phần mềm mô phần cứng: 53 2.1.1 Cài đặt: 53 2.1.2 Hướng dẫn sử dụng: .59 2.1.2.1 Hướng dẫn tạo dự án mới: 60 2.1.2.2 Hướng dẫn vẽ mạch nguyên lý mô phỏng: 64 2.2 Phần mềm lập trình C cho họ MCS-51…………………………………………… 79 2.2.1 Cài đặt phần mềm mikroC for 8051………………………………………………79 2.2.2 Hướng dẫn sử dụng phần mềm mikroC for 8051……………………….……… 83 2.2.3 Tập lệnh C cho họ 8051……………………………………………….…….……93 2.2.3.1 Định nghĩa ………………………………………………………….…….…… 93 2.2.3.2 Biểu diễn số học………………………………………………….…….……… 93 2.2.3.3 Hàm trễ…………………………………………………………….….…………93 2.2.3.4 Khai báo kiểu liệu cho biến…………………………………….……………93 2.2.3.5 Các phép toán…………………………………………………… …………… 94 2.2.3.6 Tập lệnh có cấu trúc……………………………………………… ……………95 2.3 Phần mềm nạp code cho họ 8051…………………………………… …………….97 2.3.1 Cài đặt……………………………………………………………… ……………97 2.3.2 Hướng dẫn sử dụng………………………………………………………………100 CHƯƠNG 3: LẬP TRÌNH ỨNG DỤNG .99 3.1 Lập trình điềukhiển led đơn 99 3.2 Lập trình điềukhiển RELAY 102 3.3 Lập trình hiển thị LCD 105 3.4 Lập trình điềukhiển led đoạn .107 3.4.1 Giới thiệu LED đoạn 107 3.4.2 Mã LED: .107 3.4.3 Lập trình điềukhiển LED đoạn: 108 3.4.4 Lập trình điềukhiển LED đoạn phương pháp quét……………………….109 Đặng Thành Tựu Trang BàigiảngViđiềukhiển Ứng dụng 3.5 Lập trình giao tiếp phím ấn 113 3.6 Lập trình điềukhiển động không đồng pha quay chiều 115 3.7 Lập trình điềukhiển đèn giao thông số 118 3.8 Lập trình giao tiếp khơng dây qua Bluetooth 125 3.8.1 Mơ hình giao tiếp .125 3.8.2 Giới thiệu Module HC05: 126 3.8.3 Giao tiếp HC-05 với viđiềukhiển họ 8051: .126 3.8.4 Điềukhiển thiết bị từ Windows: 129 3.8.4.1 Kết nối Module HC-05 với máy tính: 129 3.8.4.2 Tạo giao diện điều khiển……………………………………………………….131 Tài liệu tham khảo 135 Đặng Thành Tựu Trang BàigiảngViđiềukhiển Ứng dụng CHƯƠNG HỌ VIĐIỀUKHIỂN MCS-51 1.1 Tổng quan Trong thập niên cuối kỷ XX, từ đời công nghệ bán dẫn, kỹ thuật điện tử có phát triển vượt bậc Các thiết bị điện tử sau tích hợp với mật độ cao cao diện tích nhỏ,nhờ thiết bị nhỏ nhiều chức Các thiết bị điện tử ngày nhiều chức giá thành ngày rẻ hơn, điện tử có mặt khắp nơi Bước đột phát kỹ thuật điện tử tạo thiết bị điện tử Viđiềukhiển Một viđiềukhiển (microcontroller) xem “một máy tính chip” – mạch điện tích hợp chip, lập trình được, dùng để điềukhiển hoạt động hệ thống Viđiềukhiển ứng dụng rộng rãi Đa số lĩnh vực ứng dụng viđiềukhiển Và khí tự động hố có lẽ gắn liền với vi xử lý Viđiềukhiển câu trúc siêu nhỏ, gồm linh kiện điện tử có kích thước micro nano kết hợp với nhau, nối với thiết bị bên ngồi qua chân viđiềukhiểnVì hiểu rõ cấu trúc nó, ta hiểu làm việc với gì? Và hoạt động nào? 1.2 Phân biệt vi xử lý viđiềukhiể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 q trình phát triển cơng nghệ vi xử lý, chip (hay vi xử lý) chế tạo tích hợp phần cứng thiết yếu 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 tích hợp chip mà phải ghép nối thêm bên Các phần cứng 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 tích hợp vào bên IC người ta gọi vi xử lý tích hợp thêm ngoại vi “vi điều khiển” Đặng Thành Tựu Trang BàigiảngViđiềukhiển Ứng dụng 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 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 mà thơi Để vi xử lý hoạt động cần có chương trình kèm theo, chương trình điềukhiể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 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ềukhiể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 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, 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 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 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 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ý cần cân nhắc Bởi hệ thống dù lớn hay nhỏ, 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ềukhiển trở lại, khối liên kết với vi xử lý thự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 tinh tường thành phần vi xử lý, nhớ, thiết bị ngoại vi Hệ thống 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ì số nhược điểm nên Đặng Thành Tựu Trang BàigiảngViđiềukhiển Ứng dụng 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 gọi Microcontroller-Vi điềukhiểnViđiềukhiển có khả tương tự khả vi xử lý, cấu trúc phần cứng dành cho người dùng đơn giản nhiều Viđiềukhiể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 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ềukhiển xây dựng với phần cứng dành cho người sử dụng đơn giản hơn, 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) Thay vào đó, Viđiềukhiển có giá thành rẻ nhiều so với vi xử lý, việc sử dụng đơn giản, ứ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 tốn phức tạp Viđiềukhiển ứng dụng dây chuyền tự động loại nhỏ, robot có chức đơn giản, máy giặt, ơtơ v.v Các dòng viđiềukhiển thông dụng: Họ viđiềukhiển AMCC: (do tập đoàn "Applied Micro Circuits Corporation" sản xuất) Từ tháng năm 2004, họ viđiềukhiển phát triển tung thị trường IBM • 403 PowerPC CPU • PPC 403GCX • 405 PowerPC CPU • PPC 405EP • PPC 405GP/CR • PPC 405GPr • PPC NPe405H/L • 440 PowerPC Book-E CPU • PPC 440GP • PPC 440GX Đặng Thành Tựu Trang BàigiảngViđiềukhiển Ứng dụng • PPC 440EP/EPx/GRx • PPC 440SP/SPe Họ viđiềukhiển Atmel: • Dòng 8051 (8031, 8051, 8751, 8951, 8032, 8052, 8752, 8952) • Dòng Atmel AT91 (Kiến trúc ARM THUMB) • Dòng AT90, Tiny & Mega – AVR (Atmel Norway design) • Dòng Atmel AT89 (Kiến trúc Intel 8051/MCS51) • Dòng MARC4 Họ viđiềukhiển Cypress MicroSystems • CY8C2xxxx (PSoC) Họ viđiềukhiển Freescale Semiconductor Từ năm 2004, viđiềukhiển phát triển tung thị trường Motorola • Dòng 8-bit • 68HC05 (CPU05) • 68HC08 (CPU08) • 68HC11 (CPU11) • Dòng 16-bit • 68HC12 (CPU12) • 68HC16 (CPU16) • Freescale DSP56800 (DSPcontroller) • Dòng 32-bit • Freescale 683XX (CPU32) • MPC500 • MPC 860 (PowerQUICC) • MPC 8240/8250 (PowerQUICC II) • MPC 8540/8555/8560 (PowerQUICC III) Họ viđiềukhiển Fujitsu • F²MC Family (8/16 bit) • FR Family (32 bit) Đặng Thành Tựu Trang BàigiảngViđiềukhiển Ứng dụng • FR-V Family (32 bit RISC) Họ viđiềukhiển Intel • Dòng 8-bit • 8XC42 • MCS48 • MCS51 • 8061 • 8xC251 • Dòng 16-bit • 80186/88 • MCS96 • MXS296 • Dòng 32-bit • 386EX • i960 Họ viđiềukhiển Microchip • PIC 8-bit (xử lý liệu 8-bit, 8-bit data bus) • Từ lệnh dài 12-bit (Base-line): PIC10F, PIC12F vài PIC16F • Từ lệnh dài 14-bit (Mid-Range Enhance Mid-Range): PIC16Fxxx, PIC16F1xxx • Từ lệnh dài 16-bit (High Performance): PIC18F • PIC 16-bit (xử lý liệu 16-bit) • PIC điềukhiển động cơ: dsPIC30F • PIC có DSC: dsPIC33F • Phổ thơng: PIC24F, PIC24E, PIC24H • PIC 32-bit (xử lý liệu 32-bit): PIC32MX Họ viđiềukhiển National Semiconductor • COP8 • CR16 Đặng Thành Tựu Trang BàigiảngViđiềukhiển Ứng dụng Họ viđiềukhiển STMicroelectronics • ST 62 • ST7 • STM8 • STM32 (Cortex-Mx) Họ viđiềukhiển Philips Semiconductors • LPC2000 • LPC900 • LPC700 1.3 Họ viđiềukhiển MCS-51 1.3.1 Lịch sử phát triển họ MCS-51 Năm 1976 Intel giới thiệu viđiềukhiển (microcontroller) 8748, chip tương tự vi xử lý chip họ MCS-48 Độ phức tạp, kích thước khả Viđiềukhiển tăng thêm bậc quan trọng vào năm 1980 intel tung chip 8051, Viđiềukhiển họ MCS-51 chuẩn công nghệ cho nhiều họ Viđiềukhiển sản xuất sau Chip 8051 chứa 60000 transistor bao gồm 4K byte ROM, 128 byte RAM, 32 đường xuất nhập, port nối tiếp định thời 16 bit Sau nhiều họ Viđiềukhiển nhiều nhà chế tạo khác đưa thị trường với tính cải tiến ngày mạnh Hiện có nhiều họ Viđiềukhiển thị trường với nhiều ứng dụng khác nhau, họ Viđiềukhiển họ MCS-51 sử dụng rộng rãi giới Việt Nam Vào năm 1980 Intel cơng bố chíp 8051(80C51), viđiềukhiển họ viđiềukhiển MCS-51 Nó bao gồm 4KB ROM, 128 byte RAM, 32 đường xuất nhập, port nối tiếp định thời 16 bit Tiếp theo sau đời chip 8052, 8053, 8055 với nhiều tính cải tiến Hiện Intel khơng cung cấp loại Viđiềukhiển họ MCS-51 nữa, thay vào nhà sản xuất khác Atmel, Philips/signetics, AMD, Siemens, Đặng Thành Tựu Trang BàigiảngViđiềukhiển Ứng dụng Matra&Dallas, Semiconductors cấp phép làm nhà cung cấp thứ hai cho chip họ MSC-51 Chip Viđiềukhiển sử dụng rộng rãi giới Việt Nam Viđiềukhiển hãng Atmel với nhiều chủng loại viđiềukhiển khác Hãng Atmel có chip Viđiềukhiển có tính tương tự chip Viđiềukhiển MCS-51 Intel, mã số chip thay đổi chút Atmel sản xuất Mã số 80 chuyển thành 89, chẳng hạn 80C52 Intel sản xuất Atmel mã số thành 89C52 (Mã số đầy đủ: AT89C52) với tính chương trình tương tự Tương tự 8051,8053,8055 có mã số tương đương Atmel 89S52,89C53,89C55 Viđiềukhiển Atmel sau ngày cải tiến bổ sung thêm nhiều chức tiện lợi cho người dùng Sau khoảng thời gian cải tiến phát triển, hãng Atmel tung thị trường dòng Viđiềukhiển mang số hiệu 89Sxx với nhiều cải tiến đặc biệt có thêm khả nạp chương trình theo chế độ nối tiếp đơn giản tiện lợi cho người sử dụng Tất Viđiềukhiển có đặc tính giống phần mềm (các tập lệnh lập trình nhau), phần cứng bổ sung với chip có mã số hai số cuối cao hơn, Viđiềukhiển sau có nhiều tính vượt trội Viđiềukhiển hệ trước Các Viđiềukhiển 89Cxx bảng có cấu tạo ROM RAM 98Sxx bảng 2, nhiên 98Sxx bổ sung số tính có thêm chế độ nạp nối tiếp 8051 viđiềukhiển bit tức CPU làm việc với bit liệu Dữ liệu lớn bit chia thành liệu bit để xử lý 8051 trở nên phổ biến sau Intel cho phép nhà sản xuất khác (Siemens, Atmel, Philips, AMD, Matra, Dallas, Semiconductor …) sản xuất bán dạng biến thể 8051 mà họ muốn với điều kiện họ phải để mã chương trình tương thích với 8051 Từ dẫn đến đời nhiều phiên 8051 với tốc độ dung lượng ROM chip khác Tuy nhiên, điều quan trọng có nhiều biến thể 8051, khác tốc độ, dung lượng ROM tất lệnh tương thích với 8051 ban Đặng Thành Tựu Trang 10 BàigiảngViđiềukhiển Ứng dụng Giải thuật: Code: #define sw1 p2.b0 #define sw2 p2.b1 #define relay1 p1.b0 #define relay2 p1.b1 void main(void){ relay1=relay2=0; while(1){ if(!sw1) {relay2=0;delay_ms(3000);relay1=1;} if(!sw2) {relay1=0;delay_ms(3000); relay2=1;} }} Bài tập làm thêm Bài tập 3.7.1 Thực lại yêu cầu có thêm nút dừng Bài tập 3.7.2 Thực lại yêu 3.7.1 với yêu cầu sau Về phần cứng: phím ấn Start Stop, LCD hiển thị - Mới cấp nguồn, LCD hiển thị: + Dòng 1: DK moto pha + Dòng 2: Trang thai: D + Trạng thái động cơ: dừng Đặng Thành Tựu Trang 119 BàigiảngViđiềukhiển Ứng dụng - Mỗi ấn phím Start làm thay đổi hiển thị LCD đảo chiều quay động sau: - Ấn Start lần 1: Trạng thái + Dòng 1: DK moto pha + Dòng LCD: Trang thai: T + Động quay thuận - Ấn Start lần 2: Trạng thái + Dòng 1: DK moto pha + Dòng LCD: Trang thai: N + Động quay ngược - Ấn tiếp tục ấn Start đảo trạng thái động - Ấn Stop: Trạng thái dừng + Dòng 1: DK moto pha + Dòng LCD: Trang thai: D + Động dừng - Mỗi đảo chiều phải dừng động giây lâu giây sau đảo chiều động 3.7 Lập trình điềukhiển đèn giao thơng số Yêu cầu: Lập trình điềukhiển hệ thống đèn giao thông ngã tư thỏa Trụ đèn Trụ đèn Đỏ sáng 15 giây Xanh sáng 12 giây + Vàng sáng giây Xanh sáng 15 giây + Vàng sáng giây Đỏ sáng 20 giây Giải vấn đề: Giai đoạn 1: Thiết kế phần cứng Đặng Thành Tựu Trang 120 BàigiảngViđiềukhiển Ứng dụng U1 29 30 31 XTAL2 RST PSEN ALE EA P1.0 P1.1 P1.2 P1.3 P1.4 P1.5 P1.6 P1.7 AT89C51 P0.0/AD0 P0.1/AD1 P0.2/AD2 P0.3/AD3 P0.4/AD4 P0.5/AD5 P0.6/AD6 P0.7/AD7 P2.0/A8 P2.1/A9 P2.2/A10 P2.3/A11 P2.4/A12 P2.5/A13 P2.6/A14 P2.7/A15 P3.0/RXD P3.1/TXD P3.2/INT0 P3.3/INT1 P3.4/T0 P3.5/T1 P3.6/WR P3.7/RD 39 38 37 36 35 34 33 32 21 22 23 24 25 26 27 28 A B C D E F G 10 11 12 13 14 15 16 17 U2 U4 U3 NOT A B C D E F G 18 XTAL1 A B C D E F G 19 U5 NOT NOT NOT Hình 3.9 Sơ đồ mạch đèn giao thơng trụ Đặng Thành Tựu Trang 121 BàigiảngViđiềukhiển Ứng dụng Giai đoạn 2: Giải thuật Đặng Thành Tựu Trang 122 BàigiảngViđiềukhiển Ứng dụng Giai đoạn 3: Viết code Để LED đoạn có thời gian hiển thị giây → ngắt Timer (chọn Timer0) Các bước tạo ngắt Timer: - Bước 1: Vào Tools chọn Interrupt Assistant Hình 3.10 Chọn công cụ tạo ngắt - Bước 2: Chọn loại ngắt → ngắt Timer → ET0 Hình 3.11 Chọn loại ngắt Sau OK code có sẵn chương trình ngắt Để chạy giây = 20 * 50.000 us = 1.000.000 us = 1s → sử dụng Timer mode (mode 16 bit đủ 50.000) + Cài đặt TH0 TL0 đếm 50.000 lần: Nạp vào TH0-TL0 giá trị = 65.535 – 50.000 = 15.535 = 3CAFH → TH0 = 3CH = 0x3C, TL0 = AFH = 0xAF cho biến count đếm 20 lần giây Đặng Thành Tựu Trang 123 BàigiảngViđiềukhiển Ứng dụng Hình 3.12 Chương trình ngắt Timer chạy thời gian 50.000uS Khi vào đầu chương trình phải khai báo cho phép ngắt Code: #define dulieu p2 #define scan p3 // p3.0 P3.3 #define bit_ngan p3.b0 #define bit_tram p3.b1 #define bit_chuc p3.b6 #define bit_donvi p3.b7 #define xanh1 p1.b0 #define vang1 p1.b1 #define do1 p1.b2 #define xanh2 p1.b3 #define vang2 p1.b4 #define do2 p1.b5 int ngan,tram,chuc,donvi; int led[]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8, 0x80,0x90}; int time_xanh1=15,time_vang1=5, time_xanh2=12,time_vang2=3,time_tru1,time_tru2,i; int count=0; // dem 20 x 50.000 = 1.000.000 us = 1s void ngatT0() iv IVT_ADDR_ET0 ilevel ics ICS_AUTO { TH0=0x3c; TL0=0xaf; count++; } Đặng Thành Tựu Trang 124 BàigiảngViđiềukhiển Ứng dụng void hienthi() { ngan=time_tru1/10; tram=time_tru1%10; chuc=time_tru2/10; donvi=time_tru2%10; dulieu=led[ngan]; bit_ngan=0; delay_ms(10); bit_ngan=1; dulieu=led[tram]; bit_tram=0; delay_ms(10); bit_tram=1; dulieu=led[chuc]; bit_chuc=0; delay_ms(10); bit_chuc=1; dulieu=led[donvi]; bit_donvi=0; delay_ms(10); bit_donvi=1;} void main() { // khai bao ngat timer TF0_bit=0; // xoa cow ngat ET0_bit=1; // cho phep ngat timer0 EA_bit=1; // cho phep ngat toan cuc GATE0_bit=0; C_T0_bit=0; // cai dat che timer M01_bit=0; M00_bit=1; // che dem 16 bit TH0=0x3c; TL0=0xaf; Đặng Thành Tựu Trang 125 BàigiảngViđiềukhiển Ứng dụng TR0_bit=1; // bat dau chay ngat timer do1=xanh1=vang1=do2=xanh2=vang2=0; while(1) { // tru 1: - tru 2: xanh time_tru1=time_xanh2+time_vang2; time_tru2=time_xanh2; do1=xanh2=1; vang1=do2=0; while(time_tru2>0) {while(count0) { while(count0) { while(count0) { while(count