Hướng dẫn thí nghiệm 8051 với EME-MC8
Vì giao tiếp thông qua cơ chế 3 bus nên người lập trình cần dùng câu lệnh MOVX phối
hợp với việc điều khiển hai tín hiệu E (P3.4) và RS (P3.5) để truy xuất LCD theo đúng
định thì ghi. Để điều khiển LCD, trước tiên cần khởi động và đặt cấu hình cho LCD.
Việc này được thực hiện bằng cách gửi một số lệnh khởi động đến LCD. Lệnh thứ
nhất mà ta gửi báo cho LCD biết ta sẽ giao tiếp với nó thông qua bus dữ liệu 4-bit hay
8-bit. Ta cũng chọn font ký tự là 5x8. Điều này được thực hiện bằng cách gửi lệnh đến LCD. Lưu ý là đường RS phải giữ ở mức thấp để báo cho LCD biết đang nhận
lệnh. Tiếp theo ta cần gửi lệnh 0Eh. Lệnh này dùng để bật LCD và tắt con trỏ ký tự.
Byte thứ 3 được gửi thêm để cài đặt một số tham số hoạt động của LCD. Ví dụ ta có
thể gửi lệnh 06h để ra lệnh cho con trỏ tự động dịch phải mỗi khi ta gửi một ký tự hiển
thị cho nó. Lệnh MOVX có thể được dùng để truy xuất đến module LCD với DPTR
chứa địa chỉ của thao tác cụ thể.
Để đảm bảo module LCD hoàn tất một thao tác điều khiển, người lập trình có thể
dùng một trong hai phương pháp. Cách thứ nhất là sử dụng chương trình con tạo trễ để
chờ module hoàn thành lệnh hiện thời. Thời gian chờ cụ thể của module LCD cần phải
xem cụ thể trong mô tả kỹ thuật của vi mạch HD44780. Cách thứ hai là sau mỗi lần
truy xuất đến module LCD, người lập trình cần liên tục đọc trạng thái của module
LCD và kiểm tra bit thứ 7 của byte trạng thái nhận được. Nếu bit này là 1 thì LCD vẫn
còn đang bận, chương trình cần tiếp tục chờ. Nếu bit này là 0 thì LCD đã hoàn tất thao
tác hiện thời và sẵn sàng cho thap tác điều khiển khác.
n (PIC12F675), 14 chân (PIC16F688), 18 chân (16F648A) 20 chân (16F690), 28 chân (16F726), 40 chân (PIC16F887) và 64 chân (PIC16F946). • Port vào ra (I/O Port) : PIC Midrange có tối đa 5 Port vào ra là A, B, C, D, E. Tuỳ con PIC mà số lượng chân I/O nhiều hay ít. Ví dụ, cùng có 40 chân và 5 Port nhưng PIC16F877A lại ít hơn 3 I/O so với PIC16F887. • Ngoại vi được tích hợp khá nhiều, chẳng hạn: Bộ biến đổi tương tự-số ADC (Analog to Digital Convertor), Bộ So sánh-bắt giữ- Điều chế độ rộng xung (CCP), Bộ giao tiếp nối tiếp (SPI, I2C, UART), Bộ giao tiếp song song (PSP, chỉ có ở PIC 40 chân), Bộ điều khiển LCD (PIC16F91x), Các Bộ định thời... HƯỚNG DẪN THÍ NGHIỆM 62/75 Một số PIC Midrange thông dụng, thích hợp cho việc nghiên cứu và làm project: • PIC16F688, 14 chân • PIC16F88 , 18 chân, • PIC16F690, 20 chân • PIC16F87xA và PIC16F88x, 28-40 chân, mạnh mẽ, nhiều chức năng Chi tiết đặc điểm của từng dòng Program Memory Data Memory Device Flash (words) SRAM (bytes) EEPROM (bytes) I/O 10-bit A/D (ch) Comparators Timers 8/16-bit SSP ECCP+ EUSART PIC16F631 1024 64 128 18 — 2 1/1 No No No PIC16F677 2048 128 256 18 12 2 1/1 Yes No No PIC16F685 4096 256 256 18 12 2 2/1 No Yes No PIC16F687 2048 128 256 18 12 2 1/1 Yes No Yes PIC16F689 4096 256 256 18 12 2 1/1 Yes No Yes PIC16F690 4096 256 256 18 12 2 2/1 Yes Yes Yes Sơ đồ chân của PIC 16F690: Mỗi chân của PIC được tích hợp nhiều chức năng, mỗi chức năng này có thể được cấu hình lựa chọn bằng phần mềm HƯỚNG DẪN THÍ NGHIỆM 63/75 Tập thanh ghi có chức năng đặc biệt và địa chỉ tương ứng của chúng của PIC16F690. HƯỚNG DẪN THÍ NGHIỆM 64/75 Tập lệnh hoàn chỉnh của PIC 16F690: 35 lệnh 14-Bit Opcode Mnemonic, Operands Description Cycles MSb LSb Status Affected Notes BYTE-ORIENTED FILE REGISTER OPERATIONS ADDWF f, d ANDWF f, d CLRF f CLRW – COMF f, d DECF f, d DECFSZ f, d INCF f, d INCFSZ f, d IORWF f, d MOVF f, d MOVWF f NOP – RLF f, d RRF f, d SUBWF f, d SWAPF f, d XORWF f, d Add W and f AND W with f Clear f Clear W Complement f Decrement f Decrement f, Skip if 0 Increment f Increment f, Skip if 0 Inclusive OR W with f Move f Move W to f No Operation Rotate Left f through Carry Rotate Right f through Carry Subtract W from f Swap nibbles in f Exclusive OR W with f 1 1 1 1 1 1 1(2) 1 1(2) 1 1 1 1 1 1 1 1 1 00 0111 dfff ffff 00 0101 dfff ffff 00 0001 lfff ffff 00 0001 0xxx xxxx 00 1001 dfff ffff 00 0011 dfff ffff 00 1011 dfff ffff 00 1010 dfff ffff 00 1111 dfff ffff 00 0100 dfff ffff 00 1000 dfff ffff 00 0000 lfff ffff 00 0000 0xx0 0000 00 1101 dfff ffff 00 1100 dfff ffff 00 0010 dfff ffff 00 1110 dfff ffff 00 0110 dfff ffff C, DC, Z Z Z Z Z Z Z Z Z C C C, DC, Z Z 1, 2 1, 2 2 1, 2 1, 2 1, 2, 3 1, 2 1, 2, 3 1, 2 1, 2 1, 2 1, 2 1, 2 1, 2 1, 2 BIT-ORIENTED FILE REGISTER OPERATIONS BCF f, b BSF f, b BTFSC f, b BTFSS f, b Bit Clear f Bit Set f Bit Test f, Skip if Clear Bit Test f, Skip if Set 1 1 1 (2) 1 (2) 01 00bb bfff ffff 01 01bb bfff ffff 01 10bb bfff ffff 01 11bb bfff ffff 1, 2 1, 2 3 3 LITERAL AND CONTROL OPERATIONS ADDLW k ANDLW k CALL k CLRWDT – GOTO k IORLW k MOVLW k RETFIE – RETLW k RETURN – SLEEP – SUBLW k XORLW k Add literal and W AND literal with W Call Subroutine Clear Watchdog Timer Go to address Inclusive OR literal with W Move literal to W Return from interrupt Return with literal in W Return from Subroutine Go into Standby mode Subtract W from literal Exclusive OR literal with W 1 1 2 1 2 1 1 2 2 2 1 1 1 11 111x kkkk kkkk 11 1001 kkkk kkkk 10 0kkk kkkk kkkk 00 0000 0110 0100 10 1kkk kkkk kkkk 11 1000 kkkk kkkk 11 00xx kkkk kkkk 00 0000 0000 1001 11 01xx kkkk kkkk 00 0000 0000 1000 00 0000 0110 0011 11 110x kkkk kkkk 11 1010 kkkk kkkk C, DC, Z Z TO, PD Z TO, PD C, DC, Z Z Tham khảo thêm datasheet để hiểu hơn về hoạt mô tả chi tiết của các lệnh trên 1.2. Giới thiệu về Low Pin Count Demo board. Low Pin Count Demo board là board tương đối đơn giản, hoạt động cùng với PIC KIT 2 nhằm giúp người dùng có thể làm quen với việc sử dụng dòng vi điều khiển PIC tầm trung một cách nhanh chóng. HƯỚNG DẪN THÍ NGHIỆM 65/75 Sơ đồ tổng quát của board: HƯỚNG DẪN THÍ NGHIỆM 66/75 Lược đồ chi tiết của board. 2. Sử dụng CCS C và nạp chương trình vào PIC bằng công cụ PICKIT 2 2.1. Sử dụng CCS Bài hướng dẫn này sử dụng CCS C phiên bản 4.068. CCS C quản lý chương trình dưới dạng từng project. Phần sau sẽ trình bày cách tạo và biên dịch project trong CCS C. Double click vào biểu tượng PIC C Compiler trên destop Để tạo project mới, vào → New → Project Wizard HƯỚNG DẪN THÍ NGHIỆM 67/75 Xuất hiện cửa sổ Save As Trong khung Save in chọn thư mục lưu project Trong khung File name gõ vào tên project Nhấn Save HƯỚNG DẪN THÍ NGHIỆM 68/75 Trong khung Device chọn PIC ta đang làm việc (trong phần thí nghiệm này ta chọn PIC16F690) Trong khung Oscillator Frequency chọn tần số xung clock (trong thí nghiệm này ta chọn tần số mặc định Hzf 4000000= , tần số dao động nội) Câu hỏi: Nếu chọn tần số 8MHz thì cần phải có những thay đổi trong lập trình thế nào? Nhấn OK Xuất hiện cửa sổ text editor, tiến hành viết chương trình. Lưu ý: file light.h dùng để định nghĩa các header (device, port name, tần số) cần cho project Ví dụ: Viết chương trình chớp tắt led được nối ở ngõ ra chân RC0 của PIC16F690 với tần số chớp tắt là 1Hz. Sơ đồ phần cứng HƯỚNG DẪN THÍ NGHIỆM 69/75 Chương trình viết bằng ngôn ngữ C Sau khi viết xong, vào File → Save để lưu lại. Click vào Compile trên thanh công cụ Tiếp tục click vào Build All để tiến hành biên dịch chương trình. Chương trình bắt đầu được biên dịch HƯỚNG DẪN THÍ NGHIỆM 70/75 Khi biên dịch thành công sẽ xuất hiện thông báo Khi biên dịch không thành công sẽ xuất hiện thông báo lỗi Ta tiến hành sửa lỗi rồi biên dịch lại. Nếu vẫn còn lỗi thì ta sửa lỗi rồi biên dịch cho đến khi báo 0 Errors, x Warnings Đến đây ta đã thực hiện xong cách một Project trong CCS C viết bằng ngôn ngữ C. 2.2. Sử dụng công cụ nạp PICKIT 2 Kết nối KIT thí nghiệm với mạch nạp và mạch nạp với máy tính thông qua cáp USB Double click vào biểu tượng PICkit2 trên destop Vào Tools Check Communication để thiết lập kết nối giữa board và PC HƯỚNG DẪN THÍ NGHIỆM 71/75 Chọn VDD PICkit2 trong khoảng từ 4.5 đến 5.0, click vào check box On Vào File → Import Hex Chọn thư mục lưu file.HEX, nhấn Open HƯỚNG DẪN THÍ NGHIỆM 72/75 Khi có xuất hiện thông báo Hex file sucessfully imported, nhấn Write Thông báo Programming Successful báo chương trình nạp thành công Kiểm tra kết quả trên KIT. Trước khi rút cáp USB ra khỏi máy tính, ta tắt nguồn cấp cho KIT trước (bỏ chọn check box VDD PICkit2) rồi mới rút cáp nối mạch nạp với máy tính. HƯỚNG DẪN THÍ NGHIỆM 73/75 3. Các bài thí nghiệm BÀI 1: THÍ NGHIỆM VỚI LED ĐƠN Hai switch được gắn thêm vào board: SW2 kết nối với RB4, SW3 kết nối với RB5. Thí nghiệm 1: Viết chương trình tạo xung vuông trên chân RC2 của PIC 16F690 với tần số là Hzf 2= Thí nghiệm 2: Viết chương trình thực hiện mạch led chạy được nối đến 4 led port C của PIC 16F690 như sau, biết thời gian giữa các trạng thái S (sáng) và T (tắt) là 0.25s: STTT→TSTT→TTST→TTTS→STTT→ Thí nghiệm 3: Viết chương trình đếm số lần nhấn SW2, kết quả xuất ra 4 led đơn được nối đến port C của PIC16F690 (giả sử số lần nhấn <16) Thí nghiệm 4: Viết chương trình thực hiện mạch đếm 4 bit, kết quả xuất ra 4 led đơn được nối đến port C của PIC16F690. Giá trị mạch đếm tăng lên 1 đơn vị cách nhau 1s. Được điều khiển như sau: - SW2 = 1: Mạch đếm lên - SW2 = 0: Mạch đếm xuống. HƯỚNG DẪN THÍ NGHIỆM 74/75 BÀI 2: SỬ DỤNG ADC Sinh viên cần đọc datasheet để nắm được hoạt động của bộ ADC và đọc phần help của CCS C để hiểu được cách lập trình điều khiển ADC Thí nghiệm 1: Viết chương trình đọc giá trị điện áp của biến trở RP1 và xuất mức điện áp tương ứng với giá trị điện áp đọc được ra 4 led đơn được nối đến port C của PIC 16F690 (dùng ADC với độ phân giải 10 bits) được cho bởi bảng sau: Mức (ngõ ra bộ ADC) Giá trị hiển thị trên 4 led đơn 0÷63 0000 64÷127 0001 128÷191 0010 ... 832÷895 1101 896÷959 1110 960÷1023 1111 Lưu ý: mức logic 0 tương ứng với trạng thái led tắt, mức logic 1 tương ứng với trạng thái led sáng. Ngõ ra của RP1 được kết nối vào RA0 Thí nghiệm 2: Viết chương trình thực hiện mạch led chạy được nối đến 4 led port C của PIC 16F690 như sau: STTT→TSTT→TTST→TTTS→TTST→ TSTT → STTT →TSTT→ Sử dụng ADC được độ phân giải là 10bit để điều khiển thời gian chuyển trạng thái của các đèn. HƯỚNG DẪN THÍ NGHIỆM 75/75 BÀI 3: THÍ NGHIỆM VỚI MẠCH LED 7 ĐOẠN MỞ RỘNG Sinh viên được yêu cầu phải thiết kế mạch gồm 2 led 7 đoạn dạng anode chung giao tiếp với board thí nghiệm thông qua khe mở rộng để làm các thí nghiệm sau: Thí nghiệm 1: Đếm số lần nhấn SW2 và hiển thị kế quả thập phân lên 2 led 7 đoạn (số lần nhấn từ 0 – 99). Thí nghiệm 2: Thiết kế bộ đếm lên/xuống hiển thị kết quả thập phân lên 2 led 7 đoạn với sự điều khiển của nút nhấn: - SW2 = 1: Mạch đếm lên - SW2 = 0: Mạch đếm xuống Thí nghiệm 3: Đọc giá trị điện áp vào từ biến trở RP1 (sử dụng ADC 10bit) và hiển thị (phần chục và thập phân) lên hai led 7 đoạn. Tự chọn: - Viết chương trình đọc giá trị từ biến trở RP1 (sử dụng ADC 10bit) hiển thị kết quả lên LCD giao tiếp với board thí nghiệm thông qua khe mở rộng - Thi công thêm mạch cảm biến nhiệt độ (có thể sử dụng cảm biến nhiệt độ LM35), sau đó viết chương trình để đo nhiệt độ và hiển thị kết quả lên 2 led 7 đoạn.
File đính kèm:
- huong_dan_thi_nghiem_8051_voi_eme_mc8.pdf