单片机源码
#include
sbit led = P1^0;
void init(void){
SCON = 0X50;
TMOD = 0X20;
TH1 = 0XFD;
TL1 = 0XFD;
TR1 = 1;
ES = 1;
EA = 1;
}
void main(void){
init();
while(1);
}
void interr(void) interrupt 4{
if(RI == 1){
RI = 0;
if(SBUF == 0X02)
led = 1;
if(SBUF == 0X01)
led = 0;
}
}
vb上位机程序编写
vb上位机有一个非常重要的东西
![控制上位机与单片机串口之间通信](https://img-blog.csdn.net/20151216160916172)
我们可以在单片机的源码中看到 SBUF=0x02 时 led会点亮 SBUF=0
x01时又灭
所以我们在vb程序中要体现这一点
vb程序 基本构造
![vb上位机构造](https://img-blog.csdn.net/20151216162754511)
其实 只需要一个command 就行了 shape 是拿来提醒自己的
电话机就是上面提到的 控制上位机与单片机之间通信的协议集
在程序运行中不会显示
vb源码
Dim buff(0) As Byte
Private Sub Command1_Click()
If Command1.Caption = "打开灯泡" Then
Shape1.BackColor = RGB(255, 0, 0)//灯泡颜 {MOD}
Command1.Caption = "关闭灯泡"
buff(0) = &H2
MSComm1.Output = buff
Else
Command1.Caption = "打开灯泡"
Shape1.BackColor = RGB(0, 255, 0)
buff(0) = &H1
MSComm1.Output = buff
End If
End Sub
Private Sub Form_Load()
Shape1.BackColor = RGB(0, 255, 0)
MSComm1.PortOpen = True
End Sub
在上面有个bug
mscomm1.outport 不能在程序调试 所以需要再加点东西
我们加一个comboBox
Dim buff(0) As Byte
Private Sub Command1_Click()
If Command1.Caption = "打开灯泡" Then
MSComm1.CommPort = Combo1.ListIndex + 1 // ListIndex为0是com1
Shape1.BackColor = RGB(255, 0, 0)
Command1.Caption = "关闭灯泡"
buff(0) = &H2
MSComm1.Output = buff
Else
Command1.Caption = "打开灯泡"
Shape1.BackColor = RGB(0, 255, 0)
buff(0) = &H1
MSComm1.Output = buff
End If
End Sub
Private Sub Form_Load()
Shape1.BackColor = RGB(0, 255, 0)
MSComm1.PortOpen = True
Combo1.AddItem "com1" //在comboBox中加入com选项
Combo1.AddItem "com2"
Combo1.AddItem "com3"
Combo1.AddItem "com4"
Combo1.AddItem "com5"
Combo1.ListIndex = 0
End Sub
至此 vb上位机 控制 单个灯泡开关便完成了