✓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 3 + 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).
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 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 port ✓Truy xuất port điều khiển vi điều khiển bit ✓Giao tiếp vi điều khiển bit với LCD GIỚI THIỆU + Vi điều khiển PIC16F887 có PORTS: A, B, C, D, E + Mỗi PORT gồm ghi chính: PORT TRIS (thanh ghi định hướng) CẤU HÌNH, THƠNG SỐ ĐIỆN ÁP, DỊNG CỦA CÁC PORT - PORT A, C, D port chiều tương tự cấu trúc ghi - Thanh ghi TRISA, TRISC, TRISD mặc định R/W = + R/W = 0: Xuất liệu + R/W = 1: Nhập 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 chân khoảng 30mA CẤU HÌNH, THƠNG SỐ ĐIỆN ÁP, DỊNG CỦA CÁC PORT - PORT B PORT chiều bit - TRISB cấu hình xuất nhập cho PORT - ANSELH -> cho phép đọc giá trị tương tự PORTB - ANSELH -> cấu hình PORTB xuất/nhập giá trị số ANSELH CẤU HÌNH, THƠNG SỐ ĐIỆN ÁP, DÒNG CỦA CÁC PORT - PORT B PORT chiều bit - TRISB cấu hình xuất nhập cho PORT - ANSELH cấu hình đọc ADC ANSELH -> cho phép đọc giá trị tương tự PORTB ANSELH -> cấu hình PORTB xuất/nhập giá trị số - WPUB cho phép kéo lên trở PORTB cấu hình nhập giá trị, mặc định ngắt PORTB xuất giá trị WPUB->1: cho phép kéo lên trở PORTB nhập giá trị WPUB->0: ngắt trở WPU CẤU HÌNH, THƠNG SỐ ĐIỆN ÁP, DỊNG CỦA CÁC PORT - PORT B PORT chiều bit - TRISB cấu hình xuất nhập cho PORT - ANSELH cấu hình đọc ADC ANSELH -> cho phép đọc giá trị tương tự PORTB ANSELH -> cấu hình PORTB xuất/nhập giá trị số - WPUB cho phép kéo lên trở PORTB cấu hình nhập giá trị, mặc định ngắt PORTB xuất giá trị WPUB->1: cho phép kéo lên trở PORTB nhập giá trị WPUB->0: ngắt trở - IOCB cấu hình kiểm tra ngắt giá trị đầu vào PORTB thay đổi IOCB ->1: Cho phép phát ngắt IOCB ->0: cấm ngắt IOCB TRUY XUẤT PORT ĐIỀU KHIỂN CỦA VI ĐIỀU KHIỂN BIT Dữ liệu ra: + SET_TRIS_X (Value) : với X = A,B,C,D,E Value dãy bit + OUTPUT_X(Value) : gán giá trị value với chân I/O mà ta khai báo + OUTPUT_HIGH(PIN_Xi) : Đẩy giá trị chân i PORT X lên + OUTPUT_LOW(PIN_Xi) : Đưa giá trị chân i PORTX xuống + OUTPUT_TOGGLE(PIN) : đảo trạng thái chân PORT + OUTPUT_BIT(PIN,VALUE) : xuất liệu 0/1 chân PORT Dữ liệu vào: + Value= GET_TRIS_X() : trả giá trị ghi TRIS dạng byte + value = INPUT(PIN) : Đọc liệu từ chân PORT + value = INPUT_X() : đọc liệu chân từ PORT X TRUY XUẤT PORT ĐIỀU KHIỂN CỦA VI ĐIỀU KHIỂN BIT Lưu ý lập trình: - Phải khai báo 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 ta muốn dùng thạch anh từ 4-20MHz (High Speed) + PUT: (Power Up Timer) dùng định thời gian có nguồn để kéo dài thời gian reset chờ nguồn ổn định (~72ms) + NOPROTECT: không bảo vệ code ta nạp vào nhớ flash (hoặc 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 định thời giám sát ) GIAO TIẾP VI ĐIỀU KHIỂN BIT VỚI LCD - LCD1602 hiển thị dịng 16 ký tự /dịng, sử dụng chip nhớ HD44780 - Lập trình hiển thị LCD cách ghi lệnh vào ghi IR ghi liệu vào thành ghi HR 10 GIAO TIẾP VI ĐIỀU KHIỂN BIT VỚI LCD - Kết nối PIC16F887 với LCD theo chế độ bit - LCD hoạt động chế độ ghi liệu => RW = - Phương án 1: Sử dụng thư viện LCD.h có sẵn CCS #include 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í trỏ( vị trí cần xuất ký tự) x dong y(y=1 y=2) lcd_getc(x,y): Đọc giá trị x dong y lcd_cursor_on(int1 on): Bật ví trí trỏ lcd_set_cgram_char(w, *p) : Hàm dùng xuất kí tự đặc biệt Để xóa nội dung đưa trỏ đầu dòng xuất ký tự “\f” Để đầu dòng dòng 2: “\n” Về đầu dòng dòng tại: “\a” Để lùi trỏ ví trí so với vị trí tại: “\b” 11 GIAO TIẾP VI ĐIỀU KHIỂN BIT VỚI LCD - Kết nối PIC16F887 với LCD theo chế độ bit - LCD hoạt động chế độ ghi liệu => RW = - Sử dụng thư viện LCD.h có sẵn CCS lập trình trực tiếp khơng sử dụng thư viện Định nghĩa lại 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 //THU VIEN NGAY SAU DINH NGHIA CHAN 12 5.4 GIAO TIẾP VI ĐIỀU KHIỂN BIT VỚI LCD LCD1 LCD 16X2 www.TheEngineeringProjects.com U1 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 19 20 21 22 27 28 29 30 10 PIC16F887 Sơ đồ giao tiếp PIC LCD 16x2 theo chế độ bit 13 Sử dụng thư viện LCD.h có sẵn 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” “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 vòng lặp 19 5.5 Điều chế độ rộng xung PWM (Pulse Width Modulation): Điều chế độ rộng xung kỹ thuật điều khiển với đầu số Tín hiệu PWM gồm: Chu kỳ, thời gian tần số 20 Chu kỳ, thời gian tần số 21 Cách tạo PWM - PWM tạo với so sánh - Tín hiệu đầu vào sóng tam giác nguồn cung cấp DC điều khiển 22 Cách tạo PWM 23 Cách tạo PWM Điều chế PWM cách thay đổi R1 24 Ứng dụng PWM - Điều khiển tốc độ động - Cường độ ánh sáng đè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 - Ứng dụng biến tần để thay đổi tần số điện áp - Điều khiển tín hiệu tương tự tín hiệu số 25