D. Một số lệnh cơ bản khác
B. Dùng phương pháp chốt trên vi điều khiển 8 bit AT89S52
1.3.1.3. LẬP TRÌNH CHO VI ĐIỀU KHIỂN 16 BIT PIC 16F887A
A. Sơ đồ nguyên lý mạch điều khiển 6 led 7 đoạn
Hình 3.7: Sơ đồ nguyên lý mạch điều khiển 6 led 7 đoạn
Bài tập mẫu:
Lập trình điều khiển hiển thị giá trị đếm thập phân từ 0-9 lên 1 led 7 đoạn a. Vẽ sơ đồ nguyên lý
b. Lập lưu đồ chương trình c. Chương trình tham khảo
Led 7 đoạn được chọn trong chương trình này là led ở chân PIN_A0, tạo trễ quét led là 10s, tần số xung clock là 8MHz
/********************************************************************** #include<16f887.h>
#fuses HS,NOLVP,NOWDT,PUT
#use delay (clock=8000000) // defind crystal = 8MHz
byte const MAP[10] = {0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90}; //===========================================
// this function use to display number 0-9 // input : n = number to display
void display(int n) { output_d((MAP[n%10]) ^ 0x00); output_low(PIN_A0); delay_ms(10); output_high(PIN_A0); } //============================================ // main program //============================================ void main() { int i,count; count=0; while(TRUE) { for (i=0;i<=50;i++)
display(count); // dispay 50 times count=(count==9) ? 0: count+1;
}
}
1.3.1.4. NHỮNG SAI HỎNG THƢỜNG GẶP
- Lập sai bảng mã LED 7 ĐOẠN cho bộ thí nghiệm đa năng ĐTVT 03 của phòng thí nghiệm.
- Chú ý các lệnh SETB và CLR port khi thực hiện phương pháp chốt hoặc
quét trên LED 7 ĐOẠN.
- Khi thực cắm chốt giao tiếp các port của vi điều khiển đến LED 7 ĐOẠN
đơn cần chú ý thứ tựport được lập trình tăng hay giảm.
- Vấn đề an toàn cho thiết bị khi giao tiếp với máy tính cần ngắt nguồn thiết bịtrước khi cắm bus vào bộ thí nghiệm đa năng ĐTVT03
1.3.2 TIẾN HÀNH THỰC HIỆN THÍ NGHIỆM
1 Vẽ sơ đồ mạch điều khiển led 7 đoạn trên phần mềm Proteus
2. Viết chương trình điều khiển led 7 đoạn dùng vi điều khiển 8 bit, 16 bit 3. Viết chương trình con tạo trễ
4. Biên dịch và nạp chương trình thực thi vào bộ kit thí nghiệm vi xử lý.
1.3.3 BÀI TẬP THÍ NGHIỆM
PHẦN 1: Lập trình cho vi điều khiển 8 bit AT89S52
‒ Viết chương trình trên để giá trị xuất ra 2 Led 7 đoạn tăng dần từ 00 - 59.
‒ Viết đoạn chương trình trên để giá trị xuất ra 2 Led 7 đoạn tăng dần từ 00 - 23.
‒ Viết đoạn chương trình trên để giá trị xuất ra 2 Led 7 đoạn giảm dần từ 99 - 00.
‒ Viết đoạn chương trình trên để giá trị xuất ra 2 Led 7 đoạn giảm dần từ 59 - 00.
‒ Viết đoạn chương trình trên để giá trị xuất ra 2 Led 7 đoạn giảm dần từ 23 - 00.
PHẦN 2: Lập trình cho vi điều khiển 16 bit PIC 16F887A
Bài tập 1:
‒ Lập trình điều khiển hiển thị giá trị thập phân đếm từ 00-99 lên 2 led 7 đoạn trên mô phỏng và trên board thí nghiệm
a. Vẽ sơ đồ nguyên lý b. Lập lưu đồ chương trình c. Chương trình tham khảo
//2 led 7 đoạn được chọn trong chương trình này là led ở chân PIN_A0 và PIN_A1, giải mã mềm sử dụng phương pháp quét led, tạo trễ 2ms, tần số xung clock là 8MHz
#include<16f887.h>
#fuses HS,NOLVP,NOWDT,PUT
#use delay (clock=8000000) // defind crystal = 8MHz
byte const MAP[10] = {0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90}; //===========================================
// this function use to display number 00=99 // input : n = number to display
//=========================================== void display(int n)
char b; b=((MAP[n/10]) ^ 0x00); if ((n/10)==(0)) b=0xC0; output_d(b); output_low(PIN_A1); delay_ms(2); output_high(PIN_A1); output_d((MAP[n%10]) ^ 0x00); output_low(PIN_A0); delay_ms(2); output_high(PIN_A0); } //============================================ // main program //============================================ void main() { int i,count; count=0; while(TRUE) { for (i=0;i<=50;i++)
display(count); // dispay 50 times count=(count==99) ? 0: count+1; }
}
Bài tập 2:
‒ Viết chương trình hiển thị giá trị đếm thập phân từ 0-7 lên 1 led 7 đoạn tại chân PIN_A5 trên phần mềm và trên board thí nghiệm
a. Vẽ sơ đồ nguyên lý b. Lập lưu đồ chương trình
c. Viết và thực thi chương trình theo yêu cầu trên
Bài tập 3:
‒ Viết chương trìnhhiển thị giá trị từ 00-59 lên 2 led 7 đoạn tại chân PIN_A4 và
PIN_A5.
a. Vẽ sơ đồ nguyên lý b. Lập lưu đồ chương trình
c. Viết và thực thi chương trình theo yêu cầu trên
Bài tập 4:
‒ Viết chương trình hiển thị giá trị từ 000-999 lên 3 led 7 đoạn tại chân PIN_A0, PIN_A1 và PIN_A2.
a. Vẽ sơ đồ nguyên lý b. Lập lưu đồ chương trình
c. Viết và thực thi chương trình theo yêu cầu trên
Bài tập 5:
‒ Viết chương trình hiển thị giá trị từ 999– 000 lên 3 led 7 đoạn tại chân PIN_A0,
PIN_A1 và PIN_A2.
a. Vẽ sơ đồ nguyên lý
b. Lập lưu đồ chương trình
Bài thí nghiệm số 4:
GIAO TIẾP THIẾT BỊ NGOẠI VI – LCD
Thời lƣợng: 12giờ
1.1. MỤC TIÊU
- Viết đúng chương trình hiển thị dữ liệu trên LCD sử dụng vi điều khiển PIC.
- Sử dụng thành thạo phần mềm trong biên soạn và biên dịch và sửa lỗi
chương trình.
- Nạp và thực thi được các ứng dụng cơ bản trong điều khiển LCD hiển thị
chuỗi dữ liệu bất kỳ.
- Đảm bảo an toàn cho người và thiết bị, tự tin trong việc sử dụng và ứng dụng các phần mềm khi lập trình.
1.2. DỤNG VỤ, HỌC CỤ SỬ DỤNG
- Board Kit thí nghiệm Vi Xử Lý.
- Máy tính, phần mềm mô phỏng Proteus, Keil C
- Vi điều khiển 89S52 và PIC 16F877A
1.3. NỘI DUNG
1.3.1 CƠ SỞ LÝ THUYẾT
1.3.1.1. GIỚI THIỆU LCD
Hình dáng và sơ đồ chân LCD 16x2
Chức năng chân LCD 16x2
Chân số Kí hiệu Mức logic I/O Chức năng
1 Vss - - Cấp mass(GND)
2 Vdd - - Cấp nguồn (5V)
3 Vee - I Điều chỉnh độ tương phản LCD
4 RS 0/1 I
Lựa chọn thanh ghi lệnh 0: thanh ghi lệnh 1: thanh ghi dữ liệu
5 R/W 0/1 I 0: ghi vào LCD
1: đọc từ LCD
6 E 1,1>=0 I Tín hiệu cho phép
7 DB1 0/1 I/O Data bus line 0 (LSB) 8 DB2 0/1 I/O Data bus line 1 9 DB3 0/1 I/O Data bus line 2 10 DB4 0/1 I/O Data bus line 3 11 DB5 0/1 I/O Data bus line 4 12 DB6 0/1 I/O Data bus line 5 13 DB7 0/1 I/O Data bus line 6 14 DB8 0/1 I/O Data bus line 7 (MSB) 15 Vcc - - Nguồn cấp
1.3.1.2. SƠ ĐỒ NGUYÊN LÝ
Hình 4.2: Sơ đồ nguyên lý mạch điều khiển LCD