Điện tử đang trở thành một ngành khoa học đa nhiệm vụ. Điện tử đã đáp ứng được những đòi hỏi không ngừng từ các lĩnh vực Công – Nông – Lâm – Ngư nghiệp cho đến các nhu cầu cần thiết trong hoạt động đời sống hằng ngày.
MỤC LỤC LỜI NÓI ĐẦU CHƢƠNG 1: TỔNG QUAN VỀ CÁC PHẦN TỬ 1.1 TỔNG QUAN VỀ PIC 16F877A 1.1.1 Sơ đồ khối bảng mô tả chức chân PIC16F877A 1.1.2 Tổ chức nhớ 10 1.1.2.1 Tổ chức nhớ chƣơng trình .11 1.1.2.2 Tổ chức nhớ liệu .11 1.1.2.3 Các ghi mục đích chung 11 1.1.2.4 Các ghi chức đặc biệt .13 1.1.2.5 Các ghi trạng thái 13 1.1.3 Các cổng PIC 16F877A 14 1.1.3.1 PORTA ghi TRISA 14 1.1.3.2 PORTB ghi TRISB .15 1.1.3.3 PORTC ghi TRISC .17 1.1.3.4 PORTD ghi TRISD 20 1.1.3.5 PORTE ghi TRISE .20 1.1.4 Hoạt động định thời 22 1.1.4.1 Bộ định thời TIMER0 .22 1.1.4.2 Bộ định thời TIMER1 .24 1.1.4.3 Bộ định thời TIMER2 .25 1.2 THIẾT BỊ HIỂN THỊ LCD .27 1.2.1 Hình dáng kích thước 27 1.2.2 Các chân chức 28 1.2.3 Sơ đồ khối HD44780 29 1.2.4 Tập lệnh LCD .33 1.2.5 Đặc tính chân giao tiếp 38 CHƢƠNG 2: THIẾT KẾ HỆ THỐNG ĐIỀU KHIỂN MOTOR .39 2.1 SƠ ĐỒ KHỐI 39 2.2 THIẾT KẾ CÁC KHỐI 39 2.2.1 Bộ xử lý 39 2.2.2 Khối hiển thị 40 2.2.3.Ma trận phím 41 2.2.3.1 Cấu tạo .41 2.2.3.2 nguyên lý quét phím 42 2.2.5 Khối công suất động 43 2.2.5.1 Motor DC 43 2.2.5.2 Mạch cầu H .43 2.2.5 Khối nguồn .44 2.3 SƠ ĐỒ MẠCH HỆ THỐNG 45 CHƢƠNG 3: PHẦN MỀM ĐIỀU KHIỂN 46 3.1 LƢU ĐỒ THUẬT TOÁN .46 3.2 CHƢƠNG TRÌNH 48 KẾT LUẬN 55 TÀI LIỆU THAM KHẢO 57 Đồ án tốt nghiệp LỜI NÓI ĐẦU Ngày nay, với ứng dụng khoa học kỹ thuật tiên tiến, giới ngày thay đổi, văn minh đại Sự phát triển kỹ thuật điện tử tạo hàng loạt thiết bị với đặc điểm bật nhƣ xác cao, tốc đọ nhanh, gọn nhẹ nhữnh yếu tố cần thiết góp phần cho hoạt động ngƣời đạt hiệu cao Điện tử trở thành ngành khoa học đa nhiệm vụ Điện tử đáp ứng đƣợc địi hỏi khơng ngừng từ lĩnh vực Công – Nông – Lâm – Ngƣ nghiệp nhu cầu cần thiết hoạt động đời sống ngày Nhắc đến Điện tử không nhắc đến Kĩ thuật vi điều khiển Kĩ thuật vi điều khiển trở nên quen thuộc ngành kỹ thuật điện tử ứng dụng đời thƣờng Hầu hết dây truyền tự động lớn sản phẩm dân dụng ta thấy xuất vi điều khiển Vi điểu khiển đƣợc nhà sản xuất tích hợp nhiều nhiều tính với ngoại vi đƣợc tích hợp vi điều khiển, với khả xử lý nhiều hoạt động phức tạp, tất đƣợc tích hợp chip nhỏ gọn, có nhiều thuận lợi thiết kế board, board mạch nhỏ gọn đẹp dễ thiết kế nhiều Cùng với phát triển khoa học kỹ thuật phát triển vi điều khiển ứng dụng kỹ thuật Chính em lựa chọn đề tài: THẾT KẾ HỆ THỐNG MỞ CỬA TỰ ĐỘN BẰNG MÃ, vận dụng kiến thức vi điều khiển mà em đƣợc học để hoàn thành đề tài Trong trình làm đồ án tốt nghiệp, hạn chế thời gian, tài liệu trình độ có hạn nên khơng tránh khỏi có thiếu sót Em mong đƣợc đóng góp ý kiến thầy cô hội đồng bạn để đồ án tốt nghiệp em đƣợc hoàn thiện Sinh viên: Phạm Quý Nghiêm – Lớp ĐT1001 Đồ án tốt nghiệp Chƣơng 1: TỔNG QUAN VỀ CÁC PHẦN TỬ 1.1 TỔNG QUAN VỀ PIC 16F877A Thông thƣờng có họ vi điều khiển bit 6811 Motorola, 8051 Intel, z8 Xilog Pic 16 Microchip Technology Mỗi loại có tập lệnh ghi riêng nhất, nên chúng thƣờng khơng tƣơng thích lẫn Ngồi có vi điều khiển 16 bit 32 bit đƣợc sản xuất hãng khác Với tất vi điều khiển khác tiêu chuẩn để lựa chọn là: * Đáp ứng đƣợc nhu cầu tính tốn tốn cách hiệu quả, đầy đủ chức cần thiết thấp mặt giá thành Trong phân tích nhu cầu dự án dựa vi điều khiển phải biết vi điều khiển bit, 16 bit hay 32 bit đáp ứng tốt nhu cầu tốn cách hiệu Những tiêu chuẩn là: - Tốc độ: tốc độ lớn mà vi điều khiển hỗ trợ - Kiểu đóng vỏ: Đóng vỏ kiểu DIP 40 chân hay QFP Đây yêu cầu quan trọng xét không gian, kiểu lắp ráp tạo mẫu thử cho sản phẩm cuối - Công suất tiêu thụ: Điều đặc biệt khắt khe sản phẩm dùng pin, ắc quy - Dung lƣợng nhớ Rom Ram chíp - Số chân vào định thời chíp - Khả dễ dàng nâng cấp cho hiệu suất cao giảm công suất tiêu thụ - Giá thành cho đơn vị: Điều quan trọng định giá thành sản phẩm mà vi điều khiển đƣợc sử dụng *) Có sẵn cơng cụ phát triển phần mềm nhƣ trình biên dịch, trình hợp ngữ gỡ rối Sinh viên: Phạm Quý Nghiêm – Lớp ĐT1001 Đồ án tốt nghiệp *) Nguồn vi điều khiển sẵn có nhiều tin cậy Khả sẵn sàng đáp ứng số lƣợng tƣơng lai Hiện vi điều khiển bit họ 8051 có số lƣợng lớn nhà cung cấp đa dạng nhƣ Intel, Atmel, Philip… Nhƣng mặt tính cơng có thề xem PIC vƣợt trội nhiều so với 89 với nhiều module đƣợc tích hợp sẵn nhƣ ADC10 BIT, PWM 10 BIT, PROM 256 BYTE, COMPARATER, VERF COMPARATER, đặc điểm tất vi điều khiển PIC sử dụng có chuẩn PI tức chuẩn cơng nghiệp thay chuẩn PC (chuẩn dân dụng) Ngồi PIC cịn đƣợc nhiều nhà sản xuất phần mềm tạo ngôn ngữ hỗ trợ cho việc lập trình ngồi ngơn ngữ Asembly cịn sử dụng ngơn ngữ C sử dụng CCSC, HTPIC hay sử dụng Basic có MirkoBasic… cịn nhiều chƣơng trình khác để hỗ trợ cho việc lập trình bên cạnh ngơn ngữ kinh điển asmbler Nên đề tài lựa chọn sử dụng vi điều khiển PIC làm điều khiển chính, PIC16F877A 1.1.1 Sơ đồ khối bảng mô tả chức chân PIC16F877A Hình 1.1 PIC 16F877A Sinh viên: Phạm Quý Nghiêm – Lớp ĐT1001 Đồ án tốt nghiệp Hình 1.2 Sơ đồ khối PIC16F877A Sinh viên: Phạm Quý Nghiêm – Lớp ĐT1001 Đồ án tốt nghiệp Bảng mô tả chức chân PIC16F877A Pin Name DIP Pin# PLCC Pin# QFT Pin# I/O/P Type Buffer Type Description Đầu vào xung dao OSC1/CLKIN 13 14 30 ST/CMOS(4) động thạch anh/ngõ vào xung clock ngoại Đầu xung dao động thạch anh Nối với OSC2/CLKOUT 18 O - thạch anh hay cộng hƣởng chế độ dao động thạch anh.Trong chế độ RC, ngõ chân OSC2 MCLR /Vpp 18 I/P ST Ngõ vào Master Clear(Reset) ngõ vào điện đƣợc lập trình Chân cho phép tín hiệu Reset thiết bị tác động mức thấp RA0/AN0 19 I/O TTL RA1/AN1 20 I/O TTL I/O TTL RA2/AN2/VREF – 21 Sinh viên: Phạm Quý Nghiêm – Lớp ĐT1001 PORTA port vào hai chiều RA0 làm ngõ vào tuơng tự thứ RA1 làm ngõ vào tuơng tự thứ RA2 làm ngõ vào tuơng tự điện áp chuẩn tƣơng tự âm Đồ án tốt nghiệp RA3/AN3/VREF + 22 I/O TTL RA3 làm ngõ vào tuơng tự điện áp chuẩn tƣơng tự dƣơng RA4 làm ngõ vào xung clock cho định thời Timer0 RA4/T0CKI 23 I/O ST RA5/ SS /AN4 24 I/O TTL RB0/INT 33 36 I/O TTL/ST(1) RB1 34 37 I/O TTL RB2 35 38 10 I/O TTL ngắt ngồ RB3 làm ngõ vào điện đƣợc lập trình mức thấp RB3/PGM 36 39 11 I/O TTL RB4 37 41 14 I/O TTL RB5 38 42 15 I/O TTL RB6/PGC 39 43 16 I/O TTL/ST(2) RA5 làm ngõ vào tƣơng tự thứ PORTB chiều port hai RB0 làm chân Interrupt-on-change pin Interrupt-on-change pin Interrupt-on-change pin RB7/PGD 40 44 17 I/O Sinh viên: Phạm Quý Nghiêm – Lớp ĐT1001 TTL/ST(3) In-Crcuit Debugger pin Đồ án tốt nghiệp Serial programming clock Interrupt-on-change pin In-Crcuit Debugger pin Serial programming data PORTC port vào hai chiều RC0/T1OSO/T1C KI RC1/T1OSI/CCP2 15 16 16 18 32 35 I/O I/O ST ST RC0 ngõ vào dao động Timer1 ngõ xung clock cho Timer1 RC1 ngõ vào dao động Timer1 ngõ vào Capture2/ngõ compare2/ngõ PWM2 RC2/CCP1 17 19 36 I/O ST RC3/SCK/SCL 18 20 37 I/O ST RC4/SDI/SDA 23 25 42 I/O ST vào RC2 ngõ vào capture1/ngõ compare1/ngõ vào PWM1 RC3 ngõ vào xung Clock đồng nội tiếp/ngõ hai chế độ SPI I2C RC4 liệu Sinh viên: Phạm Quý Nghiêm – Lớp ĐT1001 Đồ án tốt nghiệp bên SPI(chế độ SPI) liệu I/O(chế độ I C) RC5/SDO RC6/TX/CK 24 25 26 27 43 44 I/O I/O ST ST RC5 liệu ngồi SPI(chế độ SPI) RC6 chân truyền không đồng USART đồng với xung đồng hồ RC7 chân nhận khơng đồng USART đồng với liệu RC7/RX/DT 26 29 I/O ST RD0/PSP0 19 21 38 I/O ST/TTL(3) RD1/PSP1 20 22 39 I/O ST/TTL(3) RD2/PSP2 21 23 40 I/O ST/TTL(3) RD3/PSP3 22 24 41 I/O ST/TTL(3) PORTD port vào hai chiều parallel RD4/PSP4 27 30 I/O ST/TTL(3) RD5/PSP5 28 31 I/O ST/TTL(3) slave port giao tiếp với bus vi xử lý RD6/PSP6 29 32 I/O ST/TTL(3) RD7/PSP7 30 33 I/O ST/TTL(3) PORTE port vào hai chiều RE0/ RD /AN5 25 I/O Sinh viên: Phạm Quý Nghiêm – Lớp ĐT1001 ST/TTL(3) RE0 điều khiển việc đọc parrallel slave port ngoc vào tƣơng tự thứ Đồ án tốt nghiệp 2.2.3.2 ngun lý qt phím Thuật tốn qt phím đƣợc sử dụng lần lƣợt tìm hàng tìm cột (hoặc ngƣợc lại) Khi tìm hàng, hàng đƣợc đặt làm đầu vào,các cột đƣợc đặt làm đầu mức thấp Sau kiểm tra hàng xem có hàng mức thấp hay khơng (có phím bấm gây nối với cột hay không)? Sau xác định đƣợc hàng đặt cột làm đầu vào, hàng vừa tìm đƣợc làm đầu mức thấp Việc kiểm tra đƣợc tiến hành với cột Sau xác định đƣợc hàng cột suy phím đƣợc bấm + Đầu tiên cho hàng mức cột mức + Kiểm tra xem hàng đựoc nhấn (khi nút đƣợc nhấn) tức đựoc nhận tín hiệu từ cột + Nếu mà có hàng đựoc nhấn sau ta lại chuyển giá trị vào hàng đựoc nhấn giá trị vào cột Khi cột lại nhận nhiệm vụ làm tín hiệu vào Nếu mà cột đựoc nhấn (Khi nút đƣợc nhấn) trƣờng hợp cho giá trị tƣơng ứng Ma trận phim 4x4 gồm có 16 phim nhấn, em sử dụng phím nhấn từ 9 làm phím số dùng để nhập mật hay thay đổi mật Hình 2.5 Hình ảnh thƣc ma trận phím Sinh viên: Phạm Quý Nghiêm – Lớp ĐT1001 42 Đồ án tốt nghiệp Các phím A,B,C phím dùng để thiết lập chế độ cài đặt điều khiển cho động hoạt động theo chiều thuận hay ngƣợc 2.2.5 Khối công suất động 2.2.5.1 Motor DC Ở em sử dụng loại đơng DC, nhƣ hình 2.5 Hình 2.6 Động DC 2.2.5.2 Mạch cầu H Mạch cầu H đƣợc gọi mạch cầu H đƣợc cấu tạo transitor Fet Đôi mạch cầu H đƣợc cấu tạo transitor hay Fet Tác dụng transitor Fet van đóng mở dẫn dịng điện từ nguồn xuống tải với cơng suất lớn Tìn hiệu điều khiển van tín hiệu nhỏ (điện áp hay dịng điện) cho dẫn dòng điện áp lớn để cung cấp cho tải Tín hiệu đầu vi điều khiển nhỏ 5V (do điều chế PWM) mà điều khiển động cần dòng điện điện áp lớn Các van điều khiển hay chân điều khiển cần tín hiệu nhỏ (Điện áp hay dịng điện) mở khóa (Transitor) dẫn dịng cho tải Mạch cầu H đảo chiều dịng điện qua tải nên hay đƣợc dùng mạch điều khiển động DC Đối với mạch điều khiển động mạch cầu H đảo chiều động đơn giản Chỉ cần mở khóa van chiều mà muốn Nên đề tài em sử dụng mạch cầu H Transitor đƣợc sử dụng Tip 122 Sinh viên: Phạm Quý Nghiêm – Lớp ĐT1001 43 Đồ án tốt nghiệp Hình 2.7 Sơ đồ nguyên lý mạch cầu H 2.2.5 Khối nguồn Cung cấp nguồn nuôi cho toàn hệ thống Ở ổn áp dùng IC 7805 , 7812 để tạo nguồn +5V cung cấp nguồn cho mạch vi điều khiển IC 7812 để tạo nguồn+12V cấp cấp ổn định cho mạch khuêch đại động Sơ đồ nguyên lý nhƣ hình 2.6 Sinh viên: Phạm Quý Nghiêm – Lớp ĐT1001 44 Đồ án tốt nghiệp Hình 2.8 Sơ đồ nguyên lý ổn áp 2.3 Sơ đồ mạch hệ thống Hình 2.9 Sơ đồ nguyên lý mạch điều khiển Motor Sinh viên: Phạm Quý Nghiêm – Lớp ĐT1001 45 Đồ án tốt nghiệp Chƣơng 3: PHẦN MỀM ĐIỀU KHIỂN 3.1 Lƣu đồ thuật toán Sinh viên: Phạm Quý Nghiêm – Lớp ĐT1001 46 Đồ án tốt nghiệp Lƣu đồ quét phím Sinh viên: Phạm Quý Nghiêm – Lớp ĐT1001 47 Đồ án tốt nghiệp 3.2 Chƣơng trình #include #include #FUSES NOWDT, HS, NOPUT, NOPROTECT, NODEBUG, NOBROWNOUT, NOLVP, NOCPD, NOWRT #use delay(clock=20000000) #include #define Add #define TM 5000 #define TK 1000 //================================================= void Scan(); void OpenM(); void CloseM(); void Setting(); void InputNumber(); int8 A=0,A1=0,A2=0,A3=0,A4=0; int8 B1,B2,B3,B4; //unsigned int8 VarIn, VarOut; int8 State; //int8 Count; int i; void main() { set_tris_D(0xF0); set_tris_C(0x00); lcd_init(); output_C(0x00); delay_ms(100); //write to eeprom if(read_eeprom(Add)!=128) { write_eeprom(Add+1,1); write_eeprom(Add+2,2); write_eeprom(Add+3,3); write_eeprom(Add+4,4); Sinh viên: Phạm Quý Nghiêm – Lớp ĐT1001 48 Đồ án tốt nghiệp } //read from eeprom B1=read_eeprom(Add+1); B2=read_eeprom(Add+2); B3=read_eeprom(Add+3); B4=read_eeprom(Add+4); while(1) { lcd_putcmd(0x80); printf(lcd_putchar,"Auto Open Sys "); lcd_putcmd(0xC0); printf(lcd_putchar," "); delay_ms(TK); Scan(); switch(A) { case 10: lcd_putcmd(0x80); printf(lcd_putchar,"Setting Number "); delay_ms(TK); lcd_putcmd(0x80); printf(lcd_putchar,"Put Old Number "); delay_ms(TK); InputNumber(); if((A1==B1)&&(A2==B2)&&(A3==B3)&&(A4==B4)) { lcd_putcmd(0x80); printf(lcd_putchar,"Put New Number "); lcd_putcmd(0xC0); printf(lcd_putchar," "); Setting(); } break; case 11: lcd_putcmd(0x80); printf(lcd_putchar,"Closing "); CloseM(); break; case 12: lcd_putcmd(0x80); Sinh viên: Phạm Quý Nghiêm – Lớp ĐT1001 49 Đồ án tốt nghiệp printf(lcd_putchar,"Put Num to Open "); delay_ms(TK); InputNumber(); if((A1==B1)&&(A2==B2)&&(A3==B3)&&(A4==B4)) { lcd_putcmd(0x80); printf(lcd_putchar,"Open "); OpenM(); } break; } } } // -void Scan() { while(1) { State=0; output_D(0xF7); delay_us(50); switch(input_D()&0xF0) { case 0x70: A=1; State=1; break; case 0xB0: A=2; State=1; break; case 0xD0: A=3; State=1; break; case 0xE0: A=10; State=1; break; } Sinh viên: Phạm Quý Nghiêm – Lớp ĐT1001 50 Đồ án tốt nghiệp output_D(0xFB); delay_us(50); switch(input_D()&0xF0) { case 0x70: A=4; State=1; break; case 0xB0: A=5; State=1; break; case 0xD0: A=6; State=1; break; case 0xE0: A=11; State=1; break; } output_D(0xFD); delay_us(50); switch(input_D()&0xF0) { case 0x70: A=7; State=1; break; case 0xB0: A=8; State=1; break; case 0xD0: A=9; State=1; break; case 0xE0: A=12; State=1; break; } Sinh viên: Phạm Quý Nghiêm – Lớp ĐT1001 51 Đồ án tốt nghiệp output_D(0xFE); delay_us(50); switch(input_D()&0xF0) { case 0x70: A=14; State=1; break; case 0xB0: A=0; State=1; break; case 0xD0: A=15; State=1; break; case 0xE0: A=13; State=1; break; } if(State) { LCD_putchar(A+0x30); delay_ms(100); break; } } } // -void OpenM() { for(i=0;i