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)
Trang 1MATLAB
Trang 21) Hiển thị mạch điện lên giao diện
2) Đóng, mở khóa Kx bằng check box
3) Cho phép nhập giá trị R và điện áp V
4) Hiển thị chỉ số gá trị các linh kiện
5) Hiển thị chỉ số ampe kế và vôn kế, cảnh báo quá dòng qua R (Imax=5A)
Trang 31.1 CƠBẢNVỀLẬPTRÌNHGUIDETRONGMATLAB 1 1.2 GIAODIỆNTHỰCHIỆNĐỀBÀI 5
CHƯƠNG 2 THIẾT KẾ GIAO DIỆN 6
2.1 THIẾTKẾGIAODIỆN 6
Trang 4CHƯƠNG 1 GIỚI THIỆU
1.1 Cơ bản về GUI trong matlab
Để vào guide, ta làm như sau:
Mở phần mềm Matlab (ở đây là Matlab 2015a, các phiên bản khác cũng tương tự):
Hình 1-
Trong cửa sổ Command Windows, nhập lệnh “guide” nhấn Enter sẽ xuất hiện cửa
sổ Guide Quick Start:
Hình 1-
Chọn OK sẽ xuất hiện 1 cửa sổ khác, chúng ta sẽ thực hiện tạo giao diện tại đây.
Trang 5Hình 1-
Phía trái cửa sổ có các thành phần sau:
+ Push Button: là nút nhấn, khi nhấn vào sẽ thực thi lệnh trong cấu trúc hàm
callback của nó.
+ Slider: là thanh trượt cho phép người dùng di chuyển thanh trượt để thục thi lệnh + Radio Button: Nó giống như Check Box nhưng thường được sử dụng để tạo sự lựa chọn duy nhất, tức là 1 lần chỉ được chọn 1 trong số các nhóm nhiều nút Khi một ô được chọn thì các ô còn lại trong nhóm bị bỏ chọn.
+ Check box: Sử dụng để đánh dấu tích (thực thi) vào và có thể check nhiều ô để thực thi.
+ Edit Text: là nơi các kí tự được nhập vào từ người dùng, người dùng có thể thay đổi được.
+ Static Text: Là các kí tự được hiển thị thông qua các callback, hoặc thông thường
để viết nhãn cho các biểu tượng, người dùng không thể thay đổi nội dung.
Trang 6+ Pop-up Menu: mở ra danh sách các lực chọn khi người dùng nhấp chuột vào Chỉ chọn được 1 mục trong danh sách các mục.
+ List Box: hộp thoại danh sách cách mục, cho phép người dùng chọn một hoặc nhiều mục.
+ Toggle Button: là nút nhấn có 2 điều khiển, khi nhấp chuột và nhả ra, nút nhấn được giữ và lệnh thực thi, khi 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 ra một bảng tương tự trong Excel.
+ Axes: Đây là giao diện đồ họa hiển thị hình ảnh, nó có nhiều thuộc tính bao gồm: không gian 2D (theo trục đứng và trục ngang), 3D (hiển thị không gian 3 chiều) + Panel: Tạo ra một mảng nhóm các biểu tượng lại với nhau giúp ta dễ kiểm soát và thao tác khi di chuyển.
+ Button Group: quản lí sự lựa chọn của nút Radio Button.
+ Active Control: Quản lí một nhóm các bút hoặc các chương trình liên quan với nhau trong Active.
Trang 7Ví dụ để tạo 1 nút nhấn, ta chọn Push Button sau đó kéo thả trong vùng làm việc:
Trang 81.2 Giao diện thực hiện đề bài
Hình 1-
Giao diện thực hiện yêu cầu hiển thị mạch điện, đóng/mở khóa K bằng check box, cho phép nhập R và V, hiển thị chỉ sổ giá trị linh kiện, hiển thị chỉ số ampe kế, volt kế, cảnh báo quá dòng qua R.
Việc sử dụng giao diện rất đơn giản, người dùng chỉ cần check chọn khóa K nào đóng/mở, nhập giá trị R, V trong phần tùy chỉnh mạch điện, sau đó nhấn nút “tính toán” các chỉ sổ sẽ được hiện lên trên giao diện.
Trang 9CHƯƠNG 2 THIẾT KẾ GIAO DIỆN
Trong phần này sẽ mô tả các bước để tạo được giao diện thực hiện yêu cầu của
đề bài như trong phần 1B
2.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 các thành phần như sau:
Hình 2 -
Trang 10Chỉnh sửa String trong Inspector và save lại vào 1 thư mục nào đó:
Hình 2 - Đặt tag cho từng thành phần:
Để tiện cho việc gọi các thành phần ra trong code thì ta đặt tên tag được thống kê trong bảng dưới đây (có thể chỉnh sửa theo ý thích):
Trang 11Hì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.
Trang 122.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ả.
2.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 nhiên chúng ta cần phải vẽ rồi, đơn giản nhất là dùng Paint có sẵn trong windows:
Mở paint lên:
Hình 2 -
Trang 15Sau đó nhập code vào dưới 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)
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 = V/(Rtd + R); % tinh dong qua cac dien tro
IR1 = t1*(V-IR*R)/R1;
IR2 = t2*(V-IR*R)/R2;
IR3 = t3*(V-IR*R)/R3;
% hien thi ket qua
set(handles.I, 'String', IR); % dat gia tri IR vao thuoc tinh String cua thanh 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
Trang 16CHƯƠNG 3 THỰC NGHIỆM
Giao diện hoàn chỉnh:
Hình 3 -
Trang 17Thử nghiệm giao diện với các thông số sau:
Trang 18 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ệnPASS
Trang 19Phụ 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
% applied to the GUI before BTL_41301662_OpeningFcn gets called An
% unrecognized property name or invalid value makes property
% 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
Trang 20% 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
% - 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)
Trang 21Rtd = 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 xemnhu khong co R
IR = V/(Rtd + R); % tinh dong qua cac dien tro
IR1 = t1*(V-IR*R)/R1;
IR2 = t2*(V-IR*R)/R2;
IR3 = t3*(V-IR*R)/R3;
% hien thi ket qua
set(handles.I, 'String', IR); % dat gia tri IR vao thuoc tinh String cua thanh 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 thanh mau do
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
Trang 22function 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)
% Hints: get(hObject,'String') returns contents of R as text
% str2double(get(hObject,'String')) returns contents of R as a double
% 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