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.

pdf75 trang | Chuyên mục: Vi Xử Lý – Vi Điều Khiển | Chia sẻ: tuando | Lượt xem: 385 | Lượt tải: 0download
Tóm tắt nội dung Hướng dẫn thí nghiệm 8051 với EME-MC8, để xem tài liệu hoàn chỉnh bạn click vào nút "TẢI VỀ" ở trên
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:

  • pdfhuong_dan_thi_nghiem_8051_voi_eme_mc8.pdf