Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 32 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
32
Dung lượng
2,43 MB
Nội dung
BỘ GIÁO DỤC VÀ ĐÀO TẠO TRƯỜNG ĐẠI HỌC SƯ PHẠM KỸ THUẬT THÀNH PHỐ HỒ CHÍ MINH ĐỀ TÀI NCKH CẤP SINH VIÊN NGHIÊN CỨU CHUẨN GIÁO TIẾP SPI, I2C, UART CỦA PIC 16F877A - THI CÔNG MẠCH GIAO TIẾP S K C 0 9 MÃ SỐ: SV53 - 2008 S KC 0 Tp Hồ Chí Minh, 2008 BỘ GIÁO DỤC VÀ ĐÀO TẠO TRƢỜNG ĐẠI HỌC SƢ PHẠM KỸ THUẬT TP.HCM NGHIÊN CỨU KHOA HỌC CẤP SINH VIÊN ÑEÀ TAØI: MÃ SỐ: SV53_2008 THUỘC NHÓM NGÀNH : KHOA HỌC KỸ THUẬT CHỦ NHIỆM ĐỀ TÀI : CHÂU TUẤN HOÀNG NGƢỜI THAM GIA : NGUYỄN TẤN HÕA TRỊNH VĂN DUY ĐƠN VỊ : KHOA ĐIỆN _ ĐIỆN TỬ TP HỒ CHÍ MINH THÁNG 12 NĂM 2008 MỤC LỤC PHẦN 1: ĐẶT VẤN ĐỀ - I LÝ DO CHỌN ĐỀ TÀI II ĐỐI TƢỢNG NGHIÊN CỨU III TÌNH HÌNH NGHIÊN CỨU CỦA ĐỀ TÀI - PHẦN 2: GIẢI QUYẾT VẤN ĐỀ I MỤC ĐÍCH NGHIÊN CỨU II PHƢƠNG PHÁP NGHIÊN CỨU III NỘI DUNG NGHIÊN CỨU - 3.1 Tổng quan họ vi điều khiển PIC - 3.2 Sơ lƣợc vi điều khiển PIC 16F877A 3.3 Tập lệnh vi điều khiển PIC 16F877A - 3.4 Khối Port nối tiếp đồng chủ ( MSSP) 3.4.1 Chuẩn giao tiếp SPI vi điều khiển PIC 16F877A 3.4.2 Chuẩn giao tiếp I2C vi điều khiển PIC 16F877A 13 3.5 Chuẩn giao tiếp UART vi điều khiển PIC 16F877A - 21 3.6 Mạch giao tiếp SPI, I2C, UART 26 IV KẾT QUẢ ĐẠT ĐƢỢC 27 4.1 Tính khoa học - 27 4.2 Tính thực tiễn - 27 4.3 Hiệu kinh tế 27 PHẦN 3: KẾT LUẬN VÀ KHUYẾN NGHỊ 28 I KẾT LUẬN - 28 II KHUYẾN NGHỊ 28 PHẦN 4: TÀI LIỆU THAM KHẢO 29 PHẦN 1: ĐẶT VẤN ĐỀ I LÝ DO CHỌN ĐỀ TÀI Chúng ta thấy thập niên gần đây, dòng vi điều khiển phát triển cách mạnh mẽ Các nhà sản xuất chip điện tử cho đời dòng vi điều khiển mạnh với tính đáp ứng nhu cầu phát triển ngày cao khoa học kỹ thuật như: giao tiếp qua cổng USB, hỗ trợ chuẩn giao tiếp SPI, I2C , tích hợp ADC, tăng dung lượng nhớ nội,… Microchip nhà sản xuất chip điên tử hàng đầu giới, năm gần họ cho đời dòng vi điều khiển cực mạnh dòng PIC, dòng dsPIC Trong dòng vi điều khiển PIC họ PIC16 họ vi điều khiển 8bit mạnh phổ biến Với mong muốn có thêm kiến thức họ vi điều khiển PIC16 cho thân phần giúp người hiểu rõ họ vi điều khiển này, bên cạnh hướng dẫn Thầy Ths NGUYỄN ĐÌNH PHÖ kiến thức vi điều khiển học trường, em chọn đề tài nghiên cứu khoa học cấp sịnh viên là: “NGHIÊN CỨU CHUẨN GIAO TIẾP SPI, I2C, UART CỦA PIC 16F877A – THI CÔNG MẠCH GIAO TIẾP” II ĐỐI TƢỢNG NGHIÊN CỨU - Vi điều khiển PIC 16F877A - Chuẩn giao tiếp SPI, I2C, UART - Bộ thí nghiệm cho PIC 16F877A - Một số chương trình thí nghiệm cho PIC 16F877A - Phần mềm biên dịch sọan chương trình cho PIC 16F877A: MPLAB, PIC C Compiler (CCS) - Phần mềm nạp chương trình cho PIC 16F877A: WinPic 800 III TÌNH HÌNH NGHIÊN CỨU CỦA ĐỀ TÀI Hiện nước ta, dòng vi điều khiển PIC16 sử dụng nhiều ngày phổ biến, để góp phần bổ sung thêm ứng dụng Pic nên nhóm muốn nghiên cứu ứng dụng truyền liệu Pic PHẦN 2: GIẢI QUYẾT VẤN ĐỀ I MỤC ĐÍCH NGHIÊN CỨU - Xây dựng hệ thống kiến thức tiếng Việt chuẩn giao tiếp SPI, I2C, UART vi điều khiển PIC 16F877A - Thiết kế mạch giao tiếp chuẩn giao tiếp SPI, I2C, UART cho vi điều khiển PIC 16F877A - Sử dụng phần mềm MPLAB phần mềm PIC C Compiler (CCS) để soạn biên dich chương trình cho PIC 16F877A - Sử dụng phần mềm WinPic 800 để nạp chương trình cho PIC 16F877A - Viết chương trình truyền liệu cho PIC 16F877A theo chuẩn giao tiếp SPI, I2C, UART II PHƢƠNG PHÁP NGHIÊN CỨU - Tham khảo dịch tài liệu: tìm hiểu kiến thức PIC 16F877A chuẩn giao tiếp SPI, I2C, UART - Thi công mạch thực hành: thi công mạch giao tiếp chuẩn giao tiếp SPI, I2C, UART cho vi điều khiển PIC 16F877A Viết chương trình thí nghiệm chuẩn giao tiếp III NỘI DUNG NGHIÊN CỨU Tổng quan họ vi điều khiển PIC PIC họ vi điều khiển RISC sản xuất công ty Microchip Technology Dòng PIC PIC1650 phát triển Microelectronics Division thuộc General Instrument Lúc này, PIC1650 dùng để giao tiếp với thiết bị ngoại vi cho máy chủ 16bit CP1600 CP1600 CPU tốt, lại hoạt động xuất nhập, PIC 8-bit phát triển vào khoảng năm 1975 để hỗ trợ hoạt động xuất nhập cho CP1600 PIC sử dụng microcode đơn giản đặt ROM, mặc dù, cụm từ RISC chưa sử dụng thời bây giờ, PIC thực vi điều khiển với kiến trúc RISC, chạy lệnh chu kỳ máy (4 chu kỳ dao động) Năm 1985 General Instruments bán phận vi điện tử họ, chủ sở hữu hủy bỏ hầu hết dự án - lúc lỗi thời Tuy nhiên PIC bổ sung EEPROM để tạo thành điều khiển vào khả trình Ngày nhiều dòng PIC xuất xưởng với hàng loạt module ngoại vi tích hợp sẵn (như USART, PWM, ADC ), với nhớ chương trình từ 512 Word đến 32K Word Sơ lƣợc vi điều khiển PIC 16F877A - Sơ đồ chân loại PDIP 40 chân: Bảng tóm tắt đặc điểm PIC16F877A Đặc điểm PIC16F877A Tần số hoạt động DC- 20MHz Reset (và Delay) POR, BOR (PWRT, OST) Bộ nhớ chương trình Flash 8K (14-bit word) Bộ nhớ liệu (byte) 368 Bộ nhớ liệu EEPROM (byte) 256 Nguồn ngắt 15 Các port xuất nhập Các port A, B, C, D, E Timer Các module capture/compare/PWM Giao tiếp nối tiếp Giao tiếp song song Module A/D 10bit Bộ so sánh tương tự Tập lệnh MSSP, USART PSP kênh ngõ vào 35 lệnh 40 chân PDIP Số chân 44 chân PLCC 44 chân TQFP 44 chân QFN Tập lệnh vi điều khiển PIC 16F877A Khung định dạng chung cho lệnh: Bảng tốm tắt lệnh PIC 16F877A Khối Port nối tiếp đồng chủ ( MSSP) Khối MSSP hoạt động hai chế độ sau: + Serial Peripheral Interface (SPI) + Inter – Intergrate Curcuit (I2C) Cả hai chế độ hoạt động truyền liệu nối tiếp Khối MSSP có ghi là: ghi trạng thái (SSPSTAT), hai ghi điều khiển (SPPCON1 SPPCON2) 4.1 Chuẩn giao tiếp SPI vi điều khiển PIC 16F877A Sơ đồ khối MSSP chế độ SPI: 4.Bit ngắt SSP set (nếu cho phép) cạnh xuống xung thứ xung clock (SCL) - Trong chế độ 10bit, slave cần nhận 2byte địa 5bit cao (MSbs) byte thứ xác định có phải 10bit địa hay không Bit R/ W ( SSPSTAT) phải phải xác định kiện ghi thiết bị slave nhận byte địa thứ Đối với 10 bit địa byte thứ ‘11110 A9 A8 0’ , A9 A8 MSbs địa Các kiện với 10 bit địa chỉ, bước đến bước giành cho phát tớ: 1.Nhận byte thứ (high) địa ( bit BF, bit SSPIF, bit UA (SSPSTAT) set 2.Cập nhật SSPADD với byte thứ hai (low) địa (xóa bit UA cách li đường SCL) 3.Đọc ghi SSPBUF (xóa bit BF bit SSPIF) 4.Nhận byte thứ hai (low) địa ( bit BF, bit SSPIF, bit UA (SSPSTAT) set.) 5.Cập nhật SSPADD với byte thứ (high) địa (nếu cách li đường SCL UA xóa) 6.Đọc ghi SSPBUF (xóa bit BF bit SSPIF) 7.Nhận điều kiện Start lặp lại Nhận byte thứ (high) địa ( bit BF, bit SSPIF set.) Đọc ghi SSPBUF (xóa bit BF bit SSPIF) - Bit định hướng liệu R/ W byte liệu: + Nhận: R/ W = truyền từ chủ đến tớ + Truyền: R/ W =1 truyền từ tớ đến chủ CHẾ ĐỘ CHỦ: - Cho phép bit SSPM SSPCON1 - Các chân SDA , SCL điều khiển phần cứng MSSP - Khi chế đọ Master cho phép, người sử dụng có tùy chọn 1.Xác nhận điều kiện Start SDA SCL 16 2.Xác nhận điều kiện Start lặp lại SDA SCL 3.Ghi vào ghi SSPBUF liệu/địa truyền khởi đầu 4.Định cấu hình port I2C để nhận liệu 5.Phát tín hiệu ACK sau nhận byte liệu Phát điều kiện Stop SDA SCL - Các kiện sau làm cho bit SSPIF set: + Điều kiện Start + Điều kiện Stop + Truyền liệu byte truỳên/nhận + Truyền ACK + Điều kiện Start lặp lại Hoạt động - Thiết bị chủ tạo xung clock nối tiếp, điều kiện Start, Stop - Trong chế độ master truyền, SDA ngõ liệu nối tiếp, SCL ngõ xung clock nối tiếp Byte chứa bit địa thiết bị tớ bit R/ W =0 Dữ liệu nối tiếp truyền bit lầnvà sau byte truyền nhận 1bit ACK - Trong chế độ master nhận, byte truyền chứa bit địa thiết bị tớ bit R/ W =1 Dữ liệu nối tiếp nhận qua SDA, SCL ngõ xung clock nối tiếp Dữ liệu nối tiếp nhận 8bit 1lần sau byte liệu nhận truyền bit ACK - Trình tự phát sau: Người dùng phát điều kiện Start cách set bit cho phép Start, SEN (SSPCON2 SSPIF set Module MSSP đợi thời gian bắt đầu yêu cầu trươc hoạt động khác thay Người dùng nạp địa Slave để truyền vào SSPBUF Địa dich chân SDA bit truyền Module MSSP dịch vào bit ACK từ thiết bị slave ghi vào SSPCON2 Module MSSP phát ngắt cuối chu kỳ xung clock (SCL) thứ 9, cách set SSPIF 17 Người dùng nạp bit liệu vào SSPBUF Dữ liệu dich chân SDA bit truyền Module MSSP dịch vào bit ACK từ thiết bị slave ghi vào SSPCON2 10 Module MSSP phát ngắt cuối chu kỳ xung clock (SCL) thứ 9, cách set SSPIF 11 Người dùng phát điều kiện Stop cách set bit cho phép Stop, PEN (SSPCON2) 12 Ngắt phát điều kiện Stop hoàn thành CHƢƠNG TRÌNH THÍ NGHIỆM: Master: #include #include #fuses HS,NOWDT,NOPROTECT,NOLVP,PUT #use Delay(Clock=12MHz) #define SLAVE_ADDRESS 0x10 #use i2c(master, sda=PIN_B0, scl=PIN_B1) int8 value,i; const unsigned char dig[]={0XC0,0XF9,0XA4,0XB0,0X99,0X92,0X82,0XF8,0X80,0X90}; void write_I2C(int8 a) // ghi du lieu den i2c { i2c_start(); // dieu kien start i2c_write(SLAVE_ADDRESS); // ghi dia chi slave i2c_write(a); //ghi du lieu i2c_stop(); // dieu kien stop } 18 void main() { value = 0; while(1) { i=10; while(i>0) { write_I2C(dig[value]); i ; delay_ms(200); } if(i==0) { value++; } if (value == 10) { value =0; } delay_ms(300); } } Slave: #include #include #fuses HS,NOWDT,NOPROTECT,NOLVP,PUT 19 #use delay(Clock=20MHz) #use i2c(SLAVE,SDA=PIN_B0,SCL=PIN_B1,address=0x10,force_hw) #use fast_io(B) #use fast_io(D) #use fast_io(C) int8 value; #INT_SSP void i2c_isr() { int8 state; state = i2c_isr_state(); //trang thai i2c if(state < 0x80) // neu dang ghi thi doc du lieu { value = i2c_read(); } if (state == 0x80) // ghi xong, yeu cau gui thi ghi lai value den i2c { i2c_write(value); } } void main() { enable_interrupts(GLOBAL); // cho phep ngat toan cuc enable_interrupts(INT_SSP); // cho phep ngat ssp set_tris_D(0); set_tris_C(0); while(1) { output_D(value); // xuat du lieu 20 output_bit(pin_C0,0); // cho hien thi } } Chuẩn giao tiếp UART vi điều khiển PIC 16F877A Trong PIC16F877A có tất ghi cho trình điều khiển UART Trong có ghi chức TXSTA, RCSTA, ghi liệu RCREG, TXREG., ghi tốc độ Baud: SPBRG Thanh ghi TXSTA (address 98h): R/W-0 R/W-0 R/W-0 R/W-0 U-0 R/W-0 CSRC TX9 TXEN SYNC - R-1 R/W-0 BRCH TRMT TX9D CSRC - bit lựa chọn nguồn xung clock TX9 - chọn chế độ truyền bit: (=1: bit, =0: bit) TXEN - cho phép truyền SYNC - chọn chế độ truyền đồng hay không đồng bộ: (=1: đồng bộ, =0: không đồng bộ) BRGH - chọn chế độ truyền cao hay thấp =1 HIGH, =0: LOW) TRMT - bit báo trạng thái đệm: =1: TSR rỗng(dữ liệu truyền xong), =0: TSR đầy (dữ liệu đệm UART) TX9D - giá trị bít thứ chế độ truyền bit Bit dùng lưu bit Parity Thanh ghi RCSTA: R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R-0 R-0 R-0 SPEN RX9 SREN CREN ADDEN FERR OERR RX9D 21 SPEN - cho phép sử dụng UART RX9 - chấp nhận chế độ nhận bit SREN - không dùng với trường hợp Asychoronous - tiếp tục nhận liệu CREN - dùng chế độ chọn bit: ( master , slave ) ADDEN FERR - bít báo hiệu lỗi đường truyền OERR - báo hiệu lỗi đường truyền - giá trị bit thứ trình nhận lưu RX9D Thanh ghi TXREG: dùng để chứa liệu truyền trình truyền Thanh ghi RCREG: dùng để lưu liệu từ vào trình nhận Thanh ghi: SPBRG ghi thiết lập tốc độ baud PIC Trong PIC16F877A có hai chế độ truyền High speed, Low speed quy định bit BRGH ghi TXSTA Tốc độ Baud cho chế độ bất đồng ( BRGH = 0) Baud Rate Fosc=20Mhz KBaud (K) % Fosc=4MHz SPBRG KBaud % Error Fosc=3.6864MHz SPBRG KBaud % Error SPBRG Error 0.3 - - - 0.300 207 0.3 191 1.2 1.221 1.75 255 1.202 0.17 51 1.2 47 2.4 2.404 0.17 129 2.404 0.17 25 2.4 23 9.6 9.766 1.73 31 8.929 6.99 9.6 19.2 19.531 1.72 15 20.833 8.51 19.2 28.8 31.250 8.51 31.250 8.51 28.8 33.6 34.722 3.34 - - - - - - 57.6 62.500 8.51 62.500 8.51 57.6 0 HIGH 1.221 - 25 0.244 - 255 0.225 - 255 - 62.500 - 57.6 - LOW 312.500 22 Tốc độ Baud cho chế độ bất đồng ( BRGH = 0) Baud Rate Fosc=20Mhz KBaud (K) % Fosc=4MHz SPBRG KBaud Error % Fosc=3.6864MHz SPBRG KBaud % Error SPBRG Error 0.3 - - - 0.3 - - - - 1.2 - - - 1.202 0.17 207 1.2 191 2.4 - - - 2.404 0.17 103 2.4 95 9.6 9.615 0.16 129 9.615 0.16 25 9.6 23 19.2 19.231 0.16 64 19.231 0.16 12 19.2 11 28.8 29.070 0.94 42 27.798 3.55 28.8 33.8 33.784 0.55 36 35.714 6.29 32.9 2.04 57.6 59.524 3.34 20 62.500 8.51 57.6 HIGH 4.883 - 255 0.977 - 255 0.9 - 255 - 250.000 - 230.4 - LOW 1250.000 Thông qua bảng ta thấy ứng với tần số thạch anh 4M để chọn cho tốc độ baud 9600 ta chọn hai giá trị ghi SPBRG hai trường hợp : SPBRG = 25 ứng với BRGH =1 có sai số 0.15 SPBRG = ứng với BRGH =0 có sai số 6.99 Ta chọn giá trị có sai số bé ứng với thạch anh 4MHz ta nên chọn SPBRG = 25 , BRGH= có sai số nhỏ trường hợp Đối với thạch anh 20MHz để chọn tốc độ baud 9600 ta chọn hai giá trị ghi SPBRG hai trường hợp: SPBRG=129 ứng với BRGH=1 có sai số 0.16 SPBRG=31 ứng với BRGH=0 có sai số 1.73 Ta chọn giá trị có sai số bé ứng với thạch anh 20MHz ta nên chọn SPBRG = 129 , BRGH= có sai số nhỏ trường hợp SPBRG=31, BRGH=0 Như ứng với trường hợp có sai số nhỏ hai giá trị ta chọn 23 Quá trình truyền nhận PIC với PC: Quá trình nhận liệu Trong PIC16F877A để nhận biết liệu truyền tới người ta dùng bit cờ RCIF ghi PIR1 Như ghi đệm liệu chứa liệu RCIF đưa lên Quá trình nhận liệu cho thạch anh 4MHz bao gồm: - Khởi tạo tốc độ baud: ghi SPBRG Cho SPBRG = 25, BRGH =1 ứng với tốc độ 9600 ( thạch anh 4MHz) - Cho phép trình truyền không đồng bắng cách thiết lập SPEN = 1, SYNC=0; -Cho phép ngắt trình nhận liệu: RCIE=1 - Cho phép nhận liệu : CREN = - Cho phép ngắt toàn cục băng việc GIE =1, PEIE = ( GIE, PEIE ghi INTCON ) -Xử lý phần khác chương trình có ngắt xảy xử lý liệu Ví dụ: BSF TXSTA, BRGH MOVLW D’25’ ; Cho BRGH =1 ; Chon che 9.600 MOVWF SPBRG BSF RCSTA, SPEN ; SPEN = BCF TXSTA, SYNC ; SYNC = BSF TXSTA, CREN BSF PIE, RCIE ; RCIE = BSF INTCON, GIE BSF INTCON, PEIE ; Hàm ngắt xử lý liệu: MOVF RCREG,W ; Nhan du lieu tu RCREG chuyen cho ghi W MOVWF PORTB ; Dua du lieu PORTB 24 Quá trình truyền liệu: - Khởi tạo tốc độ baud: ghi SPBRG Cho SPBRG = 25, BRGH =1 ứng với tốc độ 9600 ( thạch anh 4MHz) - Cho phép trình truyền không đồng cách thiết lập SPEN = 1, SYNC= 0; - Cho phép truyền liệu cách thiết lập bit TXEN = 1; - Khi cần truyền liệu cần Load liệu lên TXREG Ví dụ: BSF TXSTA, BRGH ; Cho BRGH =1 MOVLW D’25’ ; Chon che 9.600 MOVWF SPBRG BSF RCSTA, SPEN ; BCF TXSTA, SYNC ; BSF TXSTA, TXEN ; TXEN = MOVF DATA, W ; Chuyen du lieu tu DATA qua W MOVWF TXREG ; Truyen du lieu bang cach load du lieu len TXREG 25 Mạch giao tiếp SPI, I2C, UART D1 4148 R1 4K7 R2 100 SW1 MCLR 5V PVN1 RESET SPI SCK SDI SDO SS SS CON4 CK-CL SCK RC3 SCL SDI RC4 SDA CON3 DI-DA 5V C1 SCL SDA RC0/T1OSO/T1CKI RC1/T1OSI/CCP2 RC2/CCP1 RC3/SCK/SCL RC4/SDI/SDA RC5/SDO RC6/TX/CK RC7/RX/DT OSC1/CLKIN RB0/INT RB1 RB2 RB3/PGM RB4 RB5 RB6/PGC RB7/PGD RD0/PSP0 RD1/PSP1 RD2/PSP2 RD3/PSP3 RD4/PSP4 RD5/PSP5 RD6/PSP6 RD7/PSP7 RE0/RD*/AN5 RE1/WR*/AN6 RE2/CS*/AN7 Y1 12MHZ 14 12 31 22p CON2 RS232 CON TOUT OSC2/CLKOUT VSS VSS C7 10 VDD VDD C8 10 TOUT RIN RX TX 10 C9 10 RD0 RD1 RD2 RD3 RD4 RD5 RD6 RD7 MCLR RB7 RB6 VC2V+ T2OUT R2 IN R2OUTVCC T2IN T1IN C10 10 16 11 5V 5V C6 U4 1000 VOUT VIN GND 1 R7 RESISTOR SIP R6 RESISTOR SIP 5V C5 CON2 CON8 PORTD CON8 11 32 5V MAX232 + - 10 PORTB NAP CT GTB-USB(+) D3 RB152 RD0 RD1 RD2 RD3 RD4 RD5 RD6 RD7 C3 100n 14 13 12 15 C1+ T1OUT R1IN R1OUT C1GND C2+ 2 19 20 21 22 27 28 29 30 RB0 RB1 RB2 RB3 RB4 RB5 RB6 RB7 U6 CONNECTOR DB9 9V AC RB0 RB1 RB2 RB3 RB4 RB5 RB6 RB7 5V PIC16F877A RIN 33 34 35 36 37 38 39 40 C2 R5 4K7 RA0/AN0 RA1/AN1 RA2/AN2/VREF-/CVREF RA3/AN3/VREF+ RA4/T0CKI/C1OUT RA5/AN4/SS*/C2OUT 22p CON3 I2C R4 4K7 RC3 RC4 SDO TX RX 15 16 17 18 23 24 25 26 13 MCLR*/VPP 3 RB0 RB1 RB2 RB3 RB4 RB5 RB6 RB7 RD0 RD1 RD2 RD3 RD4 RD5 RD6 RD7 C4 104 7805 10 5V R3 D2 5V LED B.N 470 NGUON 5V CON2 26 IV KẾT QUẢ ĐẠT ĐƢỢC 4.1 Tính khoa học Các kiến thức vi điều khiển PIC16F877A đề tài xác có độ tin cao Tất dịch từ tài liệu: “Datasheet PIC16F877A” Microchip Mạch giao tiếp chuẩn SPI, I2C, UART hoạt động tốt, thuận tiện sử dụng 4.2 Tính thực tiễn Các chuẩn giao tiếp SPI, I2C, UART nhiều người quan tâm, đề tài sở tốt để người tìm hiểu sâu hoạt động truyền liệu vi điều khiển PIC16F877A Từ xây dựng ứng dụng thực tế Bên cạnh đó, phần đáp ứng nhu cầu phát triển ngày cao lĩnh vực vi điều khiển 4.2 Hiệu kinh tế xã hội Board mạch giao tiếp đơn giản hiệu quả, dùng cho nhiều ứng dụng khác Các tài liệu vi điều khiển PIC16F877A phần mềm lập trình tìm thấy tài mạng internet 27 PHẦN 3: KẾT LUẬN I KẾT LUẬN Đề tài đưa hệ thống kiến thức chuẩn giao tiếp SPI, I2C UART vi điều khiển PIC16F877A Đồng thời đề tài đưa số chương trình thí nghiệm để người đọc hiểu rõ tham khảo cho ứng dụng riêng Nhưng khả sinh viên chủ nhiệm đề tài nhiều hạn chế nên chắn đề tài tránh khỏi thiếu xót Bên cạnh đề tài chủ yếu tìm hiểu mặt lý thuyêt nên nhiều hạn chế II KHUYẾN NGHỊ Với đề tài đạt được, đề tài làm tài liệu tham khảo bổ ích cho người cần quan tâm đến vi điều khiển PIC 16F877A, đặc biệt hoạt động truyền liệu vi điều khiển PIC 16F877A Bên cạnh đề tài phát triển lên, khai thác đặc tính hữu ích PIC 16F877A Chúng ta tìm hiểu đăc tính điều khiển mạng Ethernet, xây dựng mạng thiết bị có tích hợp giao tiếp I2C… Từ xây dựng nên ứng dụng thực tế đáp ứng điều kiện đặt Đề tài coi cho nghiên cứu có liên quan sau 28 PHẦN 4: TÀI LIỆU THAM KHẢO [1] Datasheet PIC16F877A tải từ trang web: www.microchip.com [2] Giáo trình Vi xử lý Thầy Th.s Nguyễn Đình Phú - Trường Đại Học Sư Phạm Kỹ Thuật TP.HCM [3] Các trang web diễn đàn điện tử như: http://www.picvietnam.com http://www.dientuvietnam.net http://www.picbasic.co.uk/forum/ 29 [...]... PIC1 6F877A trong đề tài chính xác và có độ tin cây cao Tất cả đều được dịch ra từ tài liệu: “Datasheet PIC1 6F877A” của Microchip Mạch giao tiếp chuẩn SPI, I2C, UART hoạt động tốt, thuận tiện khi sử dụng 4.2 Tính thực tiễn Các chuẩn giao tiếp SPI, I2C, UART hiện đang được rất nhiều người quan tâm, do đó đề tài là cơ sở tốt để mọi người tìm hiểu sâu hơn về hoạt động truyền dữ liệu của vi điều khiển PIC1 6F877A... 0x80) // ghi xong, yeu cau gui thi ghi lai value den i2c { i2c_write(value); } } void main() { enable_interrupts(GLOBAL); // cho phep ngat toan cuc enable_interrupts(INT_SSP); // cho phep ngat ssp set_tris_D(0); set_tris_C(0); while(1) { output_D(value); // xuat du lieu 20 output_bit(pin_C0,0); // cho hien thi } } 5 Chuẩn giao tiếp UART của vi điều khiển PIC 16F877A Trong PIC1 6F877A có tất cả 5 thanh ghi... khảo bổ ích cho những người cần quan tâm đến vi điều khiển PIC 16F877A, đặc biệt là hoạt động truyền dữ liệu của vi điều khiển PIC 16F877A Bên cạnh đó đề tài còn có thể phát triển lên, khai thác các đặc tính hữu ích của PIC 16F877A Chúng ta có thể tìm hiểu về các đăc tính như điều khiển mạng Ethernet, xây dựng mạng các thi t bị có tích hợp giao tiếp I2C… Từ đó xây dựng nên những ứng dụng thực tế đáp ứng... ra được một hệ thống kiến thức cơ bản về các chuẩn giao tiếp SPI, I2C và UART trên vi điều khiển PIC1 6F877A Đồng thời đề tài cũng đưa ra một số chương trình thí nghiệm để người đọc có thể hiểu rõ hơn và tham khảo cho các ứng dụng riêng của mình Nhưng do khả năng của sinh viên chủ nhiệm đề tài còn nhiều hạn chế nên chắc chắn đề tài không thể tránh khỏi những thi u xót Bên cạnh đó đề tài chủ yếu tìm hiểu... có thể được coi là cái nền cho những nghiên cứu có liên quan về sau 28 PHẦN 4: TÀI LIỆU THAM KHẢO [1] Datasheet PIC1 6F877A được tải từ trang web: www.microchip.com [2] Giáo trình Vi xử lý 2 của Thầy Th.s Nguyễn Đình Phú - Trường Đại Học Sư Phạm Kỹ Thuật TP.HCM [3] Các trang web diễn đàn điện tử như: http://www.picvietnam.com http://www.dientuvietnam.net http://www.picbasic.co.uk/forum/ 29 ... Hoạt động - Thi t bị chủ tạo ra xung clock nối tiếp, điều kiện Start, Stop - Trong chế độ master truyền, SDA là ngõ ra dữ liệu nối tiếp, SCL là ngõ ra xung clock nối tiếp Byte đầu tiên chứa 7 bit địa chỉ thi t bị tớ và 1 bit R/ W =0 Dữ liệu nối tiếp được truyền 8 bit 1 lầnvà sau mỗi byte được truyền thì nhận 1bit ACK - Trong chế độ master nhận, byte được truyền đầu tiên chứa 7 bit địa chỉ thi t bị tớ... while(!spi_data_is_in()); // kiem tra da nhan du lieu xong chua { data = spi_read(); // chua xong thi tiep tuc nhan } output_D(value); output_bit(pin_B0,0); // xuat value ra portD // cho hien thi } } 12 4.2 Chuẩn giao tiếp I2C của vi điều khiển PIC 16F877A Sơ đồ khối MSSP ở chế độ I2C tớ: Sơ đồ khối MSSP ở chế độ I2C chủ: 13 - Chế độ I2C có thể hoạt động ở nhiều chế độ khác nhau: Một chủ một tớ (one master – one... hơn về hoạt động truyền dữ liệu của vi điều khiển PIC1 6F877A Từ đó xây dựng những ứng dụng thực tế Bên cạnh đó, phần nào đáp ứng được nhu cầu phát triển ngày càng cao trong lĩnh vực vi điều khiển 4.2 Hiệu quả kinh tế xã hội Board mạch giao tiếp đơn giản nhưng rất hiệu quả, có thể dùng cho nhiều ứng dụng khác nhau Các tài liệu về vi điều khiển PIC1 6F877A và các phần mềm lập trình có thể tìm thấy và... MOVWF SPBRG BSF RCSTA, SPEN ; BCF TXSTA, SYNC ; BSF TXSTA, TXEN ; TXEN = 1 MOVF DATA, W ; Chuyen du lieu tu DATA qua W MOVWF TXREG ; Truyen du lieu bang cach load du lieu len TXREG 25 6 Mạch giao tiếp SPI, I2C, UART D1 4148 R1 4K7 R2 100 SW1 MCLR 5V PVN1 1 RESET 2 3 4 5 6 7 SPI SCK SDI SDO SS 1 2 3 4 SS CON4 CK-CL SCK RC3 SCL 1 2 3 SDI RC4 SDA 1 2 3 CON3 DI-DA 5V C1 SCL SDA RC0/T1OSO/T1CKI RC1/T1OSI/CCP2... HIGH, =0: LOW) TRMT - bit báo trạng thái của bộ đệm: =1: TSR rỗng(dữ liệu đã được truyền xong), =0: TSR đầy (dữ liệu còn trong bộ đệm của UART) TX9D - giá trị của bít thứ 9 trong chế độ truyền 9 bit Bit này có thể dùng lưu bit Parity Thanh ghi RCSTA: R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R-0 R-0 R-0 SPEN RX9 SREN CREN ADDEN FERR OERR RX9D 21 SPEN - cho phép sử dụng bộ UART RX9 - chấp nhận chế độ nhận 9 bit