导航:首页 > 操作系统 > pc机与单片机通信

pc机与单片机通信

发布时间:2022-11-26 09:40:44

Ⅰ PC机与单片机通信问题

多个单片机与PC机通讯是可以,但是这种方法个人觉得不稳定、不够完善 如果需要远距离传输的话,可以使用RS485 RS-485最大的通信距离约为1219M,最大传输速率为10Mb/S,传输速率与传输距离成反比,在100Kb/S的传输速率下,才可以达到最大的通信距离,如果需传输更长的距离,需要加485中继器。RS-485总线一般最大支持32个节点,如果使用特制的485芯片,可以达到128个或者256个节点,最大的可以支持到400个节点。 因RS-485接口具有良好的抗噪声干扰性,长的传输距离和多站能力等上述优点就使其成为首选的串行接口。 因为RS485接口组成的半双工网络,一般只需二根连线,所以RS485接口均采用屏蔽双绞线传输。 RS485接口连接器采用DB-9的9芯插头座,与智能终端RS485接口采用DB-9(孔),与键盘连接的键盘接口RS485采用DB-9(针)。 以上就是RS485的有点,它的应用也多 希望我的回答能带给楼主一点帮助。

Ⅱ 如何实现PC机与单片机AT89C51的串行通信

首先要看PC机有没有串口,即是电脑上的COM口,这是RS232口,有的话,就很方便。
单片机的RXD,TXD两个脚就是串行通信的引脚,用一片MAX232,或MAX202,把RXD,TXD两脚接到MAX232上,组成一个RS232接口电路,MAX232的RXD,TXD接到DB9头上,再用一条串口线,连接单片机的DB9头和电脑上的串口,也是一个DB9头。
硬件连接好了,在单片机上就要写串行通信程序了。
这方面的资料,在网络知道里可以搜索到无数个。
如果电脑上没有串口,就得买一条USB转串口线了,USB一端插到电脑的USB口上,安装上驱动程序,这样,电脑就多出一个虚拟串口了。USB转串口线另一端就是DB9头,就插到单片机的DB9头上,也同样可以串行通信。

Ⅲ pc机和单片机的串行通信怎样实现!

pc机是上位机,单片机是下位机,首先确定单片机同pc连接号232
接口的或者usb转232 视你的单片机类型而定下载个软件串口调试助手或者windows自带的超级终端调试,写好的程序将字符串发送给pc机或者用软件将字符串写如单片机通过数码管或者液晶显示,其中牵涉通讯协议和串口设置,程序生活如歌如上已经说了,可以借鉴下。是在没有明了,找些串口调试的资料在单片机开发版里面,许多都带了!

Ⅳ 如何实现(电脑)PC机与单片机的串行通信

硬件部分有二种情况
1、电脑带有原生串口,就是主板上带有串行口,这个情况就太好办了。用“串口调试助手”测试一下就可以用VB写程序了。电脑和单片机用232芯片进行接口转换。
2、电脑没有原生串口,就是主板上没有串行口,这个情况有点麻烦。要用USB转串口的模块,装好驱动后会在“设备管理器”中出现一个串口,直接当原生串口用就行了,而且经过USB转出来的串口一般都TTL电平的,也就是可以直接接单片机不用232芯片的。不过这也要看你用的是哪种模块了,具体的要看模块说明书。
最后要注意的是波特率和单片机晶振的选用,不知道你用的是什么型号的单片机。

软件部分,可以用简单的VB编写上位机软件,这方面网上有很多的代码。单片机部分只要按照普通的串行写程序就行了,测试时可以用“串口调试助手”这款软件,调试好后再写VB程序。
上述是我们做项目和产品的经验,希望对你有所帮助。

Ⅳ 51单片机与PC机串行通信

SERIALS:
; 加上关总中断
MOV A,#55H ;给PC机发送字符55H
MOV SBUF,A
JNB TI,$
CLR TI
; 这里加上,等待RI=1的语句
MOV A,SBUF ; 等待PC机发送字符AAH,接到AA后,给PC机发送字符K
CJNE A,#0AAH,$ ;这一句要换掉,不然,你接收的不是0aaH,你就死在这了
MOV A,#'K' ; 汇编中表示字符是这样吗?#'K' 请查证后再写
MOV SBUF,A
;为什么不加上等待发送结束?
CLR RI
reti
END

加上的:

1,为什么要加上关总中断?
答:就怕在中断程序中又触发其它优先级更高的中断。

2,CJNE A,#0AAH,$ ;这一句要换掉,不然,你接收的不是0aaH,你就死在这了 这我也不明白,为什么会死掉?要换的话换成什么?看我改过的程序,换成那样行不?
答:CJNE A,#0AAH,$ 判断A里,如果不是你要的值0aaH 那程序就一直在原处,并且,程序是不会响应串口再次发送的数据,换成你写的这样,就可以:一直到上位机发AAH,才往下执行。可以的。

3,MOV A,#'K' 这句话没问题的,就是把K的ASCII码发到A上
我按照你的意思,把程序改了下。不过调试的时候还是不行,麻烦你再看看

另外,我多嘴一句,你这个程序很容易就死在中断程序里,汇编我不常用,看看是可以。
做双方通信,你要确定以下内容:
1、电路是否正常工作
2、波特率、起始位、停止位是否一致
3、用上位机小软件时,是否选择是字符发送接收还是十六进制数发送接收。

串口中断程序中,不要加入太多程序,建议:
串口中断程序中,写,判断是接收中断还是发送中断,是发送中断,执行空语句,是接收中断,接收到什么置相应标志位,然后主程序中判断标志位,作相应的处理,可以理解吗?

Ⅵ pc机与单片机通信

1、不知道你用什么单片机,无论什么单片机,串口通信都是标准的RS232,你在单片机中开串口通信,设置好数据位数和波特率,发送数据即可。

2、串口调试只是一个简单的上位机小软件,你网上随便搜索一下,一大堆。这种类似的软件可以接收外部传输给电脑的串口数据,当然,电脑也可以通过此软件将数据传输给外部设备,在这里就是指你的单片机,它们的协议是RS232。

3、PL2303网上有很多资料的,你要学会自己先搜索资料,尝试自己解决问题,不要一遇到问题就先去问人,实在自己解决不了再去求助,否则会阻碍你的进步。当然,不是说你不会进步,只是进步得会慢很多很多。

自已解决问题,也是一种能力的体现。

PL2303的图,我给你一份吧,我一直用着的,保证是可以实现的,请放心使用。就在文件里面有,你找一下PL2303那个模块电路就可以找到了。

有问题互相交流,大家一起进步!

Ⅶ 怎么实现单片机和PC机进行SPI通讯

实现单片机和PC机进行SPI通讯方法:
1:电路设计
设计的电路,利用两片AT89C52芯片,一片做为发送模块,一片做为接收模块。分别编写发送和接收程序,实现数据的发送和接受。通过LED显示接收到的数据。通过示波器观察输出的波形。
2:编写程序
根据设计好的电路及题目要求分别编写数据发送程序和数据接收程序。 ①:数据发送程序 #define
uchar unsigned char
#define uint unsigned int

#define ulong unsigned long
//--------------------------- #include <REG52.H>
#include<STDIO.H>
//--------------------------- sbit SPICLK = P1^0; //时钟信号 sbit MOSI = P1^1; //主器件数据输出,从器件数据输入 sbit MISO = P1^2; //主器件数据输入,从器件数据输出
sbit SS = P1^3; //从器件使能信号
void Dat_Transmit(uchar dat) //发送数据程序
{ uchar i,datbuf;
datbuf=dat;
SS=1; while(SS){;} for(i=0;i<8;i++) {
while(SPICLK){;} if(datbuf&0x80) MISO=1; else
MISO=0;
datbuf=(datbuf<<1); while(~SPICLK){;}
}
}
void main(void)
{ uchar i; while(1) {
for(i=0;i<10;i++) {
Dat_Transmit(i);
}
}
}
②:数据接收程序 #define uchar unsigned char
#define uint unsigned int #define ulong
unsigned long
//--------------------------- #include <REG52.H>
#include<STDIO.H>
//--------------------------- sbit SPICLK = P1^0; //时钟信号 sbit MOSI = P1^1; //主器件数据输出,从器件数据输入 sbit MISO = P1^2; //主器件数据输入,从器件数据输出 sbit SS = P1^3; //从器件使能信号

//--------------------------- void Nop(void)
{ ;
}
void Delay(uchar t) { while(t--){;}
}

uchar Data_Receive(void) //数据接收程序
{ uchar i,dat=0,temp; bit
bt;

SPICLK=1; MISO=1; SS=0;
//选中器件
Nop(); Nop();
for(i=0;i<8;i++) { SPICLK=1;
Nop()
Nop(); Nop(); SPICLK=0; Nop(); Nop();
bt=MISO; if(bt)
temp=0x01;
else
temp=0x00;
dat=(dat<<1);

dat=(dat|temp);
}
SS=1; SPICLK=1;
return dat;

}
void main(void)
{ uchar exdat; uchar i=0;

uchar code
table[10]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,
0x7F,0x6F}; P2=0;
while(1) { exdat=Data_Receive(); P0=table[exdat];
for(i=0;i<200;i++)
Delay(200);
}
}
3:电路仿真
将数据发送程序生成的HEX文件载入到发送数据的模块,将数据接收程序生成的HEX文件载入到接收数据的模块。在输出端口连接LED灯等到输出信息,利用示波器观察输出波形。
4:SPI总线简介
SPI ( Serial Peripheral Interface ——串行外设接口) 总线是Motorola公司推出的一种同步串行接口技术。SPI总线系统是一种同步串行外设接口,允许MCU(微控制器)与各种外围设备以串行方式进行通信、数据交换。外围设备包括FLASHRAM、A/ D 转换器、网络控制器、MCU 等。SPI,是一种高速的,全双工,同步的通信总线,并且在芯片的管脚上只占用四根线,节约了芯片的管脚,同时为PCB的布局上节省空间,提供方便,正是出于这种简单易用的特性,现在越来越多的芯片集成了这种通信协议。其工作模式有两种:主模式和从模式。SPI是一种允许一个主设备启动一个从设备的同步通讯的协议,从而完成数据的交换。也就是SPI是一种规定好的通讯方式。这种通信方式的优点是占用端口较少,一般4根就够基本通讯了(不算电源线)。同时传输速度也很高。一般来说要求主设备要有SPI控制器(也可用模拟方式),就可以与基于SPI的芯片通讯了。
利用SPI总线可在软件的控制下构成各种系统。如1个主MCU和几个从MCU、几个从MCU相互连接构成多主机系统(分布式系统)、1个主MCU和1个或几个从I/O设备所构成的各种系统等。在大多数应用场合,可使用1个MCU作为主控机来控制数据,并向1个或几个从外围器件传送该数据。从器件只有在主机发命令时才能接收或发送数据。其数据的传输格式是高位(MSB)在前,低位(LSB)在后。
当一个主控机通过SPI与几种不同的串行I/O芯片相连时,必须使用每片的允许控制端,这可通过MCU的I/O端口输出线来实现。但应特别注意这些串行I/O芯片的输入输出特性:首先是输入芯片的串行数据输出是否有三态控制端。平时未选中芯片时,输出端应处于高阻态。
若没有三态控制端,则应外加三态门。否则MCU的MISO端只能连接1个输入芯片。其次是输出芯片的串行数据输入是否有允许控制端。因为只有在此芯片允许时,SCK脉冲才把串行数据移入该芯片;在禁止时,SCK对芯片无影响。若没有允许控制端,则应在外围用门电路对SCK进行控制,然后再加到芯片的时钟输入端;当然,也可以只在SPI总线上连接1个芯片,而不再连接其它输入或输出芯片。
SPI接口是在CPU和外围低速器件之间进行同步串行数据传输,在主器件的移位脉冲下,数据按位传输,高位在前,低位在后,为全双工通信,数据传输速度总体来说比I2C总线要快,速度可达到几Mbps。
5:SPI总线工作原理
SPI总线系统是一种同步串行外设接口,它可以使MCU与各种外围设备以串行方式进行通信以交换信息。SPI有三个寄存器分别为:控制寄存器SPCR,状态寄存器SPSR,数据寄存器。外围设备、网络控制器、LCD显示驱动器、A/D转换器和MCU等。
接口包括以下四种信号:
(1)MOSI – 主器件数据输出,从器件数据输入;

(2)MISO – 主器件数据输入,从器件数据输出;

(3)SCLK – 时钟信号,由主器件产生;
(4) SS –从器件使能信号,由主器件控制,有的IC会标注为CS(Chip select)。 在点对点的通信中,SPI接口不需要进行寻址操作,且为全双工通信,显得简单高效。

Ⅷ 单片机跟PC机通信 PC机发送数据,单片机收到后将数据在数码管显示,同时将数据返回给PC机,求程序

单片机与PC机串口通信,单片机的串口收发程序很简单,网上也非常多,对串口初始后,设置好波特率,开串口中断,就可以等待接收PC的数据了,如果PC发单字节数据,收到后原样发送即可。

Ⅸ 单片机和pc机通过rs232进行串口通信

这个简单,俺就送你一个串口发送反馈的程序吧


利用电脑上的串口助手,向单片机发送数据,单片机原封不动的再反馈回来


若满意,请记得采纳,谢谢



/***************************************************************************/

//串口波特率 9600 ,单片机晶振 11.0592

#include <REG52.h> //通用89C52头文件

char aa,fe=0;

/***************************************************************************/

void MScomm(void)//串口初始化

{

TMOD=0x20; //定时器1工作方式2,8位,,定时器0工作方式1,16位

PCON=0x00; //SMOD=0,不加倍

SCON=0x50; //串口工作方式1,允许接收

IE=0x92; //启用串口中断与定时器0中断,并开启总中断

TH1=0xfd; //定时器1设置初值,波特率9600bit/s,

TL1=0xff; //晶振频率 11.0592

TR1=1; //启动定时器T1

}

/***************************************************************************/

void main(void)//主函数

{

MScomm(); //串口初始化

while(1) //主循环

{

if(fe==1) //如果接收过数据

{

SBUF=aa; //把接收到的字符发送出去

while(!TI);//等待发送完成

TI=0; //清空发送标志位

fe=0; //设置标识符

}

}

}

/***************************************************************************/

void ser() interrupt 4//串口接收,中断方式

{

if(fe==0) //如果没接收过数据

{

aa=SBUF; //接收一个字符

while(!RI); //等待接收完成

RI=0; //清空接收标志位

fe=1; //设置标识符

}

}

/***************************************************************************/

阅读全文

与pc机与单片机通信相关的资料

热点内容
粤语之家粤语站 浏览:864
一对夫妻的电影叫什么 浏览:946
应用加密了如何解密 浏览:577
编程代码比赛平台 浏览:726
穿越在很多电影的小说 浏览:524
angularjs数据加密 浏览:523
k66单片机 浏览:735
鸿蒙文件夹如何自动归类 浏览:666
慧医通医生端安卓手机怎么下载 浏览:699
电影放到安卓手机哪个文件夹 浏览:192
VT命令 浏览:590
ftp链接到linux服务器地址 浏览:479
美国大尺度青春电影 浏览:21
李采谭演医生的电影名称 浏览:409
移动办公app第一次登录服务器地址 浏览:239
日本功夫电影 浏览:57
文件包文件夹 浏览:592
主角每次死亡都会变成另一个人 浏览:807
浪潮服务器如何调整凭证的尺寸 浏览:908
监控源码怎么打开 浏览:597