Tải bản đầy đủ (.pdf) (0 trang)

Chuong 3 Các cổng IO trên 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 (1.3 MB, 0 trang )

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


×