ĐỒ ÁN VI XỬ LÝ - ĐỀ TÀI: "NGHIÊN CỨU THIẾT KẾ MẠCH ĐO KHOẢNG CÁCH SỬ DỤNG VI ĐIỀU KHIỂN PIC16F887 " - TRƯỜNG ĐẠI HỌC ĐIỆN LỰC ppt

45 5K 16
ĐỒ ÁN VI XỬ LÝ - ĐỀ TÀI: "NGHIÊN CỨU THIẾT KẾ MẠCH ĐO KHOẢNG CÁCH SỬ DỤNG VI ĐIỀU KHIỂN PIC16F887 " - TRƯỜNG ĐẠI HỌC ĐIỆN LỰC ppt

Đ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

TẬP ĐOÀN ĐIỆN LỰC VIỆT NAM TRƢỜNG ĐẠI HỌC ĐIỆN LỰC KHOA CÔNG NGHỆ TỰ ĐỘNG ĐỒ ÁN VI XỬ LÝ : NGHIÊN CỨU THIẾT KẾ MẠCH ĐO KHOẢNG CÁCH SỬ DỤNG VI ĐIỀU KHIỂN PIC16F887 Giảng viên hƣớng dẫn :Ths Bùi Thị Duyên Lớp : Đ6LT – ĐCN Sinh viên thực : Ngô Ngọc Hà Hà Nội, Ngày 14 Tháng Năm 2013 LỜI NÓI ĐẦU Ngày kỹ thuật vi điều khiển trở nên quen thuộc ngành kỹ thuật dân dụng Các vi điều khiển có khả xử lý nhiều hoạt động phức tạp mà cần chip vi mạch nhỏ, thay tủ điều khiển lớn phức tạp mạch điện gọn nhẹ, dễ dàng thao tác sử dụng Vi điều khiển góp phần vào kỹ thuật điều khiển mà cịn góp phần to lớn vào việc phát triển thơng tin Chính lý trên, việc tìm hiểu, khảo sát vi điều khiển điều mà sinh viên ngành điện mà đặc biệt chuyên ngành kỹ thuật điện-điện tử phải quan tâm Đó nhu cầu cần thiết cấp bách sinh viên, đề tài đƣợc thực đáp ứng nhu cầu Các điều khiển sử dụng vi điều khiển đơn giản nhƣng để vận hành sử dụng đƣơc lại điều phức tạp Phần cơng việc xử lý phụ thuộc vào ngƣời, chƣơng trình hay phần mềm Nếu khơng có tham gia ngƣời hệ thống vi điều khiển vật vơ tri Do nói đến vi điều khiển giống nhƣ máy tính bao gồm phần phần cứng phần mềm Từ yêu cầu môn học kĩ thuật vi xử lý đo lƣờng điều khiển thực tiễn nhƣ trên, chúng em định chọn đề tài cho đồ án môn học là: “Nghiên cứu thiết kế mạch đo khoảng cách dùng vi điều khiển PIC16F887” Dƣới chúng em xin trình bày tồn nội dung đồ án: “Nghiên cứu thiết kế mạch đo khoảng cách dùng vi điều khiển PIC16F887” cô Ths.Bùi Thị Duyên giảng viên Trƣờng Đại Học Điện Lực hƣớng dẫn Trong trình thực đề tài cịn nhiều sai sót, mong nhận đƣợc nhiều ý kiến đóng góp từ bạn Sinh viên thực hiện: Ngô Ngọc Hà NHIỆM VỤ THIẾT KẾ Sử dụng cảm biến siêu âm SRF05 để đo khoảng cách Sử dụng RealTime DS1307 lấy thời gian lúc đo Hiện thị kết đo đƣợc thời gian đo lên LCD Nguồn cung cấp sử dụng DC Adaptor 12VDC MỤC LỤC Trang CHƢƠNG I Đặt vấn đề nhiệm vụ thử I Đặt vấn đề II Nhiệm vụ thử CHƢƠNG II Tổng quan PIC phƣơng pháp đo khoảng cách cảm biến I Giới thiệu vi điều khiển PIC 16F887 1.Sơ lƣợc vi điều khiển PIC 16F887 2.Khảo sát vi điều khiển PIC16F887 hãng Microchip II Các phƣơng pháp đo khoảng cách 19 1.Đo thủ công 19 2.Sử dụng Lase để đo khoảng cách 19 Phƣơng pháp đo khoảng cách sóng siêu âm cảm biến SRF05 III.Ứng dụng ngôn ngữ lập trình Assembler, C điều khiển 25 Ngơn ngữ lập trình Assembler 25 Ngơn ngữ lập trình C 25 CHƢƠNG III Thiết kế phần cứng 26 I Các linh kiện đề tài 26 Điện trở 26 Biến trở 26 Tụ điện 27 Bộ tạo xung chuẩn( xung clock) 27 II.Sơ đồ nguyên lý mạch 31 CHƢƠNG IV Thiết kế phần mềm 32 CHƢƠNG V Kết luận phƣơng hƣớng phát triển 44 1.Kết luận 44 2.Phƣơng hƣớng phát triển 44 TÀI LIỆU THAM KHẢO 45 CHƢƠNG I ĐẶT VẤN ĐỀ VÀ NHIỆM VỤ THỬ I.ĐẶT VẤN ĐỀ Ngày nay, ứng dụng vi điều khiển sâu vào đời sống tinh sinh hoạt sản xuất ngƣời Thực tế hầu hết thiết bi dân dụng điều có góp mặt Vi điều khiển vi xử lý Ứng dụng vi điều khiển thiết kế hệ thống làm giảm chi phí thiết kế hạ giá thành sản phẩm đồng thời nâng cao tính ổn định thiết bị nhƣ hệ thống Trên thị trƣờng có nhiều họ vi điều khiển nhƣ 8051 hãng Intell, PIC hãng Microchip, H8 hãng Hitachi,vv… Việc phát triển ứng dụng hệ thống vi điều khiển đòi hỏi hiểu biết phần cứng phần mềm, nhƣng mà hệ thống vi xử lý đƣợc sử dụng đẻ giải toán khác Tính đa dạng ứng dụng phụ thuộc vào việc lựa chọn hệ thống vi xử lý cụ thể nhƣ vào kỹ thuật lập trình Ngày vi xử lý có mặt thiết bị điện tử đại nhƣ máy thu hình, máy ghi hình dàn âm thanh, điều khiển cho lò sƣởi hệ thống điều hòa đến thiết bị điều khiển dùng công nghiệp.Lĩnh vực ứng dụng hệ thống vi xử lý nhƣ nghiên cứu khoa học, nhƣ y tế giao thông đến công nghiệp, lƣợng…Chúng ta sử dụng ngơn ngữ khác nhƣ lập trình C, C++, Visual,… II.NHIỆM VỤ THỬ -Tìm tài liệu liên quan đến đề tài mà nghiên cứu, đƣa giải pháp tối ƣu cho việc thiết kế chế tạo sản phẩm thực tế -Thiết kế chế tạo board mạch gồm khối nhƣ: khối xử lý trung tâm dung họ vi điều khiển PIC16F887, khối cảm biến dùng SRF05 để đo khoảng cách, khối thị dùng LCD -Thiết kế khối nguồn để cung cấp điện áp dòng điện ổn định cho board hoạt động tốt -Tiến hành viết chƣơng trình phần mềm phối hợp hoạt động khối với dƣới điều khiển khối mạch chứa PIC16F887 CHƢƠNG II TỔNG QUAN VỀ PIC VÀ CÁC PHƢƠNG PHÁP ĐO KHOẢNG CÁCH VÀ CẢM BIẾN I.Giới thiệu vi điều khiển PIC16F887 - Sơ lƣợc vi điều khiển PIC16F887 - Khảo sát vi điều khiển PIC16F887 hãng Microchip + Sơ đồ chân linh kiện + Sơ đồ khối PIC16F887 + Các ứng dụng PIC16F887 1.Sơ lƣợc vi điều khiển PIC 16F887 + Sử dụng công nghệ tích hợp cao RISC CPU + Ngƣời dùng lập trình với 35 câu lệnh đơn giản + Tất câu lệnh thự chu kỳ, lệnh ngoại trừ số câu lệnh riêng rẽ nhánh thực hai chu kỳ lệnh + Tốc độ hoạt động : - Xung đồng hồ DC -20MHz - Chu kì lệnh thực 200ns + Bộ nhớ chƣơng trình Flash 8Kx14 words + Bộ nhớ SRam 368x8 bytes + Bộ nhớ EFPROM 256x8 bytes + Số port I/O 35 port *Khả PIC + Khả ngắt + Ngăn nhớ Stack đƣợc phân chia làm mức + Truy cập nhớ địa trực tiếp gián tiếp + Nguồn khởi động lại (POR) + Bộ tạo thời gian PWRT, tạo dao động OST + Bộ đếm xung thời gian WDT với nguồn dao động chip( nguồn dao động RC) đáng tin cậy + Có mã chƣơng trình bảo vệ + Phƣơng thức cất giữ Sleep + Thiết kế toàn tĩnh + Dải điện hoạt động 2V 5,5V + Dịng điện sử dụng 25mA -Các tính bật thiết bị ngoại vi chíp + TIMER0: bit định thời, đếm với hệ số tỉ lệ trƣớc + TIMER1: 16 bit định thời, đếm với tỉ số tỉ lệ trƣớc, có khả tăng chế độ Sleep qua xung đồng hồ cung cấp bên + TIMER2: bit định thời, đếm với bit hệ số tỉ lệ trƣớc, hệ số tỉ lệ sau + Bộ chuyển đổi tín hiệu số sang tín hiệu tƣơng tự với 10 bit + Cổng truyền thông tin nối tiếp SSP với SPI phƣơng thức chủ 2.Khảo sát vi điều khiển PIC16F887 hãng Microchip 2.1 Sơ đồ chân PIC16F887 a.Sơ đồ chân Hình 1.1 Sơ đồ chân PIC16F887 b.Chức chân vi điều khiển PIC16F887 Port A: PortA( RA0 RA5) có số chân từ chân số đến chân số PortA (RPA) bao gồm I/O pin Đây chân “hai chiều” (bidirectional pin), nghĩa xuất nhập đƣợc Chức I/O đƣợc điều khiển ghi TRISA (địa 85h) Port B: PortB( RB0 RB7) có số chân từ chân số 33 đến chân số 40 PortB (RPB) gồm pin I/O Thanh ghi điều khiển xuất nhập tƣơng ứng TRISB Bên cạnh số chân PORTB cịn đƣợc sử dụng trình nạp chƣơng trình cho vi điều khiển với chế độ nạp khác PORTB liên quan đến ngắt ngoại vi Timer0 PORTB cịn đƣợc tích hợp chức điện trở kéo lên đƣợc điều khiển chƣơng trình Port C: PortC( RC0 RC7) có số chân từ chân số 15 đến chân số 18 chân số 23 đến chân số 26 PortC (RPC) gồm pin I/O Thanh ghi điều khiển xuất nhập tƣơng ứng TRISC Bên cạnh PORTC chứa chân chức so sánh, Timer1, PWM chuẩn giao tiếp nối tiếp I2C, SPI, SSP, USART Port D: PortD( RD0 RD7) có số chân từ chân số 33 đến chân số 40 PortD (RPD) gồm chân I/O, ghi điều khiển xuất nhập tƣơng ứng TRISD PORTD cổng xuất liệu chuẩn giao tiếp PSP (Parallel Slave Port) Port E: PortE( RE0 RE2) có số chân từ chân số 19 đến chân số 22 chân số 27 đến chân 30 PortE (RPE) gồm chân I/O Thanh ghi điều khiển xuất nhập tƣơng ứng TRISE Các chân PORTE có ngõ vào analog Bên cạnh PORTE cịn chân điều khiển chuẩn giao tiếp PSP Chân 11,12,31,32 chân cung cấp nguồn cho vi điều khiển Chân 13,14 chân đƣợc đấu nối thạch anh với dao động xung clock bên cung cấp xung clock cho chip hoạt động Chân chân RET: Là tín hiệu cho phép thiết lập lại trạng thái ban đầu cho hệ thống, tín hiệu nhập mức tích cục cao 2.2 Sơ đồ khối 2.2.1 Sơ đồ Hình 1.2 Sơ đồ khối 2.2.2 Tổ chức nhớ Cấu trúc nhớ vi điều khiển PIC16F887 bao gồm nhớ: + Bộ nhớ chƣơng trình (Programmemory) + Bộ nhớ liệu (Data memory) a.Bộ nhớ chƣơng trình (Programmemory) Bộ nhớ chƣơng trình vi điều khiển PIC16F887 nhớ Flash dung lƣợng nhớ 8K đƣợc phân chia thành nhiều trang(từ ) Nhƣ nhớ chƣơng trình có khả chứa đƣợc 8*1024=8192 câu lệnh 10 bit cao (bit đến bit 7) chọn chế độ 12h 24h lại nằm bit Nếu bit 6=0 chế độ 24h chữ số hàng trục lớn nên dùng bit ( bit bit ) để mã hóa BCD chữ số hàng trục Nếu bit =1 chế độ 12h đƣợc chọn nhƣng chữ số hàng trục chế độ lớn nên bit thứ đủ để mã hóa BCD chữ số hàng trục nhƣng mà bit thứ lại dùng để buổi sáng hay chiều, mà bit = AM bit =1 PM Trong chế độ 12h 24h bit =0 nên ta ko cần ý đến ghi + Thanh ghi thứ (0x03): Đây ghi thứ tuần DS1307 ghi đơn giản DS1307 Nó dùng số để thứ tuần nên lấy từ đến tƣơng đƣơng từ thứ hai đến chủ nhật Nên dùng bit thấp (bit đến bit 2) để mã hóa BCD thứ ngày Còn bit từ đến mặc định ta khơng làm với bit này! + Thanh ghi ngày (0x04) : Đây ghi ngày tháng DS1307 Do tháng có số ngày khác nhƣng mà nằm khoảng từ 1đến 31 ngày Do ghi bit đƣợc tổ chức đơn giản Nó dùng bit thấp (bit0 đến bit 3) dùng để mã hóa BCD chữ số hàng đơn vị ngày tháng Nhƣng chữ số hàng trục ngày tháng lớn nên dùng bit bit đủ mã hóa BCD Cịn bit bit khơng làm mặc định + Thanh ghi tháng (0x05) : Đây ghi tháng năm DS1307 Tháng năm có từ đến 12 tháng nên việc tổ chức bit tƣơng tự nhƣ ngày tháng nên bit thấp (từ bit đến bit 3) mã hóa BCD hàng đơn vị tháng Nhƣng hàng chục lớn nên dùng bit thứ để mã hóa BCD chữ số hàng trục bit cịn lại từ bit đến bit bỏ trống mặc định cho xuống mức + Thanh ghi năm (0x06): Đây ghi năm DS1307 DS1307 có 100 năm thơi tƣơng đƣơng với 00 đến 99 nên dùng tất bit thấp bit cao để mã hóa BCD năm! + Thanh ghi điều khiển (0x07): Đây ghi điều khiển trình ghi DS1307 Quá trình ghi phải đƣợc kết thúc địa 0x93 II.Sơ đồ nguyên lý mạch 31 Hình 3.8 Sơ đồ mạch nguyên lý CHƢƠNG IV THIẾT KẾ PHẦN MỀM Phần mền viết để điều khiển phần mềm C #include "E:\Ha Document\Vi xu ly\ngocha\Main16F887\main.h" /** ************************************************************** **************** * Ten Tep : main.h * Tac Gia : Ngo Ngoc Ha * Khoa : Cong Nghe Tu Dong * Lop : D6LT-DCN * Ngay : 10-03-2013 32 * Tom Tat * * * * * : Khai bao cac thu vien Cau hinh mot so chuc nang cho trinh bien dich Cau hinh mot so chuc nang cho CHIP Dinh nghia I/O ************************************************************** **************** * Chu Y : * * ************************************************************** **************** */ #ifndef _MAIN_ #define _MAIN_ /***************KHAI BAO CAC THU VIEN*****************/ #include //#include "string.h" /**************KHAI BAO CAU HINH FUSE BIT************/ /////////////////////////////////////////////////////// // // // Voi moi muc phai chon mot danh sach dua // // // /////////////////////////////////////////////////////// // HIGH SPEED OSC //#FUSES LP //#FUSES XT 3mhz to 10 mhz voi PCD //#FUSES RC #FUSES HS (>10mhz voi PCD) // Su dung nguon dao dong tan so thap < 200 khz // Dao dong thach anh 4mhz voi PCM/PCH) // POWER UP TIMER #FUSES NOPUT //Khong su dung Power Up Timer //#FUSES PUT //Su dung Power Up Timer // BROWN OUT _ 33 #FUSES NOBROWNOUT //Khong reset chip BrownOut //#FUSES BROWNOUT //Reset chi co BrownOut // LOW VOLTAGE PROGRAM _ #FUSES NOLVP //No low voltage programing, B3(PIC16) or B5(PIC18) used for I/O //#FUSES LVP //Low Voltage Programming on B3(PIC16) or B5(PIC18) // CODE PROTECED EEPROM #FUSES NOCPD //#FUSES CPD //Khong bao ve du lieu EEPROM //Dung che bao ve du lieu EEPROM // _PROGRAM WRITE PROTECED _ //#FUSES WRT //#FUSES WRT_50% Protected //#FUSES WRT_5% Write Protected #FUSES NOWRT //Program Memory Write Protected //Lower half of Program Memory is Write //Lower 255 bytes of Program Memory is //Program memory not write protected // _ENABLE DEBUG MODE FOR ICD //#device ICD=TRUE // Kich hoat chuc nang DEBUG ICD Integrated Chip Debugging // DEBUG FOR ICD _ #FUSES NODEBUG //#FUSES DEBUG //Khong su dung che Debug voi ICD // Su dung che Debug voi ICD // _CLOCK #use delay(clock=24000000) // Su dung tan so 20Mhz, khong reset watch dog goi den ham delay //#use delay(clock=20000000,RESTART_WDT) // Su dung tan so 20Mhz, reset watch dog goi den ham delay // FAST_STANDAR I/O PORTA _ //#use FAST_IO(A) // Thiet lap che fast I/O cho PORTA, yeu cau phai chi ro huong Vao/Ra 34 // cho cac chan I/O cac ham Input,Output se chi su dung chu ky lenh //#use STANDARD_IO(A) // Thiet lap che chuan I/O cho PORTA, khong yeu cau phai chi ro huong Vao/Ra // cho cac chan I/O cac ham Input,Output se su dung 3-4 chu ky lenh //#use FIXED_IO(A) // // FAST_STANDAR I/O PORTC //#use FAST_IO(C) // Thiet lap che fast I/O cho PORTC, yeu cau phai chi ro huong Vao/Ra // cho cac chan I/O cac ham Input,Output se chi su dung chu ky lenh #use STANDARD_IO(C) // Thiet lap che chuan I/O cho PORTC, khong yeu cau phai chi ro huong Vao/Ra // cho cac chan I/O cac ham Input,Output se su dung 3-4 chu ky lenh //#use FIXED_IO(C) // // FAST_STANDAR PORTD _ I/O #use FAST_IO(D) // Thiet lap che fast I/O cho PORTD, yeu cau phai chi ro huong Vao/Ra // cho cac chan I/O cac ham Input,Output se chi su dung chu ky lenh //#use STANDARD_IO(D) // Thiet lap che chuan I/O cho PORTD, khong yeu cau phai chi ro huong Vao/Ra // cho cac chan I/O cac ham Input,Output se su dung 3-4 chu ky lenh //#use FIXED_IO(D) // // _FAST_STANDAR I/O PORTE _ #use FAST_IO(E) // Thiet lap che fast I/O cho PORTE, yeu cau phai chi ro huong Vao/Ra // cho cac chan I/O cac ham Input,Output se chi su dung chu ky lenh //#use STANDARD_IO(E) // Thiet lap che chuan I/O cho PORTE, khong yeu cau phai chi ro huong Vao/Ra // cho cac chan I/O cac ham Input,Output se su dung 3-4 chu ky lenh 35 //#use FIXED_IO(E) // // CASE _ #CASE // Phan biet chu hoa va chu thuong lap trinh code /************** DINH NGHIA CAC CHAN I/O ************/ //////////////////////////////////////////////////////// // Xoa chu thich cho cac chuc nang I/O su dung // // Dinh nghia lai cac chan cho phu hop voi phan cung // //////////////////////////////////////////////////////// // I/O SRF #define SRF05_ECHO PIN_A0 #define SRF05_TRIGGER PIN_A1 // I/O DS #define DS1307_SCL PIN_C3 #define DS1307_SDA PIN_C4 // I/O LCD #define LCD_RS PIN_E0 #define LCD_RW PIN_E1 #define LCD_EN PIN_E2 #define LCD_D4 PIN_D4 #define LCD_D5 PIN_D5 #define LCD_D6 PIN_D6 #define LCD_D7 PIN_D7 #endif ** ************************************************************** **************** * Ten Tep : lcd_16.h * Tac Gia : Ngo Ngoc Ha * Khoa : Cong Nghe Tu Dong * Lop : D6LT-DCN * Ngay : 10-03-2013 * Tom Tat : Dinh nghia cac ham dieu khien LCD 16x2 * * 36 ************************************************************** **************** * Chu Y : * ************************************************************** **************** */ //Tao Xung void LCD_Enable(void) { output_high(LCD_EN); delay_us(3); output_low(LCD_EN); delay_us(50); } //Ham Gui Bit Du Lieu Ra LCD void LCD_Send4Bit( unsigned char Data ) { output_bit(LCD_D0,Data&0x01); output_bit(LCD_D1,(Data>>1)&1); output_bit(LCD_D2,(Data>>2)&1); output_bit(LCD_D3,(Data>>3)&1); output_bit(LCD_D4,(Data>>4)&1); output_bit(LCD_D5,(Data>>5)&1); output_bit(LCD_D6,(Data>>6)&1); output_bit(LCD_D7,(Data>>7)&1); } // Ham Gui Lenh Cho LCD void LCD_SendCommand (unsigned char command ) { LCD_Send4Bit ( command >>4 );/* Gui bit cao */ LCD_Enable () ; LCD_Send4Bit ( command ); /* Gui bit thap*/ LCD_Enable () ; } // Ham Khoi Tao LCD void LCD_Init ( void ) { output_drive(LCD_D0); output_drive(LCD_D1); output_drive(LCD_D2); 37 output_drive(LCD_D3); output_drive(LCD_D4); output_drive(LCD_D5); output_drive(LCD_D6); output_drive(LCD_D7); output_drive(LCD_EN); output_drive(LCD_RS); output_drive(LCD_RW); LCD_Send4Bit(0x00); delay_ms(20); output_low(LCD_RS); output_low(LCD_RW); LCD_Send4Bit(0x03); LCD_Enable(); delay_ms(5); LCD_Enable(); delay_us(100); LCD_Enable(); LCD_Send4Bit(0x02); LCD_Enable(); LCD_SendCommand( 0x28 ); // giao thuc bit, hien thi hang LCD_SendCommand( 0x0c); // cho phep hien thi man hinh LCD_SendCommand( 0x06 ); // tang ID, khong dich khung hinh LCD_SendCommand( 0x01 ); // xoa toan bo khung hinh } void LCD_Gotoxy(unsigned char x, unsigned char y) { unsigned char address; if(!y) address = (0x80+x); else address = (0xC0+x); delay_us(1000); LCD_SendCommand(address); delay_ms(10); } // Ham Xoa Man Hinh LCD void LCD_Clear() { LCD_SendCommand(0x01); delay_ms(10); } // Ham Gui Ki Tu Len LCD 38 void LCD_PutChar ( unsigned char Data ) { output_high(LCD_RS); LCD_SendCommand( Data ); output_low(LCD_RS); } void LCD_Puts (char *s) { while (*s) { LCD_PutChar(*s); s++; } } void LCD_PutsDelay (char *s,unsigned int time) { while (*s) { LCD_PutChar(*s); s++; delay_ms(time); } } ** ************************************************************** **************** * Ten Tep : srf05.h * Tac Gia : Ngo Ngoc Ha * Khoa : Cong Nghe Tu Dong * Lop : D6LT-DCN * Ngay : 10-03-2013 * Tom Tat : Dinh nghia cac ham dieu khien SRF05 * * ************************************************************** **************** * Chu Y : * 39 ************************************************************** **************** */ #ifndef _SRF05_ #define _SRF05_ unsigned int32 num_pulse=0; int1 range_ok=0; #endif ** ************************************************************** **************** * Ten Tep : ds1307.h * Tac Gia : Ngo Ngoc Ha * Khoa : Cong Nghe Tu Dong * Lop : D6LT-DCN * Ngay : 10-03-2013 * Tom Tat : Dinh nghia cac ham dieu khien DS1307 * * ************************************************************** **************** * Chu Y : * ************************************************************** **************** */ #define DS1307_SCL PIN_C3 #define DS1307_SDA PIN_C4 #use i2c(master, sda=DS1307_SDA, scl=DS1307_SCL) void set_time() ; void update_time(); int8 giay,phut,gio,thu,ngay,thang,nam; int l; int x,y,z; //////////////////////////////////////////////////////////////////////////////////////////// void int_DS1307() { output_float(DS1307_SCL); 40 output_float(DS1307_SDA); } // - Chuyen du lieu m? BINARY cua MASTER -> du lieu m? BCD cho DS1307 -int DECIMALtoBCD(int data) // MASTER -> DS1307 { // x -> y x la du lieu cua MASTER, y la du lieu sau chuyen doi // Thuat toan thuc hien bien doi tu ma DECIMAL sang ma BCD he 10 x = data; if(x (y=9) = 0x09 { y = x; } else if(x>=10) // vd: (x=29) -> (y=41) = 0x29 { y = (x/10 * 6) + x; } return y; } // - Chuyen du lieu m? BCD cua DS1307 -> du lieu m? BINARY cho MASTER int BCDtoDECIMAL(int data) // MASTER

Ngày đăng: 23/03/2014, 16:21

Từ khóa liên quan

Tài liệu cùng người dùng

Tài liệu liên quan