在KEIL软件中写好程序后,通过RS232串口经MAX232芯片电平转换后能直接将程序下载到单片机STC89C51吗?
5个回答
展开全部
可以到宏晶公司的官方网站上下载,STC系列单片机就是宏晶公司出的
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
不能 首先经过KEIL编译生成HEX文件后,再用专门的下载软件下载
更多追问追答
追问
生成HEX文件后,用什么下载软件下载,谢谢
追答
STC isp 下载软件
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2011-07-27
展开全部
楼上发的不是VB代码!
我来回答
....首先,串口所发的数据是有码制变化的。。分为2种情况,字符串和16进制发送。
两种方式的发送和接受方法是不同的。
先说16进制的
Dim sData() As Byte
Dim bData(1 To 6) As Byte
Dim strBuff As String
MSComm1.CommPort = 1
MSComm1.Settings = "9600,N,8,1"
MSComm1.RThreshold = 1
MSComm1.PortOpen = True
bData(1) = &HE0
bData(2) = &H0
bData(3) = &H3F
bData(4) = &H0
bData(5) = &H0
bData(6) = &H1F
MSComm1.InputMode = comInputModeBinary
必须把数据先存进一个字符数组中。
下面是接收的代码
Private Sub MSComm1_OnComm()
If MSComm1.CommEvent = 2 Then
MSComm1.InputLen = 0
strBuff = MSComm1.Input
sData() = strBuff
For i = 0 To UBound(sData)
If Len(Hex(sData(i))) = 1 Then
strdata = strdata & "0" & Hex(sData(i))
Else
strdata = strdata & Hex(sData(i))
End If
Next
Text1.Text = strdata
If Text1.Text <> Text2.Text Then
Text2.Text = Text1.Text
List1.AddItem (Text2.Text)
End If
End If
End Sub
下面是发送的代码
MSComm1.Output = bData
好了16进制就是这样。
如果是字符串发送方式就简单了。。直接发送,不用存到数组中。MSComm1.Output = "abcd" 接收只需要把strBuff = MSComm1.Input放在循环中判断就行了。
说明。。一般设备控制多用字符串方法就可以了。。如投影机的控制等。而单片机的控制多用于16进制传输的方法。先要搞清楚用的什么方式。
再说编码的问题。。一般都是 明码转成ascII码再转成16进制码。然后再发送。
再解释一下用数组的理由:
单片机接受数据一般的都是一串16进制值的组合。如1f 00 00 1e ff 2c等等。。要一次发送出一个组合的数据,必须用数组存这些数据后发送这个数组!
另外,虚机团上产品团购,超级便宜
我来回答
....首先,串口所发的数据是有码制变化的。。分为2种情况,字符串和16进制发送。
两种方式的发送和接受方法是不同的。
先说16进制的
Dim sData() As Byte
Dim bData(1 To 6) As Byte
Dim strBuff As String
MSComm1.CommPort = 1
MSComm1.Settings = "9600,N,8,1"
MSComm1.RThreshold = 1
MSComm1.PortOpen = True
bData(1) = &HE0
bData(2) = &H0
bData(3) = &H3F
bData(4) = &H0
bData(5) = &H0
bData(6) = &H1F
MSComm1.InputMode = comInputModeBinary
必须把数据先存进一个字符数组中。
下面是接收的代码
Private Sub MSComm1_OnComm()
If MSComm1.CommEvent = 2 Then
MSComm1.InputLen = 0
strBuff = MSComm1.Input
sData() = strBuff
For i = 0 To UBound(sData)
If Len(Hex(sData(i))) = 1 Then
strdata = strdata & "0" & Hex(sData(i))
Else
strdata = strdata & Hex(sData(i))
End If
Next
Text1.Text = strdata
If Text1.Text <> Text2.Text Then
Text2.Text = Text1.Text
List1.AddItem (Text2.Text)
End If
End If
End Sub
下面是发送的代码
MSComm1.Output = bData
好了16进制就是这样。
如果是字符串发送方式就简单了。。直接发送,不用存到数组中。MSComm1.Output = "abcd" 接收只需要把strBuff = MSComm1.Input放在循环中判断就行了。
说明。。一般设备控制多用字符串方法就可以了。。如投影机的控制等。而单片机的控制多用于16进制传输的方法。先要搞清楚用的什么方式。
再说编码的问题。。一般都是 明码转成ascII码再转成16进制码。然后再发送。
再解释一下用数组的理由:
单片机接受数据一般的都是一串16进制值的组合。如1f 00 00 1e ff 2c等等。。要一次发送出一个组合的数据,必须用数组存这些数据后发送这个数组!
另外,虚机团上产品团购,超级便宜
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2011-07-27
展开全部
楼上发的不是VB代码!
我来回答
....首先,串口所发的数据是有码制变化的。。分为2种情况,字符串和16进制发送。
两种方式的发送和接受方法是不同的。
先说16进制的
Dim sData() As Byte
Dim bData(1 To 6) As Byte
Dim strBuff As String
MSComm1.CommPort = 1
MSComm1.Settings = "9600,N,8,1"
MSComm1.RThreshold = 1
MSComm1.PortOpen = True
bData(1) = &HE0
bData(2) = &H0
bData(3) = &H3F
bData(4) = &H0
bData(5) = &H0
bData(6) = &H1F
MSComm1.InputMode = comInputModeBinary
必须把数据先存进一个字符数组中。
下面是接收的代码
Private Sub MSComm1_OnComm()
If MSComm1.CommEvent = 2 Then
MSComm1.InputLen = 0
strBuff = MSComm1.Input
sData() = strBuff
For i = 0 To UBound(sData)
If Len(Hex(sData(i))) = 1 Then
strdata = strdata & "0" & Hex(sData(i))
Else
strdata = strdata & Hex(sData(i))
End If
Next
Text1.Text = strdata
If Text1.Text <> Text2.Text Then
Text2.Text = Text1.Text
List1.AddItem (Text2.Text)
End If
End If
End Sub
下面是发送的代码
MSComm1.Output = bData
好了16进制就是这样。
如果是字符串发送方式就简单了。。直接发送,不用存到数组中。MSComm1.Output = "abcd" 接收只需要把strBuff = MSComm1.Input放在循环中判断就行了。
说明。。一般设备控制多用字符串方法就可以了。。如投影机的控制等。而单片机的控制多用于16进制传输的方法。先要搞清楚用的什么方式。
再说编码的问题。。一般都是 明码转成ascII码再转成16进制码。然后再发送。
再解释一下用数组的理由:
单片机接受数据一般的都是一串16进制值的组合。如1f 00 00 1e ff 2c等等。。要一次发送出一个组合的数据,必须用数组存这些数据后发送这个数组!
另外,站长团上有产品团购,便宜有保证
我来回答
....首先,串口所发的数据是有码制变化的。。分为2种情况,字符串和16进制发送。
两种方式的发送和接受方法是不同的。
先说16进制的
Dim sData() As Byte
Dim bData(1 To 6) As Byte
Dim strBuff As String
MSComm1.CommPort = 1
MSComm1.Settings = "9600,N,8,1"
MSComm1.RThreshold = 1
MSComm1.PortOpen = True
bData(1) = &HE0
bData(2) = &H0
bData(3) = &H3F
bData(4) = &H0
bData(5) = &H0
bData(6) = &H1F
MSComm1.InputMode = comInputModeBinary
必须把数据先存进一个字符数组中。
下面是接收的代码
Private Sub MSComm1_OnComm()
If MSComm1.CommEvent = 2 Then
MSComm1.InputLen = 0
strBuff = MSComm1.Input
sData() = strBuff
For i = 0 To UBound(sData)
If Len(Hex(sData(i))) = 1 Then
strdata = strdata & "0" & Hex(sData(i))
Else
strdata = strdata & Hex(sData(i))
End If
Next
Text1.Text = strdata
If Text1.Text <> Text2.Text Then
Text2.Text = Text1.Text
List1.AddItem (Text2.Text)
End If
End If
End Sub
下面是发送的代码
MSComm1.Output = bData
好了16进制就是这样。
如果是字符串发送方式就简单了。。直接发送,不用存到数组中。MSComm1.Output = "abcd" 接收只需要把strBuff = MSComm1.Input放在循环中判断就行了。
说明。。一般设备控制多用字符串方法就可以了。。如投影机的控制等。而单片机的控制多用于16进制传输的方法。先要搞清楚用的什么方式。
再说编码的问题。。一般都是 明码转成ascII码再转成16进制码。然后再发送。
再解释一下用数组的理由:
单片机接受数据一般的都是一串16进制值的组合。如1f 00 00 1e ff 2c等等。。要一次发送出一个组合的数据,必须用数组存这些数据后发送这个数组!
另外,站长团上有产品团购,便宜有保证
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询