Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 129 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
129
Dung lượng
3,33 MB
Nội dung
BỘ GIÁO DỤC VÀ ĐÀO TẠO VI ĐIỀU KHIỂN Biên soạn: ThS Phạm Quốc Phương Tài Liệu Lưu Hành Tại HUTECH www.hutech.edu.vn VI ĐIỀU KHIỂN Ấn 2014 TRANG 2| KINH TẾ VI MÔ MỤC LỤC I MỤC LỤC MỤC LỤC HƯỚNG DẪN BÀI 1: TỔNG QUAN VỀ VI ĐIỀU KHIỂN PIC 1.1 GIỚI THIỆU 1.1.1 Tổng quan 1.1.2 Một số đặc tính vi điều khiển PIC 1.2 VI ĐIỀU KHIỂN 16F877A 1.2.1 Tổng quát PIC16F877A 1.2.2 Sơ đồ khối TÓM TẮT 14 CÂU HỎI ÔN TẬP 15 BÀI 2: TỔ CHỨC BỘ NHỚ - CÁC THANH GHI ĐẶC BIỆT 16 2.1 TỔ CHỨC BỘ NHỚ 16 2.1.1 Bộ nhớ chương trình 16 2.1.2 Bộ nhớ liệu 17 2.1.3 Bảng đồ ghi chức 18 TÓM TẮT 28 CÂU HỎI ÔN TẬP 29 BÀI 3: NGÔN NGỮ LẬP TRÌNH C VÀ PHẦN MỀM CCS 30 3.1 NGƠN NGỮ LẬP TRÌNH C 30 3.1.1 Ngơn ngữ lập trình (Programming language) 30 3.1.2 Các bước lập trình 30 3.1.3 Viết chương trình C CCS 33 3.1.4 Các cấu trúc lệnh ngôn ngữ C 36 3.2 HƯỚNG DẪN SỬ DỤNG PHẦN MỀM CCS 43 3.2.1 KHỞI TẠO MỘT PROJECT TRONG CCS 43 TÓM TẮT 45 CÂU HỎI ÔN TẬP 46 BÀI 4: CẤU HÌNH I-O PORTS 47 4.1 I-O PORTS 47 4.1.1 Port A – Thanh ghi TrisA 47 4.1.2 Port B – Thanh ghi TrisB 49 II MỤC LỤC 4.1.3 Port C – Thanh ghi TrisC 52 4.1.4 Port D – Thanh ghi TrisD 53 4.1.5 Port E – Thanh ghi TrisE 55 4.2 CÁC HÀM I-0 TRONG CCS 57 4.2.1 Bao gồm hàm sau: 57 TÓM TẮT 61 BÀI TẬP 62 BÀI 5: TIMER - COUNTER 63 5.1 TIMER 63 5.1.1 Bộ định thời Timer0 63 5.1.2 Bộ định thời Timer1 66 5.1.3 Bộ định thời Timer2 71 5.1.4 Bộ định thời Timer – Counter CCS 72 5.1.5 COUNTER 78 TÓM TẮT 80 BÀI TẬP 81 BÀI 6: CCP MODULE 82 6.1 CAPTURE – COMPARE - PWM .82 6.1.1 Thanh ghi CCP1CON/CCP2 .82 6.1.2 Mode Capture 83 6.1.3 Mode Compare .85 6.1.4 Mode PWM 85 6.2 CCP TRONG CCS 87 6.2.1 Hàm Setup_CCPx ( mode ): 87 6.2.2 Hàm Set_CCPx_duty ( value ): 88 6.3 BÀI TẬP MẪU 88 TÓM TẮT 90 ÔN TẬP .91 BÀI 7: ADC MODULE 94 7.1 GIỚI THIỆU 94 7.1.1 Thanh ghi ADCON0 95 7.1.2 Thanh ghi ADCON1 95 7.1.3 Các bước thực chuyển đổi ADC: 96 7.1.4 ADC CCS 96 7.2 BÀI TẬP MẪU 99 MỤC LỤC III TÓM TẮT 101 ÔN TẬP 102 BÀI 8: GIAO TIẾP UART – I2C 103 8.1 UART 103 8.1.1 Tốc độ Baud: 103 8.1.2 Khung truyền (Frame) 104 8.1.3 Bit Start 104 8.1.4 Dữ liệu (Data) 104 8.1.5 Bit Paraty 104 8.1.6 Bit Stop 104 8.1.7 Sơ đồ giao tiếp UART 105 8.1.8 UART CCS 106 8.2 BÀI TẬP MẪU 107 8.3 GIAO TIẾP I2C 109 8.3.1 Đặc điểm giao tiếp I2C 110 8.3.2 Truyền nhận liệu Master – Slave 110 8.3.3 Giao tiếp I2C CCS 114 8.4 BÀI TẬP MẪU 114 TÓM TẮT 117 CÂU HỎI ÔN TẬP 118 TÀI LIỆU THAM KHẢO 120 IV HƯỚNG DẪN HƯỚNG DẪN MÔ TẢ MÔN HỌC Vi điều khiển môn học tiên nhằm cung cấp cho người học kiến thức kiến thức kỹ lập trình họ vi điều khiển bit Sau học xong người học có khả thiết kế lập trình điều khiển số hệ thống công nghiệp dân dụng ứng dụng vi điều khiển NỘI DUNG MÔN HỌC Bài Tổng quan vi điều khiển PIC: Bài cung cấp cho học viên số khái niệm vi điều khiển PIC Ngồi ra, học viên cịn phân biệt kiến trúc RISC CISC Nắm tính họ 16FXXX Bài Tổ chức nhớ ghi đặc biệt: Bài giúp học viên nắm vững tổ chức nhớ Vi điều khiển họ 16F8XXX phân biệt nhớ chương trình nhớ liệu Ngồi ra, cịn hiểu rõ địa chỉ, chức bit ghi đặc biệt Bài 3: Ngơn ngữ lập trình C – Phần mềm CCS: Bài giúp học viên ôn lại kiến thức lập trih2 C học Cách tạo project sử dụng phần mềm Pic C Compiler Bài 4: Cấu hình I-O Port: Bài trình bày cấu trúc ghi điều khiển IO Hướng dẫn sử dụng hàm điều I-O phần mềm Pic C Compiler Bài 5: Timer – Counter: Trong trình bày sơ đồ khối ghi liên quan đến Timer Hướng dẫn cách khởi tạo cấu hình Timer, tính tốn giá trị cho Timer Counter Học viên viết số chương trình ứng dụng Timer Counter Bài 6: Compare – Capture - PWM: Bài giúp học viên phân biệt mode Compare - Capture – PWM Ngồi ra, cịn trình bày cấu trúc ghi liên quan đến module CCP Hướng dẫn cách khai báo viết chương trình dùng CCS Viết số chương trìnhứng dụng thực tế HƯỚNG DẪN V Bài 7: ADC: Bài giúp học viên phân biệt tín hiệu digital analog, trình bày sơ đồ khối ghi liên quan đến ADC Hướng dẫn cách khởi tạo cấu hình ADC Học viên viết số chương trình ứng dụng ADC Bài 8: Truyền thơng UART – I2C: Bài giúp học viên nắm khái niệm truyền thông UART, I2C Cách khởi tạo cấu hình giao thức truyền thơng Giao tiếp PC MCU, MCU-MCU viết số chương trình ứng dụng KIẾN THỨC TIỀN ĐỀ Các mơn học tiên (những môn phải học trước môn này): Môn học bố trí vào giai đoạn lựa chọn chuyên ngành, sau kết thúc môn ngành Các môn học (những môn học sau môn này): Vi điều khiển nâng cao, Kỹ thuật lập trình nâng cao, hệ thống nhúng U CẦU MƠN HỌC Người học phải dự học đầy đủ buổi lên lớp làm tập đầy đủ nhà CÁCH TIẾP NHẬN NỘI DUNG MÔN HỌC Để học tốt môn này, người học cần ôn tập học, trả lời câu hỏi làm đầy đủ tập; đọc trước tìm thêm thông tin liên quan đến học Đối với học, người học đọc trước mục tiêu tóm tắt học, sau đọc nội dung học Kết thúc ý học, người đọc trả lời câu hỏi ơn tập kết thúc tồn học, người đọc làm tập PHƯƠNG PHÁP ĐÁNH GIÁ MÔN HỌC Kiểm tra – đánh giá q trình: Có trọng số chung 30%, bao gồm điểm đánh sau: Điểm chuyên cần: Cấm thi vắng 20% tiết lên lớp Điểm đánh giá nhận thức thái độ tham gia thảo luận, Seminar: 20% VI HƯỚNG DẪN Điểm thi kỳ: 10% Điểm thi cuối kỳ: 70% Điểm đánh giá khối lượng tự học, tự nghiên cứu sinh viên (hoàn thành tốt nội dung, nhiệm vụ mà giảng viên giao cho cá nhân/ tuần; tập nhóm/ tháng; tập cá nhân/ học kì,…) Kiểm tra - đánh giá cuối kỳ: Điểm thi kết thúc học phần có trọng số 70% Hình thức thi: tự luận Thời lượng thi: 90 phút Sinh viên tham khảo tài liệu hay không thi: tham khảo tài liệu BÀI 1: TỔNG QUAN VỀ VI ĐIỀU KHIỂN PIC BÀI 1: TỔNG QUAN VỀ VI ĐIỀU KHIỂN PIC Sau học xong này, học viên có thể: Nắm khái niệm vi điều khiển PIC Phân biệt kiến trúc RISC CISC Nắm vững cấu trúc vi điều khiển PIC 8bit 1.1 Giới thiệu 1.1.1 Tổng quan PIC họ vi điều khiển RISC sản xuất cơng ty Microchip Technology Dịng PIC PIC1650 phát triển Microelectronics Division thuộc General Instrument PIC bắt nguồn chữ viết tắt "Programmable Intelligent Computer" sản phẩm hãng General Instrument đặt cho dòng sản phẩm họ PIC1650 Lúc này, PIC1650 dùng để giao tiếp với thiết bị ngoại vi cho máy chủ 16bit CP1600 Vì vậy, người ta gọi PIC với tên "Peripheral Interface Controller" CP1600 CPU tốt, lại hoạt động xuất nhập, PIC 8-bit 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 sử dụng thời bây giờ, 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 Instrument 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 bổ sung EEPROM để tạo thành điều khiển vào khả trình Ngày nhiều dịng PIC 106 BÀI 8: GIAO TIẾP UART – I2C Do có khác mức điện áp giao thức UART vi điều khiển máy tính nên kết nối VDK PC phải dùng IC chuyển đổi điện áp cho phù hợp (IC MAX232) Hình 8.3 Sơ đồ nguyên lí dùng IC MAX232 giao tiếp VDK-PC 8.1.8 UART CCS Khi khởi tạo project tùy theo phiên phần mềm Pic C Compiler có hỗ trợ khai báo sử dụng giao tiếp UART hay khơng Hình 8.3 Thiết lập giao tiếp UART CCS BÀI 8: GIAO TIẾP UART – I2C 107 8.1.8.1 Khai báo UART CCS: #use rs232(baud=9600,parity=N,xmit=PIN_C6,rcv=PIN_C7,bits=8,stream=PORT1) 8.1.8.2 Chương trình Ngắt nhận liệu: #INT_RDA void RDA_isr(void) { } 8.1.8.3 Chương trình Ngắt truyền liệu: #INT_TBE void TBE_isr(void) { } 8.2 Bài tập mẫu Ví dụ: Viết chương trình gửi chuỗi kí tự “UART DEMO” “HUTECH” lên PC, sau nhận kí tự gửi từ PC hiển thị kí tự nhận lên LCD16x2 108 BÀI 8: GIAO TIẾP UART – I2C Sơ đồ ngun lí: Chương trình demo void main() { unsigned int8 kitu; char str[16]; enable_interrupts(GLOBAL); BÀI 8: GIAO TIẾP UART – I2C 109 UART_config(); LCD_Init(); printf("UART DEMO \n"); sprintf(str,"UART DEMO"); LCD_Puts(str); delay_ms(1000); LCD_Clear(); sprintf(str,"HUTECH"); LCD_Puts(str); while(TRUE) { kitu=getc(); if(kitu) { LCD_Gotoxy(0,1); sprintf(str,"Ki Tu Nhap: %c \n",kitu); LCD_Puts(str); } delay_ms(10); } } 8.3 Giao tiếp I2C I2C viết tắc từ Inter-Integrated Circuit chuẩn truyền thông hãng điện tử Philips Semiconductor sáng lập xây dựng thành chuẩn năm 1990 110 BÀI 8: GIAO TIẾP UART – I2C I2C phát triển bới Philips, nhiều nhà sản xuất IC giới sử dụng I2C trở thành chuẩn công nghiệp cho giao tiếp điều khiển, Bus I2C sử dụng làm bus giao tiếp ngoại vi cho nhiều loại IC khác loại Vi điều khiển 8051, PIC, AVR, ARM, chíp nhớ RAM tĩnh (Static Ram), EEPROM, chuyển đổi tương tự số (ADC), số tương tự (DAC), IC điểu khiển LCD, LED… 8.3.1 Đặc điểm giao tiếp I2C Một giao tiếp I2C gồm có dây: Serial Data (SDA) Serial Clock (SCL) SDA đường truyền liệu hướng, SCL đường truyền xung đồng hồ theo hướng Hình 8.4 Sơ đồ giao tiếp I2C Mỗi dây SDA hay SCL nối với điện áp dương nguồn cấp thông qua điện trở kéo lên (pull‐up resistor) Sự cần thiết điện trở kéo chân giao tiếp I2C thiết bị ngoại vi thường dạng cực máng hở (open‐drain open‐collector) Giá trị điện trở khác tùy vào thiết bị chuẩn giao tiếp, thường dao động khoảng 1KΩ đến 4.7KΩ 8.3.2 Truyền nhận liệu Master – Slave Một bus I2C hoạt động nhiều chế độ khác nhau: Một chủ tớ (one master – one slave) Một chủ nhiều tớ (one master – multi slave) Nhiều chủ nhiều tớ (Multi master – multi slave) BÀI 8: GIAO TIẾP UART – I2C 111 8.3.2.1 Điều kiện Start – Stop Điều kiện START: chuyển đổi trạng thái từ cao xuống thấp đường SDA đường SCL mức cao (cao = 1; thấp = 0) báo hiệu điều kiện START Điều kiện STOP: chuyển đổi trạng thái từ mức thấp lên cao đường SDA đường SCL mức cao Cả hai điều kiện START STOP tạo thiết bị chủ Sau tín hiệu START, bus I2C coi trang thái làm việc (busy) Bus I2C rỗi, sẵn sàng cho giao tiếp sau tín hiệu STOP từ phía thiết bị chủ Sau có điều kiện START, qua trình giao tiếp, có tín hiệu START lặp lại thay tín hiệu STOP bus I2C tiếp tục trạng thái bận Tín hiệu START lặp lại START có chức giống khởi tạo giao tiếp 8.3.2.2 Truyền bit liệu I2C Dữ liệu truyền bus I2C theo bit, bit liệu truyền sườn dương xung đồng hồ dây SCL, trình thay đổi bit liệu xảy SCL mức thấp 112 BÀI 8: GIAO TIẾP UART – I2C 8.3.2.3 Bit ACK I2C Mỗi byte liệu truyền có độ dài bits Số lượng byte truyền lần không hạn chế Mỗi byte truyền theo sau bit ACK để báo hiệu nhận liệu Bit có trọng số cao (MSB) truyền đầu tiên, bít truyền Sau xung clock dây SCL, bit liệu truyền Sau nhận đủ bít liệu kéo SDA xuống mức thấp tạo xung ACK ứng với xung clock thứ dây SDA để báo hiệu nhận đủ bit Thiết bị truyền nhận bit ACK tiếp tục thực trình truyền kết thúc Hình 8.5 Dữ liệu bus I2C Hình 8.6 Bit ACK bus I2C BÀI 8: GIAO TIẾP UART – I2C 8.3.2.4 Giải thuật truyền nhận I2C Truyền liệu Hình 8.7 Giải thuật truyền liệu giao tiếp I2C Nhận liệu Hình 8.8 Giải thuật nhận liệu giao tiếp I2C 113 114 BÀI 8: GIAO TIẾP UART – I2C 8.3.3 Giao tiếp I2C CCS Hình 8.9 Thiết lập giao tiếp I2C CCS Chú ý: Chế độ Master hay Slave phụ thuộc vào yêu cầu cụ thể 8.3.3.1 Khai báo giao tiếp I2C CCS #use i2c(Master,Fast,sda=PIN_C4,scl=PIN_C3) 8.3.3.2 Một số hàm giao tiếp I2C CCS i2c_isr_state(): Thông báo trạng thái giao tiếp I2C i2c_start(): Tạo điều kiện START i2c_stop(): Tạo điều kiện STOP i2c_read(): Đọc giá trị từ thiết bị I2C, trả giá trị bit i2c_write(): Ghi giá trị bit đến thiết bị I2C 8.4 Bài tập mẫu Bài 1: Viết chương trinh giao tiếp 16F877A – DS1307 Yêu cầu: Hiển thị thời gian thực lên LCD 16x2 (LCD kết nối PortD mode 4bit) BÀI 8: GIAO TIẾP UART – I2C Hướng dẫn: Sơ đồ nguyên lý: 2.Chương trình demo #include #include #include int sec, min, hrs, day, month, yr, dow; 115 116 BÀI 8: GIAO TIẾP UART – I2C void main() { ds1307_init(0); lcd_init(); ds1307_set_date_time(8,11,7,2,9,49,00); while(1) { delay_ms(100); ds1307_get_date(day,month,yr,dow); ds1307_get_time(hrs,min,sec); lcd_gotoxy(1,2); printf(lcd_putc,"%02d:%02d:%02d lcd_gotoxy(1,1); lcd_putc("XXXXXX"); } } ",hrs,min,sec); BÀI 8: GIAO TIẾP UART – I2C 117 TÓM TẮT Trong học viên nắm vững số giao thức truyền thông như: UART, I2C, SPI UART viết tắt Universal Asynchronous Receiver – Transmitter UART chuẩn truyền thông không đồng (nghĩa thiết bị giao tiếp với cần phải biết thông số khung truyền như: tốc độ Baud, độ dài khung Frame, số bit stop, bit parity ) Một bus I2C hoạt động nhiều chế độ khác nhau: - Một chủ tớ (one master – one slave) - Một chủ nhiều tớ (one master – multi slave) - Nhiều chủ nhiều tớ (Multi master – multi slave) I2C viết tắc từ Inter-Integrated Circuit chuẩn truyền thông hãng điện tử Philips Semiconductor sáng lập xây dựng thành chuẩn năm 1990 Một giao tiếp I2C gồm có dây: Serial Data (SDA) Serial Clock (SCL) SDA đường truyền liệu hướng, SCL đường truyền xung đồng hồ theo hướng 118 BÀI 8: GIAO TIẾP UART – I2C CÂU HỎI ÔN TẬP Câu 1: Trình bày giao thức trun thơng UART ? Câu 2: Trình bày giao thức trun thơng I2C ? Câu 3: Trình bày giao thức trun thơng SPI ? Câu 4: So sánh ưu, nhược điểm giao thức truyền thông Câu 5: Vẽ lưu đồ giải thuật truyền nhận liệu sử dụng truyền thông UART ? Câu 6: Vẽ lưu đồ giải thuật truyền nhận liệu sử dụng truyền thông I2C ? Câu 7: Vẽ lưu đồ giải thuật truyền nhận liệu sử dụng truyền thông SPI ? Câu 8: Viết chương trình truyền nhận ký tự “A” PC 16F877A sử dụng giao tiếp UART Câu 9: Viết chương trình truyền nhận chuỗi “HUTECH” 16F877A 16F877A sử dụng giao tiếp UART Câu 10: Viết chương trình truyền nhận ký tự “1” 16F877A 16F877A sử dụng giao tiếp I2C Câu 11: Viết chương trình truyền nhận chuỗi “DAI HOC CONG NGHE” 16F877A 16F877A sử dụng giao tiếp SPI Câu 12: Thiết lập mạng gồm: Master, Slave dùng giao thức UART Vẽ sơ đồ kết nối Vẽ lưu đồ giải thuật truyền nhận liệu mạng Viết chương trình Master truyền ký tự “a” Slave nhận, “b” Slave nhận “c” Slave nhận Câu 13: Thiết lập mạng gồm: Master, Slave dùng giao thức I2C Vẽ sơ đồ kết nối Vẽ lưu đồ giải thuật truyền nhận liệu mạng BÀI 8: GIAO TIẾP UART – I2C 119 Viết chương trình Master truyền ký tự “a” Slave nhận, “b” Slave nhận “c” Slave nhận Câu 14: Thiết lập mạng gồm: Master, Slave dùng giao thức SPI Vẽ sơ đồ kết nối Vẽ lưu đồ giải thuật truyền nhận liệu mạng Viết chương trình Master truyền ký tự “a” Slave nhận, “b” Slave nhận “c” Slave nhận TÀI LIỆU THAM KHẢO http://www.ccsinfo.com https://www.microchip.com http://www.picvietnam.com ... Sinh vi? ?n tham khảo tài liệu hay không thi: tham khảo tài liệu BÀI 1: TỔNG QUAN VỀ VI ĐIỀU KHIỂN PIC BÀI 1: TỔNG QUAN VỀ VI ĐIỀU KHIỂN PIC Sau học xong này, học vi? ?n có thể: Nắm khái niệm vi điều. .. TỔNG QUAN VỀ VI ĐIỀU KHIỂN PIC TÓM TẮT Trong này, học vi? ?n tìm hiểu lịch sử phát triển vi điều khiển PIC, nắm vững kiến trúc cấu trúc vi điều khiển họ 16F8XXX PIC họ vi điều khiển RISC sản... cơng nghiệp dân dụng ứng dụng vi điều khiển NỘI DUNG MÔN HỌC Bài Tổng quan vi điều khiển PIC: Bài cung cấp cho học vi? ?n số khái niệm vi điều khiển PIC Ngoài ra, học vi? ?n cịn phân biệt kiến trúc