找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1344|回复: 10
收起左侧

STC单片机单线通讯求个思路

[复制链接]
ID:101869 发表于 2022-5-15 11:46 来自手机 | 显示全部楼层 |阅读模式
用一个单片机IO实现收发,收的时候不发,发的时候不收,求个思路。我模拟18B20方式试了下,不好用。
回复

使用道具 举报

ID:624769 发表于 2022-5-15 14:42 来自手机 | 显示全部楼层
说几个关键点,你要重点考虑。你模拟18b20,不能站在单片机的立场,要站在18b20的立场考虑,单线方式,最重要的是区分什么代表1,什么代表0,其实18b20做参考并不是一个好的参考,你最好参考红外线收发。
回复

使用道具 举报

ID:383215 发表于 2022-5-15 15:43 | 显示全部楼层
“用一个IO实现收发,收的时候不发,发的时候不收”,目的何在?目的都不想说出来,让大家来这里猜?假如是想用2根线实现两个设备之间的通讯,也就是为了节约线,那就简单了,把两边单片机的RX和TX合并起来成为一个I/O口,加上地线就可以实现2根线两个设备之间的通讯,编程序的时候收的时候不发,发的时候不收,也就是半双工不就可以了,细节上注意本机发送结束引起的中断和对方发送结束引起的中断如何处理,按照一定的时间把接收和发送分开处理。硬要只用一个IO实现收发,只有用软件模拟串行口。
回复

使用道具 举报

ID:1026745 发表于 2022-5-15 16:32 | 显示全部楼层
如果另一个设备支持单总线的话,写程序可以实现,如果不支持,可以考虑串口通讯或者iic,这两个都是相对方便和容易实现的。
回复

使用道具 举报

ID:161164 发表于 2022-5-15 18:33 | 显示全部楼层
代码呢?
DS18B20用的好好的代表单总线是可行的
回复

使用道具 举报

ID:230742 发表于 2022-5-15 20:31 | 显示全部楼层
单总线就是要自己编写一个协议。类似串口,先约定好波特率,然后主机发送3个字节,第一个字节是命令,第二个字节是数据,第三个字节是结束标志。接收方收到后解析并执行。然后也返回几个字节表示正常或者返回的数据。主机永远是主机,从机永远是从机,

打了半天字忽然想起来一个2812的灯,就是单线通信的。可以参考一下。
回复

使用道具 举报

ID:123289 发表于 2022-5-16 11:05 | 显示全部楼层
1、制定个通讯协议,通讯的双方共同遵守。
2、定义好“收的时候”,重点是:何为开始、何为结束。
3、定义好“发的时候”,重点也是:何为开始、何为结束。
接下来就简单了,免谈。
回复

使用道具 举报

ID:961114 发表于 2022-5-16 13:13 | 显示全部楼层
回复

使用道具 举报

ID:961114 发表于 2022-5-16 13:14 | 显示全部楼层
http://www.stcmcudata.com/STC8F-DATASHEET/STC32G-DEMO-CODE.ZIP     STC32G实验箱演示程序,   32位 8051
汇编和C 都有
回复

使用道具 举报

ID:73992 发表于 2022-5-16 21:29 来自手机 | 显示全部楼层
主机先拉低io口50ms然后直接发送8位数据,发送完毕拉高io口。从机每循环一周检测一次当检测到io口电平大于50ms直接接受8位数据。反过来也可以
回复

使用道具 举报

ID:1006035 发表于 2022-5-16 22:44 | 显示全部楼层
参考电动车的一线通协议,自由百度
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表