1. Trang chủ
  2. » Luận Văn - Báo Cáo

Khảo sát và ứng dụng vi điều khiển pic 16f877a giao tiếp máy tính đồ án tốt nghiệp đại học

65 17 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

ĐỒ ÁN TỐT NGHIỆP GVHD:TH.S LÊ MINH HẢI CHƯƠNG I : CẤU TRÚC PHẦN CỨNG CỦA PIC16F877A 1.1Sơ lược vi điều khiển PIC16F877A: PIC 16F877A dòng PIC phổ biến (đủ mạnh tính năng, 40 chân, nhớ đủ cho hầu hết ứng dụng thông thường) Cấu trúc tổng quát PIC 16F877A sau: - K Flash ROM - 368 Bytes RAM - 256 Bytes EEPROM - ports (A, B, C, D, E) vào với tín hiệu điều khiển độc lập - định thời bits (Timer Timer 2) - Một định thời 16 bits (Timer 1) hoạt động chế độ tiết kiệm lượng (SLEEP MODE) với nguồn xung Clock - CCP( Capture / Compare/ PWM) - biến đổi ADC 10 bits, ngõ vào - so sánh tương tự (Compartor) - định thời giám sát (WatchDog Timer) - Một cổng song song bits với tín hiệu điều khiển - Một cổng nối tiếp - 15 nguồn ngắt - Có chế độ tiết kiệm lượng - Nạp chương trình cổng nối tiếp ICSP - Được chế tạo cơng nghệ CMOS - 35 tập lệnh có độ dài 14 bits - Tần số hoạt động tối đa 20MHz SVTH:ĐẶNG ANH DUY MSSV:20762046 ĐỒ ÁN TỐT NGHIỆP GVHD:TH.S LÊ MINH HẢI Sơ đồ khối PIC16F877A 1.2 Sơ lược chân pic 16F877A PIC16F877A họ vi điều khiển có 40 chân, chân có chức khác nhau.Trong có số chân đa cơng dụng: chân hoạt động đường xuất nhập chân chức đặc biệt dùng để giao tiếp với thiết bị ngoại vi SVTH:ĐẶNG ANH DUY MSSV:20762046 ĐỒ ÁN TỐT NGHIỆP SVTH:ĐẶNG ANH DUY GVHD:TH.S LÊ MINH HẢI MSSV:20762046 ĐỒ ÁN TỐT NGHIỆP GVHD:TH.S LÊ MINH HẢI 1.3 Bộ nhớ liệu: Bảng đồ cấu trúc nhớ liệu P16F877A 1.4 Các ghi chức đặc biệt: 1.4.1 Thanh ghi trạng thái ( Status Register): Thanh ghi trạng thái chứa trạng thái số học ALU, trạng thái Reset bit chọn Bank nhớ liệu SVTH:ĐẶNG ANH DUY MSSV:20762046 ĐỒ ÁN TỐT NGHIỆP GVHD:TH.S LÊ MINH HẢI Bit IRP: Bit lựa chọn bank ghi (Sử dụng cho định địa gián tiếp) = Bank 2, (100h – 1FFh ) = Bank 0, (00h – FFh) Bit – RP1 – RP0: Bit lựa chọn bank ghi (Dùng định điạ trực tiếp) 11 = Bank ( 180h – 1FFh) 10 = Bank (100h – 17Fh) 01 = Bank (80h – FFh) 00 = Bank (00h – 7Fh) Each bank is 128 bytes Bit TO: Bit báo hiệu hoạt động WDT 1: Lệnh xóa WDT Sleep xảy 0: WDT hoạt động Bit PD: Bit báo công suất thấp ( Power down bit) 1: Sau nguồn tăng có lệnh xóa WDT 0: Thực thi lệnh Sleep Bit Z: bit Zero 1: Khi kết phép toán 0: Khi kết phép toán khác Bit DC: Digit Carry 1: Có số nhớ sinh phép cộng phép trừ bit thấp 0: Không có số nhớ sinh Bit C: cờ nhớ (Carry Flag) 1: Có số nhớ sinh phép cộng phép trừ 0: Khơng có số nhớ sinh 1.4.2 Thanh ghi tùy chọn (Option _Reg Register): Thanh ghi tùy chọn chứa bit điều khiển để cấu hình cho chứa như: ngắt ngồi, Timer chức kéo lên Vdd chân Port B, thời gian chờ WDT SVTH:ĐẶNG ANH DUY MSSV:20762046 ĐỒ ÁN TỐT NGHIỆP GVHD:TH.S LÊ MINH HẢI Bit RBPU : Bit cho phép PORTB kéo lên nguồn 1: Không cho phép PORTB kéo lên nguồn 0: Cho phép PORTB kéo lên nguồn Bit INTEDG: Bit lựa chọn cạnh tác động ngắt (INTERRUPT EDGE) 1: Ngắt tác động cạnh lên chân RB0/INT 0: Ngắt tác động cạnh xuống chân RB0/INT Bit T0CS: Bit lựa chọn nguồn xung Clock cho Timer 1: Xung Clock cung cấp nguồn qua chân RA4/T0CKI 0: Xung Clock cung cấp nguồn dao động nội Bit T0SE: Bit lựa chọn cạnh xung clock tác động lên timer 1: Cạnh xuống 0: Cạnh lên Bit PSA: Bit định tốc độ đếm PS2:PS0 tác động lên Timer hay WDT 1: Tốc độ đếm PS2:PS0 tác động lên WDT 0: Tốc độ đếm PS2:PS0 tác động lên Timer Bit 2-0 PS2:PS0: Dùng để lựa chọn tốc độ đếm timer hay WDT 1.4.3 Thanh ghi điều khiển ngắt INTCON (Interrupt Control Register): Bit GIE: Bit cho phép ngắt toàn cục 1: Cho phép ngắt tồn cục 0: Khơng cho phép ngắt Bit PEIE: Bit cho phép ngắt ghi vào EEPROM hoàn tất 1: Cho phép ngắt ghi vào EEPROM hoạt động 0: Không cho phép ngắt ghi vào EEPROM hoạt động Bit TMR0IE: Bit cho phép ngắt timer tràn 1: Cho phép ngắt timer tràn 0: Không cho phép ngắt timer tràn Bit INTE: Bit cho phép ngắt ngoại vi chân RB0/INT 1: Cho phép ngắt ngoại vi 0: Không cho phép ngắt ngoại vi Bit RBIE: Cho phép ngắt trạng thái PORTB thay đổi SVTH:ĐẶNG ANH DUY MSSV:20762046 ĐỒ ÁN TỐT NGHIỆP GVHD:TH.S LÊ MINH HẢI 1: Cho phép 0: Không cho phép Bit TMR0IF: Cờ báo ngắt Timer 1: Timer tràn 0: Timer chưa tràn Bit INTF: Cờ báo ngắt ngồi RB0/INT 1: Có ngắt 0: Khơng xảy ngắt Bit RBIF: Cờ báo ngắt có thay đổi trạng thái PORTB 1: Có thay đổi 0: Khơng có thay đổi xảy PORTB 1.4.4 Thanh ghi cho phép ngắt ngoại vi 1(PIE1 Register): Chú ý: Bit PEIE (INTCON) phải set phép ngắt ngọai vi xảy Bit PSPIE: Bit cho phép ngắt đọc/ ghi Port song song 1: Cho phép 0: Không cho phép Bit ADIE: Bit cho phép ngắt chuyển đổi A/D 1: Cho phép 0: Không cho phép Bit RCIE: Bit cho phép ngắt nhận USART 1: Cho phép 0: Không cho phép Bit TXIE: Bit cho phép ngắt truyền USART 1: Cho phép 0: Không cho phép Bit SSPIE: Bit cho phép ngắt Port nối tiếp đồng 1: Cho phép 0: Không cho phép Bit CCP1IE: Bit cho phép ngắt module CCP1 SVTH:ĐẶNG ANH DUY MSSV:20762046 ĐỒ ÁN TỐT NGHIỆP GVHD:TH.S LÊ MINH HẢI 1: Cho phép ngắt 0: Không cho phép Bit TMR2IE: Bit cho phép ngắt xảy TMR2 ghi PR2 1: Cho phép 0: Không cho phép Bit TMR1IE: Bit cho phép ngắt tràn TMR1 1: Cho phép 0: Không cho phép 1.4.5 Thanh ghi cờ ngắt ngoại vi 1: Bit PSPIF: Cờ ngắt đọc/ ghi Port song song 1: Một hoạt động đọc/ghi diễn (phải xóa phần mềm) 0: Khơng có hoạt động đọc/ghi Bit ADIF: Cờ báo ngắt chuyển đổi A/D 1: Một q trình chuyển đổi A/D hồn thành 0: Chuyển đổi A/D chưa hoàn tất Bit RCIF: Cờ báo ngắt nhận USART 1: Buffer nhận USART đầy 0: Buffer nhận USART trống Bit TXIF: Cờ báo ngắt phát USART 1: Buffer truyền USART trống 0: Buffer truyền USART đầy Bit SSPIF: Cờ báo ngắt port nối tiếp đồng (ngắt SSP) 1: Ngắt SSP xảy phải xóa phần mềm trước trở lại chương trình từ chương trình phục vụ ngắt 0: Khơng có ngắt xảy Bit CCP1IF: Cờ báo ngắt CCP1 Chế độ Capture (Bắt giữ): 1: Một Capture ghi TMR1 xảy ra( phải xóa phần mềm) 0: Không xảy Capture ghi TMR1 Chế độ Compare ( So sánh): SVTH:ĐẶNG ANH DUY MSSV:20762046 ĐỒ ÁN TỐT NGHIỆP GVHD:TH.S LÊ MINH HẢI 1: Khi giá trị so sánh ghi TMR1 thỏa ( phải xóa phần mềm) 0: Khi giá trị so sánh ghi TMR1 không thỏa Chế độ PWM: Không sử dụng chế độ Bit TMR2IF: Cờ báo ngắt xảy giá trị ghi TMR2 ghi PR2 1: Giá trị ghi TMR2 ghi PR2 (phải xóa phần mềm) 0: Giá trị ghi TMR2 chưa ghi PR2 Bit TMR1IF: Cờ báo tràn ghi TMR1 1: Thanh ghi TMR1 tràn (phải xóa bắng phần mềm) 0: Thanh ghi TMR1 chưa tràn 1.4.6 Thanh ghi cho phép ngắt ngoại vi 2: Chú ý: Bit PEIE (INTCON) phải set phép ngắt ngọai vi xảy Bit 7,5,2,1 Unimplemented : read as ‘0’ Bit CMIE: Bit cho phép ngắt so sánh điện 1: Cho phép 0: Không cho phép Bit EEIE: Bit cho phép ngắt ghi EEPROM 1: Cho phép 0: Không cho phép Bit BCLIE: Bit cho phép ngắt xung đột bus 1: Cho phép 0: Không cho phép Bit CCP2IE: Cho phép ngắt module CCP2 1: Cho phép 0: Không cho phép SVTH:ĐẶNG ANH DUY MSSV:20762046 ĐỒ ÁN TỐT NGHIỆP GVHD:TH.S LÊ MINH HẢI 1.4.7 Thanh ghi cờ ngắt ngoại vi 2: Bit 7,5,2,1 Unimplemented : read as ‘0’ Bit CMIF: Cờ báo ngắt so sánh 1: Ngõ vào so sánh thay đổi (phải xóa phần mềm) 0: Ngõ vào so sánh không thay đổi Bit EEIF: Cờ báo ngắt ghi EEPROM 1: Ghi EEPROM hoàn tất (phải xóa phần mềm) 0: Ghi EEPROM chưa hoàn tất Bit BCLIF: Cờ báo ngắt xung đột bus 1: Xung đột bus xuất chế độ SSP 0: Khơng có xung đột bus xảy Bit CCP2IF: Cờ báo ngắt CPP2 Chế độ Capture (bắt giữ): 1: Một bắt giữ ghi TMR1 xảy (phải xóa phần mềm) 0: Không xảy Capture ghi TMR1 Chế độ Compare (So sánh): 1: Một thuật toán so sánh ghi TMR1 xảy (phải xóa phần mềm) 0: Khơng xảy thuật tốn so sánh 1.5 PCL PCLATH: Bộ đếm chương trình PC (program counter) có độ dài 13 bit, dùng để chứa địa lệnh thực thi Byte thấp chứa ghi PCL đọc/ghi cách trực tiếp Các bit cao (bit 12:8) chứa ghi PCLATH, khơng thể đọc ghi gián tiếp cách sử dụng ghi PCLATH Khi có Reset xảy ra, bit cao đếm chương trình PC bị xóa Xem thêm hai ví dụ sau để hiểu thêm hoạt động đếm chương trình PC SVTH:ĐẶNG ANH DUY MSSV:20762046 10 ĐỒ ÁN TỐT NGHIỆP GVHD:TH.S LÊ MINH HẢI case 'b': { if(rc2==1) {rc2=0;i=0x01;xuongdong();delay_ms(2);xuat("DEN LED 04 ON");i=0x01;xuongdong();} else {rc2=1;i=0x01;xuongdong();delay_ms(2);xuat("DEN LED 04 OFF");i=0x01;xuongdong();} } break; case 'c': { if(rc4==1) {rc4=0;i=0x01;xuongdong();delay_ms(2);xuat("THIET BI 01 ON");i=0x01;xuongdong();} else {rc4=1;i=0x01;xuongdong();delay_ms(2);xuat("THIET BI 01 OFF");i=0x01;xuongdong();} } break; case 'd': { if(rc5==1) {rc5=0;i=0x01;xuongdong();delay_ms(2);xuat("THIET BI 02 ON");i=0x01;xuongdong();} else {rc5=1;i=0x01;xuongdong();delay_ms(2);xuat("THIET BI 02 OFF");i=0x01;xuongdong();} } break; case 'e': { if(rc0==1) {rc0=0;i=0x01;xuongdong();delay_ms(2);xuat("DEN LED 01 ON");i=0x01;xuongdong();} else {rc0=1;i=0x01;xuongdong();delay_ms(2);xuat("DEN LED 01 OFF");i=0x01;xuongdong();} } break; case 'f': { if(rc1==1) SVTH:ĐẶNG ANH DUY MSSV:20762046 51 ĐỒ ÁN TỐT NGHIỆP GVHD:TH.S LÊ MINH HẢI {rc1=0;i=0x01;xuongdong();delay_ms(2);xuat("DEN LED 02 ON");i=0x01;xuongdong();} else {rc1=1;i=0x01;xuongdong();delay_ms(2);xuat("DEN LED 02 OFF");i=0x01;xuongdong();} } break; case 'g': duy_1(); break; case 'h': duy_2(); break; case 'K': { i=0x01; xuongdong(); xuat("CLEAR ALL"); rc0=0; rc1=0; rc2=0; rc3=0; rc4=0; rc5=0; i=0x01; xuongdong(); } break; default: { { if(rc3==1) {rc3=0;i=0x01;xuongdong();delay_ms(2);xuat("DEN LED 03 ON");i=0x01;xuongdong();} else {rc3=1;i=0x01;xuongdong();delay_ms(2);xuat("DEN LED 03 OFF");i=0x01;xuongdong();} } } break; } } ////////////////////////////////// NGAT RB ////////////////////////////// #INT_RB VOID RB_LED() { while(input(pin_b4)==1) SVTH:ĐẶNG ANH DUY MSSV:20762046 52 ĐỒ ÁN TỐT NGHIỆP GVHD:TH.S LÊ MINH HẢI { duy_1(); break; } while(input(pin_b5)==1) { duy_2(); break;} while(input(pin_b6)==1) { output_low(pin_b0); output_low(pin_b1); output_low(pin_b2); output_low(pin_b3); delay_ms(200); break; } while(input(pin_b7)==1) { output_high(pin_b0); output_high(pin_b1); output_high(pin_b2); output_high(pin_b3); delay_ms(200); break; } } //////////////////////// CHUONG TRINH CON /////////////////////////// void triger() { output_high(pin_e2); delay_ms(75); output_low(pin_e2); delay_ms(75); } void khoitao() { output_low(pin_e0); output_low(pin_e1); triger(); output_d(0x38); triger(); SVTH:ĐẶNG ANH DUY MSSV:20762046 53 ĐỒ ÁN TỐT NGHIỆP GVHD:TH.S LÊ MINH HẢI output_d(0x0e); triger(); } void xuongdong() { output_low(pin_e0); output_low(pin_e1); triger(); output_d(i); triger(); } void xuat(i1) { output_high(pin_e0); output_d(i1); triger(); } void duy_1() { delay_ms(100); i=0x01; xuongdong(); xuat("MIN CB_02 MAX"); i=0xc1; xuongdong(); xuat("25"); xuat(i1=0xdf); i=0xcd; xuongdong(); xuat("35"); xuat(i=0xdf); i=0xc7; xuongdong(); set_adc_channel(0); delay_ms(50); adc=read_adc(); adc_tg=(adc/2.046); itoa(adc_tg,10,tam); output_high(pin_e0); putc('w'); delay_ms(500); for(j=0;j

Ngày đăng: 06/01/2022, 19:29

Xem thêm:

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w