完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
扫一扫,分享给好友
第一次发帖,,大神们罩我
|
|
|
|
U5的1接COMPIM的3 U5的4悬空就好了
|
|
|
|
1、https://bbs.elecfans.com/jishu_508351_1_1.html
2、不是第一个额外难题,就应该是程序问题。通讯协议没设计好。 https://bbs.elecfans.com/forum.p ... 6orderby%3Ddateline 这个通讯协议的设计参考。 |
|
|
|
武力戡乱 发表于 2016-5-3 20:59 版主,51到PC 利用485的仿真电路图有没有。。我做了一个,但是只能单片机发送数据到PC,PC不能发送数据到单片机。。 |
|
|
|
半双工,你程序设计有问题。 |
|
|
|
版主我程序在下面,主要实现PC发一个字符,然后单片机返回”I get 字符” #include #define uchar unsigned char #define uint unsigned int unsigned char flag,a,i; ***it P17=P1^7; ***it P16=P1^6; uchar code table[]="I get "; void init() { P17=0; P16=1; TMOD=0x20; //设置定时器1为模式2 TH1=0xfd; //装初值设定波特率 TL1=0xfd; TR1=1; //启动定时器 SM0=0; //串口通信模式设置 SM1=1; REN=1; //串口允许接收数据 EA=1; //开总中断 ES=1; //开串行中断 } void main() { init(); while(1) { if(flag==1) //如果有数据则进入这个语句 { P17=1; P16=0; ES=0; //进入发送数据时先关闭串行中断 for(i=0;i<6;i++) { SBUF=table; while(!TI); TI=0; } SBUF=a; //将数据原样发回 while(!TI); //等待数据发完 TI=0; ES=1; //退出进再开串行中断 flag=0; P17=0; P16=1; } } } void ser() interrupt 4 //串行中断函数 { RI=0; a=SBUF; flag=1; }
|
|
|
|
本帖最后由 武力戡乱 于 2016-5-5 00:09 编辑
你看你都没进行班双工处理直接返回数据。逻辑不严谨。我不是给你一个proteus51的开发板链接吗,里面有类似以多个字节为指令之类的处理方法。 |
|
|
|
还有双方发送和接受是一个反过程,也就是DB6和DB7加个取反,同步接受和发送。
|
|
|
|
细节决定成败哈!
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
6440 浏览 3 评论
7707 浏览 1 评论
7951 浏览 0 评论
Protues中自己封装的芯片元件无Program File、Clock Frequency选项怎么解决,求求大神了!
9767 浏览 1 评论
基于51单片机的车辆倒车雷达报警系统,HC-SR04超声波测距,全套资料
1286 浏览 0 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-30 00:00 , Processed in 0.798823 second(s), Total 65, Slave 57 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号