TRƯỜNG ĐẠI HỌC PHENIKAA
KHOA ĐIỆN ĐIỆN TỬ
KỸ THUẬT VI XỬ LÝ VÀ VI
ĐIỀU KHIỂN
Chương 3: Các cổng I/O trên Vi điều khiển
GIẢNG VIÊN:
ThS. ĐÀO TÔ HIỆU
Hà Nội, 01/2022
NỘI DUNG
✓Giới thiệu
✓Cấu hình, thơng số điện áp, dịng của các port
✓Truy xuất port điều khiển của vi điều khiển 8 bit
✓Giao tiếp vi điều khiển 8 bit với LCD
2
GIỚI THIỆU
+ Vi điều khiển PIC16F887 có 5 PORTS: A, B, C, D, E.
+ Mỗi PORT gồm thanh ghi chính: PORT và TRIS (thanh
ghi định hướng).
3
CẤU HÌNH, THƠNG SỐ ĐIỆN ÁP,
DỊNG CỦA CÁC PORT
- PORT A, C, D là các port 2 chiều tương tự nhau về cấu trúc
thanh ghi.
- Thanh ghi TRISA, TRISC, TRISD mặc định R/W = 0
+ R/W = 0: Xuất dữ liệu
+ R/W = 1: Nhập dữ liệu
-Thanh ghi PORTA, PORTC, PORTD cho phép đọc/ghi giá trị
nhập/xuất tương ứng.
- Mức điện áp nhập/xuất tối đa tương ứng với điện áp nguồn.
- Dòng chịu đựng tối đa tại mỗi chân khoảng 30mA.
4
CẤU HÌNH, THƠNG SỐ ĐIỆN ÁP,
DỊNG CỦA CÁC PORT
- PORT B là PORT 2 chiều 8 bit.
- TRISB cấu hình xuất nhập cho PORT.
- ANSELH -> 1 cho phép đọc giá trị tương tự tại PORTB.
- ANSELH -> 0 cấu hình PORTB chỉ xuất/nhập giá trị số.
ANSELH
5
CẤU HÌNH, THƠNG SỐ ĐIỆN ÁP,
DỊNG CỦA CÁC PORT
- PORT B là PORT 2 chiều 8 bit.
- TRISB cấu hình xuất nhập cho PORT.
- ANSELH cấu hình đọc ADC
ANSELH -> 1 cho phép đọc giá trị tương tự tại PORTB.
ANSELH -> 0 cấu hình PORTB chỉ xuất/nhập giá trị số.
- WPUB cho phép kéo lên trở khi PORTB cấu hình nhập giá trị,
mặc định ngắt khi PORTB xuất giá trị
WPUB->1: cho phép kéo lên trở khi PORTB là nhập giá trị.
WPUB->0: ngắt trở.
WPU
6
CẤU HÌNH, THƠNG SỐ ĐIỆN ÁP,
DỊNG CỦA CÁC PORT
- PORT B là PORT 2 chiều 8 bit.
- TRISB cấu hình xuất nhập cho PORT.
- ANSELH cấu hình đọc ADC
ANSELH -> 1 cho phép đọc giá trị tương tự tại PORTB.
ANSELH -> 0 cấu hình PORTB chỉ xuất/nhập giá trị số.
- WPUB cho phép kéo lên trở khi PORTB cấu hình nhập giá trị,
mặc định ngắt khi PORTB xuất giá trị
WPUB->1: cho phép kéo lên trở khi PORTB là nhập giá trị.
WPUB->0: ngắt trở.
- IOCB cấu hình kiểm tra ngắt khi giá trị đầu vào PORTB thay đổi.
IOCB ->1: Cho phép phát hiện ngắt
IOCB ->0: cấm ngắt
IOCB
7
TRUY XUẤT PORT ĐIỀU KHIỂN CỦA VI
ĐIỀU KHIỂN 8 BIT
Dữ liệu ra:
+ SET_TRIS_X (Value) : với X = A,B,C,D,E . Value là 1 dãy 8 bit
+ OUTPUT_X(Value) : gán các giá trị trong value với từng chân I/O
mà ta đã khai báo
+ OUTPUT_HIGH(PIN_Xi) : Đẩy giá trị của 1 chân i của PORT X lên 1
+ OUTPUT_LOW(PIN_Xi) : Đưa giá trị chân i của PORTX xuống 0
+ OUTPUT_TOGGLE(PIN) : đảo trạng thái 1 chân của PORT
+ OUTPUT_BIT(PIN,VALUE) : xuất dữ liệu 0/1 tại 1 chân của PORT
Dữ liệu vào:
+ Value= GET_TRIS_X() : trả về giá trị thanh ghi TRIS dưới dạng byte
+ value = INPUT(PIN) : Đọc dữ liệu từ 1 chân của PORT
+ value = INPUT_X() : đọc dữ liệu chân từ PORT X
8
TRUY XUẤT PORT ĐIỀU KHIỂN CỦA VI
ĐIỀU KHIỂN 8 BIT
Lưu ý lập trình:
- Phải khai báo các thư viện mà ta sử dụng, delay (nếu có dùng)
- Khai báo tên vi điều khiển
- #FUSES NOWDT,PUT,HS,NOPROTECT,NOLVP
+ HS: khai báo khi ta muốn dùng thạch anh từ 4-20MHz (High
Speed)
+ PUT: (Power Up Timer) dùng bộ định thời gian khi có nguồn
để kéo dài thời gian reset chờ nguồn ổn định (~72ms)
+ NOPROTECT: không bảo vệ code khi ta nạp vào bộ nhớ flash
(hoặc là cho phép ghi )
+NOLVP: No Low Voltage Programming (khơng lập trình với
điện áp thấp 5V mà dùng nguồn 12.5 V)
+ NOWDT : No WatchDogTimer (không dùng bộ định thời giám
sát )
9
GIAO TIẾP VI ĐIỀU KHIỂN 8 BIT VỚI LCD
- LCD1602 có thể hiển thị 2 dịng và 16 ký tự /dịng, sử dụng
chip nhớ HD44780.
- Lập trình hiển thị LCD bằng cách ghi lệnh vào thanh ghi IR
và ghi dữ liệu vào thành ghi HR.
10
GIAO TIẾP VI ĐIỀU KHIỂN 8 BIT VỚI LCD
- Kết nối PIC16F887 với LCD theo chế độ 4 bit.
- LCD hoạt động ở chế độ ghi dữ liệu => RW = 0.
- Phương án 1: Sử dụng thư viện LCD.h có sẵn trong CCS
#include <lcd.c>
lcd_init(): Hàm khởi tạo LCD
lcd_putc(c): Xuất kí tự lên LCD
lcd_gotoxy(x,y): Đặt ví trí con trỏ( vị trí cần xuất ký tự) tại x của dong
y(y=1 hoặc y=2)
lcd_getc(x,y): Đọc về giá trị tại x của dong y
lcd_cursor_on(int1 on): Bật ví trí con trỏ
lcd_set_cgram_char(w, *p) : Hàm này dùng xuất kí tự đặc biệt.
Để xóa nội dung và đưa con trỏ về đầu dòng xuất ký tự “\f”
Để về đầu dòng của dòng 2: “\n”.
Về đầu dòng của dòng hiện tại: “\a”.
Để lùi về con trỏ về 1 ví trí so với vị trí hiện tại: “\b”
11
GIAO TIẾP VI ĐIỀU KHIỂN 8 BIT VỚI LCD
- Kết nối PIC16F887 với LCD theo chế độ 4 bit.
- LCD hoạt động ở chế độ ghi dữ liệu => RW = 0.
- Sử dụng thư viện LCD.h có sẵn trong CCS hoặc lập trình trực
tiếp khơng sử dụng thư viện.
Định nghĩa lại các chân sau cho thư viện:
#define LCD_ENABLE_PIN PIN_D2
#define LCD_RS_PIN PIN_D0
#define LCD_RW_PIN PIN_D1
#define LCD_DATA4 PIN_D7
#define LCD_DATA5 PIN_E0
#define LCD_DATA6 PIN_E1
#define LCD_DATA7 PIN_E2
#include <lcd.c>//THU VIEN NGAY SAU DINH NGHIA CHAN
12
5.4. GIAO TIẾP VI ĐIỀU KHIỂN 8 BIT VỚI LCD
LCD1
LCD 16X2
www.TheEngineeringProjects.com
U1
2
3
4
5
6
7
14
13
33
34
35
36
37
38
39
40
RE3/MCLR/VPP
RC0/T1OSO/T1CKI
RC1/T1OSI/CCP2
RA0/AN0/ULPWU/C12IN0RC2/P1A/CCP1
RA1/AN1/C12IN1RC3/SCK/SCL
RA2/AN2/VREF-/CVREF/C2IN+ RC4/SDI/SDA
RA3/AN3/VREF+/C1IN+
RC5/SDO
RA4/T0CKI/C1OUT
RC6/TX/CK
RA5/AN4/SS/C2OUT
RC7/RX/DT
RA6/OSC2/CLKOUT
RA7/OSC1/CLKIN
RD0
RD1
RB0/AN12/INT
RD2
RB1/AN10/C12IN3RD3
RB2/AN8
RD4
RB3/AN9/PGM/C12IN2RD5/P1B
RB4/AN11
RD6/P1C
RB5/AN13/T1G
RD7/P1D
RB6/ICSPCLK
RB7/ICSPDAT
RE0/AN5
RE1/AN6
RE2/AN7
15
16
17
18
23
24
25
26
VSS
VDD
VEE
RS
RW
E
D0
D1
D2
D3
D4
D5
D6
D7
1
19
20
21
22
27
28
29
30
8
9
10
PIC16F887
Sơ đồ giao tiếp giữa PIC và LCD 16x2 theo chế độ 4 bit
13
Sử dụng thư viện LCD.h có sẵn trong CCS
CHƯƠNG TRÌNH LẬP TRÌNH TRÊN CCS
14
LẬP TRÌNH GIAO TIẾP LCD TRỰC TIẾP
LCD hiển thị chữ “WWW TEAM” và “WE WILL WIN”
15
LẬP TRÌNH GIAO TIẾP LCD TRỰC TIẾP
KHAI BÁO
BIẾN
CÁC HÀM
CON
16
LẬP TRÌNH GIAO TIẾP LCD TRỰC TIẾP
CÁC HÀM
CON
17
LẬP TRÌNH GIAO TIẾP LCD TRỰC TIẾP
CÁC HÀM
CON
18
LẬP TRÌNH GIAO TIẾP LCD TRỰC TIẾP
Hàm chính và
vịng lặp
19
5.5. Điều chế độ rộng xung
PWM (Pulse Width Modulation): Điều chế độ rộng xung là
một kỹ thuật điều khiển với đầu ra số. Tín hiệu PWM
gồm: Chu kỳ, thời gian và tần số.
20
Chu kỳ, thời gian và tần số
21
Cách tạo ra PWM
- PWM có thể được tạo ra với bộ so sánh.
- Tín hiệu đầu vào là sóng tam giác và nguồn cung cấp DC
có thể điều khiển được.
22
Cách tạo ra PWM
23
Cách tạo ra PWM
Điều chế PWM bằng cách thay đổi R1
24
Ứng dụng của PWM
- Điều khiển tốc độ của động cơ.
- Cường độ ánh sáng của đèn.
- Điều khiển công suất hoạt động trung bình.
- Hệ thống thơng tin liên lạc.
- Hệ thống Âm thanh.
- Ứng dụng trong biến tần để thay đổi tần số và điện áp.
- Điều khiển tín hiệu tương tự bằng tín hiệu số.
25