- Đề LCD hiểu được lệnh, chúng ta cần theo đúng giao thức
LUẬN ÁN TỎT NGHIỆP CBHD: Th.S Trần Đình Huy
—=.___-F--rnm=
4.4 Cách thức truyền dữ liệu từ Visul Basic (VB) và nhân của vi
xử lý (VXL).
4.4.1 Xử lý dữ liêu và truyền từ VB.
Dim index, leng, lines, dong, data flat, buffer _array Às Integer Dim buffer(10) As String
Dim xx, yy, ZZ, Www, rr, kk As Double Dim I1, 12, 13, maxindex, pixel As Integer Dim flatfile As Double
Dim phi, phip, bien], bien2 As Double Dim bufferin(20), nhan1, nhan2 As String
Private Sub cbcom_ ClickQ ©n Error GoTo Errlabel
IfMSComm1.PortOpen Then MSComm1.PortOpen = False MSComm].CommPort = cbcom.ListIndex + l MSComm1.Settings = "19200,N,§,L" MSComml.InputLen = Ì MSComml1.RThreshold = 1 MSComm1.InputMode = comlnputModeText MSComm].PortOpen = True Errlabel:
Tf Err.Number = 8002 Then MsgBox "Select COM Port”,
vblnformation, "ROBOT Control EO" End Sub
Private Sub emdsend_ClickQ)
"Text9. [ext = "" txtnhanten. Text = ""
txtnhanma.Text = ""
If Val(txtmadia) = 0 Or Val(txtmadia. Text) > 100 Or Val(txtmadia.Text) = Null Then
MsgBox "Ma Dia Phai Khac 0 Va <= 100”
=6. Ằằ. .. a “a =— n .ằa.aẳỶïnïnsmi
SVTH: Thịnh Văn Minh — Lê Minh Hiển Trang 57
LUẬN ÁN TÓT NGHIỆP CBHD: Th.S Trần Đình Huy =————==———— =————==———— Exit Sub End If MSComml .Output = "{" MSComm1.Output = Chr(Val(txtmadia)) MSComm1]1.Oưtput = txttendia.Text MSComm1.Output = "}” End Sub
Private Sub Form_Load(Q) Ơn Error GoTo Errlabel
IfMSComm1.PortOpen Then MSComm1.PortOpen = False MSComm1.CommPort = cbcom.Listlndex + 2 MSComml .Settings = "19200,N,8,1" MSComm].InputLen = 1 MSComm1.RThreshold = 1 MSComm1.InputMode = comlnputModeText MSComm1.PortOpen = True Errlabel:
Hf Err.Number = 8002 Then MsgBox "Select COM Port”, vbInformation, "CD MANAGER"
data_ flat = 0 buffer array = 0 flatfile = Ö End Sub
Private Sub Form_ ỦUnload(Cancel As Integer)
IfMSCommIl.PortOpen Then MSComm1.PortOpen = False End Sub
Private Sub MSComml_OnComm()
Dim bufferhex, datatrans As String Dim 1 Às Integer
——— —--—ằ—_—-ằằằằỐỮớằằỒỒằnớớỒ
LUẬN ÁN TÓT NGHIỆP CBHD: Th.S Trần Đình Huy
datatrans = MSCommI.Input If datatrans = ”"" Then Exit Sub
bufferhex = Hex(Val(Asc(datatrans))) “Text9 = Text9 & " " & bufferhex
If MSCommI.CommEvent = comEvReceive Then TẾ datatrans = "{" Then buffer_array = 0 Else TẾ datatrans = "}" Then data_ flat = 0 txtnhanten.Fext=" " txinhanma.Text= " " 1xtnhanma.Text = Asc(bufferin(0)) ForI= l To (buffer_array - I) Step l
txtnhanten.Text = txtnhanten.Text & bufferin() Next
Else
bufferin(buffer_array) = datatrans buffer array = buffer_array + l
End If
End If End If
End Sub
Private Sub mnuexit_CHickQ
End
End Sub
4.4.2 Nhân xử lý dữ liêu của VXL. | //ghi 1 byte eeprom den ¡12c
void I2C_ ghi(unsigned int dchi, unsigned char dlieu)
LUẬN ÁN TÓT NGHIỆP CBHD: Th.S Trần Đình Huy =“=““=————————ễễễễễễễễ— =“=““=————————ễễễễễễễễ—
12c_startQ;
12c _write(2c_address);
12c_write(dch1/⁄256); //byte cao 12c_write(dchi%256); //byte thap
| 12c_write(dlieu);
12c s†opÔ;
| delay_ms(10);
}
//doc 1 byte eeprom tu 12c
unsigned char I2C_ doc(unsigned in dchỉ) {
unsigned char dlieu; 12c_startÔ;
12c write(i2c address);
12c_write(dch1⁄256);
12c_write(dchi%⁄2256); 12c_startQ; //start repeat 12c_write(2c address | 1); đelay_us(Š);
đlieu =i2c_read(0); /read end 12c _siopQ;
return đÌieu;
}
/⁄/USARTT Receiver interrupt service routine
interrupt [USART_RXC] void usart_rxd(void)
{
unsigned char status, data;
unsigned mf 1;
“=6... cồn -.ẳnẳnsẫẳẵỶễẫămăĩẫễ
—————————----——= Ốc CỐ CC
LUẬN ÁN TỐT NGHIỆP CBHD: Th.S Trần Đình Huy =——_————— status = UCSRA; đata = UDR; UDR = data; 1ƒ (data == '{) { đata flat= 1; buffer_array = 0; } else 1f (data =='}') { data_ flat= 0;
I2C_ ghi((nf)(bufer[0] - 1)*lengfile), buffer_array - l); for (1= 1;i<bufer_array; IFt)
I2C_ ghi(((GnÐ(buffr[0] - 1)*lengfle) + 1),
buffer|i]);
}
else
if((data_ flat == 1) & (status & (FÍRAMING_ERROR | PARITY_ERROR | DATA_OVERRUN)) = 0) PARITY_ERROR | DATA_OVERRUN)) = 0) { buffer[buffer_array] = data; buffer array++; ỹ HH nnnnnnnnnnnnnnnnnỹnỹÿyyỹyỹ¡————————————————__————————— _————————————————=