Các chân vào/ra của vi điều khiển PIC 18F4520 mang nhiều chức năng, nó có thể được thiết lập là chân vào/ra dữ liệu hay là các chân chức năng đặc biệt của các bộ ngoại vi, sử dụng các[r]
Trang 1BỘ LAO ĐỘNG THƯƠNG BINH VÀ XÃ HỘI TRƯỜNG CAO ĐẲNG KỸ NGHỆ II KHOA ĐIỆN – ĐIỆN TỬ
ĐỀ CƯƠNG BÀI GIẢNG MODUL:
ĐIỀU KHIỂN HỆ THỐNG CĐTSDVĐK
GVBS: Bùi Ngọc An
TPHCM, tháng 03 năm 2018
Trang 2MỤC LỤC
Chương 1 GIỚI THIỆU VỀ VI ĐIỀU KHIỂN PIC CỦA MICROCHIP
1 Giới thiệu về PIC 4
2 Các loại PIC thông dụng 4
3 Ứng dụng của PIC 5
Chương 2 KIẾN TRÚC PHẦN CỨNG CỦA PIC 18F4520 1 Sơ đồ khối 6
2 Sơ đồ chân 9
3 Tổ chức bộ nhớ 9
4 Khối tạo dao động 13
5 Hoạt động Reset 15
6 Các Port vào / ra 17
Chương 3 PHẦN MỀM MPLAB VÀ TRÌNH DỊCH MCC18 1 Cài đặt MPLAB 29
2 Sử dụng MPLAB 29
3 Trình dịch MCC18 40
Chương 4 HOẠT ĐỘNG VÀO RA 1 Lập Trình xuất 50
2 Lập Trình nhập 50
3 Hoạt động xuất/nhập 51
4 Bài tập ứng dụng 52
Chương 5: HOẠT ĐỘNG ĐỊNH THỜI 1 Giới thiệu 53
2 Timer 0 53
3 Timer 1 60
4 Lập trình với timer 64
Chương 6: LẬP TRÌNH VỚI LCD 1602 1 Khái niệm 69
2 Nguyên lý hoạt động 70
3 Nguyên tắc hiển thị trên LCD 70
4 Ví dụ lập trình điều khiển hiển thị trên LCD 71
Chương 7: HOẠT ĐỘNG NGẮT 1 Khái niệm 75
2 Tổ chức ngắt của PIC 18F4520 75
3 Ngắt ngoài 77
4 Các thanh ghi liên quan 77
5 Lập trình sử dụng ngắt 85
Trang 3Chương 8: MODULE CCP (CAPTURE / COMPARE / PWM)
1 Giới thiệu 91
2 Các thanh ghi liên quan 93
3 Sử dụng các bộ PWM 94
4 Lập trình điều chế độ rộng xung 96
Chương 9: BỘ CHUYỂN ĐỔI TƯƠNG TỰ - SỐ (ADC) 1 Giới thiệu 99
2 Các thanh ghi liên quan 101
3 Điều khiển hoạt động chuyển đổi A/D 104
4 Lập trình sử dụng ADC 111
Chương 10: TRUYỀN THÔNG NỐI TIẾP VÀ GIAO TIẾP GIỮA 2 VI ĐIỀU KHIỂN PIC 1 Giới thiệu 116
2 Các thanh ghi liên quan 118
3 Tốc độ baud 121
4 Ngắt USART 128
5 Lập trình sử dụng USART 131
Trang 4Chương 1
GIỚI THIỆU VỀ VI ĐIỀU KHIỂN PIC CỦA MICROCHIP
1 GIỚI THIỆU VỀ PIC
PIC là viết tắt của “Programable Intelligent Computer”, có thể tạm dịch là “máy tính thông minh khảtrình” do hãng General Instrument đặt tên cho vi điều khiển đầu tiên của họ PIC1650 được thiết kế để dùng làm các thiết bị ngoại vi cho vi điều khiển CP1600 Vi điều khiển này sau đó được nghiên cứu phát triển thêm và
từ đó hình thành nên dòng vi điều khiển PIC ngày nay
Hình 1.1 Vi điều khiển PIC
2 CÁC LOẠI PIC THÔNG DỤNG
Các kí hiệu của vi điều khiển PIC:
PIC12xxxx: độ dài lệnh 12 bit
PIC16xxxx: độ dài lệnh 14 bit
PIC18xxxx: độ 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 ở điện áp thấp LV: như LF, đây là kí hiệu cũ
Bên cạnh đó một số vi điều khiển có kí hiệu xxFxxx là EEPROM, nếu có chữ A
ở cuối là flash (ví dụ PIC16F877 là EEPROM, còn PIC16F877A là flash)
Ngoài ra còn có thêm dòng vi điều khiển PIC mới là dsPIC
Trang 5Ở Việt Nam phổ biến nhất là họ vi điều khiển PIC do hãng Microchip sản xuất Cách lựa chọn một vi điều khiển PIC phù hợp: Trước hết cần chú ý đến sốchân của vi điều khiển cần thiết cho ứng dụng Có nhiều vi điều khiển PIC với số lượng chân khác nhau, thậm chí có vi điều khiển chỉ có 8 chân, ngoài ra còn có vi điều khiển 28, 40, 44, … chân Cần chọn vi điều khiển PIC có bộ nhớ flash để có thể nạp xóa chương trình được nhiều lần hơn, tiếp theo cần chú ý đến các khối chức năng được tích hợp sẵn trong vi điều khiển, các chuẩn giao tiếp bên trong và sau cùng cần chú ý đến bộ nhớ chương trình mà vi điều khiển cho phép
3 ỨNG DỤNG CỦA PIC
Ngày nay PIC được ứng dụng rất rộng rãi trong thực tế, từ những vật dụng đơn giản cho đến những hệ thống điều khiển phức tạp trong công nghiệp
Hình 1.2 Ứng dụng PIC
Trang 6Chương 2 KIẾN TRÚC PHẦN CỨNG CỦA PIC 18F4520
1 SƠ ĐỒ KHỐI
Hình 2.1 Sơ đồ khối của PIC18F4520
Các khối chính trên PIC 18F4520 bao gồm:
Bộ xử lý trung tâm CPU (Central Processing Unit):
Trang 7 Tần số làm việc tối đa 40 MHz, sản xuất bằng công nghệ nanoWatt
Thiết kế theo kiến trúc Havard, tập lệnh RISC
Sử dụng kỹ thuật đường ống lệnh (Instruction Pipelining)
Đơn vị logic học (ALU: Arithmetic Logical Unit)
Thanh ghi làm việc (WREG: work register )
Bộ nhân bằng phần cứng (8x8 Multiply), kết quả được chứa trong cặp thanh ghi (PRODH, PRODL)
Thanh ghi đếm chương trình (PC: Program Counter) có 21 bit bao gồm thanh ghi PCL(PC-Low) chứa các bit từ 7-0, thanh ghi PCH (PC-High) chứa các bit từ 15-8, thanh ghi PCU (PC-upper) chứa các bit từ 20-16
Thanh ghi con trỏ ngăn xếp STKPTR (Stack Pointer)
31 mức ngăn xếp (31 level stack)
Thanh ghi lựa chọn băng (BSR: Bank Select Register)
Thanh ghi con trỏ dữ liệu gián tiếp FSR (Indirect Data Memory Address Pointer)
Bộ nhớ (Memory):
Bộ nhớ chương trình (Program Memory) bao gồm 32 Kbytes bộ nhớ ROM (Read-only Memory) kiểu Flash
Bộ nhớ dữ liệu (Data Memory) bao gồm 1536 byte SRAM (Static Random Access Memory), 256 byte EEPROM
Bộ phát xung hệ thống (Oscillator): Nguồn xung từ bên ngoài hoặc từ bộ phát xung của hệ thống sẽ được đi qua bộ nhân hoặc chia tần số để lựa chọn lấy tần số thích hợp để làm xung hệ thống
Nguồn xung chính được đưa vào chip qua chân OSC1 và OSC2
Nguồn xung phụ được đưa vào chip qua các chân T1OSI, T1OSO
Bộ phát xung nội INTRC tần số 31kHz
Bộ phát xung nội trên chíp tần số 8 MHz
Watchdog Timer (WDT): là một bộ timer có chức năng đặc biệt, khi bị tràn sẽ khởi động lại hệ thống Thời gian khởi động lại hệ thống có thể lựa chọn được
từ 4ms đến 131,072s WDT sẽ được khởi tạo ở đầu chương trình, trong thân chương trình sẽ được “chèn” các lệnh reset WDT sao cho khi vi điều khiển thực hiện các đúng tuần tự các lệnh, WDT chưa bị tràn Mục đích chính của việc sử dụng WDT là tránh cho vi điều khiển vô tình thực hiện phải một vòng lặp chết (dead loop) mà không thoát ra được
Bộ nạp chương trình: Bộ nạp chương trình nối tiếp trên chip (Single-Supply In-Circuit Serial Programming) sẽ giúp nạp chương trình từ mạch nạp vào bộ nhớ ROM qua các chân PGM, PGC và PGD
Trang 8 Bộ Debugger (In-Circuit Debugger): Mạch Debugger trên chíp sẽ giúp người lập trình kiểm soát lỗi chương trình bằng cách cho vi điều khiển hoạt động ở chế độ chạy từng lệnh, nhóm lệnh hay toàn bộ chương trình
Khối phát hiện tín hiệu reset: Mạch phát hiện tín hiệu reset có khả năng phát hiện 03 nguồn reset:
Reset từ chân MCLR
Reset khi bật nguồn (POR: Power-on Reset)
Reset khi nguồn yếu (BOR : Brown-out Reset)
Khối quản lý lỗi bộ phát xung (Fail-Safe Clock Monitor): Khối này được sự dụng để quản lý an toàn bộ phát xung hệ thống
Khối định thời khởi động bộ phát xung (Oscillator Start-up Timer): Khối này
sử dụng để tạo thời gian trễ chờ cho bộ phát xung ổn định
Thiết bị ngoại vi (Peripheral): PIC18f4520 được tích hợp các thiết bị ngoại vi sau:
Bộ phát hiện điện áp cao/thấp HLVD(High/low-Voltage Detect)
Bộ nhớ lưu dữ liệu khi tắt nguồn EEPROM
04 bộ đếm, định thời 16 bit: Timer0, Timer1, Timer2 và Timer3
01 bộ so sánh tín hiệu tương tự (Comparator)
02 bộ CCP1, CCP2 (Capture, Compare, PWM : Chụp, So sánh, xung Pwm);
01 bộ ECCP (Enhanced CCP)
01 cổng truyền thông nối tiếp đồng bộ (Master Synchronous Serial Port) có thể hoạt động được ở chế độ SPI hoặc I2C
01 cổng truyền thông nối tiếp đồng bộ/không đồng bộ tăng EUSART (Enhanced Universal Synchronous Asynchronous Receiver Transmitter), giúp vi điều khiển PIC có thể giao tiếp với nhau hoặc giao tiếp với cổng COM của máy tính
13 kênh biến đổi tương tự - số (ADC) độ phân giải 10 bit
Khối giao tiếp vào/ra số: Vi điều khiển PIC18F4520 có 5 cổng vào/ra A, B, C,
D và E Mỗi cổng có một thanh ghi đệm dữ liệu tương ứng là PORTA, PORTB, PORTC, PORTD và PORTE, các thanh ghi này được định địa chỉ theo byte và theo bit
PORTA : RA7 - RA0
PORTB : RB7 - RB0
PORTC : RC7 - RC0
PORTD : RD3 - RD0
PORTE : RE3-RE0
Trang 92 SƠ ĐỒ CHÂN
Sơ đồ chân dạng PDIP (Lead Plastic Dual In-Line Package)
Hình 2.2 Sơ đồ chân PIC 18F4520 dạng PDIP
3 TỔ CHỨC BỘ NHỚ
Bộ nhớ của vi điều khiển PIC 18F4520 bao gồm 3 loại:
Bộ nhớ chương trình (Program memory)
Bộ nhớ dữ liệu RAM (Data RAM)
Bộ nhớ của PIC 18F4520 được thiết kế theo kiến trúc Havard, bộ nhớ chương trình và bộ nhớ dữ liệu được thiết kế riêng đường Bus, cho phép CPU truy cập cùng lúc tới bộ nhớ chương trình và bộ nhớ dữ liệu Bộ nhớ dữ liệu EEPROM được sử dụng để lưu trữ dữ liệu khi mất điện
Bộ nhớ chương trình
Thanh ghi đếm chương trình PC (Program Counter) của PIC 18F4520 có 21 bit nên có thể địa chỉ hóa 2 Mbyte bộ nhớ chương trình Bộ nhớ Flash của PIC 18F4520 có dung lượng 32 Kbyte nên chứa được 16384 lệnh từ đơn (single-word instructions), với dải địa chỉ từ 0000h đến 7FFFh Nếu đọc ở vùng nhớ ngoài 32Kbyte của PIC 18F4520 và trong khoảng 2 Mbyte mà nó có thể quản lý thì giá trị dữ liệu trả về sẽ là “0” PIC 18F4520 có 31 mức ngăn xếp
Trang 10Vector Reset của PIC 18F4520 được đặt ở địa chỉ 0000h, khi reset nội dung của thanh ghi đếm chương trình PC sẽ được xóa về 0 Các thanh ghi của PIC 18F4520
sẽ được tải lại các giá trị mặc định
Hình 2.3 Sơ đồ tổ chức bộ nhớ chương trình và ngăn xếp
Vector ngắt ưu tiên cao (High-Priority Interrupt Vector) được đặt ở địa chỉ 0008h, vector ngắt ưu tiên thấp (Low-Priority Interrupt Vector) được đặt ở địa chỉ 0018h Thanh ghi đếm chương trình PC 21 bit chứa trong 3 thanh ghi 8 bit riêng biệt, 8 bit thấp chứa trong thanh ghi PCL, 8 bit tiếp theo chứa trong thanh ghi PCH, 5 bit cao chứa trong thanh thi PCU Thanh ghi PCH và PCU không cho phép truy cập trực tiếp mà phải truy cập thông qua hai thanh ghi PCLATH và PCLATU tương ứng PIC 18F4520 đươc thiết kế theo kỹ thuật đường ống lệnh (Instruction Pipelining) nên việc thực hiện lệnh PC-2 và đọc mã lệnh PC được diễn ra cũng một thời điểm
Trang 11Hình 2.4 Giản đồ xung đọc mã lệnh và thực hiện lệnh của PIC 18F4520
Bộ nhớ dữ liệu RAM
Hình 2.5 Sơ đồ tổ chức bộ nhớ dữ liệu RAM
Bộ nhớ dữ liệu RAM 1536 byte (SRAM) được chia thành 2 vùng chức năng riêng biệt, vùng RAM đa dụng GPR (General Purpose Registers) sử dụng để chứa dữ
Trang 12liệu, vùng các thanh ghi chức năng đặc biệt SFR (Special Function Registers) chứa các thanh ghi chức năng điều khiển ngoại vi và CPU
Bộ nhớ dữ liệu RAM được chia thành 16 Bank từ Bank 0 đến Bank15, vùng RAM
đa dụng nằm từ Bank 0 đến Bank 2, các thanh ghi SFR nằm ở Bank 15 Vùng địa chỉ từ 300h đến EFFh không được sử dụng, đọc ở vùng này sẽ trả về giá tri 00h Bốn bit thấp của thanh ghi lựa chọn băng BSR (Bank Select Register) được sử dụng để lựa chọn truy cập băng
Hình 2.6 Phân bổ địa chỉ của các thanh ghi chức năng đặc biệt SFR
Bộ nhớ dữ liệu EEPROM
Trang 13Bộ nhớ dữ liệu EEPROM của PIC 18F4520 là bộ nhớ mảng không bị mất dữ liệu khi mất điện, độc lập với bộ nhớ chương trình và bộ nhớ dữ liệu RAM, được sử dụng để lưu trữ dữ liệu lâu dài Nó có thể ghi/đọc được 1.000.000 lần, dữ liệu có thể lưu trữ trong bộ nhớ 100 năm
4 KHỐI TẠO DAO ĐỘNG
PIC 18F4520 có thể hoạt động ở một trong 10 chế độ tạo dao động khác nhau Việc lựa chọn các chế độ tạo dao động nhờ các bit FOSC3:FOSC0 trong thanh ghi CONFIG1H
Hình 2.7 Sơ đồ khối bộ tạo dao động trên PIC 18F4520
Các chế độ tạo dao động:
LP (Low-Power Crystal) nguồn xung thạch anh ngoài, nguồn thấp
XT (Crystal/Resonator) thạch anh/bộ cộng hưởng bên ngoài
HS (High-Speed Crystal/Resonator) thạch anh/bộ cộng hưởng bên ngoài tốc độ cao
HSPLL nhân 4 lần tần số HS bằng vòng khóa pha (Phase Locked Loop)
RC (External Resistor/Capacitor) tạo dao động bằng mạch RC bên ngoài, phát xung FOSC/4 ra chân RA6
RCIO tạo dao động bằng mạch RC ngoài, vào/ra trên chân RA6
INTIO1 bộ tạo dao động nội, phát xung FOSC/4 ra chân RA6, vào/ra trên chân RA7
INTIO2 bộ tạo dao động nội, vào/ra trên chân RA6 và RA7
EC bộ phát xung ngoài, phát xung FOSC/4 ra chân RA6
Trang 14 ECIO bộ phát xung ngoài, vào/ra trên chân RA6
Tạo dao động bằng thạch anh ngoài (Crystal/ Ceramic Resonator)
Trong chế độ tạo dao động LP, XT, HS, HSPLL sử dụng thạch anh (Crystal) chưa
có tụ điện hoặc mạch cộng hưởng thạch anh bọc gốm đã có tụ điện (Ceramic Resonator) Ở các chế độ này bộ tạo dao động kết nối với vi điều khiển PIC 18F4520 qua hai chân OSC1 và OSC2
- Sơ đồ kết nối giữa vi điều khiển với bộ phát xung ngoài:
Hình 2.8 Sơ đồ kết nối với bộ dao động thạch anh/mạch cộng hưởng ngoài
- Lựa chọn giá trị tụ điện khi sử dụng mạch cộng hưởng thạch anh bọc gốm
Bảng 2.1 Lựa chọn giá trị tụ điện khi sử dụng Ceramic Resonator
- Lựa chọn giá trị tụ điện khi sử dụng thạch anh chưa có tụ điện (Crystal)
Bảng 2.2 Lựa chọn tụ điện khi sử dụng thạch anh (Crystal)
Nguồn xung ngoài (External Clock)
Trang 15Chế độ EC và ECIO sử dụng nguồn xung ngoài làm xung hệ thống và được nối qua cổng NOT trước khi đưa vào chân OSC1/CLKI
- Chế độ nguồn xung ngoài EC (External Clock), nguồn xung được lấy từ bên ngoài nối qua cổng NOT trước khi đưa vào OSC1/CLKI và chân OSC2/CLKO phát ra tần số bằng ¼ tần số đầu vào
Hình 2.9 Chế độ dao động EC
- Chế độ nguồn xung ngoài ECIO (External Clock Input Output), nguồn xung được lấy từ bên ngoài nối qua cổng NOT trước khi đưa vào OSC1/CLKI và chân OSC2/CLKO là chân vào/ra RA6
Hình 2.10 Chế độ dao động ECIO
5 HOẠT ĐỘNG RESET
Vi điều khiển PIC 18F4520 có 8 nguồn Reset:
Reset do bật nguồn POR (Power-on Reset)
Reset từ chân MCLR, sử dụng trong quá trình hoạt động bình thường
Reset từ chân MCLR, sử dụng trong chế độ quản lý nguồn
Reset do Watchdog Timer (WDT)
Reset do sụt điện áp nguồn BOR (Brown-out Reset)
Reset bằng lệnh RESET
Reset do đầy ngăn xếp (Stack Full Reset)
Reset do rỗng ngăn xếp (Stack Underflow Reset)
Trang 16Hình 2.11 Mô tả các nguồn Reset của PIC 18F4520
a Reset từ chân MCLR
Nguồn reset MCLR đươc nối từ mạch reset bên ngoài qua chân MCLR/RE3 Nếu bit MCLRE trong thanh ghi CONFIG3H được đặt bằng 1 thì chân MCLR/RE3 là chân reset, đặt MCLRE = “0” chân MCLRE là chân vào/ra của PORTE Khi có mức điện áp thấp được đặt lên chân MCLR hệ thống sẽ thực hiện reset
Hình 2.12 Mạch reset ngoài MCLR
b Reset do bật nguồn POR (Power-on Reset)
Trang 17Khi nguồn được cấp vào chân VDD, khối reset POR sẽ phát hiện sườn dương trên chân VDD sau đó phát tín hiệu reset vi điều khiển Bit POR trong thanh ghi RCON
sẽ báo trạng thái của reset POR, POR = ‘1’ là không phát hiện tín hiệu reset, POR=
‘0’ là phát hiện tín hiệu reset POR
Giá trị linh kiện: R < 40 kΩ; R1 >= 1KΩ
Hình 2.13 Mạch reset do bật nguồn POR
6 CÁC PORT VÀO/RA
Vi điều khiển PIC 18F4520 có 36 chân vào/ra được chia thành 5 cổng là PORTA, PORTB, PORTC, PORTD có 8 chân và PORTE có 4 chân Các chân vào/ra của
vi điều khiển PIC 18F4520 mang nhiều chức năng, nó có thể được thiết lập là chân vào/ra dữ liệu hay là các chân chức năng đặc biệt của các bộ ngoại vi, sử dụng các thanh ghi điều khiển của ngoại vi để lựa chọn chức năng cho các chân Mỗi cổng vào/ra của vi điều khiển PIC 18F4520 có 3 thanh ghi để điểu khiển hoạt động:
Thanh ghi PORT là thanh ghi dữ liệu, được định địa chỉ theo byte và theo bit, sử dụng để đệm đọc/ghi dữ liệu trên các cổng
Thanh ghi LAT là thanh ghi chốt dữ liệu đầu ra (bằng ‘1’ đầu ra chốt mức
1, bằng ‘0’ đầu ra chốt mức 0)
Thanh ghi TRIS là thanh ghi lựa chọn hướng dữ liệu (bằng ‘0’ chiều ra, bằng ‘1’ chiều vào)
6.1 Cấu trúc chung của một chân vào/ra
Hình 2.14 thể hiện cấu trúc chung của một chân vào/ra Trong đó việc xác định chân vào hay ra do các bit cụ thể quy định