Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 36 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
36
Dung lượng
0,93 MB
Nội dung
BỘ THÔNG TIN VÀ TRUYỀN THÔNG HỌC VIỆN CÔNG NGHỆ BƯU CHÍNH VIỄN THƠNG BÀI TẬP LỚN HỆ THỐNG NHÚNG Giảng viên: Nguyễn Ngọc Minh Nhóm Sinh viên: Vũ Văn Minh-B18DCDT159 Nguyễn Ngọc Quang-B18DCDT191 Trần Văn Quyến-B18DCDT199 Đặng Hà Phong-B18DCDT268 Chủ đề: Nhóm lớp: 01 Nhóm BTL: 02 Hà Nội - 2021 MỤC LỤC LỜI NÓI ĐẦU Phần 1: Mạch chuông báo tiết học tự động cho trường học Giới hạn đề tài 1.1 Phân tích 1.2 Xây dựng phương án 1.3 Phạm vi phương hướng mở rộng Nội dung CHƯƠNG I : SƠ ĐỒ KHỐI 1.Sơ đồ tổng quát 2.Chức khối 2.1 Khối nguồn 2.2 Chức khối RTC 2.3 Chức khối điều chỉnh 2.4 Khối âm 2.5 Khối hiển thị 2.6 khối xử lý (vi điều khiển 89c51) CHƯƠNG II: THIẾT KẾ HỆ THỐNG 1.1 Sơ đồ callgraph 1.2 Sơ đồ đặc tả linh kiện sử dụng mạch 3.1 giới thiệu cấu trúc vi điều khiển MCS-51 3.2 Tìm hiểu IC thời gian thực DS1307 3.2.1 Giới thiệu chung DS1307 3.2.2 Cơ chế hoạt động chức DS1307 3.3 Giới thiệu LCD CHƯƠNG III : THIẾT KẾ MẠCH 1.Sơ đồ nguyên lý 8 2.Khối nguồn 10 3.Khối hiển thị LCD 10 4.Khối xử lý AT89C51 11 5.Khối thời gian thực 12 6.khối thao tác 13 7.Khối chấp hành 13 8.Sơ đồ thuật toán 13 Chương IV : Thiết kế phần mềm 1.Chương trình cho vi điều khiển 14 15 Phần 2: Thiết kế máy tính đơn giản, sử dụng ma trận phím 4x4 thực phép tính cộng, trừ, nhân, chia hiển thị kết lên led thanh, kết > 9999 hiển thị chữ "FULL" 16 ảnh-thực-tế: LỜI CẢM ƠN 33 34 LỜI NĨI ĐẦU Hệ thống nhúng có tên gọi tiếng Anh embedded system Đây thuật ngữ để nói hệ thống có khả tự trị nhúng vào môi trường hệ thống mẹ Đây hệ thống tích hợp phần cứng phần mềm để giải đáp tốn chun dụng cơng nghiệp., tự động hóa, truyền tin,… Phần 1: Mạch chng báo tiết học tự động cho trường học Giới hạn đề tài 1.1 Phân tích Mục đích: - Hệ thống báo chuông thời điểm vào, tiết học trường + Hệ thống có khả chỉnh lại + Thời gian kéo dài chuông vào tiết nghỉ giải lao khác + Hệ thống chuông dùng dây điện đồng 220V Yêu cầu: -Hệ thống làm việc ổn định, có khả đưa vào ứng dụng thực tế Với thực tế toán phải thiết kế thành phần bản: -Hệ thống điều khiển đồng hồ số -Mạch dây chuông báo 1.2 Xây dựng phương án Mỗi ngày có buổi học buổi kéo dài tiết Thời gian tiết 45 phút.Thời gian nghỉ giải lao phút.Sau tiết thứ buổi nghỉ giải lao 10 phút từ ta xây dựng thời khóa biểu sau: Tiết Vào Ra Tiết Vào Ra 6h45 7h30 12h30 13h15 7h35 8h20 13h20 14h05 8h25 9h10 14h10 14h55 9h20 10h05 10 15h05 15h50 10h10 10h55 11 15h55 16h40 11h00 11h45 12 16h45 17h30 - Thời gian báo: +, thời gian báo 10 giây tiết bắt đầu ,ra tiết thứ vào tiết thứ tư buổi,kết thúc buổi +,còn lại thời gian báo cho thời điểm khác giây - Cách báo : sử dụng chuông điện 220V - Phạm vi báo: Tất khu vực trường cách xây dựng hệ thống chuông đến khu nhà,từng giảng đường 1.3 Phạm vi phương hướng mở rộng +, Thiết kế hệ thống chng báo cho thời khóa biểu mùa.mùa đơng mùa hè Trong mùa hè buổi sáng vào sớm 15 phút ,buổi chiều vào muộn 30 phút so với mùa đơng.và thêm thời khố biểu buổi tối cho trường học theo hệ thống tín +, Thiết kế Module điều chỉnh quét phím ma trận giao tiếp bàn phím máy tính lập trình thời khóa biểu theo ý muốn giấc trường nơi làm việc + Xây dựng Hệ thống chng báo khơng dây sử dụng thu phát sóng Nội dung CHƯƠNG I : SƠ ĐỒ KHỐI 1.Sơ đồ tổng quát -Sơ đồ khối tổng quát Khối nguồn alam Nút nhấn Vi XỬ LÝ AT89C51 Hiển Thị LCD 16x2 Hình 1: Sơ đồ khối tổng quát Thời Gian Thực DS1307 2.Chức khối 2.1 Khối nguồn -Cung cấp nguồn nuôi tất linh kiện mạch 2.2 Chức khối RTC -Khối thực chất chíp thời gian thực(Real Time Clock), sử dụng với ý nghĩa thời gian tuyệt đối mà người sử dụng.Nó có pin cấp riêng , nguồn điện RTC hoạt động bình thường xác theo thời gian thiết lập ban đầu Trong sơ đồ đảm nhiệm chức cấp time xác cho vi điều khiển xử lý cơng việc mà người sử dụng yêu cầu 2.3 Chức khối điều chỉnh -Chức khối sử dụng ngắt 89c51 để yêu cầu việc điều chỉnh time theo ý người sử dụng , cài đặt time ban đầu cho đồng hồ thời gian thực RTC.Tác động phím bấm (BUTTON) 2.4 Khối âm -Khối gồm có transistor thơng dịng cho loa kêu có mức điện áp thay đổi liên tục chân vi điều khiển 2.5 Khối hiển thị - Khối thực chất LCD 16x2 để hiển thị time thơng tin mà lập trình viên cần hiển thị 2.6 khối xử lý (vi điều khiển 89c51) -Vi điều khiển 89C51 trung tâm xử lý thông tin mạch Cụ thể : AT89C51 đảm nhiệm việc đọc thời gian từ DS1307, chuyển đổi liệu qua lại RTC với LCD để hiển thị lên LCD , đồng thời cập nhật time từ DS1307 Điều khiển LCD Kiểm tra phím bấm Điều khiển loa - Nói tóm lại là, VĐK làm nhiệm vụ đọc time DS1307 sau kiểm tra xem ngắt tác động hay khơng? có điều chỉnh time, hiển thị time lên LCD , kiểm tra xem có báo chng hay khơng ? có gọi chương trình điều khiển chng kêu ! CHƯƠNG II: THIẾT KẾ HỆ THỐNG 1.1 Sơ đồ callgraph Chương Trình Điều Khiển Module Xử Lý Điều Chỉnh Hình 2: Sơ đồ Callgraph Nút Ấn Module xử lý chương trình Chấp Hành Hiển Thị 1.2 Sơ đồ đặc tả Bật/Tắt Chuông Hiển Thị Gửi thông tin Gửi thông tin KIỂM TRA THỜI GIAN Tác động Gửi liệu Điều khiển Điều Chỉnh Kiểm Tra thời gian thực Hình 3: Sơ đồ Đặc tả linh kiện sử dụng mạch 3.1 giới thiệu cấu trúc vi điều khiển MCS-51 -Đặc điểm chức hoạt động IC họ MSC-51 hoàn toàn tương tự Ở giới thiệu IC8951 họ IC vi điều khiển hãng Intel Mỹ sản xuất Chúng có đặc điểm chung sau: + 4K Bytes Flash rom + 128 Bytes Ram + port bit + định thời 16 bit + Có port nối tiếp + Có thể mở rộng nhớ chương trình ngồi 64 K Byte + Bộ xử lý bit - AT89C51 vi xử lý bit, loại CMOS, có tốc độ cao cơng suất thấp với nhớ Flash lập trình Nó sản xuất với công nghệ nhớ không bay mật độ cao hãng Atmel, tương thích với họ MCS-51TM chân tập lệnh - AT89C51 có đặc trưng sau: K byte Flash, 128 byte RAM, 32 đường xuất nhập, hai định thời/đếm 16-bit, cấu trúc ngắt hai mức ưu tiên nguyên nhân ngắt, port nối tiếp song công, mạch dao động tạo xung clock chip 3.2 Tìm hiểu IC thời gian thực DS1307 3.2.1 Giới thiệu chung DS1307 -IC thời gian thực họ vi điều khiển hãng dalat DS1307 có số đặc trưng sau - 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 - SRAM :56bytes -Địa liệu truyền nối tiệp qua đường bus chiều - DS1307 có mơt 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 3v - Cơ chế hoạt động :DS1307 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 đươc thực thi 3.2.2 Cơ chế hoạt động chức DS1307 - 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: đất - SDA: chuỗi data - SCL: dãy xung clock - SQW/OUT: xung vuông/đầu driver Hình 9: Sơ đồ DS1307 • 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 3.3 Giới thiệu LCD -LCD giới thiệu 14 chân (hình dưới) Chức chân cho bảng dưới: 3.3.1 Chức chân Module LCD 16x2 Chân số Ký hiệu Vss Vdd Vee RS Mức logic 0/1 I/O Chức I I R/W 0/1 I 10 11 12 13 14 15 16 E DB1 DB2 DB3 DB4 DB5 DB6 DB7 DB8 Vcc GND 1,1=>0 0/1 0/1 0/1 0/1 0/1 0/1 0/1 0/1 - I I/O I/O I/O I/O I/O I/O I/O I/O - Nguồn cung cấp(GND) Nguồn cung cấp(+5V) Điện áp để điều chỉnh độ tương phản Lựa chọn ghi 0= ghi lệnh 1=thanh ghi liệu 0=ghi vào LCD module 1=đọc từ LCD module Tín hiệu cho phép Data bus line 0(LSB) Data bus line1 Data bus line2 Data bus line3 Data bus line4 Data bus line5 Data bus line6 Data bus line7(MSB) Nguồn cung cấp mass CHƯƠNG III : THIẾT KẾ MẠCH 1.Sơ đồ nguyên lý -sơ đồ nguyên lý cụ thể sau: mang_bien2[4] = 4; } else{ mang_bien1[m] = 0; mang_bien2[m] = 0; } } while(1){ key = check(); /*luu so nhap tu ban phim vao bien*/ if( key == '0' || key == '1' || key == '2' || key == '3' || key == '4' || key == '5' || key == '6' || key == '7' || key == '8' || key == '9'){ /*nhap bien 1*/ if(so_lan_bang[0] == 0){ bien1 = gia_tri_bien(mang_bien1); } /*nhap bien 1*/ else if(so_lan_bang[0] == && so_lan_bang[1] == && so_lan_bang[2] == 0){ bien2 = gia_tri_bien(mang_bien2); } } /*Dau dot cham phay*/ if(key == '.'){ if(mang_bien1[6] == && so_lan_bang[0] == && mang_bien1[5]>0){ mang_bien1[6] = 1; } else if(mang_bien2[6] == && so_lan_bang[1] == && so_lan_bang[1] == && so_lan_bang[2] == 0&& mang_bien2[5]>0){ mang_bien2[6] = 1; } } /*luu dau can tinh toan*/ else if(so_lan_bang[0] == && so_lan_bang[1] == && key =='c'){ if( (phep[0] == && phep[1] == && phep[2] == && phep[3] == 0) || (phep[0] == && phep[1] == && phep[2] == && phep[3] == 0) ){ phep[0] = 0; phep[3] = 1; 20 } else if(phep[1] == && phep[1] == && phep[2] == && phep[3] == 1){ phep[2] = 1; phep[3] = 0; } else if(phep[0] == && phep[1] == && phep[2] == && phep[3] == 0){ phep[1] = 1; phep[2] = 0; } else if(phep[0] == && phep[1] == && phep[2] == && phep[3] == 0){ phep[0] = 1; phep[1] = 0; } } /*bam q de thoat che tinh toan*/ else if(key == 'Q'){ for(unsigned int xoa = 0; xoa < 4; xoa++){ so_lan_bang[xoa] = 0; phep[xoa] = 0; } for(unsigned int m = 0; m < 7; m++){ if(m == 4){ mang_bien1[4] = mang_bien2[4] = 4; } else{ mang_bien1[m] = 0; mang_bien2[m] = 0; mang_math[m] = 0; } } xuat(mang_bien1,0); } /*nut xoa phan tu nhap bien*/ else if(key == 'D'){ /*Khi dang nhap bien 1*/ if(so_lan_bang[0] == 0){ xoa_phan_tu(mang_bien1); } 21 /*Khi dang nhap bien 2*/ else if(so_lan_bang[0] == && so_lan_bang[1] == && so_lan_bang[2] == 0){ xoa_phan_tu(mang_bien2); } } /*Nut quay lai tung buoc truoc*/ else if(key == 'B'){ /*quay lai bien 2*/ if((so_lan_bang[0] == 1) && (so_lan_bang[1] == 0) && (so_lan_bang[2] == 0) && (so_lan_bang[3] == 0)){ so_lan_bang[0] = 0; } /*quay lai phep tinh*/ else if((so_lan_bang[1] == 1) && (so_lan_bang[2] == 0) && (so_lan_bang[3] == 0)) { so_lan_bang[1] = 0; } /*quay lai bien 1*/ else if((so_lan_bang[2] == 1) && (so_lan_bang[3] == 1)){ so_lan_bang[2] = 0; so_lan_bang[3] = 0; } } /*chuyen che nhap ban phim */ if(key == '='){ /*nhap xong bien 1*/ if( (so_lan_bang[0] == 0) && (so_lan_bang[1] == 0) && (so_lan_bang[2] == 0)){ so_lan_bang[0] = 1; } /*nhap xong phep tinh*/ else if( (so_lan_bang[0] == 1) && (so_lan_bang[1] == 0) && (so_lan_bang[2] == 0)) { so_lan_bang[1] = 1; } /*nhap xong bien >Thuc hien tinh toan*/ else if( (so_lan_bang[0] == 1) && (so_lan_bang[1] == 1) && (so_lan_bang[2] == 0)) { so_lan_bang[2] = 1; 22 if(phep[3] == 1){ math = bien1 + bien2; } else if(phep[2] == 1){ math = bien1 - bien2; } else if(phep[1] == 1){ math = bien1 * bien2; } else if(phep[0] == 1){ math = bien1 / bien2; } /*tach lay tung so ket qua vao mang_ket_qua*/ tach_math(math); /*Kiem tra ket qua co am hoac lon hon 9999 hay ko*/ if(math>0 && math 4-mang[5] ){ bien = bien*10 + mang[tong-1]; } else{ bien = bien + (float)(mang[tong-1]/pow(10,(ceil)((float)(4-tong)/mang[5]))); 29 } } } else if(mang[6] == 0){ /*so so truoc dot*/ mang[5]++; for(unsigned int tong = 4; tong > mang[4]-1; tong ){ bien = bien*10 + mang[tong-1]; } } if(mang[4] > && mang[4] < 5){ mang[4] ; } else{ mang[4] = 5; } return bien; } void tach_math(float mathh){ unsigned int so_sau_thphan = 0; unsigned int t=0, so_lan_tach = 0; unsigned int nguyen = (int)(mathh); float thap_phan = mathh - nguyen; if (nguyen == 0) mang_math[5] = 4; if (mathh < 10) { t = 1; } else if (mathh > && mathh < 100) { t = 2; } else if (mathh > 99 && mathh < 1000) { t = 3; } else if (mathh > 999 && mathh < 10000) { t = 4; } /*neu ket qua la thap phan thi gan vi tri dau dot*/ 30 if (thap_phan > 0){ if(t!=4){ mang_math[5] = t; } else{ mang_math[5] = 0; } } unsigned int i = - t; unsigned int j = - t; while (nguyen > && so_lan_tach < 4) { so_lan_tach++; mang_math[i] = nguyen % 10; nguyen /= 10; i++; } if (thap_phan > 0) { while (so_lan_tach < && j > 0) { so_lan_tach++; mang_math[j - 1] = (int)(thap_phan * 10); thap_phan = thap_phan * 10; if(thap_phan - (int)thap_phan != 0){ so_sau_thphan++; } thap_phan = thap_phan - (int)thap_phan; j ; } } /*neu la so thap phan*/ if (mang_math[0] == 0) { mang_math[4] = 1; } if (mang_math[0] == && mang_math[1] == 0) { mang_math[4] = 2; } if (mang_math[0] == && mang_math[1] == && mang_math[2] == 0) { 31 mang_math[4] = 3; } if (mang_math[0] == && mang_math[1] == && mang_math[2] == && mang_math[3] == 0) { mang_math[4] = 0; } if((mathh - (int)mathh) == 0){ mang_math[4] = 4-t; } if(floor(mathh) < mathh && mathh < ceil(mathh)){ mang_math[6] = 1; } } void xoa_phan_tu(unsigned int* mang_xoa){ /*xoa ket qua*/ for(unsigned int xoa = 0; xoa < 7; xoa++){ mang_math[xoa] = 0; } /*Giam so phan tu da nhap duoc truoc do*/ if(mang_xoa[4] >= && mang_xoa[4] < 4){ mang_xoa[4]++; } /*neu vuot gia tri khoi tao*/ else{ mang_xoa[4] = 4; mang_xoa[6] = 0; mang_xoa[5] = 0; } } 32 ảnh-thực-tế: 33 LỜI CẢM ƠN Chúng em xin gửi lời cảm ơn đến Học viện Công nghệ Bưu Viễn thơng đưa mơn Hệ thống nhúng vào chương trình giảng dạy trường Đặc biệt, chúng em xin gửi lời cảm ơn sâu sắc đến giảng viên môn Nguyễn Ngọc Minh truyền đạt kiến thức quý báu cho em suốt thời gian vừa qua Mặc dù khoảng thời gian thầy giảng dạy khơng nhiều thầy cho chúng em có buổi học thật nghĩa, thầy truyền đạt hết tất kinh nghiệm sống kinh nghiệm đời thực thầy việc giảng dạy, thời gian học tập lớp khơng nhiều, cố gắng chắn hiểu biết kỹ môn học chúng em cịn nhiều hạn chế thiếu sót Chúng em xin chân thành cảm ơn! 34 ... LỜI CẢM ƠN 33 34 LỜI NĨI ĐẦU Hệ thống nhúng có tên gọi tiếng Anh embedded system Đây thuật ngữ để nói hệ thống có khả tự trị nhúng vào môi trường hệ thống mẹ Đây hệ thống tích hợp phần cứng phần... - Hệ thống báo chng thời điểm vào, tiết học trường + Hệ thống có khả chỉnh lại + Thời gian kéo dài chuông vào tiết nghỉ giải lao khác + Hệ thống chuông dùng dây điện đồng 220V Yêu cầu: -Hệ thống. .. 220V - Phạm vi báo: Tất khu vực trường cách xây dựng hệ thống chuông đến khu nhà,từng giảng đường 1.3 Phạm vi phương hướng mở rộng +, Thiết kế hệ thống chng báo cho thời khóa biểu mùa.mùa đơng mùa