Bài tập lớn lập trình giao diện trong matlab

22 2.2K 31
Bài tập lớn lập trình giao diện trong matlab

Đ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

Báo cáo bài tập lớn môn lập trình mô phỏng, lập trình giao diện GUI. Bao gồm file .m và .figĐề bài:Viết giao diện thực hiện những yêu cầu sau:(3 điện trở Rx lần lượt là 10, 20, 15 Ω)1)Hiển thị mạch điện lên giao diện2)Đóng, mở khóa Kx bằng check box3)Cho phép nhập giá trị R và điện áp V4)Hiển thị chỉ số gá trị các linh kiện5)Hiển thị chỉ số ampe kế và vôn kế, cảnh báo quá dòng qua R (I¬max=5A)

BÀI TẬP LỚN LẬP TRÌNH GIAO DIỆN TRONG MATLAB Đề bài: Viết giao diện thực yêu cầu sau: (3 điện trở Rx 10, 20, 15 Ω) 1) 2) 3) 4) 5) Hiển thị mạch điện lên giao diện Đóng, mở khóa Kx check box Cho phép nhập giá trị R điện áp V Hiển thị số gá trị linh kiện Hiển thị số ampe kế vôn kế, cảnh báo dòng qua R (Imax=5A) MỤC LỤC GIỚI THIỆU .1 THIẾT KẾ GIAO DIỆN THỰC NGHIỆM 13 PHỤ LỤC: CODE ĐẦY ĐỦ 16 BÀI TẬP LỚN Trang 1/19 GIỚI THIỆU 1.1 Cơ GUI matlab Để vào guide, ta làm sau: Mở phần mềm Matlab (ở Matlab 2015a, phiên khác tương tự): Hình 1- Trong cửa sổ Command Windows, nhập lệnh “guide” nhấn Enter xuất cửa sổ Guide Quick Start: Hình 1- Chọn OK xuất cửa sổ khác, thực tạo giao diện Lập trình giao diện Matlab NCT BÀI TẬP LỚN Trang 2/19 Hình 1- Phía trái cửa sổ có thành phần sau: + Push Button: nút nhấn, nhấn vào thực thi lệnh cấu trúc hàm callback + Slider: trượt cho phép người dùng di chuyển trượt để thục thi lệnh + Radio Button: Nó giống Check Box thường sử dụng để tạo lựa chọn nhất, tức lần chọn số nhóm nhiều nút Khi ô chọn ô lại nhóm bị bỏ chọn + Check box: Sử dụng để đánh dấu tích (thực thi) vào check nhiều ô để thực thi + Edit Text: nơi kí tự nhập vào từ người dùng, người dùng thay đổi + Static Text: Là kí tự hiển thị thông qua callback, thông thường để viết nhãn cho biểu tượng, người dùng thay đổi nội dung Lập trình giao diện Matlab NCT BÀI TẬP LỚN Trang 3/19 + Pop-up Menu: mở danh sách lực chọn người dùng nhấp chuột vào Chỉ chọn mục danh sách mục + List Box: hộp thoại danh sách cách mục, cho phép người dùng chọn nhiều mục + Toggle Button: nút nhấn có điều khiển, nhấp chuột nhả ra, nút nhấn giữ lệnh thực thi, nhấp chuột vào lần thứ 2, nút nhấn nhả ra, hủy bỏ lệnh vừa thực thi + Table: tạo bảng tương tự Excel + Axes: Đây giao diện đồ họa hiển thị hình ảnh, có nhiều thuộc tính bao gồm: không gian 2D (theo trục đứng trục ngang), 3D (hiển thị không gian chiều) + Panel: Tạo mảng nhóm biểu tượng lại với giúp ta dễ kiểm soát thao tác di chuyển + Button Group: quản lí lựa chọn nút Radio Button + Active Control: Quản lí nhóm bút chương trình liên quan với Active Lập trình giao diện Matlab NCT BÀI TẬP LỚN Trang 4/19 Ví dụ để tạo nút nhấn, ta chọn Push Button sau kéo thả vùng làm việc: Hình 1- Khi double click vào phần vừa tạo cửa sổ Inspector: Hình 1- Trong ta thay đổi tên, cỡ chữ, màu sắc, đặt tên tag… Lập trình giao diện Matlab NCT BÀI TẬP LỚN Trang 5/19 1.2 Giao diện thực đề Hình 1- Giao diện thực yêu cầu hiển thị mạch điện, đóng/mở khóa K check box, cho phép nhập R V, hiển thị sổ giá trị linh kiện, hiển thị số ampe kế, volt kế, cảnh báo dòng qua R Việc sử dụng giao diện đơn giản, người dùng cần check chọn khóa K đóng/mở, nhập giá trị R, V phần tùy chỉnh mạch điện, sau nhấn nút “tính toán” sổ lên giao diện Lập trình giao diện Matlab NCT BÀI TẬP LỚN Trang 6/19 THIẾT KẾ GIAO DIỆN Trong phần mô tả bước để tạo giao diện thực yêu cầu đề phần 1B 1.1 Thiết kế giao diện Mở matlab, nhập “guide” vào command windows sau nhấn enter để vào gui, thêm thành phần sau: Hình - Lập trình giao diện Matlab NCT BÀI TẬP LỚN Trang 7/19 Chỉnh sửa String Inspector save lại vào thư mục đó: Hình - Đặt tag cho thành phần: Để tiện cho việc gọi thành phần code ta đặt tên tag thống kê bảng (có thể chỉnh sửa theo ý thích): Phần Axes3 hình mạch điện Hiển thị dòng R Hiển thị dòng Rn Đóng mở khóa Kn Nhập vào giá trị R Nhập vào giá trị V Nút tính toán Hiển thị Vn Hiển thị V Để chạy thử giao diện, nhấn vào nút Tag machdien I In (n = 1, 2, 3) Kn (n = 1, 2, 3) R V tinh Vn (n=1,2,3) V công cụ nhấn tổ hợp phím ctrl + T Nó giao diện này: Lập trình giao diện Matlab NCT BÀI TẬP LỚN Trang 8/19 Hình - Nếu ưng ý tiếp tục đến phần thứ 2: Lập trình cho thành phần Lập trình giao diện Matlab NCT BÀI TẬP LỚN Trang 9/19 1.2 Lập trình cho thành phần Có thành phần mà ta cần phải lập trình axes hiển thị mạch điện nút nhấn cho kết 1.2.1 Hiển thị mạch điện lên giao diện: Để có mạch điện hiển thị giao diện tất nhiên cần phải vẽ rồi, đơn giản dùng Paint có sẵn windows: Mở paint lên: Hình - Lập trình giao diện Matlab NCT BÀI TẬP LỚN Trang 10/19 Dùng dụng cụ có sẵn để vẽ thành mạch điện hoàn chỉnh: Hình - Sau ta save lại thư mục mà ta save giao diện, đặt tên cho nó, chẳng hạn như: machdien.png Khi có hình vẽ mạch điện ta viết code cho lên giao diện: click chuột phải vào axes View callbacks CreateFcn Nhập code vào vị trí hình dưới: imshow('C:\Users\5480\Pictures\machdien.png'); Lập trình giao diện Matlab NCT BÀI TẬP LỚN Trang 11/19 Hình - 1.2.2 Lập trình cho nút tính toán Hình - Gần giống axes, click chuột phải vào nút tính toánView callbacks  Callback Lập trình giao diện Matlab NCT BÀI TẬP LỚN Trang 12/19 Sau nhập code vào phần này: function tinh_Callback(hObject, eventdata, handles) % hObject handle to tinh (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) Code + giải thích: R1 = 10; t1 = 1; %gia tri cua dien tro R va bien tam t R2 = 20; t2 = 1; R3 = 15; t3 = 1; %lay thuoc tinh gia tri cua check box, neu khong check thi gia tri = 0, check thi la if get(handles.K1,'Value') == t1 = 0; %neu gia tri cua check box k = thi dat t = end if get(handles.K2,'Value') == t2 = 0; end if get(handles.K3,'Value') == t3 = 0; end R = str2num(get(handles.R,'String')); %chuyen R va V nhap vao tu ki tu %thanh so V = str2num(get(handles.V,'String')); Rtd = 1/ ((t1/R1) + (t2/R2) + (t3/R3)); % tinh dien tro tuong duong cua %3 dien tro R, them t vao bieu thuc de neu khoa k mo thi t =0, nhu vay %xem nhu khong co R IR = IR1 = IR2 = IR3 = V/(Rtd + R); % tinh dong qua cac dien tro t1*(V-IR*R)/R1; t2*(V-IR*R)/R2; t3*(V-IR*R)/R3; % hien thi ket qua set(handles.I, 'String', IR); % dat gia tri IR vao thuoc tinh String cua phan I set(handles.I1, 'String', IR1); % tuong tu o tren set(handles.I2, 'String', IR2); set(handles.I3, 'String', IR3); set(handles.v, 'String', V-IR*R) set(handles.V1, 'String', IR1*R1) set(handles.V2, 'String', IR2*R1) set(handles.V3, 'String', IR3*R1) if IR>=5 %hien thi canh bao qua dong, neu dong lon hon 5A thi dat mau cua IR mau set(handles.I,'BackgroundColor','Red'); end Như sau lập trình cho nút tính toán ta hoàn thành yêu cầu đề bài, chuyển sang phần thực nghiệm, kiểm tra giao diện Lập trình giao diện Matlab NCT BÀI TẬP LỚN Trang 13/19 THỰC NGHIỆM Giao diện hoàn chỉnh: Hình - Lập trình giao diện Matlab NCT BÀI TẬP LỚN Trang 14/19 Thử nghiệm giao diện với thông số sau: Đóng khóa K1 R = 10 Ohm V = 10 Vol Giao diện cho kết quả: Dòng R = 0,5 A Dòng R1 = 0,5 A Dòng R2 = Dòng R3 = A Chỉ số V = 5V Chỉ số A = 0,5A Hình - Kết thực nghiệm với tính toán  Giao diện hoạt động tốtPASS Lập trình giao diện Matlab NCT BÀI TẬP LỚN Trang 15/19 • Thử nghiệm dòng: Hình - Khi dòng qua R >5A cảnh báo dòng cách bôi đỏ giá trị dòng điệnPASS Lập trình giao diện Matlab NCT BÀI TẬP LỚN Trang 16/19 Phụ lục: Code đầy đủ function varargout = BTL_41301662(varargin) % BTL_41301662 MATLAB code for BTL_41301662.fig % BTL_41301662, by itself, creates a new BTL_41301662 or raises the existing % singleton* % % H = BTL_41301662 returns the handle to a new BTL_41301662 or the handle to % the existing singleton* % % BTL_41301662('CALLBACK',hObject,eventData,handles, ) calls the local % function named CALLBACK in BTL_41301662.M with the given input arguments % % BTL_41301662('Property','Value', ) creates a new BTL_41301662 or raises the % existing singleton* Starting from the left, property value pairs are % applied to the GUI before BTL_41301662_OpeningFcn gets called An % unrecognized property name or invalid value makes property application % stop All inputs are passed to BTL_41301662_OpeningFcn via varargin % % *See GUI Options on GUIDE's Tools menu Choose "GUI allows only one % instance to run (singleton)" % % See also: GUIDE, GUIDATA, GUIHANDLES % Edit the above text to modify the response to help BTL_41301662 % Last Modified by GUIDE v2.5 18-Oct-2015 11:10:09 % Begin initialization code - DO NOT EDIT gui_Singleton = 1; gui_State = struct('gui_Name', mfilename, 'gui_Singleton', gui_Singleton, 'gui_OpeningFcn', @BTL_41301662_OpeningFcn, 'gui_OutputFcn', @BTL_41301662_OutputFcn, 'gui_LayoutFcn', [] , 'gui_Callback', []); if nargin && ischar(varargin{1}) gui_State.gui_Callback = str2func(varargin{1}); end if nargout [varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:}); else gui_mainfcn(gui_State, varargin{:}); end Lập trình giao diện Matlab NCT BÀI TẬP LỚN Trang 17/19 % End initialization code - DO NOT EDIT % - Executes just before BTL_41301662 is made visible function BTL_41301662_OpeningFcn(hObject, eventdata, handles, varargin) % This function has no output args, see OutputFcn % hObject handle to figure % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) % varargin command line arguments to BTL_41301662 (see VARARGIN) % Choose default command line output for BTL_41301662 handles.output = hObject; % Update handles structure guidata(hObject, handles); % UIWAIT makes BTL_41301662 wait for user response (see UIRESUME) % uiwait(handles.figure1); % - Outputs from this function are returned to the command line function varargout = BTL_41301662_OutputFcn(hObject, eventdata, handles) % varargout cell array for returning output args (see VARARGOUT); % hObject handle to figure % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) % Get default command line output from handles structure varargout{1} = handles.output; % - Executes on button press in tinh function tinh_Callback(hObject, eventdata, handles) % hObject handle to tinh (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) % Tinh toan R1 = 10; t1 = 1; %gia tri cua dien tro R va bien tam t R2 = 20; t2 = 1; R3 = 15; t3 = 1; %lay thuoc tinh gia tri cua check box, neu khong check thi gia tri = 0, check thi la if get(handles.K1,'Value') == t1 = 0; %neu gia tri cua check box k = thi dat t = end if get(handles.K2,'Value') == t2 = 0; end if get(handles.K3,'Value') == t3 = 0; end R = str2num(get(handles.R,'String')); %chuyen R va V nhap vao tu ki tu so V = str2num(get(handles.V,'String')); Lập trình giao diện Matlab NCT BÀI TẬP LỚN Trang 18/19 Rtd = 1/ ((t1/R1) + (t2/R2) + (t3/R3)); % tinh dien tro tuong duong cua dien tro R, them t vao bieu thuc de neu khoa k mo thi t =0, nhu vay xem nhu khong co R IR = IR1 = IR2 = IR3 = V/(Rtd + R); % tinh dong qua cac dien tro t1*(V-IR*R)/R1; t2*(V-IR*R)/R2; t3*(V-IR*R)/R3; % hien thi ket qua set(handles.I, 'String', IR); % dat gia tri IR vao thuoc tinh String cua phan I set(handles.I1, 'String', IR1); % tuong tu o tren set(handles.I2, 'String', IR2); set(handles.I3, 'String', IR3); set(handles.v, 'String', V-IR*R) set(handles.vr, 'String', IR*R) set(handles.V1, 'String', IR1*R1) set(handles.V2, 'String', IR2*R2) set(handles.V3, 'String', IR3*R3) if IR>=5 %hien thi canh bao qua dong, neu dong lon hon 5A thi dat mau cua IR mau set(handles.I,'BackgroundColor','Red'); end % - Executes on button press in K1 function K1_Callback(hObject, eventdata, handles) % hObject handle to K1 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) % Hint: get(hObject,'Value') returns toggle state of K1 % - Executes on button press in K2 function K2_Callback(hObject, eventdata, handles) % hObject handle to K2 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) % Hint: get(hObject,'Value') returns toggle state of K2 % - Executes on button press in K3 function K3_Callback(hObject, eventdata, handles) % hObject handle to K3 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) % Hint: get(hObject,'Value') returns toggle state of K3 % - Executes during object creation, after setting all properties Lập trình giao diện Matlab NCT BÀI TẬP LỚN Trang 19/19 function R_Callback(hObject, eventdata, handles) % hObject handle to R (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) %Bao loi R = str2double(get(hObject, 'String')); if isnan(R) set(hObject, 'String', 0); errordlg('R, V phai la so','Loi'); end set(handles.r,'String',R); % Hints: get(hObject,'String') returns contents of R as text % str2double(get(hObject,'String')) returns contents of R as a double %Bao loi V = str2double(get(hObject, 'String')); if isnan(R) set(hObject, 'String', 0); errordlg('R, V phai la so','Loi'); end % hObject handle to VR (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) % Hints: get(hObject,'String') returns contents of VR as text % str2double(get(hObject,'String')) returns contents of VR as a double % - Executes during object creation, after setting all properties function hinh_CreateFcn(hObject, eventdata, handles) % hObject handle to hinh (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles empty - handles not created until after all CreateFcns called imshow('C:\Users\5480\Pictures\machdien.png'); % Hint: place code in OpeningFcn to populate hinh Lập trình giao diện Matlab NCT [...]... vậy sau khi lập trình cho nút tính toán thì ta đã hoàn thành các yêu cầu của đề bài, giờ thì chuyển sang phần thực nghiệm, kiểm tra giao diện Lập trình giao diện trong Matlab NCT BÀI TẬP LỚN Trang 13/19 THỰC NGHIỆM Giao diện hoàn chỉnh: Hình 3 - Lập trình giao diện trong Matlab NCT BÀI TẬP LỚN Trang 14/19 Thử nghiệm giao diện với các thông số sau: Đóng khóa K1 R = 10 Ohm V = 10 Vol Giao diện cho ra...BÀI TẬP LỚN Trang 8/19 Hình 2 - Nếu đã ưng ý thì tiếp tục đến phần thứ 2: Lập trình cho các thành phần Lập trình giao diện trong Matlab NCT BÀI TẬP LỚN Trang 9/19 1.2 Lập trình cho các thành phần Có 2 thành phần cơ bản mà ta cần phải lập trình đó là axes hiển thị mạch điện và nút nhấn cho ra kết quả 1.2.1 Hiển thị mạch điện lên giao diện: Để có mạch điện hiển thị trong giao diện thì tất... thực nghiệm đúng với tính toán  Giao diện hoạt động tốtPASS Lập trình giao diện trong Matlab NCT BÀI TẬP LỚN Trang 15/19 • Thử nghiệm quá dòng: Hình 3 - Khi dòng qua R >5A đã cảnh báo quá dòng bằng cách bôi đỏ giá trị dòng điệnPASS Lập trình giao diện trong Matlab NCT BÀI TẬP LỚN Trang 16/19 Phụ lục: Code đầy đủ function varargout = BTL_41301662(varargin) % BTL_41301662 MATLAB code for BTL_41301662.fig... Nhập code vào vị trí như hình dưới: imshow('C:\Users\5480\Pictures\machdien.png'); Lập trình giao diện trong Matlab NCT BÀI TẬP LỚN Trang 11/19 Hình 2 - 1.2.2 Lập trình cho nút tính toán Hình 2 - Gần giống như axes, click chuột phải vào nút tính toánView callbacks  Callback Lập trình giao diện trong Matlab NCT BÀI TẬP LỚN Trang 12/19 Sau đó nhập code vào dưới phần này: function tinh_Callback(hObject,... giản nhất là dùng Paint có sẵn trong windows: Mở paint lên: Hình 2 - Lập trình giao diện trong Matlab NCT BÀI TẬP LỚN Trang 10/19 Dùng các dụng cụ có sẵn để vẽ thành 1 mạch điện hoàn chỉnh: Hình 2 - Sau đó ta save lại trong thư mục mà ta đã save giao diện, đặt tên cho nó, chẳng hạn như: machdien.png Khi đã có hình vẽ mạch điện rồi thì ta viết code cho nó hiện lên giao diện: click chuột phải vào axes... of MATLAB % handles structure with handles and user data (see GUIDATA) % Hint: get(hObject,'Value') returns toggle state of K3 % - Executes during object creation, after setting all properties Lập trình giao diện trong Matlab NCT BÀI TẬP LỚN Trang 19/19 function R_Callback(hObject, eventdata, handles) % hObject handle to R (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB. .. varargin{:}); end Lập trình giao diện trong Matlab NCT BÀI TẬP LỚN Trang 17/19 % End initialization code - DO NOT EDIT % - Executes just before BTL_41301662 is made visible function BTL_41301662_OpeningFcn(hObject, eventdata, handles, varargin) % This function has no output args, see OutputFcn % hObject handle to figure % eventdata reserved - to be defined in a future version of MATLAB % handles structure... == 0 t2 = 0; end if get(handles.K3,'Value') == 0 t3 = 0; end R = str2num(get(handles.R,'String')); %chuyen R va V nhap vao tu ki tu thanh so V = str2num(get(handles.V,'String')); Lập trình giao diện trong Matlab NCT BÀI TẬP LỚN Trang 18/19 Rtd = 1/ ((t1/R1) + (t2/R2) + (t3/R3)); % tinh dien tro tuong duong cua 3 dien tro R, them t vao bieu thuc de neu khoa k mo thi t =0, nhu vay xem nhu khong co R IR... handles) % hObject handle to hinh (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles empty - handles not created until after all CreateFcns called imshow('C:\Users\5480\Pictures\machdien.png'); % Hint: place code in OpeningFcn to populate hinh Lập trình giao diện trong Matlab NCT ... defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) % Get default command line output from handles structure varargout{1} = handles.output; % - Executes on button press in tinh function tinh_Callback(hObject, eventdata, handles) % hObject handle to tinh (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with ... varargout = BTL_ 41301662(varargin) % BTL_ 41301662 MATLAB code for BTL_ 41301662.fig % BTL_ 41301662, by itself, creates a new BTL_ 41301662 or raises the existing % singleton* % % H = BTL_ 41301662... handle to a new BTL_ 41301662 or the handle to % the existing singleton* % % BTL_ 41301662('CALLBACK',hObject,eventData,handles, ) calls the local % function named CALLBACK in BTL_ 41301662.M with... arguments % % BTL_ 41301662('Property','Value', ) creates a new BTL_ 41301662 or raises the % existing singleton* Starting from the left, property value pairs are % applied to the GUI before BTL_ 41301662_OpeningFcn

Ngày đăng: 05/11/2015, 21:01

Từ khóa liên quan

Mục lục

  • 1.1 Cơ bản về GUI trong matlab

  • 1.2 Giao diện thực hiện đề bài

  • 1.1 Thiết kế giao diện

  • 1.2 Lập trình cho các thành phần

    • 1.2.1 Hiển thị mạch điện lên giao diện:

    • 1.2.2 Lập trình cho nút tính toán

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

Tài liệu liên quan