武汉工程大学毕业设计(论文)说明书
P0 =LEDData[display[0]] ; // 显示小数位 P2 = 0xfb; //p2.5 Delay(300);
P0 =LEDData1[display[1]]; // 显示个位 P2 = 0xf7; Delay(300);
P0 =LEDData[display[2]]; // 显示十位 P2 = 0xef; Delay(300);
P0 =LEDData[display[3]]; // 显示百位 P2 = 0xdf; Delay(300);
P2 = 0xff; // 关闭显示 }
/*********************************************************/ void beep(void) {
unsigned char i; for (i=0;i<100;i++) {
Delay(60);
BEEP=!BEEP; // BEEP取反 }
BEEP=1; // 关闭蜂鸣器
18
武汉工程大学毕业设计(论文)说明书
}
/*********************************************************/ void init(void) {
EA = 1; // \中断总允许\
TMOD = 0x20; // 定时器1工作于8位自动重载模式, 用于产生波特率
TH1=(unsigned char)(256 - (XTAL / (32L * 12L * baudrate))); TL1=(unsigned char)(256 - (XTAL / (32L * 12L * baudrate)));
// 定时器0赋初值
SCON = 0x50; // 设定串行口工作方式 PCON &= 0x00; // 波特率不倍增 TR1 = 1; // 启动定时器1 IE = 0x00; // 禁止任何中断 }
/*********************************************************/ void send_char(void)
// 传送十六位的转速数据,低位在前 {
unsigned i=0; while (i < 2) {
SBUF = temp_data[i];
while (!TI); // 等特数据传送 TI = 0; // 清除数据传送标志 i++; } }
19
武汉工程大学毕业设计(论文)说明书
/*********************************************************/ void main(void) {
uchar receive; init(); while(1) {
Read_SPEED(); if (flash==0) {
Disp_SPEED(); } else {
P2 = 0x00 ; }
if (RI) { RI = 0; receive = SBUF;
if (receive == 49) {
send_char(); } } } } // 读取转速 // 显示转速 // DQ不正常,关闭显示 // 是否有数据到来 // 是否开始采集转速 // 传送采集的转速 20
武汉工程大学毕业设计(论文)说明书
3.3电机控制程序设计
说明(MSB)结束(0x50)、数据域(右电机参数(1字节),左电机参数(1字节))、命令(1字节)、地址(1字节)、校验码(2字节)(LSB)
例:0x50、数据(N字节)、0x34、0x10、0xbd(高位)、0xc0(低位) 0xbd、0xc0:CRC码[0][1] 0x10:单片机地址[2]
0x34:显示电机状态及PWM参数命令[3] 命令集:
0x36:显示电机速度 数据域:
左电机参数(0x02正转,0x04反转,0x00停止)[4] 0x50:告诉单片机数据已经传输完毕了[6] 程序如下:
Dim ga_byRcvBuf(0 To 15) As Byte ' 接收数据存储器 Dim gi_byRcvCount As Byte '接收计数器,也是下标 Dim g_ucRcvCrcLow As Byte Dim g_ucRcvCrcHigh As Byte Dim g_uCrcLow As Byte Dim g_uCrcHigh As Byte Public gc_BufCount As Byte
Private Sub Command1_Click(Index As Integer) If MSComm1.PortOpen = False Then On Error GoTo cntOpenCom If Combo1.Text = \ MSComm1.CommPort = 1 ElseIf Combo1.Text = \ MSComm1.CommPort = 2 ElseIf Combo1.Text = \
21
武汉工程大学毕业设计(论文)说明书
MSComm1.CommPort = 3 ElseIf Combo1.Text = \ MSComm1.CommPort = 4 ElseIf Combo1.Text = \ MSComm1.CommPort = 5 ElseIf Combo1.Text = \ MSComm1.CommPort = 6 ElseIf Combo1.Text = \ MSComm1.CommPort = 7 End If
MSComm1.PortOpen = True MsgBox (\串口打开完毕!\ Else
MsgBox (\串口已打开!\cntOpenCom:
MsgBox (\错误描述:\ End If End Sub
Private Sub Command2_Click()
If MSComm1.PortOpen = False Then MsgBox (\串口未打开!\ Else
MSComm1.PortOpen = False MsgBox (\串口关闭成功!\ End If End Sub
'可用CRC校验码
Function bCRC(data() As Byte, le As Byte) As Long
22