標(biāo)題:
串口通信_(tái)遙控小車(有線)
[打印本頁(yè)]
作者:
小年添加
時(shí)間:
2014-11-23 19:25
標(biāo)題:
串口通信_(tái)遙控小車(有線)
串口通信_(tái)遙控小車(有線),,蠻不錯(cuò)的
帶仿真文件,主機(jī)程序 和從機(jī)程序
串口通信_(tái)遙控小車(有線).zip
2014-11-23 19:24 上傳
點(diǎn)擊文件名下載附件
下載積分: 黑幣 -5
146.77 KB, 下載次數(shù): 67, 下載積分: 黑幣 -5
作者:
admin
時(shí)間:
2014-11-23 22:02
主機(jī)程序:
#include "reg51.h"
#include "intrins.h"
#include<stdlib.h>
#define uchar unsigned char
#define uint unsigned int
sbit P10=P1^0; //前進(jìn)
sbit P11=P1^1; //后退
sbit P12=P1^2; //左轉(zhuǎn)
sbit P13=P1^3; //右轉(zhuǎn)
uchar Temp[8]={1,2,3,4,5,6}; //運(yùn)動(dòng)編碼。數(shù)字型
/********************************************************************
函數(shù)功能:定時(shí)器及串口初始化函數(shù)
入口參數(shù):
出口參數(shù):
********************************************************************/
void Timer_init() {
TMOD = 0x20; //定時(shí)器1工作方式2(8位自動(dòng)重裝定時(shí)器)
TH1 = 0xf4; //波特率2400b/s。
TL1 = 0xf4; //定時(shí)器初值必須同時(shí)裝入TH0和TL0
PCON = 0; //波特率不加倍
SCON = 0X50; //串口方式1(10位幀,其中8位數(shù)據(jù),異步)。TI和RI清零,允許接收
TR1 = 1; //啟動(dòng)T1
}
/********************************************************************
函數(shù)功能:發(fā)送一個(gè)字節(jié)
入口參數(shù): dat
出口參數(shù):
********************************************************************/
void Send(uchar dat)
{
SBUF=dat;
while(TI==0);
TI=0;
}
/********************************************************************
函數(shù)功能:主函數(shù)
入口參數(shù):
出口參數(shù):
********************************************************************/
void main()
{
Timer_init();
while(1)
{
/*P13 P12 P11 P10*/
if(P1==0xfe) Send(Temp[0]); //前進(jìn)直行 1 1 1 0
if(P1==0xfd) Send(Temp[1]); //后退直行 1 1 0 1
if(P1==0xfa) Send(Temp[2]); //前進(jìn)左轉(zhuǎn) 1 0 1 0
if(P1==0xf6) Send(Temp[3]); //前進(jìn)右轉(zhuǎn) 0 1 1 0
if(P1==0xf9) Send(Temp[4]); //后退左轉(zhuǎn) 1 0 0 1
if(P1==0xf5) Send(Temp[5]); //后退右轉(zhuǎn) 0 1 0 1
}
}
作者:
admin
時(shí)間:
2014-11-23 22:03
從機(jī)程序:
#include<reg51.h>
#include "intrins.h"
#define uchar unsigned char
#define uint unsigned int
#define MotorData P2 //步進(jìn)電機(jī)控制接口定義
sbit P10=P1^0; //前進(jìn)顯示
sbit P11=P1^1; //后退顯示
sbit P12=P1^2; //左轉(zhuǎn)顯示
sbit P13=P1^3; //右轉(zhuǎn)顯示
sbit P24=P2^4; //
sbit P25=P2^5; //
sbit P26=P2^6; //
sbit P27=P2^7; //
uchar code turn[]={0x10,0x30,0x20,0x60,0x40,0xc0,0x80,0x90}; //旋轉(zhuǎn)編碼
/********************************************************************
函數(shù)功能:延時(shí)x毫秒函數(shù)
入口參數(shù): x
出口參數(shù):
********************************************************************/
void delay(uchar x) //設(shè)晶體振蕩器的頻率為12MHz
{
uchar k;
while(x--) //延時(shí)大約x毫秒
for(k=0;k<125;k++){}
}
/********************************************************************
函數(shù)功能:定時(shí)器及串口初始化函數(shù)
入口參數(shù):
出口參數(shù):
********************************************************************/
void Timer_init() {
TMOD = 0x20; //定時(shí)器1工作方式2(8位自動(dòng)重裝定時(shí)器);定時(shí)器0工作方式1(16位計(jì)數(shù)器)
TH1 = 0xf4; //波特率2400b/s。
TL1 = 0xf4; //定時(shí)器初值必須同時(shí)裝入TH0和TL0
PCON = 0; //波特率不加倍
SCON = 0X50; //串口方式1(10位幀,其中8位數(shù)據(jù),異步)。TI和RI清零,允許接收
TR1 = 1; //啟動(dòng)T1
}
/********************************************************************
函數(shù)功能:接收一個(gè)字節(jié)
入口參數(shù):
出口參數(shù): dat
********************************************************************/
uchar Get(void)
{
uchar dat;
while(RI==0);
RI=0;
dat=SBUF;
return dat;
}
/********************************************************************
函數(shù)功能:順時(shí)針轉(zhuǎn)動(dòng)(前進(jìn))
入口參數(shù):
出口參數(shù):
********************************************************************/
void MotorCW(void)
{
uchar i;
for(i=0;i<8;i++)
{
MotorData=turn[i];
delay(30); //轉(zhuǎn)速調(diào)節(jié)
}
}
/********************************************************************
函數(shù)功能:逆時(shí)針轉(zhuǎn)動(dòng)(后退)
入口參數(shù):
出口參數(shù):
********************************************************************/
void MotorCCW(void)
{
uchar i;
for(i=0;i<8;i++)
{
MotorData=turn[8-i];
delay(30); //轉(zhuǎn)速調(diào)節(jié)
}
}
/********************************************************************
函數(shù)功能:主函數(shù)
入口參數(shù):
出口參數(shù):
********************************************************************/
void main(void)
{
uchar Temp;
Timer_init();
while(1)
{
P1=0xff;
Temp=Get();
switch(Temp)
{
case 1: {P10=0; MotorCW();} break; //前進(jìn)直行
case 2: {P11=0; MotorCCW();} break; //后退直行
case 3: {P10=0; P12=0; MotorCW();} break; //前進(jìn)左轉(zhuǎn)
case 4: {P10=0; P13=0; MotorCW();} break; //前進(jìn)右轉(zhuǎn)
case 5: {P11=0; P12=0; MotorCCW();} break; //后退左轉(zhuǎn)
case 6: {P11=0; P13=0; MotorCCW();} break; //后退右轉(zhuǎn)
}
}
}
作者:
騰飛的龍
時(shí)間:
2015-8-6 17:36
很好的雙機(jī)通信程序謝謝分享!贊。。。
作者:
騰飛的龍
時(shí)間:
2015-8-6 17:41
這個(gè)程序沒有中斷服務(wù)函數(shù)不知道好用不好用。
作者:
herohuang
時(shí)間:
2016-1-18 13:55
不錯(cuò)學(xué)習(xí)下,呵呵
作者:
1589777657
時(shí)間:
2023-11-9 01:25
有沒有電路圖,控制通道能不能加多一些
歡迎光臨 (http://www.torrancerestoration.com/bbs/)
Powered by Discuz! X3.1