⑴ 单片机与PC通讯有什么方式
电脑和单片机除了串口,再有就是网络通讯方式。但是需要有网口接口芯片,还要编写支持TCP/IP协议的程序。可是用传统的51单片机却很难实现。你可以用STM32单片机组成支持互联网通信的系统,就可以达到1Mbps以上。除此,再无其它方法。
⑵ PC与单片机串行通信控制背景和意义
单片机串行通信的实际作用:一般用于和外部设备交换数据的
举例来说:一、比如和PC的串口机通信,单片机可以采集一些模拟量(温度,湿度,气体浓度等),将这些模拟量转换成数字量后通过串行通信接口传输个PC机,PC机上还得编写一个简单的应用软件,可以显示这些模拟量(温度,湿度,气体浓度等)的值,这个简单的应用软件应具有串口设置,数据显示,绘制曲线等功能。还可以通过PC机串口发送数据给单片机,用来控制单片机的工作状态等等。和PC机通信应该是应用最广泛的。
二、和其他串口设备通信:单片机一般充当控制器的角色,通过串口发送一定格式的数据来控制与之相连设备的动作,同时设备也会反馈回来一些自己的状态信息给单片机,供单片机进行判断,做出相应的控制。
⑶ PC串口如何给单片机供电
PC串口无法给单片机供电的,一方面是串口电源的输出功率不足,另一方便,RS232口的电压也不合适供电,不是5V电压。你用USB口供电到时可以的。
⑷ 单片机通过串口向PC不间断发送变化的数据,PC接收总是延迟
这个问题很常见了,解决方法:
如果你能更改上位机软件,将上位机软件接收数据那块改为"一旦接收缓冲区有数据,立刻读出来显示".
如果你没办法更改上位机软件,那么你可以间隔发送,比如两包数据间隔为0.5S,或者找一款可以实时显示的调试助手,推荐使用ttermpro测试下
⑸ 利用串口实现单片机与PC超级终端通信
标准串口参考程序如下:(来源周立功单片机公司)具有一般参考意义。
#include<reg51.h>
unsigned char UART_RX; //定义串口接收数据变量
unsigned char RX_flag; //定义穿行接收标记
/*********************************************************************************************
函数名:UART串口初始化函数
调 用:UART_init();
参 数:无
返回值:无
结 果:启动UART串口接收中断,允许串口接收,启动T/C1产生波特率(占用)
备 注:振荡晶体为12MHz,PC串口端设置 [ 4800,8,无,1,无 ]
/**********************************************************************************************/
void UART_init (void){
EA = 1; //允许总中断(如不使用中断,可用//屏蔽)
ES = 1; //允许UART串口的中断
TMOD = 0x20; //定时器T/C1工作方式2
SCON = 0x50; //串口工作方式1,允许串口接收(SCON = 0x40 时禁止串口接收)
TH1 = 0xF3; //定时器初值高8位设置
TL1 = 0xF3; //定时器初值低8位设置
PCON = 0x80; //波特率倍频(屏蔽本句波特率为2400)
TR1 = 1; //定时器启动
}
/**********************************************************************************************/
/*********************************************************************************************
函数名:UART串口接收中断处理函数
调 用:[SBUF收到数据后中断处理]
参 数:无
返回值:无
结 果:UART串口接收到数据时产生中断,用户对数据进行处理(并发送回去)
备 注:过长的处理程序会影响后面数据的接收
/**********************************************************************************************/
void UART_R (void) interrupt 4 using 1{ //切换寄存器组到1
RI = 0; //令接收中断标志位为0(软件清零)
UART_RX = SBUF; //将接收到的数据送入变量 UART_data
RX_flag=1; //标记接收
//用户函数内容(用户可使用UART_data做数据处理)
//SBUF = UART_data; //将接收的数据发送回去(删除//即生效)
//while(TI == 0); //检查发送中断标志位
//TI = 0; //令发送中断标志位为0(软件清零)
}
/**********************************************************************************************/
/*********************************************************************************************
函数名:UART串口发送函数
调 用:UART_T (?);
参 数:需要UART串口发送的数据(8位/1字节)
返回值:无
结 果:将参数中的数据发送给UART串口,确认发送完成后退出,采用非中断方式
备 注:
/**********************************************************************************************/
void UART_T (unsigned char UART_data){ //定义串口发送数据变量
ES=0; //禁止穿行中断
SBUF = UART_data; //将接收的数据发送回去
while(TI == 0); //检查发送中断标志位
TI = 0; //令发送中断标志位为0(软件清零)
ES=1; //打开穿行中断
}
/*********************************************************************************************
函数名:UART串口发送字符串函数
调 用:UART_S (?);
参 数:需要UART串口发送的数据(8位/1字节)
返回值:无
结 果:将参数中的数据发送给UART串口,确认发送完成后退出,采用非中断方式
备 注:
/**********************************************************************************************/
void UART_S(unsigned char *str)
{
while(1)
{
if(*str=='\0') break;
UART_T(*str++);
}
}
/*********************************************************************************************
函数名:主函数
调 用:main();
参 数:
返回值:无
结 果:
备 注:
/**********************************************************************************************/
void main()
{
unsigned char Buf_data[]={" welcome to MCU world. \n\r"};
UART_init();
UART_S(Buf_data);
while(1){
if(RX_flag==1)
{
UART_T(UART_RX);
RX_flag=0;
}
}
}
///////////////////////////////////////////////////////////////////
个人认为普通单片机在通信频率上及不上AVR单片机,更可能使用USB转串口工具进行开发,所以串口波特率不能过高,最好是2400或4800。过高只会导致乱码或丢失。而楼主的中断服务程序也不正确,设计缺乏经验,所以需要继续努力。
⑹ 两个单片机之间串口通信,PC如何监听通信数据
PC要监听通信数据,三者必须采用RS485总线,而PC需要安一个RS232转RS485的转换器才行,并且电脑只能处于接收状态,两个单片机用485总线互相通信。电脑端可以用串口调试助手软件就行。
⑺ 51单片机与PC机之间的硬件如何串口连接
单片机和微机通信的电气标准要一致,微机串口一般是RS232电气标准,所以要加电平转换芯片,大多用MAX232,一般单片机实验板上都提供这样的标准串口。
要分别编写上位机和下位机软件程序,单片机程序参照例程、教科书进行编写;上位机微机可采用VB,组态软件,Labview等软件编写,一般若是简单的通信,上位机程序编写很简单,例如VB中学会使用mscomm控件,有VB最基础知识的一天就能学会。
大可以没有单片机,没有MAX232,没有串行接口这些硬件就可以实现学习并掌握单片机与微机之间的串口通信。proteus可以仿真单片机,也是主流软件。
如今的笔记本电脑几乎都没有保留串口,而用USB接口取而代之,不过没关系,有了虚拟串口和串口调试助手,这些都解决了。你可以搜索一下虚拟串口,真的很不错的。
⑻ 单片机与PC之间的串口通信需要什么条件
好像不需要其它条件吧
单片机与PC通信一般就是用串口,当然也有用并口的
用串口通信,距离在10米内用RS232,超过了就用RS485或是RS422
单片机是硬件,由时钟控制向PC发送数据,或是接收数据
在PC端,编程也是用底层时钟控制,不断的接收或是发送数据
要看你用何种程序写了,一般的VB、C都有串口连接控件,直接调用它就可以与单片机通信
⑼ 51单片机用串口跟pc通信进行收发数据
//代码来自单片机小精灵v1.3
//波特率960011.0592晶振方式2
#include<reg51.h>
voidInitUART(void)
{
TMOD=0x20;
SCON=0x50;
TH1=0xFD;
TL1=TH1;
PCON=0x00;
EA=1;
ES=1;
TR1=1;
}
voidSendOneByte(unsignedcharc)
{
SBUF=c;
while(!TI);
TI=0;
}
voidmain(void)
{
InitUART();
}
voidUARTInterrupt(void)interrupt4
{
if(RI)
{
RI=0;
//addyourcodehere!
}
else
TI=0;
}