1. Trang chủ
  2. » Giáo Dục - Đào Tạo

chương 8 lưu đồ giải thuật và chương trình

65 1,1K 0

Đ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

Thông tin cơ bản

Định dạng
Số trang 65
Dung lượng 1,29 MB

Nội dung

4 SVTH : Hoàng Trung Hiếu & Nguyễn Trung Dũng trang 150Luận văn tốt nghiệp GVHD : Thầy Nguyễn Thiện Thành... Luận văn tốt nghiệp GVHD : Thầy Nguyễn Thiện Thành... Mã lệnh cho Form Settin

Trang 1

CHƯƠNG 8 : LƯU ĐỒ GIẢI THUẬT VÀ CHƯƠNG

TRÌNH

Trang 2

4 SVTH : Hoàng Trung Hiếu & Nguyễn Trung Dũng trang 150

Luận văn tốt nghiệp GVHD : Thầy Nguyễn Thiện Thành

Trang 3

8.2 Chương trình viết bằng assembly cho vi xử lý 89C51 :

;ĐOẠN KHAI BÁO CÁC BIẾN ORG 0000H

DECLARE:

RRI EQU 20H ;CHỨA GIÁ TRỊ QUANG TRỞ BÊN PHẢI

CBKC EQU 23H CÁCH ;CHỨA GIÁ TRỊ CẢM BIẾN KHOẢNG

INPUT EQU 24H ;GIÁ TRỊ NHẬN VỀ TỪ MÁY TÍNH CONTROL EQU 25H

TỰ ĐỘNG

;BIẾN XÁC ĐỊNH ĐK BẰNG TAY HAY

VTOC EQU 26H ;BIẾN DÙNG ĐỂ THAY ĐỔI TỐC ĐỘ MANUAL EQU 27H ;BIẾN DÙNG ĐỂ ĐK BẰNG TAY BIEN_TRUYEN EQU 28H;BIẾN XÁC ĐNH THỨ TỰ TRUYỀN MOV MANUAL,#0

MOV SCON,#01010010B MOV TMOD,#21H

Qttrái > Qtphải

N

Y Chạy thẳng

Abs(Qttrái – Qtphải) < 5

Rẽ phải Rẽ trái

Trang 4

MOV TH1,#-3 SETB TR1

;PHAÀN CHÖÔNG TRÌNH CHÍNH MAIN:

Trang 5

Luận văn tốt nghiệp GVHD : Thầy Nguyễn Thiện Thành

Trang 7

MOV R3,#40 LOOP7:

R3,#20

Trang 9

LCALL

STOP1:

OUTCHAR

VAN_TOC

Trang 10

LCALL

LCALL

DISPLAY JNB RI,SKIP3

LCALL

INCHAR

CJNE A,#8,SKIP3 LJMP

;ĐOẠN CHƯƠNG TRÌNH ĐIỀU KHIỂN BẰNG NÚT NHẤN L_MANUAL:

MOV P2,#40H MOV P1,#00H JNB RI,SKIP4

LCALL

XET_GIAM:

INCHAR

CJNE A,#23,XET_TANG INC INPUT

SJMP XET_TANG:

SKIP4

CJNE A,#36,CONTINUE DJNZ INPUT,SKIP4 MOV INPUT,#1

Trang 11

SJMP CONTINUE:

SKIP4

MOV XET_6:

MANUAL,A

CJNE A,#6,XET_7 LJMP

XET_7:

AUTO

CJNE A,#7,XET_8 LJMP

XET_8:

L_MANUAL

CJNE A,#8,SKIP4 LJMP

SKIP4:

MAIN

MOV A,MANUAL CJNE A,#0,M_FORWARD LJMP L_MANUAL

Luận văn tốt

nghiệp

GVHD : Thầy

Nguyễ

n Thiện Thành

M_FORWARD:

LJMP M_LEFT:

L_MANUAL

LJMP M_BACK:

L_MANUAL

Trang 12

LCALL DRIVE_NGHICH LJMP

;KẾT THÚC CHƯƠNG TRÌNH CHÍNH

;CHƯƠNG TRÌNH CON ĐIỀU KHIỂN CHẠY

TỚI DRIVE_THUAN:

MOV LOOP1:

;ĐOẠN CHƯƠNG TRÌNH THAY ĐỔI TỐC ĐỘ

R4,#8

Trang 13

;CHƯƠNG TRÌNH CON RẼ PHẢI

DRIVE_RIGHT:

MOV R0,#0 LOOP3:

MOV A,R0 INC R0 MOV DPTR,#RTABLE MOVC

A,@A+DPTR

MOV P2,#40H MOV P1,A

Trang 14

MOV LOOP4:

;CHƯƠNG TRÌNH CON ĐỌC QUANG TRỞ BÊN PHẢI

Trang 16

MOV SHIFT:

Trang 18

MOV R5,A ;R5 CHỨA SỐ

HÀNG CHỤC MOV A,B

Luận văn tốt

nghiệp

GVHD : Thầy Nguyễn Thiện Thành

SWAP A ORL A,R6

MOV R6,A ;R6 CHỨA SỐ HÀNG CHỤC_ĐƠN VỊ

RET

Trang 19

;CHÖÔNG TRÌNH CON DELAY 400ms

Trang 20

;BẢNG THAM CHIẾU CHO ROBOT RẼ TRÁI

8.3 Chương trình viết bằng C để huấn luyện cho mạng Neuron :

#include<stdlib.h> #include<conio.h>

#include<graph.h>

#include<float.h>

#include<math.h> #include<stdio.h>

Trang 21

#define n0 4 /*input layer */

#define n1 6 /*hidden layer */

#define n2 1 /*output layer */

struct videoconfig vc; float uk[11],uk_1,yk1[11],yk,yk_1;

/*define variable used */ float netin0[n0],netin1[n1],netin2[n2];

float bias1[n1],prdlbs1[n1]; float weight1[n1][n0],weight2[n2]

[n1]; float prdlwt1[n1][n0],prdlwt2[n2][n1]; float

actv1[n1],netout; float Icoef,motum,rms; unsigned seed_int,

seed_u; int epochs,h; int eph_pts=500,rcl_pts=100; float

inwtsc=10.0; float xxo,yyo; float

Trang 24

error2[j]=yk1[h]-netout; for (i=0;i<n1;i++) delwt2[j]

Trang 27

_setpixel(timegrph,0.0); /*mau vang : duong y=0*/

_setcolor(7);

_setpixel(timegrph,netoutgrph); /*mau trang:dau ra cua mang*/

comptwt(); rms+=(yk1[h] -

netout)*(yk1[h] - netout); yk_1=yk;

yk=yk1[h]; uk_1=uk[h]; timegrph+=40;

Trang 30

printf("weight layer 1 :"); for (j=0;j<n1;j++)

for (i=0;i<n0;i++) printf("\nweight1[%d][%d]=%f

",j,i,weight1[j][i]); getch();

_clearscreen(_GCLEARSCREEN);

printf("\nweight layer 2 :"); for (j=0;j<n2;j++)

for (i=0;i<n1;i++) printf("\nweight2[%d][%d]=

%f",j,i,weight2[j][i]); getch();

}

Trang 31

8.4 Chương trình giao diện trên máy tính viết bằng Visual Basic

Mã lệnh cho Form Main :

Trang 32

Private Sub About_Click()

Trang 34

Mã lệnh cho Form Settings :

Option Explicit

Private Sub cmdCancel_Click()

frmPortSettings.Visible = False End Sub

Private Sub Form_Load()

Trang 35

Private Sub Option1_Click()

Private Sub Option5_Click()

Trang 36

Private Sub Option10_Click()

Trang 37

Mã lệnh cho Form Control :

Private Sub cmdauto_Click() frmauto.Show

frmauto.MSComm1.RThreshold = 1

frmauto.MSComm1.InputLen = 1 frmauto.MSComm1.PortOpen

= True frmauto.MSComm1.Output = Chr(Asc(6)) 'chay tu dong

che do 1 frmcontrol.Visible = False frmauto.ttu_nhan = 0

End Sub

Private Sub cmdauto1_Click() frmauto1.Show

frmauto1.MSComm1.RThreshold = 1

frmauto1.MSComm1.InputLen = 1

frmauto1.MSComm1.PortOpen = True

frmauto1.MSComm1.Output = Chr(Asc(9)) 'chay tu dong che do

2 frmcontrol.Visible = False frmauto1.ttu_nhan = 0

End Sub

Trang 38

Private Sub cmdmanual_Click() frmmanual.Show

frmmanual.MSComm1.InputLen = 1 frmmanual.MSComm1.PortOpen

= True frmmanual.MSComm1.Output = Chr(Asc(7)) 'dieu khien bang

nut nhan frmcontrol.Visible = False

Private Sub cmdthoat_Click()

frmcontrol.Visible = False

End Sub

Private Sub Help_Click()

frmHelp.Show End Sub

Trang 39

Private Sub kq_Click()

Mã lệnh cho Form Manual :

Option Explicit

Dim control As Integer

Private Sub Cmdgiam_Click()

If control <> 0 Then

frmmanual.MSComm1.Output = "G" 'giam toc do

End If

Trang 40

Private Sub Command1_Click()

control = 1 'bien dieu khien chay toi

End Sub

Private Sub Command2_Click()

control = 2 'bien dieu khien qua trai

End Sub

Private Sub Command3_Click()

control = 3 'bien dieu khien chay lui

End Sub

Private Sub Command4_Click()

control = 4 'bien dieu khien qua phai

End Sub

Private Sub Command5_Click()

control = 1 'bien khoi dong chay toi

Timer1.Enabled = True

End Sub

Trang 41

Private Sub Command6_Click()

control = 0 'bien ngung

End Sub

Private Sub Command7_Click() control = 0

'bien ngung frmmanual.MSComm1.Output

8.4.5 Form : auto (chế độ 1 )

Trang 42

Mã lệnh cho Form auto :

Option Explicit

Public uk, uk_1, yk, yk1, yk_1 As Single

Public dem, colornumber, ttu_nhan As Byte

Public sensor, vtoc, capso As Integer

Private Sub CmdEXIT_Click()

frmauto.MSComm1.Output = Chr(Asc(8))

frmauto.MSComm1.PortOpen = False

frmcontrol.Show frmauto.Visible = False

End Sub

Private Sub Form_Load()

yk = yk_1 = uk_1 = 0

Trang 43

Private Sub MSComm1_OnComm()

If (MSComm1.CommEvent = comEvReceive) Then

Timer2.Enabled = False txtstop.Text = "

ROBOT DA DEN DICH " txtso.Text = 0

Select Case capso

Case Is = 1

Trang 44

If sensor >= 10 And sensor <= 150 Then

txtnotice.Text = " ROBOT DA PHAT HIEN RA DICH DEN " Else

txtnotice.Text = " ROBOT CHUA PHAT HIEN RA DICH DEN " End If

Trang 45

Luận văn tốt nghiệp GVHD : Thầy Nguyễn Thiện Thành

Private Sub comp_out()

Dim i, j As Integer

Dim ea, eb As Single

Dim netout, actv1(5) As Single

Dim netin0(3), netin1(5), netin2(0) As Single

Dim k As Byte trong_so uk = sensor / 500

netin1(j) = netin1(j) + w1(j, i) * netin0(i)

Next i ea = Exp(netin1(j)) eb = Exp((-1) *

netin1(j)) actv1(j) = (ea - eb) / (ea + eb)

Next j netin2(0) = 0 For i = 0 To 5

netin2(0) = netin2(0) + w2(0, i) * actv1(i)

Next i netout = netin2(0) yk1 = netout

yk_1 = yk

yk = yk1

uk_1 = uk

k = k + 1

Trang 46

Private Sub Timer1_Timer()

If dem <= 4 Then dem =

dem + 1 Else dem = 0

Trang 47

ForeColor = QBColor(8) Line (Image4.Left + Image4.Width / 2, Image4.Top + Image4.Height)(Image4.Left + Image4.Width / 2, Image1.Top + Image1.Height / 2)

Line (Image4.Left + Image4.Width / 2, Image1.Top + Image1.Height / (Image1.Left, Image1.Top + Image1.Height / 2)

2)-Image4.Left = 2)-Image4.Left + 50

If Image4.Left > 2300 Then Image4.Left = 500

End If DrawWidth = 3 colornumber = colornumber + 1 ForeColor = QBColor(colornumber) Line (Image4.Left + Image4.Width, Label6.Top + Label6.Height / 2)(Label6.Left / 2 + (Image4.Left + Image4.Width) / 2, Label6.Top + Label6.Height

/ 2) Line (Image4.Left + Image4.Width / 2, Image4.Top + Image4.Height)(Image4.Left + Image4.Width / 2, Image1.Top + Image1.Height / 2) ForeColor = QBColor(colornumber + 4)

Line (Label6.Left / 2 + (Image4.Left + Image4.Width) / 2, Label6.Top + Label6.Height / 2)-(Label6.Left, Label6.Top + Label6.Height / 2)

Line (Image4.Left + Image4.Width / 2, Image1.Top + Image1.Height / (Image1.Left, Image1.Top + Image1.Height / 2)

2)-colornumber = 2)-colornumber Mod 10 End Sub

Private Sub Timer2_Timer() 'O to chuyen dong

DrawWidth = 3 ForeColor = QBColor(8) Line (Image3.Left + Image3.Width / 2, Image3.Top + Image3.Height)(Image3.Left + Image3.Width / 2, Image1.Top + Image1.Height / 2)

Luận văn tốt nghiệp GVHD : Thầy Nguyễn Thiện Thành

Trang 48

Line (Image1.Left + Image1.Width, Image1.Top + Image1.Height / 2)(Image3.Left + Image3.Width / 2, Image1.Top + Image1.Height / 2)

Image3.Left = Image3.Left + 50

If Image3.Left > 7800 Then ForeColor = QBColor(8) Line (Label6.Left + Label6.Width, Label6.Top + Label6.Height / 2)-(Image3.Left, Label6.Top + Label6.Height / 2)

Image3.Left = 5800 Else

colornumber = colornumber + 1 ForeColor = QBColor(colornumber) Line (Label6.Left + Label6.Width, Label6.Top + Label6.Height / 2)(Image3.Left / 2 + (Label6.Left + Label6.Width) / 2, Label6.Top + Label6.Height / 2)

Line (Image3.Left + Image3.Width / 2, Image3.Top + Image3.Height)(Image3.Left + Image3.Width / 2, Image1.Top + Image1.Height / 2)

ForeColor = QBColor(colornumber + 4) Line (Image3.Left / 2 + (Label6.Left + Label6.Width) / 2, Label6.Top + Label6.Height / 2)-(Image3.Left, Label6.Top + Label6.Height / 2)

Line (Image1.Left + Image1.Width, Image1.Top + Image1.Height / (Image3.Left + Image3.Width / 2, Image1.Top + Image1.Height / 2)

2)-colornumber = 2)-colornumber Mod 10 End If

End Sub

Luận văn tốt nghiệp GVHD : Thầy Nguyễn Thiện Thành

Trang 49

8.4.6 Form : Auto1 ( chế độ 2 )

Mã lệnh cho Form Auto 1 :

Option Explicit Public uk, uk_1, yk, yk1, yk_1 As Single Public ulk, ulk_1, urk, urk_1, ylk1, ylk, yrk1, yrk As Single Public dem, colornumber, ttu_nhan As Byte

Public sensor, vtoc, capso As Integer Public qtroleft, qtroright As Integer Public dkleft, dkright As Integer

Luận văn tốt nghiệp GVHD : Thầy Nguyễn Thiện Thành

Trang 50

Private Sub CmdEXIT_Click() frmauto1.MSComm1.Output = Chr(Asc(8)) frmauto1.MSComm1.PortOpen = False frmcontrol.Show frmauto1.Visible = False

Luận văn tốt nghiệp GVHD : Thầy Nguyễn Thiện Thành

Trang 51

Luận văn tốt nghiệp GVHD : Thầy Nguyễn Thiện Thành

End Sub

Private Sub Form_Load() yk

= yk_1 = uk_1 = 0 ylk = yrk

= ulk_1 = urk_1 = 0 dem = 0

Private Sub MSComm1_OnComm()

If (MSComm1.CommEvent = comEvReceive) Then

Trang 52

MSComm1.Output = Chr(Asc(capso))

Select Case capso

Trang 53

If dkleft > dkright Then

Dim ea, eb As Single

Dim netout, actv1(5) As Single

Dim netin0(3), netin1(5), netin2(0) As Single

Dim k As Byte trong_so uk = sensor / 500

netin1(j) = netin1(j) + w1(j, i) * netin0(i)

Next i ea = Exp(netin1(j)) eb = Exp((-1) *

netin1(j))

Trang 54

Luận văn tốt nghiệp GVHD : Thầy Nguyễn Thiện Thành

actv1(j) = (ea - eb) / (ea + eb)

Next j netin2(0) = 0 For i =

0 To 5

netin2(0) = netin2(0) + w2(0, i) * actv1(i)

Next i netout = netin2(0) yk1 = netout

yk_1 = yk yk = yk1 uk_1 = uk k = k + 1

Dim ea, eb As Single

Dim netout(1), actv1(9) As Single Dim

netin0(5), netin1(9), netin2(1) As Single

trong_so1 ulk = qtroleft / 250 urk =

Trang 55

netin1(j) = netin1(j) + wt1(j, i) * netin0(i)

Next i ea = Exp(netin1(j)) eb = Exp((-1) *

netin1(j)) actv1(j) = (ea - eb) / (ea + eb)

Trang 56

ylk = ylk1 yrk =

yrk1 ulk_1 = ulk

urk_1 = urk

End Sub

Private Sub Timer1_Timer()

If dem <= 4 Then dem =

dem + 1 Else dem = 0

Image1.Picture = LoadPicture("C:\My Documents\net3.gif")

Case Is = 4

Image1.Picture = LoadPicture("C:\My Documents\net4.gif")

End Select

Trang 58

Line (Image1.Left + Image1.Width, Image1.Top + Image1.Height / 2)

(Image3.Left + Image3.Width / 2, Image1.Top + Image1.Height / 2)

Image3.Left = Image3.Left + 50

If Image3.Left > 7800 Then

ForeColor = QBColor(8)

Line (Label6.Left + Label6.Width, Label6.Top + Label6.Height /

2)-(Image3.Left, Label6.Top + Label6.Height / 2)

Line (Image3.Left + Image3.Width / 2, Image3.Top + Image3.Height)

(Image3.Left + Image3.Width / 2, Image1.Top + Image1.Height / 2)

Trang 59

Luận văn tốt nghiệp GVHD : Thầy Nguyễn Thiện Thành

Option Explicit Public bi1(5) As Single Public w1(5, 3), w2(0, 5) As Single Public Sub trong_so()

'giá trị ngưỡng tại lớp neuron ẩn bi1(0) = -0.838091 bi1(1) = -1.127372 bi1(2) = -0.015699 bi1(3) = -0.02642 bi1(4) = -0.059934 bi1(5) = -0.028852

'trọng số giữa lớp neuron đầu vào và lớp neuron ẩn w1(0, 0) = -0.625121 w1(0, 1) = 0.980091 w1(0, 2)

= 1.644939 w1(0, 3) = -1.829324

w1(1, 0) = 0.428379 w1(1, 1) = 0.091225 w1(1, 2) = -0.110632 w1(1, 3) = 2.705646

w1(2, 0) = -0.166446 w1(2, 1) = 0.154604 w1(2, 2) = 0.658901 w1(2, 3) = -0.75804

Luận văn tốt nghiệp GVHD : Thầy Nguyễn Thiện Thành

Trang 61

Luận văn tốt nghiệp GVHD : Thầy Nguyễn Thiện Thành

Option Explicit Public bias1(9) As Single Public wt1(9, 5), wt2(1, 9) As Single Public Sub trong_so1()

'giá trị ngưỡng tại lớp neuron ẩn bias1(0) = -0.002176 bias1(1) = 0.011264 bias1(2) = 0.005802 bias1(3) = -0.019647 bias1(4) = -0.007982 bias1(5) = -0.011101 bias1(6) = -0.003865 bias1(7) = -0.028207 bias1(8) = 0.002008 bias1(9) = 0.010928

'trọng số giữa lớp neuron đầu vào và lớp neuron ẩn wt1(0, 0) = 0.617251 wt1(0, 1) = 0.006759 wt1(0, 2)

= -0.611946 wt1(0, 3) = 0.008967 wt1(0, 4) = -0.00068 wt1(0, 5) = 0.027049

wt1(1, 0) = -0.064578 wt1(1, 1) = -0.001474 wt1(1, 2) = 0.064821 wt1(1, 3) = 0.013051 wt1(1, 4) = -0.00136 wt1(1, 5) = -0.094324 wt1(2, 0) = 0.495083 wt1(2, 1) = 0.003908

Luận văn tốt nghiệp GVHD : Thầy Nguyễn Thiện Thành

Trang 63

Luận văn tốt nghiệp GVHD : Thầy Nguyễn Thiện Thành

wt1(6, 1) = 0.006525 wt1(6, 2) = 0.508393 wt1(6, 3) = 0.00038 wt1(6, 4) = 0.00606 wt1(6, 5) = 0.051006

wt1(7, 0) = -0.256004 wt1(7, 1) = 0.020769 wt1(7, 2) = 0.266814 wt1(7, 3) = 0.003664 wt1(7, 4) = 0.010911 wt1(7, 5) = 0.000644

wt1(8, 0) = 0.220638 wt1(8, 1) = 0.001704 wt1(8, 2) = -0.220922 wt1(8, 3) = 0.008627 wt1(8, 4) = -0.000937 wt1(8, 5) = -0.051317

wt1(9, 0) = -0.788846 wt1(9, 1) = -0.00278 wt1(9, 2) = 0.787527 wt1(9, 3) = 0.007389 wt1(9, 4) = 0.000193 wt1(9, 5) = -0.000662

Luận văn tốt nghiệp GVHD : Thầy Nguyễn Thiện Thành

Trang 64

'trọng số giữa lớp neuro ẩn và lớp neuron đầu ra

wt2(0, 0) = -0.011727 wt2(0, 1) = -0.008157

Trang 65

Luận văn tốt nghiệp GVHD : Thầy Nguyễn Thiện Thành

Ngày đăng: 28/11/2015, 06:46

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w