TRƯỜNG ĐẠI HỌC MỎ - ĐỊA CHẤT
BỘ MÔN TỰ ĐỘNG HÓA XÍ NGHIỆP MỎ - DẦU KHÍ
BÁO CÁO ĐỒ ÁN
KỸ THUẬT VI ĐIỀU KHIỂN
Đề tài: Điều khiển tăng giảm 00:99 trên led 7 thanh 2 số
GIÁO VIÊN HƯỚNG DẪN
NHÓM SINH VIÊN THỰC HIỆN
ThS. NGUYỄN THẾ LỰC
HOÀNG ĐÌNH TUẤN
HÀ NỘI, THÁNG 6 NĂM 2017
I.
Giới thiệu đề tài
Đồ án là một trong những phần gây khó khăn cho các bạn sinh viên khi học tập, tuy
nhiên đây cũng là phần được mong đợi và tạo nhiều hứng thú cho sinh viên. Đây là cơ
hội để các bạn sinh viên vận dụng lý thuyết được học trên lớp một cách sáng tạo, giúp
hiểu rõ và sâu về môn học đó, cũng như áp dụng vào thực tiễn, tạo tiền để cho các đồ
án phức tạp và trong công việc thực tế sau này.
Trong khuôn khổ môn học Kỹ thuật Vi điều khiển được giảng dạy bởi thầy giáo
Nguyễn Thế Lực, em lựa chọn đề tài: “Điều khiển tăng giảm 00:99 bằng led 7 thành
sử dụng PIC16F877A.
Sở dĩ em lựa chọn đề tài này vì em muốn áp dụng nhiều nhất có thể những kiến thức
được học ở trên lớp, bao gồm nút nhấn, led 7 thanh, chương trình ngắt, delay, … Tuy
nhiên em không sao chép hay sử dụng lại những ví dụ trên lớp, em đã vận dụng sáng
tạo chúng trên PIC 16F877A, ngắn RB, led 7 thanh đôi anot chung, sử dụng 2
transistor NPN để cấp nguồn dương cho chân điều khiển led 7 thanh.
Ý tưởng này có thể được sử dụng để vận dụng trong thực tiễn như điều chỉnh độ sáng,
độ mạnh yếu,…
2
II.
Mô phỏng trên proteus:
Trong đó:
- Chân RA0 là đầu ra điều khiển hàng đơn vị, chân RA1 là đầu ra điều khiển hàng
chục.
- Chân RB4 là đầu vào nút nhấn tăng
- Chân RB5 là đầu vào nút nhấn giảm
- Chân RC0 đến RC7 là đầu ra điều khiển led 7 thanh
3
III.
Lưu đồ thuật toán:
4
IV.
Code chương trình điều khiển:
Chương trình điều khiển sử dụng ngôn ngữ Assembly như sau:
; TODO INSERT CONFIG CODE HERE USING CONFIG BITS GENERATOR
#include "p16f877a.inc"
; CONFIG
; __config 0xFF31
__CONFIG _FOSC_XT & _WDTE_OFF & _PWRTE_OFF & _BOREN_OFF
& _LVP_OFF & _CPD_OFF & _WRT_OFF & _CP_OFF
CHUC EQU 0x20
5
DONVI EQU 0x21
BIEN1 EQU 0x22
BIEN2 EQU 0x23
W_SAVE EQU 0x24
STATUS_SAVE EQU 0x25
RES_VECT CODE
GOTO
0x0000
START
; processor reset vector
; go to beginning of program
; TODO ADD INTERRUPTS HERE IF USED
INTR_VECT CODE
0x0004
;Bat dau chuong trinh ngat
MOVWF W_SAVE
SWAPF STATUS,0
MOVWF STATUS_SAVE
CLRF STATUS
;Chuong trinh ngat
BTFSS PORTB,4
;Kiem tra nut tang
GOTO TANG
BTFSS PORTB,5
;Kiem tra nut giam
GOTO GIAM
GOTO THOAT
TANG
INCF DONVI,1
;Tang DONVI len 1
MOVF DONVI,0
XORLW d'11'
6
BTFSS STATUS,Z
GOTO NHAY
;Neu chu so hang don vi <9 thi hien thi ra led
INCF CHUC,1
MOVLW d'1'
;So sanh DONVI voi 11
;Neu chu so hang don vi >9 thi tang hang chuc len 1 don vi
;Hang don vi =0
MOVWF DONVI
NHAY
MOVF CHUC,0
XORLW d'11'
BTFSS STATUS,Z
;So sanh CHUC voi 11
GOTO NHAY2
;Neu chu so hang chuc <9 thi hien thi ra led
MOVLW d'1'
;Neu hang chuc >9 thì tro l?i 00
MOVWF CHUC
MOVWF DONVI
NHAY2
CALL MANG_MA_7SEG
GOTO THOAT
GIAM
DECFSZ DONVI,1
;Giam DONVI xuong 1
GOTO NHAY2
;Neu chu so hang don vi khac 0 thi hien thi ra led
MOVLW d'10'
;Neu chu so hang don vi bang 0 thi hang don vi =9
MOVWF DONVI
DECFSZ CHUC,1
;Giam chu so hang chuc xuong 1
GOTO NHAY2
;Neu chu so hang chuc khac 0 thi hien thi ra led
MOVLW d'10'
;Neu chu so hang chuc bang 0 thì quay lai 99
MOVWF CHUC
MOVWF DONVI
7
GOTO NHAY2
THOAT
;Ket thuc chuong trinh ngat
SWAPF STATUS_SAVE,0
MOVWF STATUS
SWAPF W_SAVE,1
SWAPF W_SAVE,0
BCF INTCON,0
;Xoa co ngat RB
RETFIE
MAIN_PROG CODE
; let linker place main program
ORG 0x50
START
BCF STATUS,RP1
BSF STATUS,RP0
;CHON BANK1
CLRF TRISA
CLRF TRISC ;TRISA va TRISC là output
MOVLW 0x30
MOVWF TRISB
;Chan 4,5 c?a PORTB la input
BCF OPTION_REG,7
BCF
STATUS,RP0
;Chon bank 0
BCF
INTCON,0
;RBIF=0
;Xoa co ngat RB
BSF
INTCON,3
;RBIE=1
;Cho phep ngat RB
BSF
INTCON,7
;GIE=1
;Cho phep ngat toan cuc
MOVLW d'1'
8
MOVWF DONVI
MOVWF CHUC
CALL MANG_MA_7SEG ;Ban dau led hien thi so 00
LOOP
;Chuong trinh hien thi led 7 thanh
MOVLW 0x01
MOVWF PORTA
MOVF BIEN1,0
MOVWF PORTC
CALL DELAY
MOVLW 0x02
MOVWF PORTA
MOVF BIEN2,0
MOVWF PORTC
CALL DELAY
GOTO LOOP
MANG_MA_7SEG
MOVF DONVI,0
CALL MANG_MA
MOVWF BIEN1
MOVF CHUC,0
CALL MANG_MA
MOVWF BIEN2
RETURN
9
MANG_MA
ADDWF PCL,1
DT 0xFF, 0xC0, 0xF9, 0xA4, 0xB0, 0x99, 0x92, 0x82, 0xF8, 0x80, 0x90
RETURN
DELAY
MOVLW d'255'
MOVWF 0x0e
DECFSZ 0x0e,1
GOTO
$-1
RETURN
END
V.
Vẽ mạch in
10
VI.
STT
1
2
3
4
5
6
7
8
9
10
11
12
Các linh kiện sử dụng
Tên linh kiện
C1815 C092 Transistor NPN
Thạch anh 4M
Điện trở 680 Ohm
Điện trở 330 Ohm
Led 7 thanh 0.56 2 số 6 chân
Nút nhấn 2 chân
Điện trở 10K Ohm
Jam nguồn đực
PIC 16F877A + đế
Tụ gốm 15P
Tụ hóa 0,1uF
Phích đồng
Số lượng
2
1
2
2
1
3
3
1
1
2
1
1
VII. Kết luận:
Mặc dù đã rất cố gắng tìm hiểu và thực hiện, nhưng sản phẩm không tránh khỏi
những thiếu sót. Bản thân em nhận thấy rằng mình cần phát triển và cần tìm hiểu học
hỏi những đề tài khó và sát với nhu cầu thực tiễn nhiều hơn.
Em xin cam đoan sản phẩm này hoàn toàn do em tự tìm hiểu, không hề sao chép
hay nhờ người làm hộ. Em xin cảm ơn thầy đã hướng dẫn và giảng dạy tận tình để cho
chúng em có cơ hội được áp dụng và thực hành những kiến thức lý thuyết vào thực tế.
Em xin chân thành cảm ơn!
11