Professional Documents
Culture Documents
Yu cu ca ti tt nghip bao gm vic thit k v ch to hon thin m hnh ti mt ng t c hai chiu lu thng, c m hnh n giao thng v camere c b tr hp hp l. M hnh l nhng chic xe c t ti hai chiu lu thng ca mt ng t, ta sp xp nhng chic xe ng vi nhiu trng hp nh : mt tha, mt bnh thng, v mt cao, ta x dng cng c matlab chp li v ra kt qu phn tch. Sau khi phn tch tn hiu s c gi xung thc hin t thi gian cho n giao thng. Tm hiu truyn thng my tnh vi vi x l To giao din ngi dng. Trang 1
Tm hiu cc thut ton x l nh, bt nh trn Matlab. Phi thc hin c gii thut v chong trnh nh gi c mt lu thng thng qua cng c matlab. Trnh c cc yu t gy nhiu t mi trng ngoi nh: tng phn gia xe v nn ng khng cao. S h thng:
Trang 2
1.3. Kh khn:
nh hng t tng phn gia xe v nn ng: V nn ng th c nh. Nhng cc loi xe lu thng trn ng th a dng. Do vn l s lm nh th no nu nh gia xe v nn ng c mu sc gn ging nhau? Chng hn: Nu gia chic xe v khng gian quanh n c tng phn cao. V d: Xe trng so vi nn ng mu en ( tng phn cao).
(a)
(b)
(c) Hnh 1.1 (a) nh chp t webcam, (b) nh a cp xm, (c) nh trng en
Trang 3
(a)
(b)
Trang 4
(c) Hnh1.3 (a) Hnh xe mu chp t webcam, (b) nh xm, (c) nh trng en. Nu tng phn gia chic xe vi nn ng l thp? V d: Xe xanh so vi nn ng mu en ( tng phn thp):
(a)
(b)
Trang 5
(c) Hnh 1.4 (a) Xe chp t webcam, (b) nh a cp xm, (c) nh trng en
? Nhn xt: T biu histogram hnh 1.5. i vi xe mu xanh, nn ng mu en r rng c tng phn rt thp (cc thnh phn histogram hp v tp trung cui). iu ny dn ti nh sau khi chuyn sang trng en hnh 1.4 (c) l khng tt. Do , khng th tnh din tch chic xe trong trng hp ny.
Nhiu bi nh sng mi trng: nh sng s bin thin theo gi gic trong ngy. Hn na, n cn chu s tc ng trc tip hoc gin tip t cc i tng nh: xe vo trm lc ban m s bt n, ngi i ng chiu n vo, n ng
Trang 6
1.3.1. Cch gii quyt: V nhiu nh sng: Trong Matlab c h tr mt cng c thc hin vic san bng cc vng sng ti. I = imread('rice.png'); imshow(I)
Trang 7
Gii quyt tng phn gia khng gian nn v xe: gii quyt cng vic tch xe th gia xe v khng gian quanh n phi c tng phn cao. Cc phng php lm th: 1. Tch mu 2. Tch bin Tuy nhin, c hai phng php u khng thc hin c v kt qu ca tch mu v tch bin c tt hay khng l ph thuc vo tng phn gia xe v khng gian quanh n. i vi nhng xe c mu sc to nn tng phn cao so vi nn ng th cng vic ny khng gp kh khn, nhng i vi nhng xe c mu sc m tng phn ca n l thp th phng php ny khng hiu qu. i vi trng hp trn ta c cch lm tng tng phn gia xe v nn ng bng cch to nn ng sao cho c nhng vch trng xen k nhng vch en, v cch lm ny rt hiu qu v ph hp vi b tr nn ng ti ng t l nhng vch trng gim tc xe.
Trang 8
Trang 10
2.2.2. nh RGB:
nh RGB (nh mu) hay cn gi l nh truecolor do tnh trung thc ca n. nh ny c biu din theo mt ma trn ba chiu kch thc m x n x 3, vi m x n l kch thc nh theo pixels. Ma trn ny nh ngha cc thnh phn mu red, green, blue cho mi im nh. V d: im nh v tr (10,5) s c 3 thnh phn mu c xc nh bi cc gi tr (10,5,1), (10,5,2) v (10,5,3). Vi 1, 2, 3 l tng ng vi cc mu R, G, B.
Trang 11
Hnh 2.2 Hnh mu RGB %Thc hin tch ma trn mu ra khi nh mu RGB >> goc=anh; >> goc(:,:,2)=0; %Cho ma trn mu xanh Green bng khng >> H1=goc; >> H1(:,:,3)=0; %Cho ma trn mu xanh Blue bng khng >> figure(2),imshow(H1);
%Thc hin chuyn i nh mu thnh nh a cp xm, tng tng phn v chuyn thnh nh trng en. >> T1=rgb2gray(anh); %chuyn thnh nh a cp xm >> figure(3),imshow(T1); >> tuong_phan = imadjust(T1); %tng tng phn >> figure(4),imshow(tuong_phan); >>lay_nguong = graythresh(tuong_phan); %ly ngng theo thut ton otsu >> trang_den = im2bw(tuong_phan,lay_nguong); %nh trng en >> figure(5),imshow(trang_den);
Hnh 2.4 nh a cp xm
Trang 13
2.3. Cc phng php x l nh trong qu trnh tin x l: 2.3.1. Thay i tng phn:
Trong nh s, mi im nh c mt gi tr sng khc nhau mt ngi c th nhn thy v cm nhn. Tuy nhin, nu hai i tng c cng sng nhng t trn hai nn nh khc nhau th cho chng ta cc cm nhn khc nhau. Khi nim tng phn c a ra biu din s thay i sng ca i tng so vi nn, hay ni ca im nh (vng nh) so vi vng nn cha n. nh vi tng phn thp c th do iu kin sng khng , khng u, hoc s tng i ging nhau v mu sc, nh sng gia i tng v khng gian quanh i tng hoc do tnh khng tuyn tnh hay bin ng nh ca b cm nhn nh. iu chnh li tng phn ca nh, ta iu chnh li bin trn ton di hay trn di c gii hn bng cch bin i tuyn tnh u vo (dng hm bin i l hm tuyn tnh) hay phi tuyn (hm m hay hm logarit). Thay i tng phn dng trong matlab: >> anh=imread('race_02.jpg'); >> figure(1),imshow(anh); >> T1=rgb2gray(anh); >> figure(3),imshow(T1); Trang 14
>> tuong_phan = imadjust(T1); %to nn tng phn vi imadjust >> figure(4),imshow(tuong_phan); >> lay_nguong = graythresh(tuong_phan); >> trang_den = im2bw(tuong_phan,lay_nguong); >> figure(5),imshow(trang_den);
Hnh 2.7 nh sau khi tng tng phn Cng thc chung cho lnh imadjust (i vi tt c cc nh xm, mu) l: >> J = imadjust(I,[low_in; high_in], [low_out; high_out],gamma); Trong : I: l ma trn nh gray. [low_in; high_in]: l gi tr mc xm nh ban u. Nu tng ng ta nhp thng s l [0 1] th mc nh l kiu uint8, [0 1] tng ng vi mc lng t ca tm nh l t [0 255], vi uint16 th [0 1] tng ng vi [0 65535]. [low_out; high_out]: l gi tr mc xm nh sau bin i. Cc gi tr c chn ca n nm trong khong [0 1], tng t nh [low_in; high_in]. Gamma: Nu gamma nh hn 1 th nh sau bin i phi tuyn vi nh ban u, theo hm m dng:
Trang 15
Ch : Ta c thay i cc thng s ca [low_in; high_in] hoc [low_out; high_out] to nn nhng tm nh m bn. Thc hin vi Matlab: >> T1=rgb2gray(anh); % bin i thnh nh mc xm >> figure(3),imshow(T1); >> tuong_phan = imadjust(T1,[0 1],[1 0]); % to nh m bn >> figure(4),imshow(tuong_phan); Trang 16
>> lay_nguong = graythresh(tuong_phan); >> trang_den = im2bw(tuong_phan,lay_nguong); >> figure(5),imshow(trang_den); >> T2=rgb2gray(anh); >> figure(6),imshow(T2); >> tuong_phan = imadjust(T1,[0 0.75],[0 1]); >> figure(7),imshow(tuong_phan);
Hnh 2.8 nh m bn
Trang 17
V d 1: >> anh=imread('huanrace.jpg'); >> figure(1),imshow(anh); >> T2=rgb2gray(anh); >> figure(6),imshow(T2); >> figure(8),imhist(T2,64); % trnh din th histogram
Hnh 2.10 nh xm
Trang 18
? Nhn xt: T biu Histogram ta thy cc thnh phn Histogram vng sng v vng ti dn tp trung v hai gc ca biu (vng ti l c gi tr t (0 n 50) tp trung kh nhiu, vng sng t (200 n 250) cng kh nhiu). iu ny chng t y l mt tm nh c tng phn cao. V d 2: Thc hin tng t nh trn vi mt tm nh khc.
Hnh 2.12 nh xm
Trang 19
? Nhn xt: biu ny, cc thnh phn Histogram tp trung hp v nm gia biu thang xm. V th, y l mt tm nh c tng phn thp. V d 3:
Hnh 2.14 nh a cp xm
Trang 20
Trang 21
? Nhn xt: Biu Histogram hnh 2.15. Cc thnh phn histogram tp trung hp v b phn cc v pha thp ca biu . Do , y l mt tm nh c tng phn thp v ti. Trong matlab c h tr hm strectchlim. Hm ny tnh ton histogram ca nh v xc nh cc gi tr gii hn ca mc xm mt cch t ng. N tr v mt vector m ta c th dng lm cp thng s [low_in; high_in] cung cp cho hm imadjust (trong trng hp mc nh, hm imadjust s dng hm stretchlim to ra cp [low_in; high_in] nu ngi s dng khng cung cp). Bnh thng hm stretchlim s ly gi tr mc xm nm mc 1% v 99% trong vng bin thin mc xm ca nh. Tuy nhin, ta cng c th thay i m rng hoc thu hp cc gii hn ny bng cch cung cp thm cc thng s tol cho hm stretchlim. l mt vector gm hai phn t thuc [0 1] cho bit ta s chn cc gii hn mc no trong vng bin thin mc xm (mc nh l [0.01 0.99]).
>> [low, high]=stretchlim(I, tol) >> H1=imread('chup_02.png'); >> H1=rgb2gray(H1); >> figure(3), imshow(H1); >> l=stretchlim(H1,[0 1]); >> ans l= 0.0196 0.9882
Trang 22
Trang 23
ng dng vi prewitt:
Hnh 2.18 nh sau khi tch bin vi prewitt Ngoi hai phng php tch bin trn, th trong matlab cn h tr mt s phng php khc nh: Roberts: BW = edge(I,'roberts') BW = edge(I,'roberts',thresh) [BW,thresh] = edge(I,'roberts',...) Log: BW = edge(I,'log') Zerocross: BW = edge(I,'zerocross',thresh,h) Canny BW = edge(I,'canny')
Trang 24
Trang 25
Quay ma trn: B=rot90(A) B= 3 6 9 2 5 8 1 4 7 Kch thc ma trn: >> size(B) ans = 3 3 Tc ma trn c 3 hng, 3 ct. Tm gi tr ln nht trong mi ct ma trn: >> A = [1 2 3 ; 4 5 6; 7 8 9] A= 1 2 3 4 5 6 7 8 9 >> v=max(A) v= 7 8 9 Tm gi tr nh nht trong mi ct ma trn: >> v=min(A) v= 1 2 3 S chiu ca ma trn: >> n=rank(A) n= 2
Trang 26
Mt s hm c v lu nh: Hm Axis Image, imshow Imread Immovie Imwrite Imfinfo Ind2rgb Imview Mc ch V trc Hin th nh c nh t file nh c sn To phim t nhiu khun hnh Lu nh Ly thng tin nh i nh ch s sang nh RGB Hin th nh, c th a du nhc chut vo nh ny xem thng tin (mu sc, v tr cc pixels)_
Trang 27
2.6. Bt nh:
Giao tip my tnh vi webcam: Mua mt webcam c km theo a driver. Nu c webcam m khng c driver th c th tm thng tin ca hng bn webcam (c ghi trn sn phm), c th vo Phong V nh k thut vin chp phn mm driver vo USB. Ci a driver v my tnh (rt d dng). Cm u ni webcam vo cng USB. M chng trnh chy, lc ny my tnh c th giao tip vi webcam. Matlab giao tip vi Webcam: Trong qu trnh x l nh, mun chp, quay phimx l nh mt cch trc tip t webcam vi phn mm matlab. Th cn phi thc hin nhng bc sau: 1. Phi c file vfm.dll (File ny c th i xin thy, bn b). 2. Sau khi c file vfm.dll th thc hin chp file ny vo a ch: C:/Windows/System32. 3. Lc ny, matlab c th hot ng giao tip vi webcam. V d: Thc hin thu nh t webcam: >> vid=videoinput(winvideo,1); % khai bo ng vo cho webcam >> preview(vid); % trnh din nh ng thu c t webcam >> chup_hinh=getsnapshot(vid); % chp hnh nh ng. >> figure(2), imshow(chuphinh2); % trnh din nh tnh va chp >> imwrite(chuphinh2, 'chup.png', 'png'); % lu li nh va chp trong matlab/work >> delete(vid); >> clear vid; % thc hin xa v ng ng vo.
Trang 28
Vi GUI th ngi s dng ch cn hiu c cch ng dng ca n, khng cn i chi tit qu su vo chuyn mn, khng cn hiu r cch thc lm vic ca chng trnh nh th no. Tuy nhin, to mt GUI l mt cng vic rt kh khn i vi ngi lp trnh bi v GUI trong matlab th cha c ph bin, nghin cu k, cc hng dn cng nh v d ng dng l cha nhiu. Cc thnh phn chnh trong mt GUI ca matlab: - Component (cc thnh phn cu thnh): mi i tng trong GUI (nt nhn, nhn, hp son tho,) sau khi kt hp li th to thnh mt GUI hon chnh. - Cc thnh phn phn loi thnh: o Cng c iu khin: nt nhn, hp son tho, thanh trt, o Cc thnh phn tnh: khung hnh, chui k t, o Menu v axes: l cc h trc dng hin th hnh ha. o Figure: cc thnh phn ca GUI phi c sp xp vo trong mt figure, l mt ca s c hin th trn mn hnh my vi tnh. o Callback: cui cng, khi ngi s dng tc ng vo chng trnh bng cch nhn chut, hay g bn phm th chng trnh phi p ng li mi s kin ny. Cng c Cc cng c iu khin Pushbutton To bi hm Uicontrol Miu t L mt nt nhn. N s gi hm khi ta nhn vo n L nt nhn c hai trng thi l on v off. Khi c tc ng n s gi hm tng ng v thay i trng thi t on sang off v ngc li. Cng l mt nt nhn c hai trng thi c th hin bi mt vng trn nh, trng thi on tng ng vi trng hp c du chm chm gia vng trn v ngc li off. Trong mt nhm Radio button ta Trang 29
Toggle button
Uicontrol
Radio button
Uicontrol
Check box
Uicontrol
List box
Uicontrol
Popup menus
Uicontrol
ch c th chn c mt thnh phn. Khi c tc ng vo mi thnh phn s c mt hm c gi. Cng l mt nt nhn c hai trng thi c th hin bi mt hnh vung nh, trng thi on tng ng vi trng hp c nh du gia hnh vung v ngc li l trng thi off. Khi c tc ng n s gi hm tng ng v thay i trng thi t on sang off hoc ngc li. L mt danh sch cc chui. Ngi s dng c th chn mt chui bng cch click hoc double click vo n. Chng trnh s gi mt hm khi c mt chui c chn. L cng c cho php chng ta chn mt chui trong mt nhm cc chui. Danh sch tt c cc chui s c hin th khi c click chut. Khi khng c click chut cng c ch th hin chui hin ti c chn.
Trang 30
Slider
Uicontrol
L cng c cho php iu chnh mt cch lin tc gi tr trong mt thanh trt. Mi khi gi tr ca thanh trt thay i s c hm c gi. c s dng to ra mt khung hnh ch nht. Frame cn c s dng nhm cc cng c iu khin li vi nhau. Frame khng c kh nng gi hm. c s dng to ra mt nhn bao gm cc k t. Text field khng c kh nng gi hm. c s dng to ra menu trn thanh cng c. Chng trnh s gi hm khi mt i tng trong menu c chn. c s dng to mt h trc th. Axes khng c kh nng gi hm. c s dng to ra menu xut hin khi righ click vo mt hnh trong giao din.
Uicontrol
Text field
Uicontrol
Uicontrol
Axes
Axes
Context menus
Uicontextmenu
Trang 31
Hnh 2.21 to giao din iu khin Phn tch: Chng cn c: Nm nt Pushbutton, by Text field, hai Axes. Bc 1: Vo Menu\Gui phc ha giao din c dng nh hnh v:
Trang 32
Bc 2: Lu li giao din vi tn l: giaodien_doan3. Sau khi lu th ta s c hai file l: giaodien_doan3.fig v giaodien_doan3.m. Vi giaodien-doan3.fig l file chy giao din v giaodien_doan3.m l file code chng trnh.
Hnh 2.22 Ca s thc hin vit chng trnh cho giao din Bc 3: Quay li giaodien_doan3.fig thay i mt s thuc tnh cho cc nt nhn v textfield. Nhn double click vo nt pushbutton th nht ta s thy ca s thuc tnh hin ra
Trong ca s thuc tnh ca nt nhn Pushbutton th nht vo: Vo Style g: ANH NEN. Vo FontSize chn kch c ch l 10.0. Vo FontWeigh chn kiu ch m l bold. Tng t cho nt nhn Pushbutton th hai,ba,bn,nm ln lt: Thay Style: ANH SO SANH, PHAN TICH ANH, RESET, CANCEL i vi textfield th v bng thuc tnh chn Style sau ghi: Danh Gia Mat Do Luu Thong cho text10, TRUONG DAI HOC TON DUC THANG,KHOA DIENDIEN TU.cho cc text cn li Sau khi thay i thuc tnh ta c mn hnh giao din sau:
'Chon 1 buc anh'); var=strcat(pathname,filename); H2=imread(var); H3=image(H2,'parent',handles.axes8); function pushbutton1_Callback(hObject, eventdata, handles) H1=imread('anh nen1.jpg'); global H3 H2 [filename, pathname, filterindex]=uigetfile( ... {'*.jpg','JPEG File (*.jpg)'; ... '*.*','Chon file anh bat ky (*.*)'}, ... 'Chon 1 buc anh'); var=strcat(pathname,filename); H2=imread(var); H2=H2(42:351,120:502,:); figure(3),imshow(H2),title('Anh xe duoc phan vung gioi han'); a2=rgb2gray(H2); figure(),imshow(a2); H1=H1(42:351,120:502,:); figure(5),imshow(H1),title('Anh goc duoc phan vung gioi han'); a1=rgb2gray(H1); figure(),imshow(a1); a3=imabsdiff(a2,a1); a3 = medfilt2(a3); figure(6),imshow(a3); for i=1:310 for j=1:383 if 0<=a3(i,j) & a3(i,j)<=20 a3(i,j)=0; else a3(i,j)=a2(i,j); end end end figure(7),imshow(a3); b3 = imadjust(a3); b3 = medfilt2(b3); figure(8),imshow(b3); H= bwareaopen(b3,500); Trang 35
figure(13),imshow(H); %_______thuc hien tim gioi han cua hinh can tach_________ [m,n]=size(H); for i=1:m for j=1:n if H(i,j)==1 h1=i; break; end end end for i=m:-1:1 for j=1:n if (H(i,j)==1) h2=i; break; end end end for j=1:n for i=1:m if (H(i,j)==1) c1=j; break; end; end; end; for j=n:-1:1 for i=1:m if (H(i,j)==1) c2=j; break; end; end; end; H3=H(h2:h1,c2:c1); figure(10),imshow(H3); dt_nenduong=m*n Trang 36
[q,t]=size(H3); p=0; for i=1:q; for j=1:t; if H3(i,j)==1 p=p+1; end end end dt_chiemcho=p dt_tyle=(dt_chiemcho/dt_nenduong)*100 if 0<=dt_tyle&dt_tyle<=25 %disp('mat do luu thong thua') set(handles.text10,'string','Mat Do Luu Thong Thua'); else if 25<dt_tyle&dt_tyle<39 %disp('mat do luu thong binh thuong') set(handles.text10,'string','Mat Do Luu Thong Binh Thuong'); else if 39<dt_tyle&dt_tyle<100 %disp('mat do luu thong qua cao') set(handles.text10,'string','Mat Do Luu Thong Qua Cao'); end end end function pushbutton4_Callback(hObject, eventdata, handles) global IMG IMG1; IMG=IMG1; image(IMG) function pushbutton5_Callback(hObject, eventdata, handles) close;
Trang 37
2.8. Kt qu:
Sau khi chy chng trnh ta thu c kt qu sau:
Trang 38
Trang 39
Trang 40
Hnh 2.29 nh tr c x l
Trang 41
Trang 42
Hnh 2.32 nh c trng sau khi c ly gii hn y chnh l c trng cui cng ca vic x l nh. T hnh nh cui cng ny ta c th tnh c din tch mu trng ca xe chim ch,t ta suy ra c t l din tch gia nn ng v t nh gi c mt lu thng trn ng.
Hnh 2.33 nh giao din sau khi phn tch xong Trang 43
Mt s ng dng khc trong to giao din: Nhn nt gi xung vi x l mt k t A. Bc 1: To mt mn hnh giao din c nt Pushbutton. Sau , lu li giao din ny. C th thay i thuc tnh ca nt nhn ty thch. Bc 2: Trong file.m ta vit chng trnh cho hm con callback gi v nhn k t vi x l. function pushbutton1_Callback(hObject, eventdata, handles) s=serial('COM1','BAUDRATE',9600,'DATABITS',8); % Chn cng COM1, tc baud l 9600, gi k t 8 bits fopen(s); % M cng COM fprintf(s,'A'); % Truyn xung vi x l ch A out = fscanf(s); % Nhn d liu t vi x l a ln. fclose(s); delete(s); clear s; % ng v xa COM
Hnh 2.34 Giao tip my tnh vi vi x l Xc nh trng thi ca nt Toggle Buttons: Bc 1: Phc tho v to giao din c mt nt toggle button, v mt text field.
Trang 44
Bc 2: Vit chng trnh cho Callback: function togglebutton1_Callback(hObject, eventdata, handles) % hObject handle to togglebutton1 (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 togglebutton1 state=get(handles.togglebutton1,'Value'); if state == 0 set(handles.Text2,'String',') else set(handles.Text2,'String','') end
Trang 45
M cng COM
Trang 46
3.2. S khi:
Trang 47
Hnh 3.2: Cc chn ca AT89C51 AT89C51 co tt ca 40 chn. Mi chn co chc nng nh cac ng I/O (xut/nhp), trong o 24 chn co cng dung kep: mi ng co th hoat ng nh mt ng I/O hoc nh mt ng iu khin hoc nh thanh phn cua bus ia chi va bus liu. M ta chn: + VCC (chn 40): Chn cp ngun. + GND (chn 20): Chn ni t. + Port 0: la mt port xut/nhp song hng cc mang h 8 bit. Nu c s dung nh la mt ngo xut thi mi chn co th keo 8 ngo vao TTL. Khi mc 1 c vit vao cac chn cua port 0, cac chn nay co th c dung nh la cac ngo nhp tng tr cao. Port 0 co th c inh cu hinh hp knh gia bus ia chi va bus d liu Trang 48
(phn byte thp) khi truy cp n b nh d liu va b nh chng trinh ngoai. ch nay, P0 co cac in tr pullup bn trong. Port 0 cung nhn cac byte code (byte ma chng trinh) khi lp trinh Flash, va xut ra cac byte code khi kim tra chng trinh. Cn co cac in tr pullup bn ngoai khi thc hin vic kim tra chng trinh. + Port 1: Port 1 la mt port xut/nhp song hng 8 bit co cac in tr pullup bn trong. Cac b m ngo ra cua port 1 co th keo hoc cung cp 4 ngo nhp TTL. Khi mc 1 c vit vao cac chn cua port 1, chung c keo ln cao bi cac in tr pullup ni va co th c dung nh la cac ngo nhp. Nu ong vai tro la cac ngo nhp, cac chn cua port 1 (c keo xung thp qua cac in tr bn ngoai) se cp dong IIL do cac in tr pullup bn trong. + Port 2: Port 2 la mt port xut/nhp song hng 8 bit co cac in tr pullup bn trong. Cac b m ngo ra cua port 2 co th keo hoc cung cp 4 ngo vao TTL. Khi cac mc 1 c vit vao cac chn cua port 2 thi chung c keo ln cao bi cac in tr pullup ni va co th c dung nh cac ngo vao. Khi c dung nh cac ngo vao, cac chn cua port 2 (c keo xung qua cac in tr bn ngoai) se cp dong IIL do co cac in tr pullup bn trong. Port 2 phat ra byte cao cua ia chi khi oc t b nh chng trinh ngoai va khi truy cp b nh d liu ngoai dung cac ia chi 16 bit (MOVX @DPTR). Trong ng dung nay, no dung cac in tr pullup ni "manh" khi phat ra cac mc 1. Khi truy cp b nh d liu ngoai dung cac ia chi 8 bit (MOVX @RI), port 2 phat ra cac ni dung cua thanh ghi chc nng c bit P2. Port 2 cung nhn cac bit cao cua ia chi va mt vai tin hiu iu khin khi lp trinh va kim tra Flash. + Port 3: Port 3 la mt port xut-nhp song hng 8 bit co in tr pullup ni bn trong. Cac b m ngo ra cua port 3 co th keo hoc cung cp 4 ngo vao TTL. Khi cac mc 1 c vit vao cac chn cua port 3 thi chung c keo ln cao bi cac in tr pullup ni va co th c dung nh cac ngo vao. Khi c dung nh cac ngo vao, cac chn cua port 3 (c keo xung qua cac in tr bn ngoai) se cp dong IIL do co cac in tr pullup bn trong.
SFR tai ia chi 8Eh. Nu bit nay c set, ALE chi dc hoat ng khi co mt lnh MOVX hoc MOVC. Ngc lai, chn nay c keo ln cao bi cac in tr pullup "nhe". Vic set bit cm-ALE khng co tac dung khi b vi iu khin ang ch thi hanh ngoai. + PSEN (Program Store Enable): la xung oc b nh chng trinh ngoai. Khi AT89C51 ang thi hanh PSEN c kich hoat hai ln mi chu ky may, nhng hai ma (code) t b nh chng trinh ngoai, hoat ng PSEN se bi bo qua mi khi truy cp b nh d liu ngoai. + EA/Vpp: EA (External Access Enable) phai c ni vi GND cho phep thit bi oc code t b nh chng trinh ngoai co ia chi t 0000H n FFFFH. Tuy nhin, lu y rng nu bit khoa 1 (lock-bit 1) c lp trinh, EA se c cht bn trong khi reset. EA phai c ni vi Vcc khi thi hanh chng trinh bn trong. Chn nay cung nhn in ap cho phep lp trinh Vpp=12V khi lp trinh Flash (khi o ap lp trinh 12V c chon). + XTAL1 va XTAL2: la hai ngo vao va ra cua mt b khuch ai dao ng nghich c cu hinh dung nh mt b dao ng trn chip.
Hnh 3.3: Cch gn thch anh vi AT89C51 Khng co yu cu nao v duty cycle cua tin hiu xung ngoai,vi ngo nhp ni vi mach tao xung ni la mt flip-flop chia i, nhng cac chi inh v thi gian high va low, cac mc ap ti a va ti thiu phai c tun theo.
Vi x l AT89C51 co b nh theo cu truc Harvard: co nhng vung b nh ring bit cho chng trinh va d liu. Nh a noi trn, ca chng trinh va d liu co th bn trong; du vy chung co th c m rng bng cac thanh phn ngoai ln n ti a 64 Kbytes b nh chng trinh va 64 Kbytes b nh d liu. B nh bn trong bao gm ROM va RAM trn chip, RAM trn chip bao gm nhiu phn: phn lu tr a dung, phn lu tr ia chi hoa tng bit, cac bank thanh ghi va cac thanh ghi chc nng c bit. Cac thanh ghi va cac port xut nhp a c xp trong b nh va co th c truy xut trc tip ging nh cac ia chi b nh khac. Ngn xp bn trong RAM ni nho hn so vi RAM ngoai nh trong cac b vi x ly khac. RAM bn trong c phn chia gia cac bank thanh ghi (00H1FH), RAM ia chi hoa tng bit (20H 2FH), RAM a dung (30H7FH) va cac thanh ghi chc nng c bit (80HFFH).
ia chi byte cua ca thanh ghi tich luy va la ia chi bit cua bit co trong s nho nht trong thanh ghi tich luy. Vi lnh SETB chi tac ng trn bit, nn chi co ia chi bit la co hiu qua.
3.9. Tm tt tp lnh:
Tp lnh ca AT89C51 c ti u ha cho cc ng dng iu khin 8 bit, nhiu kiu nh a ch c ng v nhanh dng truy xut RAM ni c dng nhm to thun li cho cc thao tc trn cc cu trc d liu nh. Tp lnh cng h tr cc bin 1 bit cho php qun l bit trc tip trong cc h logic v iu khin c yu cu x l bit. Do cc lnh ca MCS-51 c 8 bit nn 89C51 c ti a 256 lnh (thc t c 255 lnh, 1 lnh khng c nh ngha) gm 139 lnh 1 byte, 92 lnh 2 byte, 24 lnh 3 byte. xc nh r ngun v ch ca d liu, ta dng n cc kiu nh a ch sa + Thanh ghi + Trc tip + Gin tip + Tc thi + Tng i + Di + Ch s nh a ch thanh ghi:
Trang 52
Cc lnh s dng kiu nh a ch thanh ghi c m ha bng cch dng 3 bit thp nht ca lnh ch ra mt thanh ghi bn trong khng gian a ch logic ny. Ngi lp trnh c th truy xut 8 thanh ghi lm vic c nh s t R0 n R7. C 4 dy thanh ghi lm vic nhng ti mt thi im ch c mt dy thanh ghi c tch cc. Cc dy thanh ghi chim 32 byte u tin ca RAM d liu trn chip ( a ch t 00H n 1FH ) v ta dng cc bit 4 v 3 trong t chng trnh PSW ch ra dy thanh ghi tch cc. Khi reset bng phn cng cho php dy 0 tich cc, cn cc dy khc c chn bng cch sa i cc bit 4 v 3 ca PSW sao cho ph hp. nh a ch trc tip: Kiu nh a ch trc tip c s dng dng truy xut cc bin nh hoc cc thanh ghi trn chip. Mt byte c thm vo tip theo m lnh dng xc nh a ch. Ty thuc vo bit c gi tr v tr cao ca a ch trc tip, mt trong hai khng gian nh trn chip c chn. Khi bit 7 bng 0, a ch trc tip trong tm t 0 n 127 ( 00H - 7FH ) v 128 byte thp trn chip ca RAM ni c tham chiu. Khi bit 7 bng 1, tt c cc port xut/nhp, cc thanh ghi chc nng c bit, iu khin, trng thi c gn a ch trong tm t 128 n 255 ( 80H - FFH ). Ta khng nht thit phi nh a ch ca cc thanh ghi ny, trnh hp dch cho php ta s dng m gi nh vit tt d hiu nh P0 thay cho port 0, TMOD cho thanh ghi ch nh thi... nh a ch gin tip: Kiu nh a ch ny dng xc nh 1 bin khi a ch ca bin c xc nh, v rt thun tin trong trng hp qun l cc v tr nh lin tip, cc im nhp c nh ch s trong cc bng cha trong RAM, cc s chnh xc hoc cc chui k t. Kiu nh a ch ny ch p dng cho 2 thanh ghi R0, R1. Cc thanh ghi ny hot ng nh l cc con tr v ni dung ca chng ch ra a ch trong RAM, ni m d liu c c hay c ghi. Bit c ngha thp nht ca lnh xc nh thanh ghi no (R0 hay R1) c s dng lm con tr. nh a ch tc thi: Khi ton hng ngun l mt hng s thay v l mt bin, kiu nh a ch ny c s dng. Trong hp ng, cc ton hng tc thi oc nhn bit nh vo du # t trc chng. Ton hng ny c th l mt hng s, mt bin, hoc mt biu thc s hc s dng cc hng s, cc k hiu v cc ton t. Trnh dch hp ng tnh gi tr v thay th d liu tc thi vo trong lnh. Tt c cc lnh s dng kiu nh a ch tc thi u s dng hng d liu 8 bit lm d liu tc thi. Tuy nhin, khi ta dng con tr d liu 16 bit DPTR, hng a ch 16 bit c cn n. nh a ch tng i: Kiu nh a ch tng i ch c s dng cho cc lnh nhy. Mt a ch tng i (hay cn gi l offset) l mt gi tr 8 bit c du. Gi tr ny c cng vi Trang 53
b m chng trnh to ra a ch ca lnh tip theo cn thc thi. Do ta s dng mt offset c du, cho nn tm nhy c gii hn t (-128) byte n 127 byte. Byte a ch tng i l byte thm vo tip theo byte m lnh ca lnh. nh a ch tuyt i: Kiu nh ch tuyt i ch c s dng vi cc lnh ACALL v AJUMP. y l cc lnh 2 byte cho php r nhnh chng trnh trong trang 2K hin hnh ca b nh chng trnh bng cch cung cp 11 bit thp ca a ch ch, trong 3 bit cao (A8 - A10) a vo m lnh v 8 bit thp (A7 - A0) thnh lp byte th 2 ca lnh. 5 bit cao ca a ch ch l 5 bit cao hin hnh trong b m chng trnh, do vy lnh theo sau lnh r nhnh v ch ca lnh r nhnh phi trong cng 1 trang 2K, v A11 - A5 khng thay i. nh a ch di: Kiu nh a ch di c dng cho cc lnh LCALL v LJUMP. Cc lnh 3 byte ny cha a ch ch 16 bit (byte 2 v byte 3) ca lnh. Kiu nh a ch ny c phm s dng rng ht ton b khng gian nh ca chng trnh 64K, nhng li ph thuc vo v tr v chim 3 byte. nh a ch ch s: Kiu ny s dng mt thanh ghi nn (hoc b m chng trnh hoc con tr d liu) v mt offset (thanh cha A) to thnh dng a ch hiu dng cho lnh JUMP hoc MOVC. Cc loi lnh : Cc lnh ca 89C51 c chia lm 5 nhm : + Nhm lnh s hc + Nhm lnh logic + Nhm lnh di chuyn d liu + Nhm lnh x l bit + Nhm lnh r nhnh Cc lnh s hc: Tt c cc lnh s hc c thc hin trong mt chu k my, ngoi tr lnh tng INC DPTR trong 2 chu k my, cc lnh MUL AB v DIV AB trong 4 chu k my. Cc lnh logic: Nhm lnh logic ca 89C51 rhc hin cc php ton logic (AND, OR, XOR, NOR) trn cc byte d liu v thc hin trn tng bit c cng gi tr v tr (trng s). Tt c cc lnh logic s dng thanh cha A lu mt ton hng s c thc thi trong 1 chu k my, ngc li nu s dng thanh ghi khc hoc byte nh khc thay cho thanh cha A, lnh phi c thc hin trong 2 chu k my. Cc php ton logic
Trang 54
c th c thc hin trn mt byte bt k trong b nh d liu ni m khng cn qua trung gian thanh cha A. Cc lnh di chuyn d liu: Trong RAM ni: cc lnh di chuyn d liu trong khng gian nh ni c thc thi trong 1 hoc 2 chu k my. Trong RAM ngoi: vi cc lnh thc hin vic di chuyn d liu gia RAM ni vi RAM ngoi, ta phi s dng kiu nh a ch gin tip. Tt c cc lnh di chuyn d liu hot ng trn b nh ngoi c thc thi trong 2 chu k my v s dng thanh cha lm ton hng ngun hoc ton hng ch. Cc tn hiu dng truy xut RAM ngoi (RD v WR) ch tch cc trong khi lnh MOVX c thc thi. Cc bng tm kim: c 2 lnh di chuyn d liu dnh cho vic c cc bng tm kim trong b nh chng trnh. Do cc lnh ny truy xut b nh chng trnh, cc bng tm kim ch c th c v khng c cp nht. M gi nh ca lnh l MOVC (move constant : di chuyn hng). MOVC hoc s dng b m chng trnh hoc con tr d liu lm thanh ghi nn v thanh cha A cha a ch offset. Lnh ny c th truy xut mt bng 256 im nhp c nh s t 0 n 255. S ca im nhp yu cu c np cho thanh ghi A v con tr d liu c khi ng cha a ch u bng. Cc lnh x l bit: B x l 89C51 cha 1 b x l logic trn bit cho php ta thc hin cc php ton n bit. Cc lnh truy xut bit gm cc lnh r nhnh, di chuyn, set, xa, ly b, OR v AND. Mi thao tc truy xut bit u s dng kiu nh a ch trc tip vi a ch bit t 00H n 7FH trong 128 v tr thp, v t a ch 80H n FFH trong khng gian SFR. Cc a ch bit 128 v tr thp thuc cc byte c a ch t 20H n 2FH c nh s lin tc t bit 0 ca byte a ch 20H ( bit 00H ) n bit 7 ca byte a ch 2FH (bit 7FH). Cc bit c th c set v xa bng 1 lnh. iu khin n bit c dng cho cc thit b xut/nhp nh relay, ng c, cun dy, cc LED, mch ci bo ng, loa, hoc nhp t cc chuyn mch hoc cc b ch th trng thi. Cc lnh r nhnh: - Trong tp lnh ca 89C51 c nhiu lnh iu khin lung chng trnh, gm cc lnh gi mt th tc v quay v t mt th tc, r nhnh c iu kin hoc khng c iu kin. - Cc bng nhy : lnh JMP @A+DPTR h tr cc thao tc nhy ph thuc vo trng hp c th cho cc bng nhy. a ch ch c tnh thi im thc thi lnh l tng ca ni dung thanh ghi 16 bit DPTR vi ni dung ca thanh cha A. DPTR c np a ch ca bng nhy v thanh cha A ng vai tr ca mt thanh ghi ch s. - Chng trnh con v ngt : dng cc lnh CALL, ACALL v LCALL, s dng cc lnh tuyt i v di. Cc chng trnh con c kt thc bng lnh RET, Trang 55
lnh ny tr vic thc thi chng trnh tr v lnh theo sau lnh CALL. Cn lnh RETI tr iu khin v chng trnh gi t 1 trnh phc v ngt ISR. im khc nhau gia RET v RETI l RETI bo hiu cho h thng iu khin ngt rng qu trnh x l ngt xong. Nu khng c mt ngt no c duy tr trong thi gian RETI thc thi, RETI thc thi ging nh RET. - Nhy c iu kin : 89C51 cung cp cho ta cc lnh nhy c iu kin, s dng kiu nh a ch tng i v cng b gii hn khong cch nhy t -128 byte n +127 byte k t lnh theo sau lnh nhy c iu kin.
Chng 4
Trang 56
Mc logic 1 0 1 0
Ch lm vic ca h thng RS232 l hai chiu ton phn, tc l hai thit b tham gia cng c tc dng thu v pht tn hiu cng mt lc. Nh vy, vic thc hin truyn thng cn ti thiu 3 dy dn - trong hai dy tn hiu ni cho cc u thu pht ca hai trm v mt dy t.
Trang 57
Ngy nay cng vi s ra i ca cc vi mch th h mi lm tng tc truyn nhn ca chun ny nhng m n khng t c tc ti 460kB. L do tht n gin: u tin ta phi xt ti nguyn tc truyn ca RS232 l truyn ni tip, th hai vic truyn nhn thng tin theo mt cch no lun phi tun th theo nguyn tc "bt tay" ngha l phi c mt bn yu cu sau yu cu phi c chp nhn ri d liu mi c truyn i. Chun RS232 y lun tun th ng theo nguyn tc ny. Vic truyn d liu theo RS232 vi 3 dy ch thc hin c trong h thng ch c hai thnh vin m thi. Nu trong mt mng truyn thng c nhiu thnh vin tham gia bt buc truyn theo RS232 phi c y cc dy ni. Nguyn tc truyn d liu thng qua RS232 da trn s so snh in p ca dy dn vi t theo cc mc [0] hoc [1] nh nguyn l trnh by trn. Chnh v l do ny m n khng truyn i xa c (ch hot ng trong khong tm 40m tr li). Khi truyn i xa vt qua mc quy nh th lc ny do s tiu tn in nng trn ng dy lm cho vic thu nhn thng tin d ri vo tnh trng khng xc nh. Cn mt khuyt im na l cc tn hiu u ly im chun l ng mass chung dn n d b nhiu, dn n khng th truyn xa c. V th cn ch iu ny khi thit k bt k h thng truyn tin no.
4.2. IC Max 232 v cch giao tip : 4.2.1. Gii thiu v IC Max 232 :
Do chun RS232 ra i kh lu, trc khi c h mch vi in t TTL, v vy mc in p vo/ra ca n khng tng thch vi TTL. V th i hi cn c mt b iu khin ng truyn (b chuyn i in p) chuyn i cc tn hiu RS232 v cc mc in p TTL c cc chn TxD v RxD ca 8051 chp nhn. V th IC MAX232 ra i chuyn i t mc in p RS232 v mc TTL v ngc li. Mt im mnh khc ca MAX232 l dng in p +5V nh 8051.
Trang 58
MAX 232 c 2 b iu khin ng truyn l nhn v truyn d liu. Cc b iu khin ng truyn dng cho TxD c gi l T1 v T2 v b iu khin ng nhn cho RxD c gi l R1 v R2. Trong nhiu ng dng th ch c 1 cp c dng. V d T1 v R1 c dng vi nhau cho trng hp TxD v RxD ca 8051, cp cn li (T2 v R2) th khng s dng. rng, b iu khin T1 ca MAX232 c gn T1in v T1out (trn cc chn s 11 v 14 tng ng), R1 cng c R1in v R1out (trn cc chn 13 v 12). Chn T1in (chn 11) ca MAX232 c ni vi chn TxD ca VXL (chn 11) truyn mc logic TTL t VXL vo MAX232; sau T1out c ni ti chn RxD (chn 2) ca cng COM_l chn nhn d liu PC c tn hiu ny. Ngc li chn R1in (chn 13) l chn c d liu vo ca MAX232 ni vo chn TxD (chn 3) ca cng COM_l chn truyn d liu ca PC MAX232 nhn tn hiu t PC, sau chn R1out (chn 12) ca MAX232 c ni vi chn RxD ca VXL (chn 10) VXL nhn tn hiu iu khin t PC.
Trang 59
C U 1 A T 8 9 C 5 1 1 0 U
V+ VC C
1 0
1 . 0 5 L 2
2 M
T 1O U T
R 1 IN
3 P
X T A 3 3 P V C C
R 2 O U T T 2 O U T 1 0 R 2 I N T 2 I N 1 2 1 1 R 1 O T 1 I N U T
9 7 8
14
2 16
13
X T A
VC C
3 3 3 3 3 3 3 3 2 2 2 2 2 2 2 2
9 8 7 6 5 4 3 2 1 2 3 4 5 6 7 8
40
P P P P P P P P P P P P P P P P
0 0 0 0 0 0 0 0 2 2 2 2 2 2 2 2
. . . . . . . . . . . . . . . .
0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7
/ / / / / / / / / / / / / / / /
A A A A A A A A
D D D D D D D D
P P P P P P P P
0 1 2 3 4 5 6 7
1 1 1 1 1 1 1 1
. . . . . . . .
1 0 2 1 3 2 4 3 5 4 6 5 7 6 8 7
R 1 7 1 0 0
1 R
C 1 1 1 0 U S T
3 2
0 9 A P
L E S E
1 0 P 38 . 0 / R 1 1X D A AP 93 . 1 / T1 X2 D PA 31 . 0 2 / I 1N 3 T PA 31 . 1 3 / I 1N 4 T A P 1 3 2 . 4 /1 T 5 0 A P 1 3 3 . 5 /1 T 6 1 AP 13 4. 6 / W 7 R 1 AP 13 5. 7 / R D 1 9 X / P R X O A G L1 18 X T N X T A L 2 G N D E 3 1 A / V 9P P R S T
0 1
M
G N D
1 9 8 6 7 4 2 3 5 C + 1 C 2 1 1 0 U F C C 3 1 2 4 + C 2 2 1 0 U F
2 3 2
C V -
5 2 6
C 15 T A T A R S L L T 1 2
2 1 0
3 U F
R 1 8 8 . 2 K
Hnh 4.1 S u ni MAX 232 vi VXL v giao tip PC thng qua cng COM
MAX 232 cn c 4 t in c gi tr t 1 n 22uF. Ghi ch: Trong mch trn ta thy ch s dng chn s 2, s 3 v s 5 ca cng COM m thi. Tt c cc chn khc u b.
20
Trang 60
Trang 61
Trang 62
Trang 63
Trang 64
Trang 65
C C R R 1 Q P 1 N P R R Q BP 2 2 CN EP R R B 3 Q P 3 N P R R C E 4 Q BP 4 CN
4 A
C CP
GND
C C
6 C C
V R R 5 R R 6 R R 7
CA
CA
CA
CA
CA
CA
CA
CA
C R R 8 R R 9 R R 1 0 O A N D L 1 E D D L E 2 D DL E 3 D D L E 4 D DL E 5 D LD E 6 D
7 LD E O D A 7 N D
AL
EN
7 LD E O D A 7 N D
A B C D E F G DP A B C D E F G DP
7 6 4 2 1 9 10 5 7 6 4 2 1 9 10 5
7 6 4 2 1 9 10 5 7 6 4 2 1 9 10 5
A B C D E F G DP A B C D E F G DP
V J P 1 1 6 2 7 3 8 4 9 5 r s 2 3 2 V CC + 1 C + 0 9 u F 1 0 u F 8C U 7 8 T R 1 4 + C 1 1 1 T C 0 2 7 T X D 1 0 O T U2 9 I T N R X D 2 R I N2 O U T T T 1 F R 2 E S R 1 2 R E 0 1 S T K 9 T 4 V C C S S S S S S C 1 0 1 u 1 0 3 u D D D D D D D 3 3 L L L L L L A A A A A A A R R R R R R R E E E E E E T T T T T T T _ _ _ _ _ _ 1A 1A 1A 1A 1A 1A 1A 1 1 2 Y Z 1 T A 1 L L L L L L 1 2 3 4 5 6 7 1 2C 3 4 5 6 7 E E E E E E 3 3 3 3 3 3 3 2 1 2D 3D 4D 5 6 7D 8D 9D 3 O3 3 3 3 3 3 V C U C 5 _3 _3 _3 3 3 _3 _3 _3 0 0N 0 0 0 0 0 1 2 3 4 5 6 7 8
1 4 1 TI N 1 O1 3 U R 11 I 2 N 2 R + 1 O U F + A 2 C X 2 1 1 3 + C 3 1 + C 1
W 3
31
/2 G/ 2 2/ 2/ H 2/ 12/ G2/ 2/ 3 3 3 3 3 3
2 1 A .2 D0 2 / A .2 D1 3 / A . 2 2D 4 / A . 2 3D 5 / A ._ 2 4 D 1 6 / A . 2 5D 7 / A . _2 6 D 18 / A . 7D /
0 u 5 2 C 6 V V M
p C
.P0 . P1 .P 2 .P 3 . 4P . 5P . P6 . P7
3 3
LR 1
L L L 0 L 1 2 3 4 5 R X D 1 0 . 10 1/ R T X X D D . 11 2/ T X D . 12 3/ I N T 0 . 13 4/ I N T 1 1. 4 5 / T 0 1. 5 6 / T 1 .16 7/ W R . 7 / R D R S T 9 S T 0A 1A A2 A3 A4 A5 A6 A7 O G
SLE_LED _VAN G _1 S 8S 9S 1 S 1 1 1 1 1
SLE_LED _XAN H _1
SLE_LED _VAN G
SLE_LED _XAN H
SLE_LED _D O _1
SLE_LED _D O
E E E E
E A /V P P 9
2 9 LP 2 S 3 E 0 N L E / P R
Trang 66
Trang 67
5.2. Xy dng chng trnh iu khin trn my tnh v vi x l : 5.2.1. Lu gii thut :
Trn my tnh :
Bg e in
C m l th n hup t u g tu A y n
C m l th n hup t u g tu B y n
Ahn n n
Ahs s h n o an
Ahn n n
Ahs s h n o an
T han n ac h n rak oi k u g h hn c hn oa an g i
Tac an s h ho s hrak oi an h k u gc h h n an n oa g i
Tac an n n h h rak oi k u g h hn c hn oa an g i
T han s ac h o s hrak oi an h k u gc h h n an n oa g i
av an h c x a p am
av an h c x a p am
av an h c x a p am
av an h c x a p am
T ch ntr h i tu t 2 y i im an h
T ch ntr h i tu t 2 y i im an h
Trang 68
a v anh trng en
av anh trngen
T trichchonc ach tr ng
T trichchonc ach tr ng
Tinhdintichbi chimch
Ly ty l dintichchimch trndintich nn: N 0< ty l D < 25; D M th u = T= isp t a N 25< ty l D < 39; D M u = T= isp t th a N 39< ty l D < 100; D M u = T= isp t th a
Ly ty l dintichchimch trn dintich nn: N 0< ty l D < 25; D M th u = T= isp t a N 25< ty l D < 39; D M u = T= irsp t th a N 39< ty l D < 100; D M u = T= isp t th a
ED N
Trang 69
Trn vi x l :
Start
RESET h thng
L p i lp la i thi gian mc i n h
Tin hi u matlab gi xu n g
Ki t A
Ki t B
Ki t C
Sau khi ch y xong thi gian ca i t n g vi m i ki a t,n u khng co tin hi u truy n xu n g thi se l p la i thi gian m c i n h
END
$MOD51 XANH1 DO1 BIT VANG1 BIT P1.1 BIT P1.0 P1.2 P1.5 P1.7 30H 31H 20H
XANH2 BIT DO2 BIT P1.6 VANG2 BIT BIEN_XANH EQU BIEN_DO EQU S_KTRA BIT ;PORT 2 CHON LED ;PORT 0 DATA
;60H HANG CHUC 1 ;61H HANG DON VI 1 ;62H HANG CHUC 2 ;63H HANG DON VI 2 ORG 00H JMP BEGIN ORG 0023H JMP ISR ORG 0030H BEGIN: MOV P2,#255 MOV P0,#255 MOV P1,#255 MOV P3,#255 ;------------------------THIET LAP SERIAL--MOV TMOD,#21H MOV SCON,#01010010B ;BIT REN =1 CHO PHEP THU CAC KY TU 52h MOV TH1,#-3 ;TOC DO 9600 BAUD
Trang 71
SETB ES SETB TR1 SETB TI SETB EA ;-----------------------------------------------------MOV BIEN_XANH,#30H MOV BIEN_DO,#34H MAIN: MOV P1,#0FFH LCALL DO_XANH LCALL XANH_DO LJMP MAIN
;_______________________________________ TEST_TR: JNB TI,$ CLR TI MOV SBUF,A RET ISR: TRUYEN: ;JNB TI,NHAN ;CLR TI NHAN: JNB RI , EXIT_SERIAL CLR RI MOV A,SBUF CALL TEST_TR ;RETI ;=================================== CJNE A,#'A',NEXT1 CALL TEST_TR SETB S_KTRA CLR A MOV BIEN_XANH,#40H MOV BIEN_DO,#44H
Trang 72
JMP EXIT_SERIAL ;-------------------------------------NEXT1: CJNE A,#'B',NEXT2 CALL TEST_TR SETB S_KTRA CLR A MOV BIEN_XANH,#32H MOV BIEN_DO,#32H JMP EXIT_SERIAL ;---------------------------------------NEXT2: CJNE A,#'C',NEXT5 CLR A MOV BIEN_XANH,#34H MOV BIEN_DO,#30H JMP EXIT_SERIAL ;--------------------------------------NEXT3: CJNE A,#'D',NEXT4 CALL TEST_TR SETB S_KTRA CLR A MOV BIEN_XANH,#36H MOV BIEN_DO,#28H JMP EXIT_SERIAL NEXT4: CJNE A,#'E',NEXT5 CALL TEST_TR SETB S_KTRA CLR A MOV BIEN_XANH,#38H MOV BIEN_DO,#26H JMP EXIT_SERIAL NEXT5:
Trang 73
CJNE A,#'F',NEXT6 CALL TEST_TR SETB S_KTRA CLR A MOV BIEN_XANH,#28H MOV BIEN_DO,#36H JMP EXIT_SERIAL NEXT6: CJNE A,#'G',NEXT7 CALL TEST_TR SETB S_KTRA CLR A MOV BIEN_XANH,#26H MOV BIEN_DO,#38H JMP EXIT_SERIAL NEXT7: CJNE A,#'H',NEXT8 CALL TEST_TR SETB S_KTRA CLR A MOV BIEN_XANH,#24H MOV BIEN_DO,#40H JMP EXIT_SERIAL NEXT8: CJNE A,#'S',NEXT9 CALL TEST_TR SETB S_KTRA CLR A MOV BIEN_XANH,#22H MOV BIEN_DO,#42H JMP EXIT_SERIAL NEXT9: CJNE A,#'U',NEXT10 CALL TEST_TR SETB S_KTRA CLR A MOV BIEN_XANH,#20H
Trang 74
MOV BIEN_DO,#44H JMP EXIT_SERIAL NEXT10: CALL TEST_TR SETB S_KTRA CLR A MOV BIEN_XANH,#18H MOV BIEN_DO,#46H JMP EXIT_SERIAL ; MOV 08H,A EXIT_SERIAL: RETI ;--------------------------------------DO_XANH: MOV R3,BIEN_DO MOV R4,BIEN_XANH ;MOV P1,#00H MOV DPTR,#DULIEU CLR DO1 CLR XANH2 LOOP: MOV A,R3 ADD A,#99H DA A MOV R3,A ANL A,#0FH MOV 61H,A MOV A,R3 ANL A,#0F0H SWAP A MOV 60H,A MOV ADD DA MOV ANL MOV MOV A,R4 A,#99H A R4,A A,#0FH 63H,A A,R4
Trang 75
ANL A,#0F0H SWAP A MOV 62H,A CJNE R4,#99H,LOOP2 SETB XANH2 CLR VANG2 MOV R4,#03H MOV 63H,#03H MOV 62H,#00H LOOP2: LCALL QUETLED JNB S_KTRA,CONTI1 CLR S_KTRA JMP DO_XANH CONTI1: CJNE R3,#00H,LOOP RET ;___________________________________________ XANH_DO: MOV P1,#0FFH MOV R4,BIEN_DO MOV R3,BIEN_XANH ;MOV P1,#00H MOV DPTR,#DULIEU CLR DO2 CLR XANH1 LOOP3: MOV A,R3 ADD A,#99H DA A MOV R3,A ANL A,#0FH MOV 61H,A MOV A,R3 ANL A,#0F0H SWAP A MOV 60H,A MOV A,R4
Trang 76
ADD A,#99H DA A MOV R4,A ANL A,#0FH MOV 63H,A MOV A,R4 ANL A,#0F0H SWAP A MOV 62H,A CJNE R3,#99H,LOOP4 SETB XANH1 CLR VANG1 MOV R3,#03H MOV 61H,#03H MOV 60H,#00H LOOP4: LCALL QUETLED JNB S_KTRA,CONTI2 CLR S_KTRA JMP XANH_DO CONTI2: CJNE R4,#00H,LOOP3 RET
HIENTHI: PUSH 00H PUSH ACC MOV R6,#0F7H ;BIEN CHON LED TICH CUC MOV R0,#063H ;DIA CHI DE LAY DU LIEU HIEN THI DISP: MOV A,@R0 MOVCA,@A+DPTR MOV P0,A MOV P2,R6 LCALL DELAY MOV P2,#0FFH DEC R0 MOV A,R6
Trang 77
RR A MOV R6,A CJNE R0,#05FH,DISP ;DIEU KIEN QUET DU 4 LED POP ACC POP 00H RET ;_______________________________________________ DELAY: PUSH 00H PUSH 01H MOV R0,#10 DEL: MOV R1,#25 DJNZ R1,$ DJNZ R0,DEL POP 01H POP 00H RET ;_______________________________________________ QUETLED: PUSH 00H MOV R0,#100 LOOP1: MOV TH0,#HIGH(-10000) MOV TL0,#LOW(-10000) SETB TR0 SCAN: LCALL HIENTHI JNB TF0,SCAN CLR TR0 CLR TF0 DJNZ R0,LOOP1 POP 00H RET ;====================================== DELAY_MS123: MOV R2,#5 DELAY_2: MOV R0,#200
Trang 78
DELAY_1: MOV R1,#250 DJNZ R1,$ DJNZ R0,DELAY_1 DJNZ R2,DELAY_2 RET DULIEU: DB END
0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H
5.2.3. Chng trnh trn my tnh : Chng trnh cho giao din chnh :
function varargout = LuanVan_DenGiaoThongThongMinh(varargin) % LUANVAN_DENGIAOTHONGTHONGMINH M-file for LuanVan_DenGiaoThongThongMinh.fig % LUANVAN_DENGIAOTHONGTHONGMINH, by itself, creates a new LUANVAN_DENGIAOTHONGTHONGMINH or raises the existing % singleton*. % % H = LUANVAN_DENGIAOTHONGTHONGMINH returns the handle to a new LUANVAN_DENGIAOTHONGTHONGMINH or the handle to % the existing singleton*. % % LUANVAN_DENGIAOTHONGTHONGMINH('CALLBACK',hObject,eventData,h andles,...) calls the local % function named CALLBACK in LUANVAN_DENGIAOTHONGTHONGMINH.M with the given input arguments. % % LUANVAN_DENGIAOTHONGTHONGMINH('Property','Value',...) creates a new LUANVAN_DENGIAOTHONGTHONGMINH or raises the % existing singleton*. Starting from the left, property value pairs are % applied to the GUI before LuanVan_DenGiaoThongThongMinh_OpeningFunction gets called. An % unrecognized property name or invalid value makes property application % stop. All inputs are passed to LuanVan_DenGiaoThongThongMinh_OpeningFcn via varargin. Trang 79
% % *See GUI Options on GUIDE's Tools menu. Choose "GUI allows only one % instance to run (singleton)". % % See also: GUIDE, GUIDATA, GUIHANDLES % Copyright 2002-2003 The MathWorks, Inc. % Edit the above text to modify the response to help LuanVan_DenGiaoThongThongMinh % Last Modified by GUIDE v2.5 27-May-2009 12:33:22 % Begin initialization code - DO NOT EDIT gui_Singleton = 1; gui_State = struct('gui_Name', mfilename, ... 'gui_Singleton', gui_Singleton, ... 'gui_OpeningFcn', @LuanVan_DenGiaoThongThongMinh_OpeningFcn, ... 'gui_OutputFcn', @LuanVan_DenGiaoThongThongMinh_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 % End initialization code - DO NOT EDIT % --- Executes just before LuanVan_DenGiaoThongThongMinh is made visible. function LuanVan_DenGiaoThongThongMinh_OpeningFcn(hObject, eventdata, handles, varargin) % This function has no output args, see OutputFcn. % hObject handle to figure Trang 80
% 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 LuanVan_DenGiaoThongThongMinh (see VARARGIN) % Choose default command line output for LuanVan_DenGiaoThongThongMinh handles.output = hObject; % Update handles structure guidata(hObject, handles); % UIWAIT makes LuanVan_DenGiaoThongThongMinh wait for user response (see UIRESUME) % uiwait(handles.figure1); % --- Outputs from this function are returned to the command line. function varargout = LuanVan_DenGiaoThongThongMinh_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 pushbutton6. function pushbutton6_Callback(hObject, eventdata, handles) % hObject handle to pushbutton6 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) H1a=imread('chupnenA.png'); axes(handles.axes7),imshow(H1a); H2a=imread('chupsosanhA.png'); axes(handles.axes8),imshow(H2a); Trang 81
H1b=imread('D:\ProgramFiles\MatLab\work\chupnenB.png'); axes(handles.axes12),imshow(H1b); H2b=imread('D:\ProgramFiles\MatLab\work\chupsosanhB.png'); axes(handles.axes13),imshow(H2b); %s=serial('com1','baudrate',9600,'databits',8);%la thuc hien tryen noi tiep thong wa cong COM1,toc do baud dc chon la 9600, truyen 8 bit du lieu %fopen(s);% cho phep mo cong COM tren may tinh.May san sang doi tin hieu de gui xuong vi xu ly %fprintf(s,'S');%gui chu S xuong vi xu ly %out=fscanf(s);%nhan tin hieu (du lieu) tu vi xu ly gui len %fclose(s);%dong cong truyen thong noi tiep %delete(s);%xoa tin hieu cong noi iep khoi bo nho %clear s;%xoa cac ket qua ve cong truyen thong ra khoi cua so lam viec % --- Executes on button press in pushbutton7. function pushbutton7_Callback(hObject, eventdata, handles) % hObject handle to pushbutton7 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) %s=serial('com1','baudrate',9600,'databits',8);%la thuc hien tryen noi tiep thong wa cong COM1,toc do baud dc chon la 9600, truyen 8 bit du lieu %fopen(s);% cho phep mo cong COM tren may tinh.May san sang doi tin hieu de gui xuong vi xu ly %fprintf(s,'R');%gui chu S xuong vi xu ly %out=fscanf(s);%nhan tin hieu (du lieu) tu vi xu ly gui len %fclose(s);%dong cong truyen thong noi tiep %delete(s);%xoa tin hieu cong noi iep khoi bo nho %clear s;%xoa cac ket qua ve cong truyen thong ra khoi cua so lam viec h=imread('hinhnen.png'); axes(handles.axes11),imshow(h); set(handles.text15,'string',''); axes(handles.axes7),imshow(h); axes(handles.axes8),imshow(h); axes(handles.axes12),imshow(h); Trang 82
axes(handles.axes13),imshow(h); set(handles.text10,'string','Danh gia Mat Do Luu Thong'); delete('chupsosanhA.png'); clear chupsosanhA.png; set(handles.text11,'string','Danh Gia Mat Do Luu Thong'); delete('chupsosanhB.png'); clear chupsosanhB.png; set(handles.text16,'string','Danh Gia Ket Qua Phan Tich');
% --- Executes on button press in pushbutton17. function pushbutton17_Callback(hObject, eventdata, handles) % hObject handle to pushbutton17 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) close; % --- Executes on button press in radiobutton1. function radiobutton1_Callback(hObject, eventdata, handles) % hObject handle to radiobutton1 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) state=get(handles.radiobutton1,'value'); if state==0 h=imread('hinhnen.png'); axes(handles.axes11),imshow(h); set(handles.text15,'string',''); axes(handles.axes7),imshow(h); axes(handles.axes8),imshow(h); axes(handles.axes12),imshow(h); axes(handles.axes13),imshow(h); else Trang 83
h=imread('huan.jpg'); axes(handles.axes11),imshow(h); set(handles.text15,'string','XIN KINH CHAO QUY KHACH'); i=imread('hinhnen.png'); axes(handles.axes7),imshow(i); axes(handles.axes8),imshow(i); axes(handles.axes12),imshow(i); axes(handles.axes13),imshow(i); end % Hint: get(hObject,'Value') returns toggle state of radiobutton1 % --- Executes on button press in pushbutton30. function pushbutton30_Callback(hObject, eventdata, handles) % hObject handle to pushbutton30 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) H1a=imread('chupnenA.png'); H2a=imread('chupsosanhA.png'); %H2=imread('chup_02.png'); %figure(1),imshow(H1),title('Hinh khong gian mau'); %figure(2),imshow(H2),title('Hinh can so sanh'); %_______________kiem tra ca thong so tam hinh__________ %imview(H2); %______phan vung xe ra khoi khung canh ngoai_________ H2a=H2a(42:351,120:502,:); figure(3),imshow(H2a); a2=rgb2gray(H2a); figure(),imshow(a2); %imview(a2); %_____phan vung tuong tu cho anh goc_________________ H1a=H1a(42:351,120:502,:); figure(5),imshow(H1a),title('Anh goc duoc phan vung gioi han'); a1=rgb2gray(H1a); figure(),imshow(a1); %imview(a1); Trang 84
%______kiem tra khung hinh duoc gioi han?_____________ %size(H2) a3=imabsdiff(a2,a1); %a3=bwareaopen(a3,150);%chu y them vao a3 = medfilt2(a3); %a3=bwareaopen(a3,5); figure(6),imshow(a3); %imview(a3); %____________________________________________________________ for i=1:310 for j=1:383 if 0<=a3(i,j) & a3(i,j)<=20 a3(i,j)=0; else a3(i,j)=a2(i,j); end end end figure(7),imshow(a3); %_____________________________________________________ b3 = imadjust(a3); b3 = medfilt2(b3); figure(8),imshow(b3); Ha= bwareaopen(b3,500); figure(13),imshow(Ha); %se = strel('disk',0); %c3 = imopen(b3,se); %threshold = graythresh(c3); %H = im2bw(c3,threshold); %H = bwareaopen(H,50); %figure(9),imshow(H); %_______thuc hien tim gioi han cua hinh can tach_________ [m,n]=size(Ha); for i=1:m for j=1:n if Ha(i,j)==1 h1=i; break; Trang 85
end end end for i=m:-1:1 for j=1:n if (Ha(i,j)==1) h2=i; break; end end end for j=1:n for i=1:m if (Ha(i,j)==1) c1=j; break; end; end; end; for j=n:-1:1 for i=1:m if (Ha(i,j)==1) c2=j; break; end; end; end; H3a=Ha(h2:h1,c2:c1); %figure(10),imshow(H3); %H3 = bwareaopen(H3,100); figure(10),imshow(H3a); %imview(H3); dt_nenduong_a=m*n [q,t]=size(H3a); p=0; for i=1:q; for j=1:t; Trang 86
if H3a(i,j)==1 p=p+1; end end end dt_chiemcho_a=p %[p,q]=size(H3); %dt_chiemcho=p*q dt_tyle_a=(dt_chiemcho_a/dt_nenduong_a)*100 if 0<=dt_tyle_a&dt_tyle_a<=25 %disp('mat do luu thong thua') set(handles.text10,'string','Mat Do Luu Thong Thua'); else if 25<dt_tyle_a&dt_tyle_a<39 %disp('mat do luu thong binh thuong') set(handles.text10,'string','Mat Do Luu Thong Binh Thuong'); else if 39<dt_tyle_a&dt_tyle_a<100 %disp('mat do luu thong qua cao') set(handles.text10,'string','Mat Do Luu Thong Qua Cao'); end end end H1b=imread('D:\ProgramFiles\MatLab\work\chupnenB.png'); %axes(handles.axes12),imshow(H1b); H2b=imread('D:\ProgramFiles\MatLab\work\chupsosanhB.png'); %axes(handles.axes13),imshow(H2b); %global H2 %[filename, pathname, filterindex]=uigetfile( ... %{'*.jpg','JPEG File (*.jpg)'; ... %'*.*','Chon file anh bat ky (*.*)'}, ... %'Chon anh can so sanh'); %var=strcat(pathname,filename); %H2=imread(var);
Trang 87
%H2=imread('chup_02.png'); %figure(1),imshow(H1),title('Hinh khong gian mau'); %figure(2),imshow(H2),title('Hinh can so sanh'); %_______________kiem tra ca thong so tam hinh__________ %imview(H2); %______phan vung xe ra khoi khung canh ngoai_________ H2b=H2b(42:351,120:502,:); figure(3),imshow(H2b); a2=rgb2gray(H2b); figure(),imshow(a2); %imview(a2); %_____phan vung tuong tu cho anh goc_________________ H1b=H1b(42:351,120:502,:); figure(5),imshow(H1b),title('Anh goc duoc phan vung gioi han'); a1=rgb2gray(H1b); figure(),imshow(a1); %imview(a1); %______kiem tra khung hinh duoc gioi han?_____________ %size(H2) a3=imabsdiff(a2,a1); %a3=bwareaopen(a3,150);%chu y them vao a3 = medfilt2(a3); %a3=bwareaopen(a3,5); figure(6),imshow(a3); %imview(a3); %____________________________________________________________ for i=1:310 for j=1:383 if 0<=a3(i,j) & a3(i,j)<=20 a3(i,j)=0; else a3(i,j)=a2(i,j); end end end figure(7),imshow(a3); %_____________________________________________________ b3 = imadjust(a3); Trang 88
b3 = medfilt2(b3); figure(8),imshow(b3); Hb= bwareaopen(b3,500); figure(13),imshow(Hb); %se = strel('disk',0); %c3 = imopen(b3,se); %threshold = graythresh(c3); %H = im2bw(c3,threshold); %H = bwareaopen(H,50); %figure(9),imshow(H); %_______thuc hien tim gioi han cua hinh can tach_________ [m,n]=size(Hb); for i=1:m for j=1:n if Hb(i,j)==1 h1=i; break; end end end for i=m:-1:1 for j=1:n if (Hb(i,j)==1) h2=i; break; end end end for j=1:n for i=1:m if (Hb(i,j)==1) c1=j; break; end; end; end; for j=n:-1:1 for i=1:m Trang 89
if (Hb(i,j)==1) c2=j; break; end; end; end; H3b=Hb(h2:h1,c2:c1); %figure(10),imshow(H3); %H3 = bwareaopen(H3,100); figure(10),imshow(H3b); %imview(H3); dt_nenduong_b=m*n [q,t]=size(H3b); p=0; for i=1:q; for j=1:t; if H3b(i,j)==1 p=p+1; end end end dt_chiemcho_b=p %[p,q]=size(H3); %dt_chiemcho=p*q dt_tyle_b=(dt_chiemcho_b/dt_nenduong_b)*100 if 0<=dt_tyle_b&dt_tyle_b<=25 %disp('mat do luu thong thua') set(handles.text11,'string','Mat Do Luu Thong Thua'); else if 25<dt_tyle_b&dt_tyle_b<39 %disp('mat do luu thong binh thuong') set(handles.text11,'string','Mat Do Luu Thong Binh Thuong'); else if 39<dt_tyle_b&dt_tyle_b<100 %disp('mat do luu thong qua cao') set(handles.text11,'string','Mat Do Luu Thong Qua Cao');
Trang 90
end end end if dt_tyle_a > dt_tyle_b & 0<dt_tyle_a - dt_tyle_b< 10 set(handles.text16,'string','Mat Do Tuyen A day Hon Mat Do Tuyen B : < 10%'); s=serial('com1','baudrate',9600,'databits',8); fopen(s); fprintf(s,'A'); out=fscanf(s); fclose(s); delete(s); clear s; else if dt_tyle_a > dt_tyle_b & 10<dt_tyle_a - dt_tyle_b< 20 set(handles.text16,'string','Mat Do Tuyen A day Hon Mat Do Tuyen B : < 20%'); s=serial('com1','baudrate',9600,'databits',8); fopen(s); fprintf(s,'B'); out=fscanf(s); fclose(s); delete(s); clear s; else if dt_tyle_a > dt_tyle_b & 20<dt_tyle_a - dt_tyle_b< 30 set(handles.text16,'string','Mat Do Tuyen A day Hon Mat Do Tuyen B : < 30%'); s=serial('com1','baudrate',9600,'databits',8); fopen(s); fprintf(s,'C'); out=fscanf(s); fclose(s); delete(s); clear s; else Trang 91
if dt_tyle_a > dt_tyle_b & 30<dt_tyle_a - dt_tyle_b< 40 set(handles.text16,'string','Mat Do Tuyen A day Hon Mat Do Tuyen B : < 40%'); s=serial('com1','baudrate',9600,'databits',8); fopen(s); fprintf(s,'D'); out=fscanf(s); fclose(s); delete(s); clear s; else if dt_tyle_a > dt_tyle_b & 40<dt_tyle_a - dt_tyle_b< 50 set(handles.text16,'string','Mat Do Tuyen A day Hon Mat Do Tuyen B : < 50%'); s=serial('com1','baudrate',9600,'databits',8); fopen(s); fprintf(s,'D'); out=fscanf(s); fclose(s); delete(s); clear s; else if dt_tyle_a > dt_tyle_b & 50<dt_tyle_a - dt_tyle_b< 60 set(handles.text16,'string','Mat Do Tuyen A day Hon Mat Do Tuyen B : < 60%'); s=serial('com1','baudrate',9600,'databits',8); fopen(s); fprintf(s,'I'); out=fscanf(s); fclose(s); delete(s); clear s; else if dt_tyle_a > dt_tyle_b & 60<dt_tyle_a - dt_tyle_b< 70
Trang 92
set(handles.text16,'string','Mat Do Tuyen A day Hon Mat Do Tuyen B : 70%'); s=serial('com1','baudrate',9600,'databits',8); fopen(s); fprintf(s,'K'); out=fscanf(s); fclose(s); delete(s); clear s; else if dt_tyle_a > dt_tyle_b & 70<dt_tyle_a - dt_tyle_b< 80 set(handles.text16,'string','Mat Do Tuyen A day Hon Mat Do Tuyen B : < 80%'); s=serial('com1','baudrate',9600,'databits',8); fopen(s); fprintf(s,'L'); out=fscanf(s); fclose(s); delete(s); clear s; else if dt_tyle_a > dt_tyle_b & 80<dt_tyle_a - dt_tyle_b< 90 set(handles.text16,'string','Mat Do Tuyen A day Hon Mat Do Tuyen B : < 90%'); s=serial('com1','baudrate',9600,'databits',8); fopen(s); fprintf(s,'M'); out=fscanf(s); fclose(s); delete(s); clear s; else if dt_tyle_a > dt_tyle_b & 90<dt_tyle_a - dt_tyle_b< 100 set(handles.text16,'string','Mat Do Tuyen A day Hon Mat Do Tuyen B : < 100%'); Trang 93
s=serial('com1','baudrate',9600,'databits',8); fopen(s); fprintf(s,'N'); out=fscanf(s); fclose(s); delete(s); clear s; end end end end end end end end end end
if dt_tyle_b > dt_tyle_a & 0<dt_tyle_b - dt_tyle_a< 10 set(handles.text16,'string','Mat Do Tuyen B day Hon Mat Do Tuyen A : < 10%'); s=serial('com1','baudrate',9600,'databits',8); fopen(s); fprintf(s,'E'); out=fscanf(s); fclose(s); delete(s); clear s; else if dt_tyle_b > dt_tyle_a & 10<dt_tyle_b - dt_tyle_a< 20 set(handles.text16,'string','Mat Do Tuyen B day Hon Mat Do Tuyen A : < 20%'); s=serial('com1','baudrate',9600,'databits',8); fopen(s); fprintf(s,'U'); out=fscanf(s); fclose(s); Trang 94
delete(s); clear s; else if dt_tyle_b > dt_tyle_a & 20<dt_tyle_b - dt_tyle_a< 30 set(handles.text16,'string','Mat Do Tuyen B day Hon Mat Do Tuyen A : < 30%'); s=serial('com1','baudrate',9600,'databits',8); fopen(s); fprintf(s,'Y'); out=fscanf(s); fclose(s); delete(s); clear s; else if dt_tyle_b > dt_tyle_a & 30<dt_tyle_b - dt_tyle_a< 40 set(handles.text16,'string','Mat Do Tuyen B day Hon Mat Do Tuyen A : < 40%'); s=serial('com1','baudrate',9600,'databits',8); fopen(s); fprintf(s,'H'); out=fscanf(s); fclose(s); delete(s); clear s; else if dt_tyle_b > dt_tyle_a & 40<dt_tyle_b - dt_tyle_a< 50 set(handles.text16,'string','Mat Do Tuyen B day Hon Mat Do Tuyen A : < 50%'); s=serial('com1','baudrate',9600,'databits',8); fopen(s); fprintf(s,'J'); out=fscanf(s); fclose(s); delete(s); clear s; Trang 95
else if dt_tyle_b > dt_tyle_a & 50<dt_tyle_b - dt_tyle_a< 60 set(handles.text16,'string','Mat Do Tuyen B day Hon Mat Do Tuyen A : < 60%'); s=serial('com1','baudrate',9600,'databits',8); fopen(s); fprintf(s,'V'); out=fscanf(s); fclose(s); delete(s); clear s; else if dt_tyle_b > dt_tyle_a & 60<dt_tyle_b - dt_tyle_a< 70 set(handles.text16,'string','Mat Do Tuyen B day Hon Mat Do Tuyen A : 70%'); s=serial('com1','baudrate',9600,'databits',8); fopen(s); fprintf(s,'O'); out=fscanf(s); fclose(s); delete(s); clear s; else if dt_tyle_b > dt_tyle_a & 70<dt_tyle_b - dt_tyle_a< 80 set(handles.text16,'string','Mat Do Tuyen B day Hon Mat Do Tuyen A : < 80%'); s=serial('com1','baudrate',9600,'databits',8); fopen(s); fprintf(s,'P'); out=fscanf(s); fclose(s); delete(s); clear s; else Trang 96
if dt_tyle_b > dt_tyle_a & 80<dt_tyle_b - dt_tyle_a< 90 set(handles.text16,'string','Mat Do Tuyen B day Hon Mat Do Tuyen A : < 90%'); s=serial('com1','baudrate',9600,'databits',8); fopen(s); fprintf(s,'Q'); out=fscanf(s); fclose(s); delete(s); clear s; else if dt_tyle_b > dt_tyle_a & 90<dt_tyle_b - dt_tyle_a< 100 set(handles.text16,'string','Mat Do Tuyen B day Hon Mat Do Tuyen A : < 100%'); s=serial('com1','baudrate',9600,'databits',8); fopen(s); fprintf(s,'Z'); out=fscanf(s); fclose(s); delete(s); clear s; end end end end end end end end end end
Trang 97
Trang 98
% Begin initialization code - DO NOT EDIT gui_Singleton = 1; gui_State = struct('gui_Name', mfilename, ... 'gui_Singleton', gui_Singleton, ... 'gui_OpeningFcn', @Mat_Do_Tuyen_A_OpeningFcn, ... 'gui_OutputFcn', @Mat_Do_Tuyen_A_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 % End initialization code - DO NOT EDIT
% --- Executes just before Mat_Do_Tuyen_A is made visible. function Mat_Do_Tuyen_A_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 Mat_Do_Tuyen_A (see VARARGIN) % Choose default command line output for Mat_Do_Tuyen_A handles.output = hObject; % Update handles structure guidata(hObject, handles); % UIWAIT makes Mat_Do_Tuyen_A wait for user response (see UIRESUME) % uiwait(handles.figure1);
Trang 99
% --- Outputs from this function are returned to the command line. function varargout = Mat_Do_Tuyen_A_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 pushbutton1. function pushbutton1_Callback(hObject, eventdata, handles) % hObject handle to pushbutton1 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) vid=videoinput('winvideo',1); %preview(vid); H1a=getsnapshot(vid); %figure(2),imshow(chup_hinh); imwrite(H1a,'chupnenA.png','png'); delete(vid); clear vid;
% --- Executes on button press in pushbutton2. function pushbutton2_Callback(hObject, eventdata, handles) % hObject handle to pushbutton2 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) vid=videoinput('winvideo',1); %preview(vid); H2a=getsnapshot(vid); %figure(2),imshow(H2); imwrite(H2a,'chupsosanhA.png','png'); delete(vid); Trang 100
clear vid; function varargout = Mat_Do_Tuyen_B(varargin) % MAT_DO_TUYEN_B M-file for Mat_Do_Tuyen_B.fig % MAT_DO_TUYEN_B, by itself, creates a new MAT_DO_TUYEN_B or raises the existing % singleton*. % % H = MAT_DO_TUYEN_B returns the handle to a new MAT_DO_TUYEN_B or the handle to % the existing singleton*. % % MAT_DO_TUYEN_B('CALLBACK',hObject,eventData,handles,...) calls the local % function named CALLBACK in MAT_DO_TUYEN_B.M with the given input arguments. % % MAT_DO_TUYEN_B('Property','Value',...) creates a new MAT_DO_TUYEN_B or raises the % existing singleton*. Starting from the left, property value pairs are % applied to the GUI before Mat_Do_Tuyen_B_OpeningFunction gets called. An % unrecognized property name or invalid value makes property application % stop. All inputs are passed to Mat_Do_Tuyen_B_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 % Copyright 2002-2003 The MathWorks, Inc. % Edit the above text to modify the response to help Mat_Do_Tuyen_B % Last Modified by GUIDE v2.5 27-May-2009 10:41:29 % Begin initialization code - DO NOT EDIT gui_Singleton = 1; gui_State = struct('gui_Name', mfilename, ... Trang 101
'gui_Singleton', gui_Singleton, ... 'gui_OpeningFcn', @Mat_Do_Tuyen_B_OpeningFcn, ... 'gui_OutputFcn', @Mat_Do_Tuyen_B_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 % End initialization code - DO NOT EDIT
% --- Executes just before Mat_Do_Tuyen_B is made visible. function Mat_Do_Tuyen_B_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 Mat_Do_Tuyen_B (see VARARGIN) % Choose default command line output for Mat_Do_Tuyen_B handles.output = hObject; % Update handles structure guidata(hObject, handles); % UIWAIT makes Mat_Do_Tuyen_B wait for user response (see UIRESUME) % uiwait(handles.figure1);
% --- Outputs from this function are returned to the command line. function varargout = Mat_Do_Tuyen_B_OutputFcn(hObject, eventdata, handles) % varargout cell array for returning output args (see VARARGOUT); Trang 102
% 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 pushbutton1. function pushbutton1_Callback(hObject, eventdata, handles) % hObject handle to pushbutton1 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) vid=videoinput('winvideo',1);%khai bao ngo vao cho wedcam %preview(vid);%trinh dien anh dong thu duoc tu wedcam H1b=getsnapshot(vid);%chup hinh dong %figure(2),imshow(chup_hinh);%trinh dien anh tinh vua chup imwrite(H1b,'chupnenB.png','png');%luu lai anh vua chup trong mablap/work delete(vid); clear vid;%thuc hien xoa va dong ngo vao
% --- Executes on button press in pushbutton2. function pushbutton2_Callback(hObject, eventdata, handles) % hObject handle to pushbutton2 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) vid=videoinput('winvideo',1);%khai bao ngo vao cho wedcam %preview(vid);%trinh dien anh dong thu duoc tu wedcam H2b=getsnapshot(vid);%chup hinh dong %figure(2),imshow(H2);%trinh dien anh tinh vua chup imwrite(H2b,'chupsosanhB.png','png');%luu lai anh vua chup trong mablap/work delete(vid); clear vid;%thuc hien xoa va dong ngo vao
Rt ra kt lun
Trang 104
Xe lu thng
Xe c tr tuyt i
Tng tng phn ly gii hn tnh din tch Phng thc vn hnh qua hnh nh
Chng 6 KT QU
6.1. mn hnh giao din:
Trang 105
Trang 106
6.2. Kt qu:
Trang 107
Trang 108
Trang 109
Trang 110
Trang 111