打印

如何用单片机控制另外一台单片机

[复制链接]
1582|15
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
stephen_lee|  楼主 | 2014-5-6 09:41 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
沙发
jjjyufan| | 2014-5-6 09:43 | 只看该作者
串口通信
或者IIC
定义主从机

使用特权

评论回复
板凳
stephen_lee|  楼主 | 2014-5-6 09:57 | 只看该作者
jjjyufan 发表于 2014-5-6 09:43
串口通信
或者IIC
定义主从机

我是新手,所以想问一下,哪种方式在哪种情况下较为合适,谢谢

使用特权

评论回复
地板
yinlitansuo| | 2014-5-6 09:58 | 只看该作者
先用串口通信好了!

使用特权

评论回复
5
jjjyufan| | 2014-5-6 10:08 | 只看该作者
串口通信
2边都有串口接口的
如果板子距离近 都不需要232 转换的,直接RX-TX TX-RX

使用特权

评论回复
6
dannys0302| | 2014-5-6 11:48 | 只看该作者
串口最方便了,注意一下电平匹配

使用特权

评论回复
7
lgdjade| | 2014-5-6 12:24 | 只看该作者
路过

使用特权

评论回复
8
babu| | 2014-5-6 14:48 | 只看该作者
学习,

使用特权

评论回复
9
navy_yang| | 2014-5-6 16:20 | 只看该作者
串口吧。

使用特权

评论回复
10
icekoor| | 2014-5-6 22:43 | 只看该作者
两个单片机如果是平等地位可以选择用串口。如果多个单片机,地位分为1主机多从机,选用SPI通信;如果多单片机地位平等,选择CAN通信方式。这些方式还有同步异步之分,等等,按照需求选择。

使用特权

评论回复
11
qq2686675137| | 2014-5-7 11:00 | 只看该作者
:)

使用特权

评论回复
12
stephen_lee|  楼主 | 2014-5-7 15:39 | 只看该作者
icekoor 发表于 2014-5-6 22:43
两个单片机如果是平等地位可以选择用串口。如果多个单片机,地位分为1主机多从机,选用SPI通信;如果多单片 ...

如果说我想用51单片机控制arduino,用串口通信会不会很麻烦

使用特权

评论回复
13
lantian510| | 2014-5-7 19:55 | 只看该作者
串口Uart,I2C也行

使用特权

评论回复
14
tyw| | 2014-5-7 20:25 | 只看该作者
本帖最后由 tyw 于 2014-5-7 22:58 编辑

Arduino电子设计实战指南.零基础篇 176页 32.0M 高清书签版.pdf (31.25 MB)
舵机控制板和51单片机通讯.pdf (51.28 KB)

舵机控制板和51 单片机通讯
/*********************************************************************
* 本程序在STC89C51RC 单片机中进行过测试,完全正常(晶振11.0592M)
*用户可以根据晶振不同自行修改,建议用户先连接PC,通过PC 的串口调试
* 助手来验证程序是否有效
* P30: RXD
* P31: TXD
**********************************************************************/
#include <reg52.h>
#ifndef _DG_TYPE_
#define _DG_TYPE_
typedef unsigned char uchar;
typedef unsigned int uint;
#endif
#define CMD_LEN 75 // 命令长度
#define CMD_TAG 1 // 提示符长度
void UartInit();
void UartSendChar(unsigned char ch);
void UartSendStr(uchar *pStr);
void UartCharPro(uchar ch);
void UartCmdPro();
uchar g_ucCmd[CMD_LEN + 1] = {0};
uchar g_ucLen = 0; // 命令长度
uchar g_ucCur = 1; // 光标位置
void main()
{
UartInit();
UartSendStr("#1P1500T100\r\n"); // S1 号舵机在时间100ms 内移动到PWM1500 的位置
// UartSendStr("#1GC2\r\n"); // 执行第一个动作组,循环执行2 次
while(1);
}
/************************************************************
* Name: UartInit
* Func:
* 串行通信初始化
* Para:
* uchar ch: 发送的字符
* Return: None
***********************************************************/
void UartInit()
{
SCON = 0x50; // SCON: serail mode 1, 8-bit UART
TMOD |= 0x20; // TMOD: timer 1, mode 2, 8-bit reload
PCON |= 0x80; // SMOD="1";
TH1 = 0xFA; // Baud:9600 fosc="11".0592MHz
TL1 = 0xFA;
IE |= 0x90; // 使能串行中断
TR1 = 1; // 启动TIMER1
EA = 1;
}
/************************************************************
* Name: UartSendChar
* Func:
* 向串口发送一个字符
* Para:
* uchar ch: 发送的字符
* Return: None
***********************************************************/
void UartSendChar(unsigned char ch)
{
SBUF = ch;
while(TI==0);
TI=0;
}
/************************************************************
* Name: UartSendStr
* Func:
* 向串口发送以0 结尾的字符串
* Para:
* uchar *pStr: 发送的字符指针
* Return: None
***********************************************************/
void UartSendStr(uchar *pStr)
{
while(*pStr != 0)
{
SBUF = *pStr++;
while(TI==0);
TI=0;
}
}
void UartSrv() interrupt 4
{
unsigned char ch;
ch = SBUF;
if(RI)
{
RI = 0;
//UartSendChar(ch);
//P0 = ~ch;
UartCharPro(ch);
}
}
/************************************************************
* Name: UartCharPro
* Func:
* 字符处理过程函数。根据输入的普通字符或控制字符判断回显。
* Para:
* uchar ch: 判断的字符
* Return: None
***********************************************************/
void UartCharPro(uchar ch)
{
P0 = ~ch;
switch(ch)
{
case '\b': // 退格键
if(g_ucCur > CMD_TAG) {
UartSendChar('\b');
UartSendChar(' ');
UartSendChar('\b');
if(g_ucLen) {
g_ucLen--;
}
g_ucCur--;
}
break;
case '\r': // 回车键
UartSendChar('\r');
UartSendChar('\n');
g_ucCmd[g_ucLen] = 0;
UartSendStr(g_ucCmd);
UartSendChar('\r');
UartSendChar('\n');
UartSendChar('>');
g_ucLen = 0;
g_ucCur = 1;
break;
default: // 其它字符
UartSendChar(ch);
g_ucCur++;
if(g_ucLen < CMD_LEN) {
g_ucCmd[g_ucLen++] = ch;
}
else {
g_ucCmd[g_ucLen] = 0;
}
}
}

使用特权

评论回复
15
ppxia| | 2014-5-8 08:24 | 只看该作者
老T叔,很给力

使用特权

评论回复
16
大秦正声| | 2014-5-8 12:56 | 只看该作者
不错!

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

4

主题

7

帖子

0

粉丝