Trang 1 UBND TỈNH BÌNH ĐỊNH TRƯỜNG CAO ĐẲNG KỸ THUẬT CƠNG NGHỆ QUY NHƠN GIÁO TRÌNH MÔ ĐUN: LẮP RÁP, LẬP TRÌNH VI XỬ LÝ NGHỀ: ĐIỆN TỬ CÔNG NGHIỆP TRÌNH ĐỘ: CAO ĐẲNG Trang 3 TUYÊN BỐ
NHẬP MÔN VI ĐIỀU KHIỂN PIC
Giới thiệu về vi điều khiển PIC 18F4550
PIC là một họ vi điều khiển RISC được sản xuất bởi công ty Microchip Technology PIC bắt nguồn từ chữ viết tắt của “Programmable Intelligent Computer”(Máy tính khả trình thông minh) Ngày nay rất nhiều dòng PIC được xuất xưởng với hàng loạt các module ngoại vi tích hợp sẵn(như USART, PWM, ADC…), với bộ nhớ chương trình từ 512 Word đến 32K Word
Hiện nay có khá nhiều dòng PIC và có rất nhiều khác biệt về phần cứng, nhưng chúng ta có thể điểm qua một vài nét như sau:
- 8/16 bit CPU, xây dựng theo kiến truc Harvard có sửa đổi
- Flash và ROM có thể tuỳ chọn từ 256 byte đến 256 Kbyte
- Các cổng Xuất/ Nhập(I/O)(mức logic thường từ 0V đến 5.5V, ứng với logic 0 và logic 1)
- Các chuẩn giao tiếp nối tiếp đồng bộ/ khung đồng bộ USART
- Bộ chuyển đổi ADC Analog-to-digital converters, 10/12 bit
- Bộ so sánh điện áp(Voltage Comparator)
- Các module Capture/ Compare/ PWM
- MSSP Peripheral dựng cho các giao tiếp I2C, SPI
- Bộ nhớ nội EPROM – có thể ghi/xoá tới 1 triệu lần
- Module Điều khiển động cơ, đọc encoder
- Hỗ trợ giao tiếp USB, CAN, LIN, IrDA
- Một số dòng có tích hợp bộ RF(PIC16f639, và RFPIC)
- KEELOQ mờ hoá và giải mờ
- DSP những tính năng xử lý tín hiệu số(dsPIC) Đặc điểm thực thi tốc độ cao của RISC CPU của họ vi diều khiển PIC16F87XA
- Tất cả các lệnh là 1 chu kỳ ngoại trừ chương trình con là 2 chu kỳ
+ DC-20MHz ngõ vào xung clock
+ DC-200ns chu kỳ lệnh
- Độ rộng của bộ nhớ chương trình Flash là 8K x 14word, của bộ nhớ dữ liệu(RAM) là 368 x 8bytes, của bộ nhớ dữ liệu là EPROM(RAM) là 256x8 bytes
- Hai module Capture, Compare, PWM
+ Capture có độ rộng 16 bit, độ phân giải 12.5ns + Compare có độ rộng 16 bit, độ phân giải 200ns + Độ phân giải lớn nhất của PWM là 10bit
- Có 13 ngõ I/O có thể điều khiển trực tiếp
- Dòng vào và dòng ra lớn :
+ 25mA dòng vào cho mỗi chân + 20mA dòng ra cho mỗi chân
Các dòng PIC và cách lựa chọn vi điều khiển PIC:
- PIC 12xxxx: độ dài lệnh 12 bit
- PIC 16xxxx: độ dài lệnh 14 bit
- PIC 18xxxx: độ dài lệnh 16 bit
- C: PIC có bộ nhớ EPROM(chỉ có 16C84 là EEPROM)
- F: PIC có bộ nhớ FLASH
- LF: PIC có bộ nhớ FLASH hoạt động ở mức điện áp thấp
- LV: tương tự LF, đây là ký hiệu cũ
Bên cạnh đó có một số ký hiệu xxFxxxx là bộ nhớ EEPROM, nếu có thêm chữ A ở cuối là bộ nhớ FLASH(ví dụ 16F877 có bộ nhớ EEPROM, còn 16F877A có bộ nhớ là FLASH)
Hình 1.1.a Vi điều khiền 18F4550 dạng PDIP 40 chân
Hình 1.1.b Vi điều khiền 18F4550 dạng TQFP 44 chân
Chương trình là sự tích hợp của 3 trình biên dich riêng biết cho 3 dòng
‐ PCB cho dòng PIC 12‐bit opcodes
‐ PCM cho dòng PIC 14‐bit opcodes
‐ PCH cho dòng PIC 16 và 18‐bit
Tất cả 3 trình biên dịch được tích hợp lại vào trong một chương trình bao gồm cả trình soạn thảo và biên dịch là CCS
Giống như nhiều trình biên dịch C khác cho PIC, CCS giúp cho người sử dụng nắm bắt nhanh được vi điều khiển PIC và sử dụng PIC trong các dự án Các chương trình điều khiển sẽ được thực hiện nhanh chóng và đạt hiệu quả cao thông qua việc sử dụng ngôn ngữ lạp trình cấp cao – Ngôn ngữ C
+ Bước 1: Khởi động chương trình làm việc PIC C Compiler Từ giao diện chương trình chọn Project ‐> New ‐> PIC Wizard
+ Bước 2: Tạo một thư mục mới, vào thư mục đó và lưu tên files cần tạo
+ Bước 3: Thiết lập các thuộc tính của Project
Trên cửa sổ New Project hiện ra Sổ này bao gồm nhiều Tab, mỗi Tab mô tả về một vài tính năng của con PIC Ta sẽ chọn tính năng sử dụng tại các Tab tương ứng Các mục chọn này chính là đề cập đến các tính năng của một con PIC, tùy theo từng loại mà sẽ có các Tab tương ứng Đối với từng dự án khác nhau, khi sử dụng tính năng nào ta sẽ chọn mục đó
Tab General cho phép ta lựa chọn loại PIC mà ta sử dụng và một số lựa chọn khác như chọn tần số thạch anh dao động, thiết lập các bit
CONFIG nhằm thiết lập chế độ hoạt động cho PIC
Device: Liệt kê danh sách các loại PIC 12F, 16F, 18F… Ta sẽ chọn tên Vi điều khiển PIC mà ta sử dụng trong dự án Lấy ví dụ chọn PIC16F877A
Oscilator Frequency: Tần số thạch anh ta sử dụng, chọn 20 MHz(tùy từng loại)
Fuses: Thiết lập các bit Config như: Chế độ dao động(HS, RC, Internal), chế độ bảo vệ Code, Brownout detected…
Chọn kiểu con trỏ RAM là 16‐bit hay 8‐bit
Tab Communications liệt kê các giao tiếp nối tiếp mà một con PIC hỗ trợ, thường là RS232 và I2C, cùng với các lựa chọn để thiết lập chế độ hoạt động cho từng loại giao tiếp
Giao tiếp RS232: Mỗi một Vi điều khiển PIC hỗ trợ một cổng truyền thông RS232 chuẩn Tab này cho phép ta lựa chọn chân Rx, Tx, tốc độ
Baud, Data bit, Bit Parity…
Giao tiếp I2C: Để sử dụng I2C ta tích vào nút chọn Use I2C, khi đó ta có các lựa chọn: Chân SDA, SCL, Tốc độ truyền(Fast ‐ Slow), chế độ
Master hay Slave, địa chỉ cho Salve
Tab này liệt kê cho người dùng các lựa chọn đối với giao tiếp nối tiếp SPI, chuẩn giao tiếp tốc độ cao mà PIC hỗ trợ về phần cứng
Liệt kê các bộ đếm/định thời mà các con PIC dòng Mid‐range có: Timer0, timer1, timer2, WDT…
Liệt kê các lựa chọn cho bộ chuyển đổi tương tự/số(ADC) của PIC Tùy vào từng IC cụ thể mà có các lựa chọn khác nhau, bao gồm:
‐ Lựa chọn cổng vào tương tự
‐ Chọn chân điện áp lấy mẫu(Vref)
‐ Chọn độ phân giải: 8‐bit = 0 ~ 255 hay 10‐bit = 0~1023
‐ Nguồn xung đồng hồ cho bộ ADC(trong hay ngoài), từ đó mà ta có được tốc độ lấy mẫu, thường ta chọn làinternal 2‐6 us
‐ Khi không sử dụng bộ ADC ta chọn none
Tab này cho phép ta thiết lập các thông số cho các bộ Capture/ Comparator / PWM
Tab Interrupts và Tab Driver
Tab Drivers được dùng để lựa chọn những ngoại vi mà trình dịch đã hỗ trợ các hàm giao tiếp
+ Bước 4: Kết thúc tạo Project
Sau các bước chọn trên, ta nhấn OK để kết thúc quả trình tạo một Project trong CCS, một Files ten_project.c được tạo ra, chứa những khai báo cần thiết cho PIC trong một Files ten_project.h
Người học sử dụng máy tính thực hành tạo các Project theo yêu cầu của người hướng dẫn
Tần số thạch anh: 20MHz (chế độ tần số cao HS)
Folder lưu trữ: ổ D > DTCN > PIC
+ Thực hiện đúng trình tự các bước
+ Các file project được lưu cùng 1 thư mục
+ Các thuộc tính của Project đúng theo yêu cầu
+ Chọn đúng dòng Pic theo yêu cầu
1 IC PIC 18F4550 dạng DIP có cấu tạo bao nhiêu chân?
2 IC PIC 18F4550 dạng DIP có bao nhiêu Port I/O?
1.3 Lập trình ứng dụng đơn giản
Hệ nhị phân: Hệ số dùng các ký số “0” và “1” để biểu diễn số
Hệ thập phân: Hệ số dùng các ký số từ “0” đến “9” để biểu diễn số
Hệ thập lục phân: Hệ số dùng các ký số “0” đến “9” cùng các ký tự “A” đến “F” để biểu diễn số
Một biến được đặc trưng bởi 2 đặc tính: kiểu biến và tầm vực của biến Biến: = ;
(phần khai báo giá trị có thể có hoặc không)
+ Biến toàn cục là biến xuất hiện khi chương trình thực thi, tồn tại suốt trong thời gian chương trình thực thi chỉ được giải phóng khi chương trình kết thúc
+ Tất cả các hàm trong chương trình đều có thể truy xuất giá trị của biến toàn cục
+ Biến toàn cục được khai báo đầu chương trình trong phần khai báo biến
+ Biến địa phương là biến xuất hiện khi đoạn chương trình chứa biến địa phương thực thi, giải phóng khi đoạn chương trình đó kết thúc
+ Chỉ chương trình con, đoạn chương trình chưa biến địa phương mới được truy xuất biến
+ Biến địa phương được khai báo trong đoạn chương trình, chương trình con
Hằng số trong C có ý nghĩa theo đúng hằng số toán học Có nghĩa là giá trị của hằng số không thay đổi trong suốt quá trình chương trình thực thi Hằng số luôn có tầm vực toàn cục Để khai báo hằng số thuộc một kiểu dữ liệu nào đó ta thêm từ khóa “const” vào phía trước từ khóa quy định kiểu dữ liệu
- Khai báo: const[] = {};
- Khai báo biến mảng: Khai báo tương tự khai báo mảng hằng số Tuy nhiên không có từ khóa const và không cần cài đặt giá trị cho các phần tử của mảng(mặc định giá trị đầu sẽ là giá trị mặc định của kiểu dữ liệu mảng)
Bảng Các cấu trúc lệnh trong C
If(expr) stmt; [else stmt;] If(x= %) x = 1; else x = x+1
While(expr) stmt; While(get_rtccc()!=0)
For(expr1; expr2; expr3) stmt; For(i=1;i