CHƯƠNG 1: TỔNG QUAN VỀ THIẾT BỊ 1.1 Vi điều khiển PIC18F4520 Vi điều khiển Pic18F4520 có các đặc điểm cơ bản: - Sử dụng công nghệ nanoWatl: hiệu năng cao, tiêu thụ năng lượng ít - Kiến trúc RISC • 75 lệnh mạnh, hầu hết các lệnh thực hiện trong bốn chu kì xung. • Tốc độ thực hiện lên tới 10 triệu lệnh trong 1s với tần số 40Mhz • Có bộ nhân cứng. - I/O và các kiểu đóng gói • 32 đường I/O khả trình • Đóng gói 40-pin PDIP, 44-lead TQFP, và 44-pad MLF 1.1 Sơ đồ khối Các khối chính trên PIC 18f4520 gồm: ➢ Bộ xử lý trung tâm CPU (central Processing Unit): • Tần số làm việc tối đa 40MHz, sản xuất bằng công nghệ Nano Watt. • Thiết kế theo cấu trúc Havard, tập lệnh RISC.
• Sử dụng kĩ thuật đường ống lệnh (Intruction Pipelining). • Đơn vị logic học (ALU: Arithmetic Logical Unit). • Thanh ghi làm việc (WREG: work regster). • 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 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 CPU (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 chon băng (BSR: Bank select Register).
Downloaded by Lan Nguyen (tailieuso.com) lOMoARcPSD|38784156 7 ➢ 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.1 Sơ đồ khối PIC 18F4520 Downloaded by Lan Nguyen (tailieuso.com) lOMoARcPSD|38784156 8 ➢ Bộ phát Xung hệ thống (Oscillator): Nguồn xung từ bên ngoài hoặc từ bộ phát xung hệ thống sẽ đ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 va OSC 2 • Nguồn xung phụ được đưa vào chíp qua chân T1OSI, T1OSO. ➢ Watchdog Timer (WDT): WDT là một bộ timer có chức năng đặc biệt. Nếu được “cho phép” WDT sẽ và khi tràn sẽ khởi động lại hệ thống.
Mục đích chính của việc sử dụng WDT là tránh cho vi điều khiển thực hiện phải một vòng lặp chết (dead loop) mà không thoát ra được. Khi đó, do không thực hiện được các lệnh reset WDT nên MC tràn, tựn động reset, thoát khỏi tình trạng “bị treo” trong vòng lặp chết. ➢ 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ạnh nạp vào bộ nhớ ROM qua các chân PGM, PGC và PGD. ➢ Bộ Debuger (In-Circuit Debugger): Mạch Debugger trên chip 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 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):PIC 18f4520 đượ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). Downloaded by Lan Nguyen (tailieuso.com) lOMoARcPSD|38784156 9 • 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, 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 12C. • 01 cổng truyền thông nối tiếp đồng bộ//không đồng bộ tăng EUSART (Enhanced Universal Synchoronous 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 theo địa chỉ byte theo bit. • PORTA: RA7-RA0. • PORTB: RB7-RB0. • PORTC: RC7-RC0.
• PORTD: RD3-RD0. • PORTE: RE3-RE0.2 Sơ đồ chân • Sơ đồ chân dạng PDIP (Lead Plastic Dual In-Line Package) hai hàng chân cắm 2 bên. Downloaded by Lan Nguyen (tailieuso.com) lOMoARcPSD|38784156 10 Hình 1.2 Sơ đồ chân PIC 18F4520 dạng PDIP 1.3 Ngôn ngữ lập trình và trình dịch a) Khung một chương trình viết cho vi điều khiển. //khai báo các thư viện, ví dụ: #include <P18f4520.h> //Cấu hình cho vi điều khiển, ví dụ: #pragma config OSC = HS #pragma config MCLRE = ON #pragma config WDT = OFF /*khai báo biến số,hằng số,cấu trúc,chương trình con, ví dụ:*/ int x; char m[10]; Downloaded by Lan Nguyen (tailieuso.com) lOMoARcPSD|38784156 11 void high_isr (void); //viết các chương trình con, ví dụ: void high_isr (void) { //các câu lệnh } void main (void) { //các câu lệnh } b) Hằng số.
Một hằng số thông thường được định nghĩa bởi từ khoá const: Ví dụ: const unsigned int c = 100; const unsigned char tens[] = { 1, 10, 100, 1000 }; Hằng số trong ROM được định nghĩa bởi từ khoá rom: unsigned char rom coolant_temp = 0x02 ; c) Các định danh phần cứng. Người lập trình có thể định nghĩa các định danh phần cứng bằng cú pháp #define. Ví dụ: #define contact PORTAbits.RA5 //Chân RA5 của PORTA được gán tên contact. #define LED PORTAbits.RA4 //Chân RA4 của PORTA được gán tên LED .…19 if(!contact) LED=1; //đọc vào, nếu contact (RA5)=0 xuất ra LED (RA4)=1 else LED=0 //và ngược lại d) Khai báo và sử dụng hàm Downloaded by Lan Nguyen (tailieuso.com) lOMoARcPSD|38784156 12 Cách khai báo một hàm: [giá trị trả về] [tên hàm(các đối số)]; Ví dụ: int cong(int a,int b); //khai báo một hàm tên “cong” với 2 đối số là a,b //hàm trả về kiểu int void delay(void); //hàm không đối cũng không trả về giá trị Ví dụ: Chương trình có dùng hàm: #include<P18f4520.h> void delay_second (int d); void delay_second(int d) { int i; for(i=0;i<d;i++) Delay10KTCYx(200); //trễ 1 giây (thạch anh 8Hhz) } void main() { while(1) { PORTB=0x00; delay_second (6); //gọi hàm với đối số d=6, trễ 6 giây PORTB=0xFF; delay_second (6); } } 1.2 Màn hình LCD16x2 Ngày nay, thiết bị hiển thị LCD 16x2 (Liquid Crystal Display) được sử dụng trong rất nhiều các ứng dụng của Vi điều khiển.
LCD 16x2 có rất nhiều Downloaded by Lan Nguyen (tailieuso.com) lOMoARcPSD|38784156 13 ưu điểm so với các dạng hiển thị khác như: khả năng hiển thị kí tự đa dạng (chữ, số, kí tự đồ họa); dễ dàng đưa vào mạch ứng dụng theo nhiều giao thức giao tiếp khác nhau, tiêu tốn rất ít tài nguyên hệ thống, giá thành rẻ,… 1.1 Thông số kĩ thuật của sản phẩm LCD 16x2: - Điện áp MAX : 7V - Điện áp MIN : - 0,3V - Hoạt động ổn định : 2.5V - Điện áp ra mức cao : > 2.4 - Điện áp ra mức thấp : <0.4V - Dòng điện cấp nguồn : 350uA - 600uA - Nhiệt độ hoạt động : - 30 - 75 độ C 1.2 Chức năng của từng chân LCD 16x2: Hình 1.3 Sơ đồ chân LCD16x2 - Chân số 1 - VSS : chân nối đất cho LCD được nối với GND của mạch điều khiển - Chân số 2 - VDD : chân cấp nguồn cho LCD, được nối với VCC=5V của mạch điều khiển - Chân số 3 - VE : điều chỉnh độ tương phản của LCD - Chân số 4 - RS : chân chọn thanh ghi, được nối với logic "0" hoặc logic "1": + Logic “0”: Bus DB0 - DB7 sẽ nối với thanh ghi lệnh IR của LCD (ở chế độ “ghi” - write) hoặc nối với bộ đếm địa chỉ của LCD (ở chế độ “đọc” - read) + Logic “1”: Bus DB0 - DB7 sẽ nối với thanh ghi dữ liệu bên trong LCD - Chân số 5 - R/W : chân chọn chế độ đọc/ghi (Read/Write), được nối với logic “0” để ghi hoặc nối với logic “1” đọc Downloaded by Lan Nguyen (tailieuso.com) lOMoARcPSD|38784156 14 - Chân số 6 - E : chân cho phép (Enable). Sau khi các tín hiệu được đặt lên bus DB0-DB7, các lệnh chỉ được chấp nhận khi có 1 xung cho phép của chân này như sau: + Ở chế độ ghi: Dữ liệu ở bus sẽ được LCD chuyển vào thanh ghi bên trong khi phát hiện một xung (high-to-low transition) của tín hiệu chân E + Ở chế độ đọc: Dữ liệu sẽ được LCD xuất ra DB0-DB7 khi phát hiện cạnh lên (low-to-high transition) ở chân E và được LCD giữ ở bus đến khi nào chân E xuống mức thấp - Chân số 7 đến 14 - D0 đến D7: 8 đường của bus dữ liệu dùng để trao đổi thông tin với MPU. Có 2 chế độ sử dụng 8 đường bus này là: Chế độ 8 bit (dữ liệu được truyền trên cả 8 đường, với bit MSB là bit DB7) và Chế độ 4 bit (dữ liệu được truyền trên 4 đường từ DB4 tới DB7, bit MSB là DB7) - Chân số 15 - A : nguồn dương cho đèn nền - Chân số 16 - K : nguồn âm cho đèn nền 1.3 Cảm biến thu phát hồng ngoại - Module Thu Phát Hồng Ngoại V1 là một loại cảm biến thông dụng được dùng rất nhiều trong các hệ thống cửa tự động thông minh, cảm biến an toàn của cổng tự động cũng như barrie tự động, cổng co giãn inox tự động đó là cảm biến phát hiện vật cản hồng ngoại hay cảm biến IR ( IR detector ).4 Sơ đồ cảm biến thu phát hồng ngoại Downloaded by Lan Nguyen (tailieuso.1 Thông số kỹ thuật - Module phát hiện vật cản trong khoảng cách từ 2 - 30cm - Góc phát hiện: 35° - Khi phát hiện vật cản, tín hiệu đầu ra OUT ở mức thấp và đèn led màu xanh sáng. - Có thể điều chỉnh khoảng cách bằng biến trở.
Chỉnh chiết áp để tăng khoảng cách theo chiều kim đồng hồ, và ngược lại để giảm khoảng cách. - Cổng ra OUT có thể điều khiển trực tiếp 1 Rơ le 5V hoặc cổng IO của MCU. - Điện áp cung cấp: 3 - 5V DC. - Dòng điện tiêu thụ: 23 mA (3,3V), 43 mA (5V) 1.2 Nguyên lý hoạt động Module Thu Phát Hồng Ngoại V1 được tích hợp bộ phát hồng ngoại và bộ thu hồng ngoại.
Bộ phát hồng ngoại là một diode phát sáng (LED) phát ra các tia hồng ngoại.