knrt.net
当前位置:首页 >> 求51单片机通过I/O口模拟spi实现双机通信的C语言代... >>

求51单片机通过I/O口模拟spi实现双机通信的C语言代...

你好!这个proteus论坛上有很多了,随便找个下载都行.希望对你有所帮助,望采纳.

调试已经通过///////////////////////////spi.h/////////////////////////////#ifndef SPI_H#define SPI_H#include <stc12le5a60s2.h>#include <spi.h>//sfr P4 = 0xe8;//STC12LE5A60S2单片机自带SPI控制器连接//sbit VCC1 = P2^0;// VCC1 NO USE//sbit SON =

你的控制器需要和SPI接口的芯片通信,而控制器本身如果又没有SPI接口,那就用IO口模拟

(1)SDI 主设备数据输入,从设备数据输出;(2)SDO 主设备数据输出,从设备数据输入;(3)SCLK 时钟信号,由主设备产生;(4)CS 从设备使能信号,由主设备控制.直接把两个单片机连接到一起就可以了,然后按照datasheet要求写驱动程序也就是设置寄存器

两个单片机之间通信用串口啊,距离较近,可用ttl连接.距离远点就用rs232连接,程序好写.i2c的协议和时序太复杂,要是用i2c存储器芯片,那没办法,只能用io口模拟,单片机是主器件,芯片是从器件,还好办.但是,两个单片机,还用l2c通信,你真是没事找事,一个是主器件,程序百度里可以找到,可另一个是从器件,这程序可从来没人写过,那两个单片机就不能通信.用宋丹丹一句话送你:你是没事找事,找抽型的.

//发送部分void Init(){ SCON=0x51; TMOD=0x20;TH1=0xf3;TL1=0xf3; ET1=1; TR1=1; EA=1; ES=1;}void send(){ TI=0; SBUF=0xfe; while(!TI); TI=0;}void main(){ Init(); while(1) { send(); }}//接收部分uchar a;void Init(){ SCON=0x51; TMOD=0x20;TH1=

第一是用IO口模拟,任意IO口都可以用来模拟SPI通讯.第二是用带SPI模块的单片机,比如STC12C5A60S2就带SPI模块.

……SPI总线协议本来就是可以通过GPIO+程序来模拟的……只要是个I/O,你能控制它的输出高低电平/读取输入电平,再配合程序实现时序逻辑,就能模拟SPI接口.速度性能和电气性能则取决于单片机的限制.

当然可以,只要MCU发送和接收数据的波形符合时序标准就可以了,

发给你了,是C的

网站首页 | 网站地图
All rights reserved Powered by www.knrt.net
copyright ©right 2010-2021。
内容来自网络,如有侵犯请联系客服。zhit325@qq.com