Tải bản đầy đủ (.doc) (37 trang)

Báo cáo thí nghiệm kỹ thuật vi xử lý & vi điều khiển

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (470.36 KB, 37 trang )

Báo cáo thí nghiệm VXL&VDK GVHD: Phạm Xuân
Trung
ĐẠ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
Đà Nẵng Tháng 12-2010
Nhóm:07-24A Trang: 1
Báo cáo thí nghiệm VXL&VDK GVHD: Phạm Xuân
Trung
BÀI THÍ NGHIỆM SỐ 1: A LED-TURNING ON/OFF, FLASHING
1.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.
Tính toán trể.
1.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 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

V
cc
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 t
0
: t
0
=
0
1
f

Thời gian thực hiện xong một lệnh t
i
: t
i
= 4*t
0
.
Sử dụng thạch anh 4Mhz, thời gian thực hiện xong một lệnh là: t
i

= 4*
6
10*4
1
= 1
s
µ
Vậy 1ms = 5*(199 + 1)*1
s
µ


Nhóm:07-24A Trang: 2
BỘ XỬ

TRUNG
TÂM
BỘ DAO
ĐỘNG
OUTPUT
PIC16f877A
Báo cáo thí nghiệm VXL&VDK GVHD: Phạm Xuân
Trung
1.4.2 Bật, tắt và nháy một led đơn:


Nhóm:07-24A Trang: 3
XÓA PORTB
CHỌN BANK1
XÓA TRISB

CHỌN BANK0
BẮT ĐẦU
BẬT RB1
DELAY
TẮT RB1
DELAY
Báo cáo thí nghiệm VXL&VDK GVHD: Phạm Xuân
Trung
1.4.3 Chương trình con DELAY1MS:


N
Y
N
Y
Nhóm:07-24A Trang: 4
DELAY
COUNT1 199
COUNT2 1
COUNT2
= 0?
GIẢM COUNT2
GIẢM COUNT1
COUNT1

=0?
RETURN
Báo cáo thí nghiệm VXL&VDK GVHD: Phạm Xuân
Trung
1.5 Viết chương trình bằng ngôn ngữ ASEMBLY:

; Khai bao vi dieu khien
processor 16f877a
include <p16f877a.inc>
__CONFIG _CP_OFF & _WDT_OFF & _BODEN_OFF & _PWRTE_ON & _XT_OSC &
_WRT_OFF & _LVP_ON & _CPD_OFF
COUNT1 EQU 0X20
COUNT2 EQU 0X21
;Bat dau chuong trinh
ORG 0X0000
GOTO START
START
CLRF PORTB
BSF STATUS,RP0
BCF STATUS,RP1
CLRF TRISB
BCF STATUS,RP0
LOOP
MOVLW 0X02
MOVWF PORTB
CALL DELAY
CLRF PORTB
CALL DELAY
GOTO LOOP
DELAY
MOVLW D'199'
MOVWF COUNT1
LOOP1
MOVLW D'1'
MOVWF COUNT2
DECFSZ COUNT2,1

GOTO $+2
DECFSZ COUNT1,1
GOTO LOOP1
RETURN
END
Nhóm:07-24A Trang: 5
Báo cáo thí nghiệm VXL&VDK GVHD: Phạm Xuân
Trung
BÀ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

OSC2 RB1
RB2
RB3

V
cc

GND
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 t
0
: t
0
=
0
1
f

Thời gian thực hiện xong một lệnh t
i
: t
i
= 4*t
0
.
Sử dụng thạch anh 4Mhz, thời gian thực hiện xong một lệnh là: t
i
= 4*
6
10*4
1
= 1
s
µ
Vậy 1s = 4*250*(199 + 1)*5*1
s

µ

Nhóm:07-24A Trang: 6
BỘ XỬ

TRUNG
TÂM
BỘ DAO
ĐỘNG
OUTPUT
PIC16f877A
Báo cáo thí nghiệm VXL&VDK GVHD: Phạm Xuân
Trung
2.4.1 Bật, tắt 4 led đơn theo số lẻ, số chẳn:


`
N
Y
Nhóm:07-24A Trang: 7
SETUP PORTB
ĐẾM CHẴN
XÓA COUNT
W COUNT
GỌI TABLE
PORTB W
DELAY
TĂNG W
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
Báo cáo thí nghiệm VXL&VDK GVHD: Phạm Xuân
Trung
2.4.2:Đếm nhị phân:
N
Y
Nhóm:07-24A Trang: 8
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?

Báo cáo thí nghiệm VXL&VDK GVHD: Phạm Xuân
Trung
2.4.3 Chương trình con DELAY:


Y
Nhóm:07-24A Trang: 9
DELAY
COUNT2 250
COUNT4 1
COUNT4
=0
?
GIẢM COUNT4
GIẢM COUNT3
RETURN
COUNT1 4
GIẢM COUNT2
COUNT3 199
COUNT3
=0
?
COUNT2
=0
?
GIẢM COUNT1
COUNT1
=0
?
Báo cáo thí nghiệm VXL&VDK GVHD: Phạm Xuân

Trung


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
COUNT1 EQU 0X20
COUNT2 EQU 0X21
COUNT3 EQU 0X22
COUNT4 EQU 0X23
ORG 0X0000
GOTO START
START
CLRF PORTB
BCF STATUS,RP1
BSF STATUS,RP0
CLRF PORTB
BCF STATUS,RP0
LOOP
CLRF COUNT
LOOP0
MOVF COUNT,0
CALL TABLE
MOVWF PORTB
CALL DELAY
INCF COUNT,0
XORLW D'8'

BTFSC STATUS,Z
GOTO LOOP
INCF COUNT4,1
GOTO LOOP0
TABLE
ADDWF PCL,1
RETLW b’00000000’
RETLW b’00000010’
RETLW b’00000100’
RETLW b’00000110’
RETLW b’00001000’
RETLW b’00001010’
RETLW b’00001100’
RETLW b’00001110’
Nhóm:07-24A Trang: 10
Báo cáo thí nghiệm VXL&VDK GVHD: Phạm Xuân
Trung
DELAY
MOVLW D'4'
MOVWF COUNT1
LOOP2
MOVLW D'250’
MOVWF COUNT2
LOOP1
MOVLW D'199'
MOVWF COUNT3
LOOP0
MOVLW D'1'
MOVWF COUNT4
DECFSZ COUNT4,1

GOTO $+2
DECFSZ COUNT3,1
GOTO LOOP0
DECFSZ COUNT2,1
GOTO LOOP1
DECFSZ COUNT1,1
GOTO LOOP2
RETURN
END
2.5.2: Bật, tắt 4 led đơn theo số lẻ:
processor 16f877a
include <p16f877a.inc>
__CONFIG _CP_OFF & _WDT_OFF & _BODEN_OFF & _PWRTE_ON & _XT_OSC
&_WRT_OFF & _LVP_OFF & _CPD_OFF
COUNT1 EQU 0X20
COUNT2 EQU 0X21
COUNT3 EQU 0X22
COUNT4 EQU 0X23
ORG 0X0000
GOTO START
START
CLRF PORTB
BCF STATUS,RP1
BSF STATUS,RP0
CLRF PORTB
BCF STATUS,RP0
LOOP
CLRF COUNT
LOOP0
MOVF COUNT,0

CALL TABLE
MOVWF PORTB
CALL DELAY
Nhóm:07-24A Trang: 11
Báo cáo thí nghiệm VXL&VDK GVHD: Phạm Xuân
Trung
INCF COUNT,0
XORLW D'8'
BTFSC STATUS,Z
GOTO LOOP
INCF COUNT4,1
GOTO LOOP0
TABLE
ADDWF PCL,1
RETLW b’00000001’
RETLW b’00000011’
RETLW b’00000101’
RETLW b’00000111’
RETLW b’00001001’
RETLW b’00001011’
RETLW b’00001101’
RETLW b’00001111’
DELAY
MOVLW D'4'
MOVWF COUNT1
LOOP2
MOVLW D'250’
MOVWF COUNT2
LOOP1
MOVLW D'199'

MOVWF COUNT3
LOOP0
MOVLW D'1'
MOVWF COUNT4
DECFSZ COUNT4,1
GOTO $+2
DECFSZ COUNT3,1
GOTO LOOP0
DECFSZ COUNT2,1
GOTO LOOP1
DECFSZ COUNT1,1
GOTO LOOP2
RETURN
END
2.5.3:Đếm nhị phân:
processor 16f877a
include <p16f877a.inc>
__CONFIG _CP_OFF & _WDT_OFF & _BODEN_OFF & _PWRTE_ON &
_XT_OSC &_WRT_OFF & _LVP_OFF & _CPD_OFF
COUNT EQU 0X20
COUNT1 EQU 0X21
COUNT2 EQU 0X22
COUNT3 EQU 0X23
Nhóm:07-24A Trang: 12
Báo cáo thí nghiệm VXL&VDK GVHD: Phạm Xuân
Trung
ORG 0X0000
GOTO START
START
CLRF PORTB

BCF STATUS,RP1
BSF STATUS,RP0
CLRF PORTB
BCF STATUS,RP0
LOOP
CLRF COUNT
LOOP0
MOVF COUNT,0
CALL TABLE
MOVWF PORTB
CALL DELAY
INCF COUNT,0
XORLW D'15'
BTFSC STATUS,Z
GOTO LOOP
INCF COUNT4,1
GOTO LOOP0
TABLE
ADDWF PCL,1
RETLW b’00000001’
RETLW b’00000010’
RETLW b’00000011’
RETLW b’00000100’
RETLW b’00000101’
RETLW b’00000110’
RETLW b’00000111’
RETLW b’00001000’
RETLW b’00001001’
RETLW b’00001010’
RETLW b’00001011’

RETLW b’00001100’
RETLW b’00001101’
RETLW b’00001110’
RETLW b’00001111’
DELAY
MOVLW D'4'
MOVWF COUNT1
LOOP2
MOVLW D'250’
MOVWF COUNT2
LOOP1
MOVLW D'199'
MOVWF COUNT3
Nhóm:07-24A Trang: 13
Báo cáo thí nghiệm VXL&VDK GVHD: Phạm Xuân
Trung
LOOP0
MOVLW D'1'
MOVWF COUNT4
DECFSZ COUNT4,1
GOTO $+2
DECFSZ COUNT3,1
GOTO LOOP0
DECFSZ COUNT2,1
GOTO LOOP1
DECFSZ COUNT1,1
GOTO LOOP2
RETURN
END


Nhóm:07-24A Trang: 14
Báo cáo thí nghiệm VXL&VDK GVHD: Phạm Xuân
Trung
BÀ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
RB2
RB3

V
cc
GND
3.4 Xây dựng sơ đồ khối:
3.4.1: Tính toán trể 1s (DELAY) bằng phương pháp giảm thanh ghi:
Nhóm:07-24A Trang: 15
BỘ XỬ


TRUNG
TÂM
BỘ DAO
ĐỘNG
OUTPUT
PIC16f877A
Báo cáo thí nghiệm VXL&VDK GVHD: Phạm Xuân
Trung
Chu kỳ dao động của thạch anh t
0
: t
0
=
0
1
f

Thời gian thực hiện xong một lệnh t
i
: t
i
= 4*t
0
.
Sử dụng thạch anh 4Mhz, thời gian thực hiện xong một lệnh là: t
i
= 4*
6
10*4
1

= 1
s
µ
Vậy 2s = 8*250*(199 + 1)*5*1
s
µ

3.4.2: Sơ đồ khối:
Nhóm:07-24A Trang: 16
SETUP PORTB
BẮT ĐẦU
SET BIT C
DỊCH TRÁI
PORTB
DELAY
DỊCH PHẢI
PORTB
RB3=1
?
DELAY
RB0=1
?
Báo cáo thí nghiệm VXL&VDK GVHD: Phạm Xuân
Trung
3.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
?
Báo cáo thí nghiệm VXL&VDK GVHD: Phạm Xuân
Trung
3.5:Chương tình ASEMBLY:
processor 16f877a
include <p16f877a.inc>
__CONFIG _CP_OFF & _WDT_OFF & _BODEN_OFF & _PWRTE_ON &

_XT_OSC &_WRT_OFF & _LVP_OFF & _CPD_OFF
COUNT1 EQU 0X20
COUNT2 EQU 0X21
COUNT3 EQU 0X22
COUNT4 EQU 0X23
ORG 0X0000
GOTO START
START
CLRF PORTB
BCF STATUS,RP1
BSF STATUS,RP0
CLRF PORTB
BCF STATUS,RP0
BCF STATUS,C
LEFT
RLF PORTB,f
CALL DELAY
BTFSS PORTB,3
GOTO LEFT
RIGHT
RRF PORTB,f
CALL DELAY
BTFSS PORTB,0
GOTO RIGHT
GOTO LEFT
DELAY
MOVLW D'8'
MOVWF COUNT1
LOOP2
MOVLW D'250’

Nhóm:07-24A Trang: 18
Báo cáo thí nghiệm VXL&VDK GVHD: Phạm Xuân
Trung
MOVWF COUNT2
LOOP1
MOVLW D'199'
MOVWF COUNT3
LOOP0
MOVLW D'1'
MOVWF COUNT4
DECFSZ COUNT4,1
GOTO $+2
DECFSZ COUNT3,1
GOTO LOOP0
DECFSZ COUNT2,1
GOTO LOOP1
DECFSZ COUNT1,1
GOTO LOOP2
RETURN
END
Nhóm:07-24A Trang: 19
Báo cáo thí nghiệm VXL&VDK GVHD: Phạm Xuân
Trung
BÀ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
- Sơ đồ khối:
Nhóm:07-24A Trang: 20
BỘ XỬ

TRUNG
TÂM
BỘ DAO
ĐỘNG
OUTPUT
INPUT
Báo cáo thí nghiệm VXL&VDK GVHD: Phạm Xuân
Trung
- Sơ đồ nguyên lý giản lược
Kết nối bộ dao động:
Nhóm:07-24A Trang: 21
Báo cáo thí nghiệm VXL&VDK GVHD: Phạm Xuân
Trung
Kế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:
L=0x20
H=0x21

INDEX = 0x22
Chương trình chính:
- Xóa các bits của PORTB
- Chọn bank 1
Nhóm:07-24A Trang: 22
Báo cáo thí nghiệm VXL&VDK GVHD: Phạm Xuân
Trung
- Đặ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ạp INDEX vào W
- Call TABLEL2R
- Goto DISPLAY
Chương trình DISPLAY:
- Nạp W vào PORTB

- Cho dừng
- INDEX=INDEX+1
- Nạp 0x07 vào W
- W-INDEX
- Kiểm tra cờ Z = 0?
+ 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
Báo cáo thí nghiệm VXL&VDK GVHD: Phạm Xuân
Trung
LƯU ĐỒ THUẬT TOÁN:
Nhóm:07-24A Trang: 24
Setup PORTB
and PORTA
Clear INDEX
RA4=1
?
b’11110000’
into W
Movlw HIGH
TABLER2L
Movlw HIGH
TABLEL2R
Move W->TRISB
Set TRISA,4
Switch bank 0
START
Switch bank 1

Movwf PCLATH Movwf PCLATH
Movf INDEX,W Movf INDEX,W
MOVWF PORTBINDEX++
Báo cáo thí nghiệm VXL&VDK GVHD: Phạm Xuân
Trung
Nhóm:07-24A Trang: 25
Call
TABLER2L
Call
TABLEL2R
Call DELAY
INDEX++
INDEX=7
?
Clear INDEX
RA4=1?
A
AC B
C B

×