Thiết kế hệ thống hẹn giờ tắt mở thiết bị điện

50 236 0
Thiết kế hệ thống hẹn giờ tắt mở thiết bị điện

Đ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

Thiết kế và chế tạo mạch hẹn giờ tắt mở thiết bị điện. Việc thực hiện đề tài giúp em củng cố lại kiến thức đã học và tiếp thu thêm nhiều kiến thức mới từ giảng viên hướng dẫn. Đó cũng là khoảng thời gian em thực tế hóa các kiến thức đã được học trên mô hình cụ thể cũng như hiểu rõ hơn cách viết chương trình cho vi điều khiển. Do kiến thức còn hạn hẹp nên em chỉ nghiên cứu một ứng dụng nhỏ. Nếu có thời gian nhiều hơn và được nghiên cứu sâu hơn, mô hình này có thể được ứng dụng rộng rãi trong hầu hết các lĩnh vực của cuộc sống.

ĐẠI HỌC ĐÀ NẴNG TRƯỜNG ĐẠI HỌC SƯ PHẠM KHOA VẬT LÝ  PHAN MINH GIÁC THIẾT KẾ HỆ THỐNG HẸN GIỜ TẮT MỞ THIẾT BỊ ĐIỆN Đà Nẵng, 2018 ĐẠI HỌC ĐÀ NẴNG TRƯỜNG ĐẠI HỌC SƯ PHẠM KHOA VẬT LÝ  -F PHAN MINH GIÁC THIẾT KẾ HỆ THỐNG HẸN GIỜ TẮT MỞ THIẾT BỊ ĐIỆN Chuyên ngành: Vật lý học Khóa học: 2014 - 2018 Người hướng dẫn: Th.S Lê Xứng Đà Nẵng, 2018 LỜI CẢM ƠN L ời em xin gửi lời cảm ơn chân thành đến nhà trường tạo điều kiện cho sinh viên chúng em có mơi trường học tập tốt Cảm ơn thầy cô khoa Vật lý – Trường Đại học Sư phạm – Đại học Đà Nẵng truyền đạt kiến thức cho sinh viên chúng em lòng nhiệt huyết với học trò, với cơng việc suốt năm qua Em xin gửi lời cảm ơn sâu sắc đến thầy Lê Xứng – khoa Điện Tử Viễn Thông – Đại học Bách khoa Đà Nẵng trực tiếp hướng dẫn, định hướng chuyên môn, quan tâm giúp đỡ tận tình tạo điều kiện thuận lợi q trình em thực khóa luận tốt nghiệp Và hết, em xin bày tỏ lòng kính trọng biết ơn sâu sắc đến gia đình tạo điều kiện tốt để em hồn thành tốt cơng việc q trình thực khóa luận Em xin chân thành cảm ơn quý thầy cô khoa Vật lý tận tình giảng dạy, trang bị cho em kiến thức quý báu năm học vừa qua Mặc dù em cố gắng để hoàn thành đề tài khóa luận chắn khơng thể tránh khỏi thiếu sót Rất mong nhận đóng góp ý kiến q thầy bạn Em xin chân thành cảm ơn! Sinh viên thực Phan Minh Giác I MỤC LỤC LỜI CẢM ƠN i MỤC LỤC ii DANH MỤC KÝ HIỆU VÀ CỤM TỪ VIẾT TẮT iv DANH MỤC BẢNG BIỂU v DANH MỤC HÌNH VẼ vi MỞ ĐẦU .1 Lý chọn đề tài Mục tiêu nghiên cứu .1 Nhiệm vụ nghiên cứu Đối tượng phạm vi nghiên cứu Phương pháp nghiên cứu CHƯƠNG GIỚI THIỆU VỀ THIẾT BỊ ĐIỀU KHIỂN VÀ NHỮNG LINH KIỆN SỬ DỤNG TRONG THIẾT KẾ 1.1 Giới thiệu thiết bị điều khiển 1.2 Nguyên lý hoạt động 1.3 Khảo sát vi điều khiển 8051 (AT89C52) 1.4 Cấu trúc phần cứng AT89C52 .7 1.4.1 Khối xử lý trung tâm CPU 1.4.2 Khối điều khiển quản lý Bus 1.4.3 Các đếm/ định thời .7 1.4.4 Giao tiếp nối tiếp .8 1.4.5 Bộ nhớ chương trình 1.4.6 Bộ nhớ liệu 1.5 Khảo sát chân chức chân AT89C52 1.5.1 Port .10 1.5.2 Port .10 1.5.3 Port .10 1.5.4 Port .10 1.5.5 Chân cho phép nhớ chương trình .11 1.5.6 Chân cho phép chốt địa ALE 11 II 1.5.7 Chân truy xuất .11 1.5.8 Chân RESET (RST) 11 1.5.9 Các chân XTAL1 XTAL2 12 1.6 Sơ lược linh kiện điện tử sử dụng thiết kế .12 1.6.1 Thạch anh 12MHz 12 1.6.2 Tụ gốm tụ hóa .12 1.6.3 Điện trở 13 1.6.4 LED đơn 14 1.6.5 LED đoạn 14 1.6.6 Relay 15 1.6.7 Bóng đèn điện 15 CHƯƠNG THIẾT KẾ MẠCH ĐIỀU KHIỂN .17 2.1 Sơ đồ khối toàn mạch 17 2.2 Chức khối 19 2.2.1 Khối điều khiển trung tâm .19 2.2.2 Khối hiển thị 19 2.2.3 Khối phím nhấn .20 2.2.4 Khối công suất 20 2.2.5 Khối nguồn 21 2.3 Cấu tạo mạch 22 2.3.1 Mạch điều khiển trung tâm .22 2.3.2 Mạch hiển thị 24 2.3.3 Mạch phím nhấn .25 2.3.4 Mạch công suất .26 2.4 Sơ đồ nguyên lý toàn mạch 28 CHƯƠNG CHƯƠNG TRÌNH ĐIỀU KHIỂN 29 3.1 Thiết kế phần mềm .29 3.2 Lưu đồ thuật toán 31 3.3 Code chương trình 32 KẾT LUẬN .40 TÀI LIỆU THAM KHẢO 41 Ý KIẾN CỦA NGƯỜI HƯỚNG DẪN III DANH MỤC KÝ HIỆU VÀ CỤM TỪ VIẾT TẮT CPU Central Processing Unit ALU Arithmetic Logical Unit PSW Program Status Word PC Program Counter ROM Read Only Memory RAM Random Acces Memory Program Store Enable OE Outbook Enable ALE Adress Latch Enable IV DANH MỤC BẢNG BIỂU Bảng 1.1 So sánh chip họ MCS-51 .5 Bảng 1.2 Các ghi chức đặc biệt .8 Bảng 2.1 Danh sách linh kiện khối công suất 26 V DANH MỤC HÌNH VẼ Hình 1.1 Sơ đồ khối chip 8051 Hình 1.2 Sơ đồ chân 89C52 Hình 1.3 AT89C52 ghép với mạch TTL bên 12 Hình 1.4 Hình ảnh kí hiệu thạch anh 12 Hình 1.5 Hình ảnh kí hiệu tụ điện 13 Hình 1.6 Hình ảnh kí hiệu điện trở .13 Hình 1.7 Hình ảnh kí hiệu LED đơn .14 Hình 1.8 Hình ảnh LED đoạn Cathode chung 14 Hình 1.9 Hình ảnh kí hiệu Relay 15 Hình 1.10 Bóng đèn LED bulb 16 Hình 2.1 Sơ đồ khối toàn mạch 17 Hình 2.2 Mạch in thiết kế 18 Hình 2.3 Khối điều khiển trung tâm 19 Hình 2.4 Khối điều khiển hiển thị 19 Hình 2.5 Khối phím nhấn 20 Hình 2.6 Khối cơng suất 21 Hình 2.7 Khối nguồn 21 Hình 2.8 Sơ đồ nguyên lý mạch điều khiển trung tâm 22 Hình 2.9 Sơ đồ nguyên lý mạch Reset .23 Hình 2.10 Sơ đồ nguyên lý mạch tạo dao động .24 Hình 2.11 Sơ đồ nguyên lý mạch hiển thị LED đoạn 25 Hình 2.12 Sơ đồ nguyên lý mạch phím nhấn 26 Hình 2.13 Sơ đồ nguyên lý mạch công suất 27 Hình 2.14 Sơ đồ ngun lý tồn mạch .28 VI MỞ ĐẦU Lý chọn đề tài Trong năm gần đây, với tiến khoa học kỹ thuật đặc biệt kỹ thuật điện tử, công nghệ điện tử ngày phát triển mạnh mẽ Trong có đóng góp lớn kỹ thuật vi điều khiển Các vi điều khiển ứng dụng rộng rãi thâm nhập ngày nhiều lĩnh vực kỹ thuật, đời sống xã hội đem lại nhiều tiện nghi cho người thời đại cơng nghiệp hóa, đại hóa Sau bốn năm học tập nghiên cứu trường Đại học Sư phạm – Đại học Đà Nẵng, sinh viên học chuyên ngành điện tử, em muốn khai thác tìm hiểu ứng dụng vi điều khiển lĩnh vực điều khiển tự động hóa, đồng thời em muốn củng cố lại kiến thức học suốt thời gian qua thơng qua mơ hình thực tế Và quan em muốn trau dồi thêm kiến thức chuyên ngành để thuận lợi cho công việc sau Xuất phát từ lý trên, em chọn đề tài: “THIẾT KẾ HỆ THỐNG HẸN GIỜ TẮT MỞ THIẾT BỊ ĐIỆN” làm đề tài khóa luận tốt nghiệp Mục tiêu nghiên cứu Thiết kế chế tạo mạch hẹn tắt mở thiết bị điện Việc thực đề tài giúp em củng cố lại kiến thức học tiếp thu thêm nhiều kiến thức từ giảng viên hướng dẫn Đó khoảng thời gian em thực tế hóa kiến thức học mơ hình cụ thể hiểu rõ cách viết chương trình cho vi điều khiển Do kiến thức hạn hẹp nên em nghiên cứu ứng dụng nhỏ Nếu có thời gian nhiều nghiên cứu sâu hơn, mơ hình ứng dụng rộng rãi hầu hết lĩnh vực sống Nhiệm vụ nghiên cứu Để đạt mục tiêu đề ra, cần thực yêu cầu sau: - Nghiên cứu sở lý thuyết để thiết kế hệ thống điều khiển hẹn tắt mở thiết bị điện hồn chỉnh - Tìm hiểu thêm ứng dụng khác vi điều khiển, LED,… để mạch đa dạng Đối tượng phạm vi nghiên cứu ❖ Đối tượng nghiên cứu - Vi điều khiển AT89C52: dòng vi điều khiển tương đối mạnh với nhiều tính năng, hoạt động ổn định mà giá thành lại tương đối rẻ thông dụng thị trường Do dễ dàng mở rộng thiết kế ứng dụng khác - Các tài liệu linh kiện điện tử - Các tài liệu hướng dẫn lập trình ngơn ngữ lập trình C ❖ Phạm vi nghiên cứu Đề tài sử dụng vi điều khiển AT89C52 để lập trình, vi mạch đệm IC ULN2803, IC chốt liệu 74HC574, LED đoạn để hiển thị thời gian hẹn Phương pháp nghiên cứu ❖ Phương pháp lý thuyết - Nghiên cứu tài liệu nguyên lý hoạt động thiết bị linh kiện điện tử - Đi sâu tìm hiểu nội dung khóa luận thơng qua sách báo, phương tiện thông tin đại chúng tài liệu tham khảo liên quan - Nghiên cứu cách trình bày khóa luận tốt nghiệp ❖ Phương pháp thực nghiệm - Nghiên cứu thiết kế, chế tạo hệ thống hẹn tắt mở thiết bị điện - Thực mạch logic viết chương trình C điều khiển hệ thống chương trình mạch thiết kế 2.4 Sơ đồ nguyên lý toàn mạch Hình 2.14 Sơ đồ ngun lý tồn mạch 28 CHƯƠNG CHƯƠNG TRÌNH ĐIỀU KHIỂN 3.1 Thiết kế phần mềm Mỗi phần cứng định phải có chương trình phù hợp kèm theo, trước viết chương trình đòi hỏi người viết phải nắm bắt cấu tạo phần cứng yêu cầu mà mạch cần thực Chương trình tập hợp lệnh tổ chức theo trình tự hợp lí để giải yêu cầu người lập trình Chương trình cho Vi Điều Khiển 8051 viết Assembly, C++, Basic,… Tuy nhiên ngơn ngữ lập trình C đa số người dùng vi điều khiển sử dụng để lập trình C ngơn ngữ lập trình bậc cao phát triển ban đầu Dennis M.Ritchie để phát triển hệ thống lập trình UNIX Bell Labs C phát triển ban đầu máy tính DEC PDP-11 năm 1972 C tạo với mục tiêu làm cho thuận tiện để viết chương trình lớn với số lỗi mẫu hình lập trình thủ tục mà lại khơng đặt gánh nặng lên vai người viết trình dịch C, người bề bộn với đặc tả phức tạp ngơn ngữ Cuối C có thêm chức sau: • Một ngơn ngữ cốt lõi đơn giản, với chức quan trọng chẳng hạn hàm hay việc xử lý tập tin cung cấp thư viện thủ tục • Tập trung mẫu hình lập trình thủ tục, với phương tiện lập trình theo kiểu cấu trúc • Một hệ thống kiểu đơn giản nhằm loại bỏ nhiều phép tốn khơng có ý nghĩa thực dụng • Dùng ngôn ngữ tiền xử lý, tức câu lệnh tiền xử lý C, cho nhiệm vụ định nghĩa macro hàm chứa nhiều tập tin mã nguồn (bằng cách dùng câu lệnh tiền xử lý dạng #include chẳng hạn) • Mức thấp ngơn ngữ cho phép dùng tới nhớ máy tính qua việc sử dụng kiểu liệu pointer • Số lượng từ khóa nhỏ gọn • Các tham số đưa vào hàm giá trị, không địa • Hàm trỏ cho phép hình thành tảng ban đầu cho tính đóng tính đa hình 29 • Hỗ trợ ghi hay kiểu liệu kết hợp người dùng từ khóa định nghĩa struct cho phép liệu liên hệ tập hợp lại điều chỉnh toàn Một số chức khác mà C khơng có (hay thiếu) tìm thấy ngơn ngữ khác bao gồm: • An tồn kiểu • Tự động thu dọn rác • Các lớp hay đối tượng với ứng xử chúng (xem thêm OOP) • Các hàm lồng • Lập trình tiêu hay lập trình phổ dụng • Q tải q tải tốn tử • Các hỗ trợ cho đa luồng, đa nhiệm mạng 30 Lưu đồ thuật toán 3.2 Start Khởi động timer Thiết lập thời gian hiển thị ban đầu 120s Ngắt mạch công suất N Mạch công suất đóng phím nhấn Tăng vị trí hiển thị lên Hiển thị giá trị lên Led Quét phím: P1.5 → phím P1.6 → phím P1.7 → phím Y Chuyển Led hiển thị thời gian Y Ngắt mạch công suất Cài đặt thời gian 120s lại N Y Y Nhấn phím Chuyển chọn Led giờ, phút, giây Y Nhấn phím Tăng lên (nếu chọn giờ) Tăng phút lên (nếu chọn phút) Tăng giây lên (nếu chọn giây) Nhấp nháy Led Chọn Led ? Nhấn phím N Thời gian = 0? N Y Nhấp nháy Led phút Chọn Led phút? N Giảm lên (nếu chọn giờ) Giảm phút lên (nếu chọn phút) Giảm giây lên (nếu chọn giây) Nhấp nháy Led giây 31 Y Đóng mạch cơng suất N Y Giảm thời gian 1s Y N N N Chọn Led thời gian? 3.3 Code chương trình #include #define time_quetled #define time_sang 500 #define time_tat 100 #define lan_kiem_phim 80 #define bit_set(a,b) ((a)|=(1356400) second=0;} Counter_led++; if(Counter_led>=time_quetled) {chuyenled=1;Counter_led=0;} counter_xoa_lanset++; if(counter_xoa_lanset>=1000) {counter_xoa_lanset=0; lanset=0;} counter_nhapnhay++; if(counter_nhapnhaytime_sang+time_tat) counter_nhapnhay=0; } #include void main(void) { P0=0x00;P1=0xFF;P2=0x01;P3=0x00; TMOD = 0x01; TH0 = 0xF9; TL0 = 0x7D; TR0 = 1; IE=0x82; mode=1; hienthi=0; chuyenled=0; 33 so_phim=0; lanset=0; tong_second=120; tong_second_old=120; tinhthoigian(); tachso(gio,phut,giay); P2_0=0; hoanthanh=0; while (1) { if (chuyenled==1) { vitrimang=vitrimang+1; if (vitrimang>=7) vitrimang=1; xuatled7(vitrimang,maso[mangso[vitrimang]]); chuyenled=0; quetphim(); if (mode==0) { if (hienthi==1) { tong_second=tong_second-1; if(tong_second==0) 34 {hoanthanh=1; mangso[6]=10;mangso[5]=10; mangso[4]=10;mangso[3]=10; mangso[2]=10;mangso[1]=10; tong_second++; } else { tinhthoigian(); tachso(gio,phut,giay); P2_0=0; } hienthi=0; } } if(mode==1) {if(ledsang==0) tachso(gio,phut,giay);} if(mode==2) if(mode==3) else // tao nhap nhay led gio {if(ledsang==0) tachso(gio,phut,giay);} {mangso[5]=11;mangso[6]=11;} {mangso[4]=11;mangso[3]=11;} else // tao nhap nhay led phut {if(ledsang==0) {mangso[2]=11;mangso[1]=11;} else tachso(gio,phut,giay); tong_second_old=tong_second; } // tao nhap nhay led giay } if((hoanthanh)&&(so_phim==1)){hoanthanh=0;tong_second=tong_second _old; lanset=0; so_phim=0; counter_xoa_lanset=0;} 35 if(so_phim==1) { mode=mode+1; if(mode>3)mode=0; lanset=0; so_phim=0; counter_xoa_lanset=0;} if(so_phim==2) { if (mode==1) { if (gio0) giay=giay-1;} tachso(gio,phut,giay); tinh_tong_second(); so_phim=0; counter_xoa_lanset=0; lanset=0; counter_nhapnhay=0; } } 36 } void tinh_tong_second() { tong_second=gio; tong_second=tong_second*60; tong_second=tong_second+phut; tong_second=tong_second*60; tong_second=tong_second+giay; } void tinhthoigian() { long tg1; tg1=tong_second; gio=tg1/3600; phut=(tg1%3600)/60; giay=(tg1%3600)%60; } void quetphim() { if ((P1_6)==0) {lanset=lanset+1;counter_xoa_lanset=0; if(lanset>lan_kiem_phim) { so_phim=2;lanset=0;}} else if ((P1_7)==0) {lanset=lanset+1;counter_xoa_lanset=0; if(lanset>lan_kiem_phim) { so_phim=3;lanset=0;}} else if ((P1_5)==0) {lanset=lanset+1;counter_xoa_lanset=0; if(lanset>lan_kiem_phim) { soph=1;lanset=0;}} else {so_phim=soph; lanset=0;soph=0;} } void delay(unsigned int time) {int i; for (i=1;i

Ngày đăng: 28/09/2019, 08:56

Từ khóa liên quan

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

Tài liệu liên quan