vb制作单片机 上位机 (1) 控制单个电灯开关

2019-04-15 16:28发布

单片机源码

#include sbit led = P1^0; // led灯为P1^0 void init(void){ SCON = 0X50; //设置usp串口中断寄存器 TMOD = 0X20; //设置中断 TH1 = 0XFD;//存放 定时器初值 11111101 TL1 = 0XFD; TR1 = 1; ES = 1; EA = 1; } void main(void){ init(); while(1); } void interr(void) interrupt 4{ if(RI == 1){ //RI 终端接收完全的标志 RI = 0; if(SBUF == 0X02)//subf串行口数据缓冲寄存器 subf中数据在vb中被定义 led = 1; if(SBUF == 0X01) led = 0; } }

vb上位机程序编写

vb上位机有一个非常重要的东西 控制上位机与单片机串口之间通信 我们可以在单片机的源码中看到 SBUF=0x02 时 led会点亮 SBUF=0
x01时又灭
所以我们在vb程序中要体现这一点

vb程序 基本构造

vb上位机构造 其实 只需要一个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上位机 控制 单个灯泡开关便完成了
结果图