LẤY CODE PIC + MẠCH MÔ PHỎNG PROTEUS+ VIDEO THUYẾT MINH LIÊN HỆ ZALO 0327697318)LẤY CODE PIC + MẠCH MÔ PHỎNG PROTEUS+ VIDEO THUYẾT MINH LIÊN HỆ ZALO 0327697318) LẤY CODE PIC + MẠCH MÔ PHỎNG PROTEUS+ VIDEO THUYẾT MINH LIÊN HỆ ZALO 0327697318)
TRƯỜNG ĐẠI HỌC KỸ THUẬT CÔNG NGHIỆP KHOA ĐIỆN TỬ BÁO CÁO TIỂU LUẬN Môn học: HỆ THỐNG NHÚNG Đề tài: THIẾT KẾ ĐỒNG HỒ ANALOG SỬ DỤNG LED RGB GVHD: Tăng Cẩm Nhung SVTH 1: Mẫn Xuân Hội(TN) MSSV 1: K175520114021 SVTV 2: Lê Huy Hoàng MSSV 2: K175520114018 Thái nguyên, ngày 21 tháng năm 2021 Contents CHƯƠNG I GIỚI THIỆU YÊU CẦU-GIỚI HẠN ĐỀ TÀI Giới thiệu Giới hạn đề tài CHƯƠNG II THIẾT KẾ Giới thiệu Thiết kế hệ thống 2.1 Thiết kế sơ đồ khối 2.2 Thiết kế mạch nguyên lý 2.2.1 Thiết kế khối hiển thị 2.2.2 Khối thời gian thực 2.2.3 Khối điều khiển động step .10 2.2.4 Khối vi xử lý 14 2.2.5 Thiết kế khối hiệu chỉnh thời gian 15 2.2.6 Thiết kế khối nguồn .16 2.2.6 Sơ đồ nguyên lý cho toàn mạch 17 2.3 Lưu đồ chương trình 17 2.3.1 Giới thiệu yêu cầu điều khiển .17 2.3.2 Lưu đồ 18 2.3.3 Chương trình 19 2.3.4 Giải thích lệnh sử dụng trương trình .27 CHƯƠNG III KẾT QUẢ THỰC HIỆN VÀ KẾT LUẬN 31 3.1 Đánh giá kết .31 3.2 Định hướng phát triển 31 2|Page CHƯƠNG I GIỚI THIỆU YÊU CẦU-GIỚI HẠN ĐỀ TÀI Giới thiệu Đồng hồ thiết bị quen thuộc với người sống nay, Trong giới đồng hồ có nhiều loại đồng hồ cách thức chúng hoạt động như: đồng hồ cơ, điện tử, truyền thống, đại… Trong khuôn khổ báo cáo chúng em nghiên cứu đồng hồ analog (đồng hồ kim) sử dụng ic thời gian thực để tự cập nhật Đồng hồ analog đồng hồ có hình khơng phải kỹ thuật số mà tương tự với mặt đồng hồ truyền thống Tên ví dụ chữ viết tắt; tạo để phân biệt đồng hồ analog, gọi đơn giản "đồng hồ", từ đồng hồ kỹ thuật số Nó tập trung đề cập đến việc thiết kế hình, khơng phụ thuộc vào cơng nghệ tính sử dụng đồng hồ chuyển động mơ-đun, đối thủ nó, "đồng hồ kỹ thuật số ", thường bao hàm (trong hầu hết tâm trí người) điện tử kỹ thuật số cơng nghệ tính thiết kế Đồng hồ kỹ thuật số thời gian hiển thị dạng chuỗi chữ số, ví dụ: "13:37" Đồng hồ analog hình khơng phải kỹ thuật số, biểu thị (thông thường) chuyển động liên tục một, hai ba kim vào số xếp mặt số trịn Hình 1.1 Một vài ví dụ đồng hồ analog 3|Page Đồng hồ thời gian thực (tiếng Anh: real-time clock, viết tắt: RTC) thiết bị điện tử (thường dạng mạch tích hợp) theo dõi thời gian trôi qua thực tế Thuật ngữ đồng hồ thời gian thực sử dụng để tránh nhầm lẫn với đồng hồ điện tử khác sử dụng xung nhịp đồng hồ (clock signal) tín hiệu cho thiết bị điện tử kỹ thuật số, khơng tự tính thời gian đơn vị người sử dụng Giới hạn đề tài Ở đề tài đồng hồ thiết kế dạng analog, dạng treo tường để bàn sử dụng linh kiện tương đối lớn Đồng hồ điều khiển vi điều kiển pic16f877a ic thời gian thực ds1307 Dùng LED đoạn LED RGB để trang trí tương ứng cho số mặt đồng hồ, kim phút gắn động bước để Đồng hồ tùy chọn sử dụng nguồn pin nguồn điện dân dụng 220v qua chuyển đổi nguồn Khi bị nguồn nuôi đồng hồ hoạt động tự hoạt động trở lại có điện, khơng phải cài lại sau lần ic thời gian thực có nguồn pin nuôi điện (pin CMOS) 4|Page CHƯƠNG II: THIẾT KẾ Giới thiệu Mơ hình đồng hồ analog nhóm xây dựng mơ phần mềm Proteus CCS Mạch sử dụng vi xử lý PIC16F877A làm xử lý trung tâm Vi xử ly đọc ghi thời gian từ IC thời gian thực RTC DS1307 thông qua chuẩn giao thức I2C Khi cấp nguồn vi xử lý đọc thời gian thực từ IC xuất liệu vừa đọc để điều khiển kim đồng thời xuất tín hiệu cho LED đoạn LED RGB hoạt động Chúng ta cài đặt thơng số thời gian bao gồm giờ, phút, giây Việt Nam nước có múi khác giới Trong trường hợp nguồn không cần chỉnh lại dựa vào IC thời gian thực tích hợp điều khiển Thiết kế hệ thống 2.1 Thiết kế sơ đồ khối Sau thời gian tìm hiểu nghiên cứu đề tài,dựa vào yêu cầu đồng hồ, sơ đồ khối toàn mạch thiết kế trình bày hình 2.1 Hình 2.1: Sơ đồ khối hệ thống 5|Page Chức khối: Khối nguồn: có chức cấp nguồn cho toàn khối để mạch để hoạt động Khối vi xử lý: có chức nhận xử lý liệu từ khối thời gian thực, xuất tín hiệu điều khiển khối hiển thị khối điều khiển động step Khối thời gian thực: cung cấp thời gian thực giờ, phút, giây cho khối vi xử lý Khối hiển thị: khối hiển thị có chức hiển thị thơng tin để người sử dụng dễ dàng quan sát Khối điều khiển động step: có chức điều khiển động step để mô kim kim phút đồng hồ Khối hiệu chỉnh thời gian: có nhiệm vụ điều chỉnh thời gian 2.2 Thiết kế mạch nguyên lý 2.2.1 Thiết kế khối hiển thị Khối hiển thị bao gồm LED đoạn đơn để hiển thị số 12, 3, 6, đồng hồ, LED RGB để biểu diễn số cịn lại đồng hồ, đơng thời LED RGB cịn có chức phân biệt am (màu green+blue) pm (màu blue) hoạt động chế độ 12h LED đoạn LED đoạn đèn LED xếp thành hình chữ nhật hình bên Hình 2.2: Hình ảnh LED đoạn Mỗi đèn LED đoạn có chân đưa khỏi hộp hình vng Mỗi chân gán cho chữ từ a đến g tương ứng với LED Những chân khác 6|Page nối lại với thành chân chung Như cách phân cực thuận (forward biasing) chân LED theo thứ tự cụ thể, số đoạn sáng số đoạn khác không sáng cho phép hiển thị ký tự mong muốn Điều cho phép hiển thị số thập phân từ đến LED đoạn Chân chung sử dụng để phân loại LED đoạn Vì đèn LED có chân, chân anode chân cathode nên có loại LED đoạn cathode chung (CC) anode chung (CA) Sự khác loại thấy tên gọi Loại CC chân cathode nối chung với Còn loại CA chân anode nối chung với Cách chiếu sáng loại sau: Loại CC (common cathode): Tất chân cathode nối với nối đất, hay logic Mỗi phân đoạn chiếu sáng cách sử dụng điện trở đặt tín hiệu logic (hay mức cao) để phân cực thuận cực anode (từ a đến g) Hình 2.3: LED đoạn loại chung C Loại CA (common anode): Tất chân anode nối với với logic Mỗi phân đoạn chiếu sáng cách sử dụng điện trở tín hiệu logic (hay low) vào cực cathode (từ a đến g) 7|Page Hình 2.4: LED đoạn loại chung A Dòng cho đoạn từ 10 mA đến 20 mA điện áp cho LED nhỏ 2V LED RGB Đèn LED RGB loại đèn LED tạo ba màu ĐỎ, XANH LÁ CÂYvà XANH DA TRỜI Đèn LED RGB có hai loại đèn LED RGB cực dương chung (Common Anode) đèn LED RGB cực âm chung (Common Cathode) Một đèn LED RGB có cực dương chung bao gồm bốn đầu cuối, đầu cuối dành cho cực dương chung, đầu cuối dành cho đầu cực âm cực LED ĐỎ, đầu cuối dành cho đầu cực âm cực LED XANH LÁ cổng cuối dành cho đầu cực âm cực LED XANH DA TRỜI Mặt khác, đèn LED RGB cực âm thông thường bao gồm bốn đầu cuối loại LED RGB này, đầu cuối dành cho cực âm chung, đầu dành cho đầu cuối cực dương LED ĐỎ, đầu cuối dành cho đầu cuối cực dương LED XANH LÁ cuối đầu dành cho cực dương LED BLUE Hình 2.5: Các dạng LED RGB Điện áp hoạt động: Màu ĐỎ – 1,8 đến 2,2 V 8|Page Màu XANH LÁ – 3,0 đến 3,4 V Màu XANH DA TRỜI – 3,0 đến 3,4 V Dòng điện hiệu dụng: Màu ĐỎ – 20mA Màu XANH LÁ – 20mA Màu XANH DA TRỜI – 20mA 2.2.2 Khối thời gian thực IC thời gian thực (RTC) DS1307 có chức cung cấp thông tin thời gian (thời gian thực): giờ, phút, giây, thứ, ngày tháng, năm cách xác thiết bị bị tắt (ngắt điện ngồi) Giao tiếp với vi điều khiển thơng qua chuẩn I2C, đóng vai trị slave kết nối đến bus I2C Có thể đếm thời gian theo định dạng 24 12 với thị AM/PM Ngồi bên chíp có dị phát nguồn tự động chuyển sang sử dụng nguồn pin dự phịng Một số tính bật IC RTC DS1307 đề cập Lưu trữ cung cấp thông tin thời gian thực: ngày, tháng, năm, giờ, phút, giây,… Khả thiết lập ngày đến năm 2100 Tiêu thụ điện thấp: dòng tiêu thụ 500nA hoạt động pin Tự động chuyển sang nguồn pin trường hợp điện Đồng hồ 24 12 với báo AM/PM Sử dụng chuẩn giao tiếp I2C RTC DS1307 có sẵn dạng module, bao gồm tất thành phần cần thiết pin, đầu nối, điện trở kéo lên tinh thể thạch anh 9|Page Hình 2.6: Module DS1307 Hình ảnh sau cho thấy hình dạng sơ đồ chân IC RTC DS1307 Để giảm công suất tiêu thụ, số lượng chân IC phải giảm Do đó, DS1307 RTC sử dụng giao tiếp I2C Hình 2.7: Sơ đồ chân IC RTC DS1307 Bảng 1: Chức chân IC DS1307 10 | P a g e động bước thực góc quay tương ứng kim kim phút đồng hồ kim Đồng thời vi điều khiển xuất tín hiệu LED RGB để hiển thị thông số mặt đồng hồ giúp ngưới sử dụng dễ quan sát tạo tính thẩm mỹ cho đồng hồ 2.3.2 Lưu đồ 21 | P a g e 2.3.3 Chương trình #include #use delay(clock=20M) #define RTC_SDA PIN_C4 #define RTC_SCL PIN_C3 #use i2c(master, sda=RTC_SDA, scl=RTC_SCL) BYTE bin2bcd(BYTE binary_value); BYTE bcd2bin(BYTE bcd_value); BYTE min; BYTE hrs; BYTE sec; int8 g=0; #include unsigned int8 stepm=0,steps=0,steph=0; int8 chuc1,donvi1,chuc2,donvi2,chuc3,donvi3; void ds1307_init() { BYTE seconds = 0; i2c_start(); i2c_write(0xD0); i2c_write(0x00); i2c_start(); i2c_write(0xD1); seconds = bcd2bin(i2c_read(0)); i2c_stop(); seconds &= 0x7F; delay_us(3); i2c_start(); i2c_write(0xD0); i2c_write(0x00); i2c_write(bin2bcd(seconds)); i2c_start(); i2c_write(0xD0); i2c_write(0x07); i2c_write(0x80); i2c_stop(); } void ds1307_set_date_time(BYTE day, BYTE mth, BYTE year, BYTE dow, BYTE hrs, BYTE min, BYTE sec) { sec &= 0x7F; hrs &= 0x3F; 22 | P a g e i2c_start(); i2c_write(0xD0); i2c_write(0x00); i2c_write(bin2bcd(sec)); i2c_write(bin2bcd(min)); i2c_write(bin2bcd(hrs)); i2c_write(bin2bcd(dow)); i2c_write(bin2bcd(day)); i2c_write(bin2bcd(mth)); i2c_write(bin2bcd(year)); i2c_write(0x80); i2c_stop(); } void ds1307_get_date(BYTE &day, BYTE &mth, BYTE &year, BYTE &dow) { i2c_start(); i2c_write(0xD0); i2c_write(0x03); i2c_start(); i2c_write(0xD1); dow = bcd2bin(i2c_read() & 0x7f); day = bcd2bin(i2c_read() & 0x3f); mth = bcd2bin(i2c_read() & 0x1f); year = bcd2bin(i2c_read(0)); i2c_stop(); } void ds1307_get_time(BYTE &hr, BYTE &min, BYTE &sec) { i2c_start(); i2c_write(0xD0); i2c_write(0x00); i2c_start(); i2c_write(0xD1); sec = bcd2bin(i2c_read()); = bcd2bin(i2c_read()); hrs = bcd2bin(i2c_read(0)); i2c_stop(); } BYTE bin2bcd(BYTE binary_value) { BYTE temp; BYTE retval; 23 | P a g e temp = binary_value; retval = 0; while(1) { if(temp >= 10) { temp -= 10; retval += 0x10; } else { retval += temp; break; } } return(retval); } BYTE bcd2bin(BYTE bcd_value) { BYTE temp; temp = bcd_value; temp >>= 1; temp &= 0x78; return(temp + (temp >> 2) + (bcd_value & 0x0f));} void kimgiay() { steps ++; if(steps==1){ output_high(PIN_D0); output_low(PIN_D1); output_high(PIN_D2); output_high(PIN_D3);} else if(steps==2){ output_low(PIN_D2); output_high(PIN_D3); output_high(PIN_D0); output_high(PIN_D1);} else if(steps==3){ output_high(PIN_D1); output_low(PIN_D0); output_high(PIN_D2); output_high(PIN_D3);} 24 | P a g e else if(steps==4){ output_high(PIN_D1); output_high(PIN_D0); output_low(PIN_D3); output_high(PIN_D2); steps=0;}} void kimphut() { stepm ++; if(stepm==1){ output_high(PIN_D4); output_low(PIN_D5); output_high(PIN_D6); output_high(PIN_D7);} else if(stepm==2){ output_low(PIN_D6); output_high(PIN_D7); output_high(PIN_D4); output_high(PIN_D5);} else if(stepm==3){ output_high(PIN_D5); output_low(PIN_D4); output_high(PIN_D6); output_high(PIN_D7);} else if(stepm==4){ output_low(PIN_D7); output_high(PIN_D6); output_high(PIN_D5); output_high(PIN_D4); stepm=0;}} void kimgio() { steph ++; if(steph==1){ output_high(PIN_B0); output_low(PIN_B1); output_high(PIN_B2); output_high(PIN_B3);} else if(steph==2){ output_high(PIN_B0); output_high(PIN_B1); output_low(PIN_B2); 25 | P a g e output_high(PIN_B3);} else if(steph==3){ output_high(PIN_B3); output_high(PIN_B2); output_high(PIN_B1); output_low(PIN_B0);} else if(steph==4){ output_high(PIN_B0); output_high(PIN_B1); output_low(PIN_B3); output_high(PIN_B2); steph=0;}} void chinhthoigian() { int8 demh=0; int8 demp=0; int8 dems=0; batdau2: if (input(PIN_B5)==0) {delay_ms(250); if(input(PIN_B5 )==1){ dems++; kimgiay();}} if (input(PIN_B6)==0) {delay_ms(50); if(input(PIN_B6)==1){ demp++; kimphut();}} if (input(PIN_B7)==0) {delay_ms(50); if(input(PIN_B7)==1){ demh++; kimgio();}} if (input(PIN_A1)==1) {goto batdau2;} if(input(PIN_A1)==0){ ds1307_set_date_time(8,7,21,6,demh,demp,dem s); int8 th=24-demh; 26 | P a g e for(int8 h1=0;h1