- Sử dụng được Kit PICDEM2 Plus.- Sử dụng được bộ công cụ lập trình MPLAB.. BÀI THÍ NGHIỆM SỐ 2: BIN COUTING,TURNING ON ODD/EVEN NUMBEREDLEDs 2.1:MỤC ĐÍCH -Kiểm tra khả năng truy xuất I
Trang 1ĐẠI HỌC ĐÀ NẴNG TRƯỜNG ĐẠI HỌC BÁCH KHOA KHOA ĐIỆN TỬ VIỄN THÔNG
-o0o -BÁO CÁO THÍ NGHIỆM
KỸ THUẬT VI XỬ LÝ
& VI ĐIỀU KHIỂN
Giáo viên hướng dẫn : Phạm Xuân Trung
Danh Sách SVTH :Lê Trị An
Trần Lê Nhật Bình Phạm Văn Công Phạm Văn Hải Nguyễn Mạnh Hổ Cao Mạnh Hùng
Nhóm : 07- 24A
Nhóm:07-24A Trang: 1
Trang 2- Sử dụng được Kit PICDEM2 Plus.
- Sử dụng được bộ công cụ lập trình MPLAB
- Viết giả thuật và chương trình bật, tắt và nháy một led đơn
- Nắm cấu trúc phần cứng của PIC16F877A
1.3 Sơ đồ khối chung:
Sơ đồ nguyên lí giản lược cho PIC16F877A
OSC1 RB1
OSC2
Vcc GND
1.4 Xây dựng sơ đồ khối:
1.4.1: Tính toán trể 1ms (DELAY) bằng phương pháp giảm thanh ghi:
Chu kỳ dao động của thạch anh t0 : t0 =
0
1
f
Thời gian thực hiện xong một lệnh ti : ti = 4*t0
Sử dụng thạch anh 4Mhz, thời gian thực hiện xong một lệnh là: ti = 4* 6
10
*4
1
= 1 s
Vậy 1ms = 5*(199 + 1)*1 s
BỘ XỬ LÝ TRUNG TÂM
Trang 3BẬT RB1
DELAY
TẮT RB1
DELAY
Trang 41.4.3 Chương trình con DELAY1MS:
GIẢM COUNT2
GIẢM COUNT1
COUNT1
=0?
RETURN
Trang 51.5 Viết chương trình bằng ngôn ngữ ASEMBLY:
; Khai bao vi dieu khien
Trang 6BÀI THÍ NGHIỆM SỐ 2: BIN COUTING,TURNING ON ODD/EVEN NUMBERED
LEDs 2.1:MỤC ĐÍCH
-Kiểm tra khả năng truy xuất I/O của thiết bị thông qua 4 led đơn báo hiệu được mắc ở ngoài và trể tạo bởi phần mềm
2.2 Yêu cầu:
- Sử dụng được Kit PICDEM2 Plus
- Sử dụng được bộ công cụ lập trình MPLAB
- Viết giả thuật và chương trình bật, tắt 4 led đơn theo số lẻ, số chẳn và đếm nhị phân
- Nắm cấu trúc phần cứng của PIC16F877A
2.3 Sơ đồ khối chung:
Sơ đồ nguyên lí giản lược cho PIC16F877A
OSC1 RB0
2.4 Xây dựng sơ đồ khối:
2.4.1 Tính toán trể 1s (DELAY) bằng phương pháp giảm thanh ghi:
Chu kỳ dao động của thạch anh t0 : t0 =
0
1
f
Thời gian thực hiện xong một lệnh ti : ti = 4*t0
Sử dụng thạch anh 4Mhz, thời gian thực hiện xong một lệnh là: ti = 4* 6
10
*4
1
= 1 s
Vậy 1s = 4*250*(199 + 1)*5*1 s
BỘ XỬ LÝ TRUNG TÂM
Trang 72.4.1 Bật, tắt 4 led đơn theo số lẻ, số chẳn:
W XOR 8
Z=0?
TĂNG COUNT
SETUP PORTB ĐẾM LẺ
XÓA COUNT
W COUNT GỌI TABLE PORTB W
DELAY ALY TĂNG W
W XOR 8
Z=0?
TĂNG COUNT
Trang 82.4.2:Đếm nhị phân:
N
Y
XÓA PORTB BẮT ĐẦU
XÓA COUNT
W COUNT GỌI TABLE PORTB W DELAY TĂNG W
TĂNG COUNT
W XOR 15
Z=0?
Trang 92.4.3 Chương trình con DELAY:
COUNT2
=0 ?
GIẢM COUNT1
COUNT1
=0 ?
Trang 10
2.5 Viết chương trình bằng ngôn ngữ ASEMBLY:
2.5.1 Bật, tắt 4 led đơn theo số chẵn:
processor 16f877a
include <p16f877a.inc>
CONFIG _CP_OFF & _WDT_OFF & _BODEN_OFF & _PWRTE_ON
&_XT_OSC &_WRT_OFF & _LVP_OFF & _CPD_OFF
Trang 11CONFIG _CP_OFF & _WDT_OFF & _BODEN_OFF & _PWRTE_ON & _XT_OSC
&_WRT_OFF & _LVP_OFF & _CPD_OFF
Trang 15BÀI THÍ NGHIỆM SỐ 3: LEFT AND RIGHT SCROLLING LEDs
3.1:MỤC ĐÍCH
-Kiểm tra khả năng truy xuất I/O của thiết bị thông qua 1 led đơn báo hiệu được mắc ở ngoài và trể tạo bởi phần mềm
3.2 Yêu cầu:
- Sử dụng được Kit PICDEM2 Plus
- Sử dụng được bộ công cụ lập trình MPLAB
- Viết giả thuật và chương trình quét 4 led đơn từ phải sang và từ trái sang
- Nắm cấu trúc phần cứng của PIC16F877A
3.3 Sơ đồ khối chung:
Sơ đồ nguyên lí giản lược cho PIC16F877A
OSC1 RB0
OSC2 RB1
RB2RB3
Trang 163.4.1: Tính toán trể 1s (DELAY) bằng phương pháp giảm thanh ghi:
Chu kỳ dao động của thạch anh t0 : t0 =
0
1
f
Thời gian thực hiện xong một lệnh ti : ti = 4*t0
Sử dụng thạch anh 4Mhz, thời gian thực hiện xong một lệnh là: ti = 4* 6
10
*4
SET BIT C
DỊCH TRÁI PORTB DELAY
DỊCH PHẢI PORTB
Trang 173.4.2:Chương trình con DELAY:
Nhóm:07-24A Trang: 17 DELAY COUNT2 250
COUNT4 1
COUNT4 =0 ?
GIẢM COUNT4 GIẢM COUNT3 RETURN COUNT1 8
GIẢM COUNT2 COUNT3 199
COUNT3 =0 ?
COUNT2 =0 ?
GIẢM COUNT1 COUNT1 =0 ?
Trang 20BÀI THÍ NGHIỆM SỐ 4: BUTTON CONTROL 4.1MỤC ĐÍCH
-Kiểm tra khả năng truy xuất I/O của thiết bị thông qua 1 led đơn báo hiệu được mắc ở ngoài và trể tạo bởi phần mềm
4.2 Yêu cầu:
- Sử dụng được Kit PICDEM2 Plus
- Sử dụng được bộ công cụ lập trình MPLAB
- Viêt giải thuật và chương trình dùng nút bấm để chuyển đổi các chế độ quét 4 LED đã
làm ở bài thí nghiệm số 4
- Nắm cấu trúc phần cứng của PIC16F877A
4.3 Sơ đồ khối chung:
Sơ đồ khối và sơ đồ nguyên lý giản lược cho PIC16F877A
BỘ XỬ LÝ TRUNG TÂM
BỘ DAO
INPUT
Trang 21- Sơ đồ nguyên lý giản lược
Kết nối bộ dao động:
Nhóm:07-24A Trang: 21
Trang 22Kết nối 4Led
Kết nối Switch:
4.4.Xây dựng giải thuật:
4.4.1 Giải thuật bằng ngôn ngữ giả:
Khai báo các thanh ghi cần dung:
Trang 23- Đặt 4 bits thấp của thanh ghi TRISB là output
- Set bit 4 của TRISA là input
- Chọn lại bank 0
- Xóa thanh ghi INDEX
- Nếu nút RA4 được nhấn
+ goto R2L
Ngược lại: goto L2R
Đoạn chương trình R2L:
- Nạp byte cao của TABLER2L vào W
- Nạp W vào thanh ghi PCLATH
- Tạo nhãn LOOP1 để quay về từ DISPLAY
- Nạp INDEX vào W
- Call TABLER2L
- Goto DISPLAY
Đoạn chương trình L2R:
- Nạp byte cao của TABLEL2R vào W
- Nạp W vào thanh ghi PCLATH
- Tạo nhãn LOOP2 để quay về từ DISPLAY
+ Nếu đúng: Xóa INDEX
- Kiểm tra nút RA4 có nhấn ?
- Nếu đúng nhảy tới LOOP1
- Ngược lại nhảy tới LOOP2
Nhóm:07-24A Trang: 23
Trang 24LƯU ĐỒ THUẬT TOÁN:
Nhóm:07-24A Trang: 24
Setup PORTB and PORTA
Movlw HIGH TABLEL2R
Move W->TRISB Set TRISA,4 Switch bank 0
Trang 25Nhóm:07-24A Trang: 25
Call TABLER2L
Call TABLEL2R
Trang 264.5 Viết chương trình bằng ngôn ngữ Assembly:
Trang 28BÀI THÍ NGHIỆM SỐ 5: KHẢO SÁT CƠ CHẾ NGẮT VÀ GIAO TIẾP LCD
5.1 Nội dung:
Khảo sát các nguyên nhân gây ngắt quảng, cách xử lý ngắt, tính ưu tiên giữa các ngắt của
vi điều khiển PIC16F877
Khảo sát ngắt ngoài của vi điều khiển PIC16F877
Điều khiển LCD ký tự 2x16
5.2 Yêu cầu:
1 Viết chương trình hiển thị kí tự lên LCD
Viết chương trình chạy chữ qua LCD(họ và tên sinh viên,nhóm)
Viết chương trình thay đổi chữ hiển thị trên LCD khi nhấn nút(thay đổi giữa các thành
phần,tên,nhóm,lớp,học phần)
2 Viết chương trình khởi tạo 2 ngắt:
Ngắt ngoài 0 với độ ưu tiên cao
Ngắt timer 0 với độ ưu tiên thấp
Trong chương trình ngắt ngoài 0 bật 3 led đơn RB1, RB2, RB3sáng cùng lúc
Trong chương trình timer 0 sau 1s khi 3 led được bật ở trong ngắt ngoài thì tắt 3 ledđơn RB1, RB2, RB3 cùng lúc
5.3 Các bước thực hiện:
A.LCD
I.Sơ lược về LCD:
Trang 29
Lcd thường có 14 chân,gồm 2 dòng,mỗi dòng gồm 16 kí tự:
1.Các chân VCC , VSS và VEE : Chân VCC_Cấp dương nguồn 5V, chân VCC_Nối đất, chân
VEE được dùng để điều khiển độ tương phản của màn hình LCD
2.Chân chọn thanh ghi RS (Register Select):
Có hai thanh ghi rất quan trọng bên trong LCD, chân RS được dùng để chọn các thanh ghi này như sau: Nếu RS = 0 thì thanh ghi mà lệnh được chọn để cho phép người dùng gửi một lệnh chẳng hạn như xoá màn hình, đưa con trỏ về đầu dòng,… Nếu RS = 1 thì thanh ghi dữ liệu được chọn cho phép người dùng gửi dữ liệu cần hiển thị trên LCD
3.Chân đọc/ghi R/W :
Đầu vào đọc/ghi cho phép người dùng ghi thông tin lên LCD khi R/W = 0 hoặc đọc thông tin từ
nó khi R/W = 1
4.Chân cho phép E (Enable):
Chân cho phép E được sử dụng bởi LCD để chốt thông tin hiện hữu trên chân dữ liệu của nó Khi
dữ liệu được cấp đến chân dữ liệu thì một xung mức cao xuống thấp phải được áp đến chân này
để LCD chốt dữ liệu trên các chân dữ liêu Xung này phải rộng tối thiểu là 450ns
Trang 30III.chương trình code:
a.Dùng ngôn ngữ assembly:
; Compiled with: PIC Simulator IDE v6.80
; Microcontroller model: PIC16F877
Trang 31; -Lcdcmdout LcdLine2Home 'set cursor at the beginning of line 2
MOVLW 0xC3;thuc hien lenh set ddram address > 40h : vi tri dau tien cua line 2CALL LC02
; -HIEN THI CHU "NHOM:7_24A ", text for line 2
Trang 32LC01: BSF 0x08,1;set bit RS line -> portb la gia tri du lieu
BCF 0x08,2;clear bit r/w line -> ghi du lieu vao lcd
MOVWF 0x06; dua gia tri thanh ghi w vao portb
LC02: BCF 0x08,1; clear bit RS line -> portb la gia tri lenh
BCF 0x08,2; clear bit r/w line -> doc gia tri ra tu lcd
MOVWF 0x06; dua gia tri w vao portb
CALL LCX1; cho lcd trao doi du lieu
Trang 33b.Dùng ngôn ngữ C:
//==========CHUONG TRINH HIEN THI LCD=================
// MO TA : HIEN THI TREN LCD
// CHUONG TRINH: -HIEN THI TEN VA NHOM HOC PHAN
// -#define e re0 //RS=0-gui cac lenh dk man hinh,RS=1 gui cac lenh hien thi
#define rw re1 //RW=0 cho phep ghi thong tin len ldc,RW=1 doc cac thong tin tren lcd
#define rs re2 //dung chot thong tin du~ lieu tren cac chan cua lcd
#define data portb
#define nut1 ra4
const unsigned char chu[]={"07DT4-DTVT"};
const unsigned char chu1[]={"NHOM:7_24A"};
rs=0;//gui cac lenh dk man hinh
rw=0;//cho phep ghi thong tin len ldc
rs=1;//gui cac lenh dk man hinh
rw=0;//cho phep ghi thong tin len ldc
e=1;
e=0;
Nhóm:07-24A Trang: 33
Trang 34-Khởi tạo ngắt ngoài 0
-Khởi tạo timer 0
- Ngắt ngoài 0 với độ ưu tiên cao
Ngắt timer 0 với độ ưu tiên thấp
-Viết chương trình cho ngắt ngoài 0, bật 3 đèn led đơn cùng sáng và khởi tạo lại giá trị cho biếndelay để 1s sau thì ngắt timer sẽ tắt 3 đèn đó
Trang 36Dùng phần mềm mô phỏng pic simulator ide :
Ban đầu nhấn nút rbo thì rb1,rb2,rb3 sáng
Trang 37Sau thời gian khoảng 1s thì rb1,rb2,rb3 tắt:
Nhóm:07-24A Trang: 37