单片机与PC怎么 通信?

我手头现在有一个C8051F310的板子,准备用USB转485总线来通信。请问下是不是现在硬件上是不是可以通信了?那还需要什么软件?能不能简单介绍下通信是干什么的。为什么... 我手头现在有一个 C8051F310的板子, 准备用USB 转485总线来通信。
请问下是不是现在硬件上是不是可以通信了?那还需要什么软件?
能不能简单介绍下 通信是干什么的。为什么要通信,通过通信,我可以对程序运行,调试有帮助吗?我新手 暂时没什么概念,希望能帮我下 谢谢啦~~~
展开
 我来答
百度网友2584f024a
推荐于2017-11-24
知道答主
回答量:23
采纳率:0%
帮助的人:0
展开全部
我就我所知道的给你说说。
单片机的逻辑0是0V,逻辑1是+5V;而PC用的是负逻辑,逻辑0在+9v~+15v之间,逻辑1在-9v~-15v之间。若用九针串口连接的话,先得电平转换,(转换芯片就是大家熟知的RS232,转3.3v 的话用RS3232).之后最重要做麻烦的就是要把时序和波特率设置好(说白了就是遵循相同的协议),这样单片机和PC之间就可以互联互通了,单片机中的串口通信讲的就是这方面的内容,这些资料网上很丰富,或者买个单片机开发板研究研究。
langqiong261
2011-04-07 · TA获得超过1162个赞
知道小有建树答主
回答量:1175
采纳率:0%
帮助的人:1200万
展开全部
这个可以,但是蛮麻烦。建议直接用串口通信。
通信的目的一方面是为了调试方便,另一方面你可以把单片机采集的到数据传给电脑,也可以把电脑的控制指令传给单片机。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
手机用户11799
2011-04-08 · TA获得超过231个赞
知道答主
回答量:536
采纳率:0%
帮助的人:0
展开全部
D_9600 = 0x0c,
BAUD_19200 = 0x06,
BAUD_38400 = 0x03,
BAUD_57600 = 0x02,
BAUD_115200 = 0x01
};

enum Com_t
{
COM0 = 0xc0,
COM1 = 0xc1,
};

enum Mod_t
{
MOD0 = 0x00,
MOD1 = 0x01,
MOD2 = 0x02,
MOD3 = 0x03
};
enum Interrupt_Prio
{
Prio_0 = 0,
Prio_1 = 1,
Prio_2 = 2,
Prio_3 = 3
};

unsigned char SerialOpen (enum Mod_t Mod, enum Baud_t Baud, enum Interrupt_Prio Prio)
{
unsigned char result;
result = 0;
//设置串口工作模式和波特率
switch(Mod)
{
//8位同步移位模式,RXD:数据输入输出;TXD:同步移位时钟;低位在前
case(MOD0):
SM0 = 0;
SM1 = 0;
REN = 1;
// 波特率固定为Fosc/12
result = OK;
break;

//1起始位+8数据位(BT0-BT7)+1停止位
case(MOD1):
SM0 = 0;
SM1 = 1;
REN = 1; //允许串口0接收

AUXR |= 0x40; //T1*12 = 1,定时器1采用12倍频,工作在1T模式
TMOD = 0x21; //设置定时器1为8位自动重装计数器
if(Baud == BAUD_9600)
{
TH1 = 0xdc;
TL1 = 0xdc;
}
if(Baud == BAUD_19200)
{
TH1 = 0xee;
TL1 = 0xee;
}
if(Baud == BAUD_38400)
{
TH1 = 0xf7;
TL1 = 0xf7;
}
if(Baud == BAUD_57600)
{
TH1 = 0xfa;
TL1 = 0xfa;
}
if(Baud == BAUD_115200)
{
TH1 = 0xfd;
TL1 = 0xfd;
}
TR1 = 1; //开启定时器1
result = OK;
break;
//1位起始位+8位数据位+第九位编程位(SCON中的TB8/RB8)+1位停止位
case(MOD2):
SM0 = 1;
SM1 = 0;
REN = 1;
//当SMOD=0时,波特率 = 溢出率/64
//当SMOD=1时,波特率 = 溢出率/32
result = OK;
break;
//同模式2相同,区别在于波特率可以设置
case(MOD3):
SM0 = 0;
SM1 = 0;
REN = 1;

AUXR |= 0x40; //T1*12 = 1,定时器1采用12倍频,工作在1T模式
TMOD = 0x21; //设置定时器1为8位自动重装计数器
if(Baud == BAUD_9600)
{
TH1 = 0x00;
TL1 = 0xdc;
}
if(Baud == BAUD_19200)
{
TH1 = 0x00;
TL1 = 0xee;
}
if(Baud == BAUD_38400)
{
TH1 = 0x00;
TL1 = 0xf7;
}
if(Baud == BAUD_57600)
{
TH1 = 0x00;
TL1 = 0xfa;
}
if(Baud == BAUD_115200)
{
TH1 = 0x00;
TL1 = 0xfd;
}
TR1 = 1; //开启定时器1
result = OK;
break;

default:
result = ERR;
break;
}
//设置中断优先级
if(result == OK)
{
if(Prio == Prio_0)
{
// IP = ; //采用系统默认值
// IPH = ; //采用系统默认值
ES = 1; //开串口中断
EA = 1; //开总的中断控制位
}
if(Prio == Prio_1)
{
IP |= 0x10;
// IPH = ; //采用系统默认值
ES = 1;
EA = 1;
}
if(Prio == Prio_2)
{
// IP = ; //采用默认值
IPH |= 0x10;
ES = 1;
EA = 1;
}
if(Prio == Prio_3)
{
IP |= 0x10;
IPH |= 0x10;
ES = 1;
EA = 1;
}
}
return(result);
}

注意,以上是晶振为11.0592MHZ的参数配置。
你在下载程序的时候要注意:下载软件上要配置成外部晶振,且下一栏选择LOW
否则你的通信是不成功的
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
zdingyun
2018-08-02 · 知道合伙人软件行家
zdingyun
知道合伙人软件行家
采纳数:15429 获赞数:48182
1982年上海业余工业大学化工系毕业 现退休

向TA提问 私信TA
展开全部

单片机与PC通信通常用于工业控制领域。

  • 工控指的是工业自动化控制,主要利用电子电气、机械、软件组合实现。即是工业控制(Factory control),或者是工厂自动化控制(Factory Automation control)。主要是指使用计算机技术,微电子技术,电气手段,使工厂的生产和制造过程更加自动化、效率化、精确化,并具有可控性及可视性。

本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
我很无语中01
2011-04-07
知道答主
回答量:47
采纳率:0%
帮助的人:20万
展开全部
买一条窜口线吧(电脑没接口的话找个会电脑的帮你接跟出来就好,一根窜口线好像就几块吧,比USB便宜多了),我是用STC_ISP_V480把写好的程序写进单片机,至于通信,不通的话你程序写了有什么用,放不进芯片
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(4)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式