VB控制步进马达

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
For I = 0 To hb - 1 COMBUFF(I) = MSCOMM1.Input(0)
Next I
End If End Sub
Public Sub Delay(TTime As Single) Dim tmp As Single tmp = Timer Do DoEvents Loop Until Timer - tmp >= TTime
Err: lblMessage.Caption = " Error!"
End Sub
Private Sub Form_Unload(Cancel As Integer) On Error Resume Next If (MSCOMM1.PortOpen = True) Then
MSCOMM1.PortOpen = False End If End End Sub
Public Sub SendDataToCom(Num As Byte) Dim oDt As Variant Dim Y(0 To 1) As Byte Y(0) = Num 'Y(1) = &HD 'Y(2) = &HA oDt = Y MSCOMM1.InBufferCount = 0 If MSCOMM1.PortOpen = True Then MSCOMM1.Output = oDt
End Sub
Private Sub Combo1_Click() Call Rs_Port_Set
End Sub
Private Sub Form_Load() Call Rs_Port_Set
End Sub
Public Sub Rs_Port_Set() On Error GoTo Err: If (MSCOMM1.PortOpen = True) Then MSCOMM1.PortOpen = False End If mPort = Combo1.Text MSCOMM1.Settings = "9600,n,8,1" MSCOMM1.InputLen = 1 MSCOMM1.SThreshold = 0 MSCOMM1.RThreshold = 1 MSCOMM1.InBufferCount = 0 MSCOMM1.InputMode = comInputModeBinary MSCOMM1.PortOpen = True lblMessage.Caption = " Open!" Exit Sub
MoveType=1; ComData=0;//复位数据, } else if((BackKey==0)||(ComData==0x52))//字符"R"的 ASC 码,表示反转 { MoveType=2;
VB 控制步进马达
一,说明: VB6.0 编程,向 51 单片机发指令,控制小型的步进马达。
二,电路图:
三,VB 部份程序:
Private Type a_ByteAry ByteVal(0 To 3) As Byte
End Type Private Sub cmdFM_Click()
Call SendDataToCom(Asc("F")) End Sub Private Sub cmdRM_Click()
EA=1; //ET1=1; //不能开启定时器中断,否则进入不了串口中断 ES=1;//开串口中断
TR1=1; //开放定时器 1,程序要加定时中断函数,否则程序出错. }
void Judge() {
if ((ForKey==0) ||(ComData==0x46)) //字符"F"的 ASC 码,表示正转 {
End Sub
四,51 单片机部份程序:
#include <reg51.h> #include <intrins.h>
sbit ForKey=P3^2; sbit BackKey=P3^3; sbit StopKey=P3^4; sbit KK=P3^7; unsigned char MoveType; sbit A1=P2^0; sbit B1=P2^1; sbit C1=P2^2; sbit D1=P2^3; int Speed ; unsigned char ComData;//数据 unsigned char InBuf[2];//接收数据 unsigned char RCount ;//接收数据指针
//八拍方式驱动,顺序为 A AB B BC C CD D DA void delay(); void ForRun(); void BackRun(); void Judge(); void Timer1(void); void INICom(); void DoWhithMotor();
void serial(void);
void main() {
INICom(); Speed=10; while(1) {
Judge(); DoWhithMotor(); } }
void INICom() {
SCON = 0x50;//串口工作于方式 1,充许接收 PCON = 0x00; //波特率不倍增 TMOD=0X20;//定时器计数器 1 工作于方式 2; TH1=TL1=0xFD;//波特率为 9600;
Call SendDataToCom(Asc("R")) End Sub
Private Sub cmdSM_Click() Call SendDataToCom(Asc("S"))
End Sub
Private Sub cmdSSet_Click() If txtSB <> "" Then If (CInt(txtSB) > 0) And (CInt(txtSB) < 10(txtSB)) Else MsgBox "请输入 1 至 9 的整数!" End If End If
End Sub
Private Sub MSCOMM1_OnComm() Dim I, hb As Integer Static COMBUFF(10) As Byte 'Dim byteAry As a_ByteAry On Error Resume Next
hb = 1 If MSCOMM1.InBufferCount = hb Then
相关文档
最新文档