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

作者&投稿:浦帖 (若有异议请与网页底部的电邮联系)
~ 实现单片机和PC机进行SPI通讯方法:\x0d\x0a1:电路设计\x0d\x0a设计的电路,利用两片AT89C52芯片,一片做为发送模块,一片做为接收模块。分别编写发送和接收程序,实现数据的发送和接受。通过LED显示接收到的数据。通过示波器观察输出的波形。\x0d\x0a2:编写程序\x0d\x0a根据设计好的电路及题目要求分别编写数据发送程序和数据接收程序。①:数据发送程序#define\x0d\x0aucharunsignedchar\x0d\x0a#defineuintunsignedint\x0d\x0a\x0d\x0a#defineulongunsignedlong\x0d\x0a//---------------------------#include\x0d\x0a#include\x0d\x0a//---------------------------sbitSPICLK=P1^0;//时钟信号sbitMOSI=P1^1;//主器件数据输出,从器件数据输入sbitMISO=P1^2;//主器件数据输入,从器件数据输出\x0d\x0asbitSS=P1^3;//从器件使能信号\x0d\x0avoidDat_Transmit(uchardat)//发送数据程序\x0d\x0a{uchari,datbuf;\x0d\x0adatbuf=dat;\x0d\x0aSS=1;while(SS){;}for(i=0;i<8;i++){\x0d\x0awhile(SPICLK){;}if(datbuf&0x80)MISO=1;else\x0d\x0aMISO=0;\x0d\x0adatbuf=(datbuf<<1);while(~SPICLK){;}\x0d\x0a}\x0d\x0a}\x0d\x0avoidmain(void)\x0d\x0a{uchari;while(1){\x0d\x0afor(i=0;i<10;i++){\x0d\x0aDat_Transmit(i);\x0d\x0a}\x0d\x0a}\x0d\x0a}\x0d\x0a②:数据接收程序#defineucharunsignedchar\x0d\x0a#defineuintunsignedint#defineulong\x0d\x0aunsignedlong\x0d\x0a//---------------------------#include\x0d\x0a#include\x0d\x0a//---------------------------sbitSPICLK=P1^0;//时钟信号sbitMOSI=P1^1;//主器件数据输出,从器件数据输入sbitMISO=P1^2;//主器件数据输入,从器件数据输出sbitSS=P1^3;//从器件使能信号\x0d\x0a\x0d\x0a//---------------------------voidNop(void)\x0d\x0a{;\x0d\x0a}\x0d\x0avoidDelay(uchart){while(t--){;}\x0d\x0a}\x0d\x0a\x0d\x0aucharData_Receive(void)//数据接收程序\x0d\x0a{uchari,dat=0,temp;bit\x0d\x0abt;\x0d\x0a\x0d\x0aSPICLK=1;MISO=1;SS=0;\x0d\x0a//选中器件\x0d\x0aNop();Nop();\x0d\x0afor(i=0;i<8;i++){SPICLK=1;\x0d\x0aNop()\x0d\x0aNop();Nop();SPICLK=0;Nop();Nop();\x0d\x0abt=MISO;if(bt)\x0d\x0atemp=0x01;\x0d\x0aelse\x0d\x0atemp=0x00;\x0d\x0adat=(dat<<1);\x0d\x0a\x0d\x0adat=(dat|temp);\x0d\x0a}\x0d\x0aSS=1;SPICLK=1;\x0d\x0areturndat;\x0d\x0a\x0d\x0a}\x0d\x0avoidmain(void)\x0d\x0a{ucharexdat;uchari=0;\x0d\x0a\x0d\x0aucharcode\x0d\x0atable[10]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,\x0d\x0a0x7F,0x6F};P2=0;\x0d\x0awhile(1){exdat=Data_Receive();P0=table[exdat];\x0d\x0afor(i=0;i<200;i++)\x0d\x0aDelay(200);\x0d\x0a}\x0d\x0a}\x0d\x0a3:电路仿真\x0d\x0a将数据发送程序生成的HEX文件载入到发送数据的模块,将数据接收程序生成的HEX文件载入到接收数据的模块。在输出端口连接LED灯等到输出信息,利用示波器观察输出波形。\x0d\x0a4:SPI总线简介\x0d\x0aSPI(SerialPeripheralInterface——串行外设接口)总线是Motorola公司推出的一种同步串行接口技术。SPI总线系统是一种同步串行外设接口,允许MCU(微控制器)与各种外围设备以串行方式进行通信、数据交换。外围设备包括FLASHRAM、A/D转换器、网络控制器、MCU等。SPI,是一种高速的,全双工,同步的通信总线,并且在芯片的管脚上只占用四根线,节约了芯片的管脚,同时为PCB的布局上节省空间,提供方便,正是出于这种简单易用的特性,现在越来越多的芯片集成了这种通信协议。其工作模式有两种:主模式和从模式。SPI是一种允许一个主设备启动一个从设备的同步通讯的协议,从而完成数据的交换。也就是SPI是一种规定好的通讯方式。这种通信方式的优点是占用端口较少,一般4根就够基本通讯了(不算电源线)。同时传输速度也很高。一般来说要求主设备要有SPI控制器(也可用模拟方式),就可以与基于SPI的芯片通讯了。\x0d\x0a利用SPI总线可在软件的控制下构成各种系统。如1个主MCU和几个从MCU、几个从MCU相互连接构成多主机系统(分布式系统)、1个主MCU和1个或几个从I/O设备所构成的各种系统等。在大多数应用场合,可使用1个MCU作为主控机来控制数据,并向1个或几个从外围器件传送该数据。从器件只有在主机发命令时才能接收或发送数据。其数据的传输格式是高位(MSB)在前,低位(LSB)在后。\x0d\x0a当一个主控机通过SPI与几种不同的串行I/O芯片相连时,必须使用每片的允许控制端,这可通过MCU的I/O端口输出线来实现。但应特别注意这些串行I/O芯片的输入输出特性:首先是输入芯片的串行数据输出是否有三态控制端。平时未选中芯片时,输出端应处于高阻态。\x0d\x0a若没有三态控制端,则应外加三态门。否则MCU的MISO端只能连接1个输入芯片。其次是输出芯片的串行数据输入是否有允许控制端。因为只有在此芯片允许时,SCK脉冲才把串行数据移入该芯片;在禁止时,SCK对芯片无影响。若没有允许控制端,则应在外围用门电路对SCK进行控制,然后再加到芯片的时钟输入端;当然,也可以只在SPI总线上连接1个芯片,而不再连接其它输入或输出芯片。\x0d\x0aSPI接口是在CPU和外围低速器件之间进行同步串行数据传输,在主器件的移位脉冲下,数据按位传输,高位在前,低位在后,为全双工通信,数据传输速度总体来说比I2C总线要快,速度可达到几Mbps。\x0d\x0a5:SPI总线工作原理\x0d\x0aSPI总线系统是一种同步串行外设接口,它可以使MCU与各种外围设备以串行方式进行通信以交换信息。SPI有三个寄存器分别为:控制寄存器SPCR,状态寄存器SPSR,数据寄存器。外围设备、网络控制器、LCD显示驱动器、A/D转换器和MCU等。\x0d\x0a接口包括以下四种信号:\x0d\x0a(1)MOSI_主器件数据输出,从器件数据输入;\x0d\x0a\x0d\x0a(2)MISO_主器件数据输入,从器件数据输出;\x0d\x0a\x0d\x0a(3)SCLK_时钟信号,由主器件产生;\x0d\x0a(4)SS_从器件使能信号,由主器件控制,有的IC会标注为CS(Chipselect)。在点对点的通信中,SPI接口不需要进行寻址操作,且为全双工通信,显得简单高效。


如何实现模块与单片机的RX和TX连接并让它与PC机连接,就是实现TX和RX的...
可以的,模块的TX与单片机的RX,PC的RX直连(PC是232需要sp3232进行转换,这里的RX是经过232转TTL后的TTL_RX);模块的RX按下图进行处理,这样模块就可以复用了,但是需要分时使用,就是上位机和单片机不能同时发数据,否则单片机收到的数据是乱的。PS:我提供的电路是将串口服务器的串口转换为485和232...

课题:PC机与单片机之间数据的传送与实现。急用~
为了实现微机和单片机之间的数据交换,人们用各种不同方法实现串行通信,如DOS下采用汇编语言或C语言,但在Windows 环境下却存在一些困难和不足。在Windows操作系统已经占据统治地位的情况下(何况有些系统根本不支持DOS如Windows2000)开发Windows 环境下串行通信技术就显得日益重要。VC++6.0是微软公司于1998年推出的一种开发...

单片机与PC怎么 通信?
单片机的逻辑0是0V,逻辑1是+5V;而PC用的是负逻辑,逻辑0在+9v~+15v之间,逻辑1在-9v~-15v之间。若用九针串口连接的话,先得电平转换,(转换芯片就是大家熟知的RS232,转3.3v 的话用RS3232).之后最重要做麻烦的就是要把时序和波特率设置好(说白了就是遵循相同的协议),这样单片机和PC之间...

怎么实现pc和单片机的串口通信
给你写一个单片机串口发送的程序,你可以通过串口助手接收到 include<reg51.h> main(){ int i;TMOD=0x20;TH0=TL0=0xfd;TR1=1;SCON=0x50;while(1){ SBUF='A';while(TI==0);TI=0;for(i=0;i<1250;i++);} }

单片机--- pc 的通信
用串口是最方便的,到电子元器件的店子,买一根串口线,一个MAX232,再加一个DP-9的串口插座,再加四个电容就可以。如果你是长期从事单片机的话,最好的方法是,将下面的电路做成一个独立的模块。留下四个引脚,一个电源,一个地,另个两个引脚就是收发数据的引脚,接单片机的串口。这样,你做系统...

单片机与PC通讯有什么方式?
电脑和单片机除了串口,再有就是网络通讯方式。但是需要有网口接口芯片,还要编写支持TCP\/IP协议的程序。可是用传统的51单片机却很难实现。你可以用STM32单片机组成支持互联网通信的系统,就可以达到1Mbps以上。除此,再无其它方法。

1:PC机和单片机之间进行串口通信需要加什么样的芯片?为什么要加?_百度...
1.需要加232芯片 2.PC机的串口逻辑为:1-- -3V~-15V 0-- +3V~+15V 而单片机串口的逻辑为:1-- +5V(大多单片机为+5V)0-- 0V 所以为了实现PC机与单片机之间的通需要一个IC来完成两种不同逻辑电压的连接(电平转换),通常使用的是MAX232 IC,当然自已做相应的路也是可以的,只要可靠性要求...

在Proteus中如何实现RS-485单片机与PC机双向通信
在 PC 机上安装一个虚拟串口软件,在Proteus仿真RS-485单片机与PC机双向通信 时,运行中如虚拟串口软件,再运行一个串口调试软件,串口号与虚拟串口 号一致就可以了。有仿真实例,可以参考。

51单片机与pc机通信,谁能发个程序和接线图呀,万分感谢,问题如下:_百...
给你图,芯片是MAX232,其中TXD和RXD接单片机的TXD和RXD。OUT和IN接232串口,需要一条同相串口线与PC连。参考程序如下:TMOD = 0x20;\/\/定时器T1定义为模式2 TL1 = 0xFD;TH1 = 0xFD;\/\/设置波特率为9600bps PCON = 0x00;\/\/SMOD=0 SCON = 0x70;\/\/SM0,SM1=01--选择工作方式1 \/\/SM2=1...

pc机与单片机通信
1、不知道你用什么单片机,无论什么单片机,串口通信都是标准的RS232,你在单片机中开串口通信,设置好数据位数和波特率,发送数据即可。2、串口调试只是一个简单的上位机小软件,你网上随便搜索一下,一大堆。这种类似的软件可以接收外部传输给电脑的串口数据,当然,电脑也可以通过此软件将数据传输给外部...

札达县13650257741: 51单片机怎样实现SPI通讯 -
家李和合: 用传统的51单片机实现SPI通讯,需要用I/O脚来模拟SPI协议,这比较麻烦. 选用STC8系列单片机,就具有了SPI接口了 ,只需要对寄存器操作就行了.方便了很多了.如下图,这是STC8系列中的4个子系列,还有其它的子系列,就不再列举了.

札达县13650257741: 如何实现(电脑)PC机与单片机的串行通信 -
家李和合: 硬件部分有二种情况 1、电脑带有原生串口,就是主板上带有串行口,这个情况就太好办了.用“串口调试助手”测试一下就可以用VB写程序了.电脑和单片机用232芯片进行接口转换. 2、电脑没有原生串口,就是主板上没有串行口,这个情...

札达县13650257741: 单片机和PC间数据的实时通信是如何实现的? -
家李和合: 通过通信端口.目前单片机普遍支持的pc机通信端口有rs232和ethernet 在单片机内依照通信协议写程序就可以和pc进行通信 现在更有一些适配器,插在pc上,让pc扩展出can, spi, 等端口,这些端口在单片机上很普遍,这样也可以进行通信 最新的单片机也开始支持usb,某些支持usb的单片机只能读取u盘之类的设备,而另一些同时也可以和pc进行通信.

札达县13650257741: PC机如何实现与单片机间串行通信 -
家李和合: 有两种方法与PC通信:1,加接一个USB转串口的硬件设备(网上很容易买到),这样既解决了数据线的连接又解决了单片机供电问题,但PC端可能需要安装USB驱动,而且要碰运气,往往因USB驱动问题无法一次成功; 2,通过RS232接口...

札达县13650257741: 单片机要实现从机和主机的通讯要怎么实现 -
家李和合: 单片机串口通讯,如果是一对一单片机串口通讯 可以互为 主从机,如果是多机通讯 那么只能一个单片机为 主机、其余单片机 为 从机,主机TXD-所有从机RXD、主机RXD-所有从机TXD,如果用无线通讯串口透传模块,多机通讯也可以互为 主从机.

札达县13650257741: pc机和单片机的串行通信怎样实现!
家李和合: 硬件结构和单片机的通1S程序设计单片机和PC机的串行通信一般采用RS-232、RS-422或B3-485总线标准接口,也有采用非标准的20nnJL电流环的.为保证通信的可靠,在选择接口时必须注意:(1)通信的速率;(2)通信距离:(3)抗干...

札达县13650257741: 怎么完成单片机与PC机通信 -
家李和合: 可以通过以下方法解决问题:1、需要用烧录器把PC编辑好的程序写到单片机里面即可.

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

札达县13650257741: 如何实现单片机与计算机的通信 -
家李和合: 对,可以直接买现成的带有USB接口的ZIGBEE底板. 也可以使用两个开发板, 利用一个开发板的串口与电脑通信. 至于ZIGBEE和单片机的连接,就采用杜邦线连接.

札达县13650257741: 单片机怎么与PC机实现串口通信啊 急死人了 -
家李和合: MAX232的外围你可以下载一个器件资料看看,把232的T1in(11)和R1out(12)与单片机的TXD和RXD相连,硬件部分就可以了232的13/14脚接电脑即可,GND接电脑的5脚 要图的话,给个信息

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网