Thiết kế mạch đồng hồ điện tử sử dụng PIC 16F877A IC thời gian thực DS1307 hiển thị giờ, phút, giây trên LED 7 đoạn (có thể chỉnh thời gian).I. I.Chức năng của mạch điện Hiển thị: giờ, phút, giây trên LED 7 đoạn, nhấp nháy led mỗi giây. Giao tiếp với 4 phím : CHẾ ĐỘ TĂNG GIẢM OK. Phím CHẾ ĐỘ dùng để điều chỉnh giờ và phút. Nguyên tắc hoạt động: Mạch sử dụng IC thời gian thực DS 1307 giao tiếp I2C với PIC, sau đó hiển thị các thông tin về giờ, phút, giây, nếu có điều chỉnh thời gian từ các phím chức năng thì sự thay đổi đó sẽ được lưu lại vào DS1307 cho lần hoạt động sau (nếu DS1307 có pin nuôi khi ngắt điện cả mạch).
BỘ GIÁO DỤC VÀ ĐÀO TẠO TRƯỜNG ĐẠI HỌC GIAO THÔNG VẬN TẢI - CƠ SỞ II - KHOA ĐIỆN-ĐIỆN TỬ MÔN HỌC: THIẾT KẾ MÔN HỌC HỆ THỐNG NHÚNG BÀI BÁO CÁO THIẾT KẾ MÔN HỌC HỆ THỐNG NHÚNG SVTH: DƯƠNG PHÁT LỚP: TỰ ĐỘNG HÓA & ĐIỀU KHIỂN K53 MÃ SV: 5351031015 GVHD: LÊ MẠNH TUẤN TP.HCM - 2015 Thiết THIẾT kếKẾ MÔN HỌC HỆ THỐNG NHÚNG mạch đồng hồ điện tử sử dụng PIC 16F877A & IC thời gian thực DS1307 hiển thị giờ, phút, SVTH: Dương Phát Page THIẾT KẾ MÔN HỌC HỆ THỐNG NHÚNG Mục lục - Chương I GIỚI THIỆU VỀ ĐỀ TÀI I Chức mạch điện II Mô tả mạch điện Chương II TỔNG QUAN VỀ CÁC THIẾT BỊ SỬ DỤNG TRONG ĐỀ TÀI I Giới thiệu PIC 16F877A II Cơ chế hoạt động chức DS1307 III LED đoạn nguyên tắc hoạt động IV Khối điều chỉnh thời gian Chương III SỬ DỤNG PHẦN MỀM TRÊN MÁY TÍNH ĐỂ VIẾT CHƯƠNG TRÌNH VÀ THỰC HIỆN MÔ PHỎNG I Giới thiệu phần mềm sử dụng II Kết nối linh kiện mô với Proteus III Ý tưởng chương trình (Thuật toán) IV Viết biên dịch chương trình CCS (PIC C Compiler) KẾT LUẬN SVTH: Dương Phát Page THIẾT KẾ MÔN HỌC HỆ THỐNG NHÚNG Chương I GIỚI THIỆU VỀ ĐỀ TÀI I Chức mạch điện - Hiển thị: giờ, phút, giây LED đoạn, nhấp nháy led giây - Giao tiếp với phím : CHẾ ĐỘ - TĂNG - GIẢM - OK Phím CHẾ ĐỘ dùng để điều chỉnh phút - Nguyên tắc hoạt động: Mạch sử dụng IC thời gian thực DS 1307 giao tiếp I2C với PIC, sau hiển thị thông tin giờ, phút, giây, có điều chỉnh thời gian từ phím chức thay đổi lưu lại vào DS1307 cho lần hoạt động sau (nếu DS1307 có pin nuôi ngắt điện mạch) II Mô tả mạch điện - Dùng led loại led/1 - Dùng Tranzito để điều khiển việc đóng ngắt led - Vi điều khiển dùng PIC 16F877A - Dùng thạch anh 20MHz để tạo dao động cho PIC SVTH: Dương Phát Page THIẾT KẾ MÔN HỌC HỆ THỐNG NHÚNG Chương II TỔNG QUAN VỀ CÁC THIẾT BỊ SỬ DỤNG TRONG ĐỀ TÀI I Giới thiệu VI ĐIỀU KHIỂN PIC 16F877A Ta có sơ đồ chân PIC 16F877A sau: PIC 16F877A mạch loại có 40 chân, với cổng vào la Port A(RA0÷RA5), Port B(RB0÷RB7), Port C(RC0÷RC7),Port D(RD0÷RD7), Port E(RE0÷RE2) Có định thời timer0, timer1, timer2 8K nhớ chương trình flash Tổ chức nhớ: Có khối nhớ PIC16F877A: nhớ chương trình, nhớ liệu khối nhớ EEPROM Bộ nhớ chương trình nhớ liệu có đường bus riêng truy cập vào nhớ cách riêng rẽ Port A: có bit (tương ứng với chân RA0÷RA5) chân cổng A có tích hợp số chức ngoại vi, thiết bị ngoại vi enable cổng không hoạt động cổng vào Bình thường Port A cổng vào chiều Thanh ghi xác đinh chiều tương ứng chân Port A ghi TrisA Các bit ghi TrisA xác định chân Port A đầu vào ngược lại đầu Port B: rộng bit(tương ứng với chân RB0÷RB7), cổng vào chiều Thanh ghi qui định chiều cổng B ghi Tris B Thiết lập bit ghi TrisB làm cho cổng B cổng vào ngược lại cổng SVTH: Dương Phát Page THIẾT KẾ MÔN HỌC HỆ THỐNG NHÚNG Port C: rộng bit (tương ứng với chân RC0÷RC7), bình thường cổng vào chiều, ghi qui định chiều cổng ghi TrisC Các chân RC3,RC4 dùng để kết nối truyền nhân thông tin với thiết bị ngoại vi Port D: rộng bit (RD0÷RD7), cổng vào cổng Port D cấu cổng vi xử lý rộng bit (cổng slave song song) cách thiết lập bit điều khiển PSPSTATUS (TrisE.4) Ở chế độ đầu vào tín hiệu TTL Port E: rộng bit(RE0÷RE2), cấu hình đầu đầu vào Port E đầu vào điều khiển I/O bit PSPSTATUS (TrisE.4) thiết lập Từ hình vẽ ta thấy, PIC16F877A có chân Vcc chân GND, để PIC hoạt động ta phải cấp nguồn cho tất chân Ngoài cấp nguồn cung cấp ta phải cấp nguồn xung dao động vi điều khiển hoạt động, ta dùng thạch anh 20MHz để cấp xung dao động Nguồn dao động cấp thông qua chân 13 14 PIC Mạch reset cho vi điều khiển công tắc để hở thông qua chân MCLR vi điều khiển mạch thực reset chân từ mức logic xuống logic công tắc để hở chân mang mức logic nối với nguồn thông qua điện trở hạn dòng R1, điện trở phải có giá trị nhỏ 40k để đảm bảo điện áp cung cấp cho vi điều khiển II Cơ chế hoạt động chức DS1307 SVTH: Dương Phát Page THIẾT KẾ MÔN HỌC HỆ THỐNG NHÚNG Vcc: nối với nguồn X1,X2: nối với thạch anh 32,768 kHz Vbat: đầu vào pin 3V GND: nối đất, Mass SDA: chuỗi data SCL: dãy xung clock SQW/OUT: xung vuông/đầu driver DS1307 IC thời gian thực với nguồn cung cấp nhỏ, dùng để cập nhật thời gian ngày tháng với 56 bytes SRAM Địa liệu truyền nối tiếp qua đường bus chiều Nó cung cấp thông tin giờ, phút, giây, thứ, ngày, tháng, năm Ngày cuối tháng tự động điều chỉnh với tháng nhỏ 31 ngày,bao gồm việc tự động nhảy năm Đồng hồ hoạt động dạng 24h 12h với thị AM/PM DS1307 có mạch cảm biến điện áp dùng để dò điện áp lỗi tự động đóng ngắt với nguồn pin cung cấp DS 1307 hoạt động với vai trò slave đường bus nối tiếp Việc truy cập thi hành với thị START mã thiết bị định cung cấp địa ghi Tiếp theo ghi truy cập liên tục đến thị STOP thực thi Sơ đồ địa RAM RTC: Thông tin thời gian ngày tháng lấy cách đọc byte ghi thích hợp Thời gian ngày tháng thiết lập thông qua byte ghi cách viết vào giá trị thích hợp Nội dung ghi dạng mã BCD (binary coded decreaseimal) Bit ghi seconds bit clock halt(CH),khi bit thiết lập dao động disable, xoá dao động enable Chú ý phải enable dao động suốt trình cấu hình thiết lập (CH=0) DS1307 chạy chế độ 24h 12h Bit thứ ghi hours bit chọn chế độ 24h 12h Khi bit mức cao chế độ 12h chọn Ở chế độ 12h bit bit AM/PM với mức cao PM Ở chế độ 24h bit bit 20h(từ 20h đến 23h) Trong trình truy cập liệu, thị START thực thi dòng thời gian truyền tới ghi thứ 2, thông tin thời gian đọc từ ghi thứ cấp này, đồng hồ tiếp tục chạy SVTH: Dương Phát Page THIẾT KẾ MÔN HỌC HỆ THỐNG NHÚNG III LED đoạn nguyên tắc hoạt động Khối hiển thị dùng LED đoạn: led dùng để hiển thị giờ, led dùng để hiển thị phút, led dùng để hiển thị giây & LED đơn nhấp nháy giây Tất led chung đường tín hiệu a,…,g chân điều khiển mắc với khoá điện tử (8 Tranzito A1015) cổng logic not để điều khiển việc đóng ngắt led - Việc cấp nguồn cho led dựa thuật toán quét led, tức thời điểm có Led đoạn cấp nguồn sáng, thời gian giãn cách sáng Led >4; //convert to BCD SEC TG3= & 0x0F; TG4=(min & 0xF0)>>4; //convert to BCD MIN TG5= hour & 0x0F; TG6=(hour & 0x30)>>4; //convert to BCD HOUR } ////////////////////////////////////////////////////// void set_min() { gic=1; gid=1; pc=1; pd=1; gc=1; gd=1; min= read_DS1307(1); TG3= & 0x0F; TG4=(min & 0xF0)>>4; while(sw1==1&&sw4==1) { portb= LED[TG3]; pd=0; delay_us(500); pd=1; portb= LED[TG4]; pc=0; delay_us(500); pc=1; if(sw2==0)//tang { while(sw2==0) {} if(TG4==5&&TG3==9) { TG4=0; TG3=0;} else if(TG3==9) { TG4++; TG3=0;} else TG3++; } if(sw3==0)//giam { SVTH: Dương Phát Page 13 THIẾT KẾ MÔN HỌC HỆ THỐNG NHÚNG while(sw3==0) {} if(TG4==0&&TG3==0) {TG4=5; TG3=9;} else if(TG3==0) {TG4 ; TG3=9;} else TG3 ; } min= (TG44; while(sw1==1&&sw4==1) { portb= LED[TG5]; gid=0; delay_us(500); gid=1; portb= LED[TG6]; gic=0; delay_us(500); gic=1; if(sw2==0)//tang { while(sw2==0) {} if(TG6==2&&TG5==3) {TG6=0;TG5=0;} else if(TG5==9) {TG6++; TG5=0;} else TG5++; } if(sw3==0)//giam { while(sw3==0) {} if(TG6==0&&TG5==0) {TG6=2; TG5=3;} else if(TG5==0) {TG6 ; TG5=9;} else TG5 ; } hour= (TG6[...]... delay_us(500); pd=1; PortB =LED[ TG2];//giay chuc gc=0; delay_us(500); gc=1; PortB =LED[ TG1];//giay don vi gd=0; delay_us(500); gd=1; restart_wdt(); } Chương trình con DS13 07. c #define DS13 07_ SDA PIN_C4 #define DS13 07_ SCL PIN_C3 #use i2c(master, sda=DS13 07_ SDA, scl=DS13 07_ SCL) //========================== SVTH: Dương Phát Page 15 THIẾT KẾ MÔN HỌC HỆ THỐNG NHÚNG // write data one byte to // DS13 07 //==========================... ////////////////////////////////////////////////// void read_time() { sec = read_DS13 07( 0); min = read_DS13 07( 1); hour = read_DS13 07( 2); SVTH: Dương Phát Page 12 THIẾT KẾ MÔN HỌC HỆ THỐNG NHÚNG update_time(); //goi chuyen doi } ///////////////////////////////////////////////////// void update_13 07( ) { write_DS13 07( 0,sec); write_DS13 07( 1,min); write_DS13 07( 2,hour); } ////////////////////////////////////////////////////... set_Tris_e(0x00); u=read_ds13 07( 0); sec=u & 0x0F; setup_wdt (WDT_1152MS); ////////////////////////////////////////////// write_ds13 07( 0,sec); // ket noi dong ho(gan bit7=0) chinh_gio=0; chinh_phut=0; SVTH: Dương Phát Page 11 THIẾT KẾ MÔN HỌC HỆ THỐNG NHÚNG gic=1; gid=1; pc=1; pd=1; gc=1; gd=1;//tat cac led while(true) { read_time(); display(); if(sec%2==0) // chan tat, le sang { lednhay=1; } else { lednhay=0; } if(sw1==0)... (TG64; while(sw1==1&&sw4==1) { portb= LED[ TG3]; pd=0; delay_us(500); pd=1; portb= LED[ TG4]; pc=0; delay_us(500); pc=1; if(sw2==0)//tang { while(sw2==0) {} if(TG4==5&&TG3==9) { TG4=0; TG3=0;} else if(TG3==9) { TG4++; TG3=0;} else TG3++; } if(sw3==0)//giam { SVTH: Dương Phát Page 13 THIẾT KẾ MÔN HỌC HỆ THỐNG NHÚNG while(sw3==0)... BYTE data; i2c_start(); i2c_write(0xd0); i2c_write(address); i2c_start(); i2c_write(0xd1); data=i2c_read(0); i2c_stop(); return(data); } Lưu ý: Đối với đoạn chương trình trên, việc điều khiển led sáng tắt có thông qua cổng Not, vì vậy đối với mạch thực tế dùng transistor thì ta chỉ việc đổi việc gán các biến gic,gid,pc,pd,gc,gd từ 0 thành 1 và từ 1 thành 0 000 -Hết -000 SVTH: Dương Phát Page 16 ... ; TG3=9;} else TG3 ; } min= (TG44; while(sw1==1&&sw4==1) { portb= LED[ TG5]; gid=0; delay_us(500); gid=1; portb= LED[ TG6]; gic=0; delay_us(500); gic=1; if(sw2==0)//tang... //========================== void write_DS13 07( byte address, BYTE data) { short int status; i2c_start(); i2c_write(0xd0); i2c_write(address); i2c_write(data); i2c_stop(); i2c_start(); status=i2c_write(0xd0); while(status==1) { i2c_start(); status=i2c_write(0xd0); } } //========================== // read data one byte from DS13 07 //========================== BYTE read_DS13 07( byte address) { BYTE data; i2c_start(); ... PIC 16F 877 A Ta có sơ đồ chân PIC 16F 877 A sau: PIC 16F 877 A mạch loại có 40 chân, với cổng vào la Port A(RA0÷RA5), Port B(RB0÷RB7), Port C(RC0÷RC7),Port D(RD0÷RD7), Port E(RE0÷RE2) Có định thời timer0,... khiển việc đóng ngắt led - Việc cấp nguồn cho led dựa thuật toán quét led, tức thời điểm có Led đoạn cấp nguồn sáng, thời gian giãn cách sáng Led