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

来源:互联网 发布:ubuntu ibus fcitx 编辑:程序博客网 时间:2024/04/28 01:18

    • 单片机源码
    • vb上位机程序编写
      • vb程序 基本构造
      • vb源码

单片机源码

#include <reg52.h>sbit led = P1^0; // led灯为P1^0void 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 BytePrivate Sub Command1_Click()If Command1.Caption = "打开灯泡" ThenShape1.BackColor = RGB(255, 0, 0)//灯泡颜色Command1.Caption = "关闭灯泡"buff(0) = &H2MSComm1.Output = buffElseCommand1.Caption = "打开灯泡"Shape1.BackColor = RGB(0, 255, 0)buff(0) = &H1MSComm1.Output = buffEnd IfEnd SubPrivate Sub Form_Load()Shape1.BackColor = RGB(0, 255, 0)MSComm1.PortOpen = TrueEnd Sub

在上面有个bug
mscomm1.outport 不能在程序调试 所以需要再加点东西

我们加一个comboBox

Dim buff(0) As BytePrivate Sub Command1_Click()If Command1.Caption = "打开灯泡" ThenMSComm1.CommPort = Combo1.ListIndex + 1 // ListIndex为0是com1 Shape1.BackColor = RGB(255, 0, 0)Command1.Caption = "关闭灯泡"buff(0) = &H2MSComm1.Output = buffElseCommand1.Caption = "打开灯泡"Shape1.BackColor = RGB(0, 255, 0)buff(0) = &H1MSComm1.Output = buffEnd IfEnd SubPrivate Sub Form_Load()Shape1.BackColor = RGB(0, 255, 0)MSComm1.PortOpen = TrueCombo1.AddItem "com1"   //在comboBox中加入com选项Combo1.AddItem "com2"Combo1.AddItem "com3"Combo1.AddItem "com4"Combo1.AddItem "com5"Combo1.ListIndex = 0End Sub

至此 vb上位机 控制 单个灯泡开关便完成了
结果图

0 0
原创粉丝点击