单片机串口通信
1、硬件连接及说明
2、单片机代码及说明
根据时钟频率大小设置波特率,之后可用SBUF=XX来进行发送。
void SerialInit()
{
/* set TI to 1, set TR1 to 1 */
SCON = 0x52;/* SM0 SM1 =1 SM2 REN TB8 RB8 TI RI */
TMOD = 0x20;/* GATE=0 C/T-=0 M1 M0=2 GATE C/T- M1 M0 */
TH1 = 0xE6; /* TH1=E6 4800 when at 24MHz,TH1=F3,9600,24MHz */
PCON = 0x80;
TCON = 0x40;/* 01101001 TF1 TR1 TF0 TR0 IE1 IT1 IE0 IT */
}
3、PC机端代码及说明
先把本 VB工程要引用的控件引用进来
设计
领导形象设计圆作业设计ao工艺污水处理厂设计附属工程施工组织设计清扫机器人结构设计
好软件界面
代码:
Private Sub Command1_Click()
If Not MSComm1.PortOpen Then
MSComm1.PortOpen = True
End If
iiii = Val(Text2)
MSComm1.Output = iiii & Chr$(13)
End Sub
Private Sub Form_Load()
'串口设置
'MSComm1.Settings = "1200,1,8,1" ' 设计波特率
MSComm1.InputLen = 0
MSComm1.InBufferSize = 1024
MSComm1.OutBufferSize = 512
MSComm1.PortOpen = True
MSComm1.SThreshold = 0
MSComm1.RThreshold = 1
End Sub
Private Sub MSComm1_OnComm()
‘串口的所有事件都通过这过程,通过其状态来判断各个事件
Select Case MSComm1.CommEvent
Case comEvReceive ‘接收事件
ii = MSComm1.Input
Text1.Text = ii ‘接收并显示
End Select
End Sub
以上例子只是简单说明单片机和 PC机间串口通信的原理。常见问题是当接受到
大于 127的数时,VB返回的是乱码。解决办法是把串口接收的方式(inputmodel)
改变为二进制模式,同时用数组方式接收。
4、应用例子——虚拟示波器