本帖最后由 0611留守 于 2012-10-5 10:12 编辑
蓝牙pc端3.zip
(49.41 KB, 下载次数: 186)
#include<reg52.h>
#include<math.h>
#define uchar unsigned char
#define uint unsigned int
uchar temp; //从串口接收的数据 ,是一个数据组
uint i,j;
sbit Left1=P1^0;
sbit Left2=P1^1;
sbit Right1=P1^2;
sbit Right2=P0^0;
void Delay_1ms(uint i)//1ms延时
{
uchar x,j;
for(j=0;j<i;j++)
for(x=0;x<=148;x++);
}
void Com_Int(void) interrupt 4
{
EA = 0;
if(RI == 1) //当硬件接收到一个数据时,RI会置位
{
RI = 0;
temp = SBUF;
// SBUF=temp;
}
EA = 1;
}
/********************************************************************
* 名称 : Com_Init()
* 功能 : 串口初始化,晶振11.0592,波特率9600,使串口中断
* 输入 : 无
* 输出 : 无
***********************************************************************/
void Com_Init(void)
{
TMOD = 0x20;
PCON = 0x00;
SCON = 0x50;
TH1 = 0xFd; //设置波特率 9600
TL1 = 0xFd;
TR1 = 1; //启动定时器1
ES = 1; //开串口中断
EA = 1; //开总中断
}
/********************************************************************
* 名称 :Moto_Forward()
* 功能 : 电机1、2启动,都是前进,整车表现为前进。
* 输入 : 无
* 输出 : 无
***********************************************************************/
void Moto_Forward()
{
Left1=0;
Left2=1;
Right1=0;
Right2=1;
Delay_1ms(100);
}
/********************************************************************
* 名称 :Moto_Backward()
* 功能 : 电机1、2启动,都是后退,整车表现为后退。
* 输入 : 无
* 输出 : 无
***********************************************************************/
void Moto_Backward()
{
Left1=1;
Left2=0;
Right1=1;
Right2=0;
Delay_1ms(100);
}
/********************************************************************
* 名称 :Moto_TurnLeft()
* 功能 : 电机1后退,电机2前进,整车表现为左转。
* 输入 : 无
* 输出 : 无
***********************************************************************/
void Moto_TurnLeft()
{
Left1=1;
Left2=0;
Right1=0;
Right2=1;
Delay_1ms(100);
}
/********************************************************************
* 名称 :Moto_TurnRight()
* 功能 : 电机1前进,电机2后退,整车表现为右转。
* 输入 : 无
* 输出 : 无
***********************************************************************/
void Moto_TurnRight()
{
Left1=0;
Left2=1;
Right1=1;
Right2=0;
Delay_1ms(100);
}
/********************************************************************
* 名称 :Moto_Stop()
* 功能 : 电机1停止,电机2停止,整车表现为停止。
* 输入 : 无
* 输出 : 无
***********************************************************************/
void Moto_Stop()
{
Left1=0;
Left2=0;
Right1=0;
Right2=0;
Delay_1ms(100);
}
void main()
{
Delay_1ms(100);
Com_Init();//串口初始化
while(1)
{
switch(temp)
{
case 0: Moto_Stop(); break;
case 1: Moto_Forward(); break;
case 2: Moto_Backward(); break;
case 3: Moto_TurnLeft(); break;
case 4: Moto_TurnRight(); break;
default:
break;
}
}
}
VB源码
Private Sub Combo1_Click() Select Case form1.Combo1.Text ’注意主窗体名称’ Case "COM1" '如果是com1' MSComm1.CommPort = 1 '选择com1' MSComm1.PortOpen = True Case "COM2" MSComm1.CommPort = 2 MSComm1.PortOpen = True Case "COM3" MSComm1.CommPort = 3 MSComm1.PortOpen = True Case "COM4" MSComm1.CommPort = 4 MSComm1.PortOpen = True Case "COM5" MSComm1.CommPort = 5 MSComm1.PortOpen = True Case "COM6" MSComm1.CommPort = 6 MSComm1.PortOpen = True Case "COM7" MSComm1.CommPort = 7 MSComm1.PortOpen = True Case "COM8" MSComm1.CommPort = 8 MSComm1.PortOpen = True Case "COM9" MSComm1.CommPort = 9 MSComm1.PortOpen = True Case "COM10" MSComm1.CommPort = 10 MSComm1.PortOpen = True Case "COM11" MSComm1.CommPort = 11 MSComm1.PortOpen = True Case "COM12" MSComm1.CommPort = 12 MSComm1.PortOpen = True Case "COM13" MSComm1.CommPort = 13 MSComm1.PortOpen = True Case "COM14" MSComm1.CommPort = 14 MSComm1.PortOpen = True Case "COM15" MSComm1.CommPort = 15 MSComm1.PortOpen = True End Select End Sub Private Sub Combo2_Click() MSComm1.PortOpen = False '波特率' Select Case form1.Combo2.Text Case "2400" MSComm1.Settings = "2400,n,8,1" MSComm1.PortOpen = True ' Case "4800" MSComm1.Settings = "4800,n,8,1" MSComm1.PortOpen = True Case "9600" MSComm1.Settings = "9600,n,8,1" MSComm1.PortOpen = True Case "14400" MSComm1.Settings = "14400,n,8,1" MSComm1.PortOpen = True Case "19200" MSComm1.Settings = "19200,n,8,1" MSComm1.PortOpen = True Case "28800" MSComm1.Settings = "28800,n,8,1" MSComm1.PortOpen = True Case "38400" MSComm1.Settings = "38400,n,8,1" MSComm1.PortOpen = True Case "57600" MSComm1.Settings = "57600,n,8,1" MSComm1.PortOpen = True Case "115200" MSComm1.Settings = "115200,n,8,1" MSComm1.PortOpen = True End Select End Sub Private Sub Command1_Click() If MSComm1.PortOpen = True Then MSComm1.PortOpen = False Command1.Caption = "串口开" ElseIf MSComm1.PortOpen = False Then MSComm1.PortOpen = True Command1.Caption = "串口关" End If End Sub Private Sub Command7_KeyPress(KeyAscii As Integer) If KeyAscii = 119 Then MSComm1.Output = Chr(1) '键 W' Text1.Text = "你按下了W,键值87" ElseIf KeyAscii = 115 Then MSComm1.Output = Chr(2) '键 s' Text1.Text = "你按下S了,键值83" ElseIf KeyAscii = 97 Then MSComm1.Output = Chr(3) '键 a' Text1.Text = "你按下A了,键值65" ElseIf KeyAscii = 100 Then MSComm1.Output = Chr(4) '键 d' Text1.Text = "你按下D了,键值68" ElseIf KeyAscii = 32 Then MSComm1.Output = Chr(0) '空格键' Text1.Text = "你按下空格,值32" End If End Sub Private Sub Command2_Click() MSComm1.Output = Chr(0) '键 ' Text1.Text = "你按下空格,键值32" End Sub Private Sub Command3_Click() MSComm1.Output = Chr(1) '键 W' Text1.Text = "你按下了W,键值87" End Sub Private Sub Command4_Click() MSComm1.Output = Chr(3) '键 a' Text1.Text = "你按下A了,键值65" End Sub Private Sub Command5_Click() MSComm1.Output = Chr(2) '键 s' Text1.Text = "你按下S了,键值83" End Sub Private Sub Command6_Click() MSComm1.Output = Chr(4) '键 68d' Text1.Text = "你按下D了,键值68" End Sub Private Sub Form_Load() Combo1.AddItem "COM1" Combo1.AddItem "COM2" Combo1.AddItem "COM3" Combo1.AddItem "COM4" Combo1.AddItem "COM5" Combo1.AddItem "COM6" Combo1.AddItem "COM7" Combo1.AddItem "COM8" Combo1.AddItem "COM9" Combo1.AddItem "COM10" Combo1.AddItem "COM11" Combo1.AddItem "COM12" Combo1.AddItem "COM13" Combo1.AddItem "COM14" Combo1.AddItem "COM15" Combo1.AddItem "COM16" Combo2.AddItem "2400" Combo2.AddItem "4800" Combo2.AddItem "9600" Combo2.AddItem "14400" Combo2.AddItem "19200" Combo2.AddItem "28800" Combo2.AddItem "38400" Combo2.AddItem "57600" Combo2.AddItem "115200" On Error GoTo Err '出错处理 With MSComm1 .InputMode = comInputModeText '设置数据接收按字符串方式 .InputLen = 0 '读取缓冲区的所有内容 .RThreshold = 1 '每接收到1个字节就触发一次OnComm事件 End With Exit Sub Err: MsgBox "打开端口出错!", vbExclamation End Sub Private Sub MSComm1_OnComm() Text2.Text = Text2.Text & MSComm1.Input '& 是字符串连接的运算符' End Sub
|