标题:
Rs485通信单片机C程序
[打印本页]
作者:
RumRumPum
时间:
2017-6-5 18:54
标题:
Rs485通信单片机C程序
Rs485通信单片机源程序如下:
/*******************************************************************************
* 标题: RS485串口通信试验(接受与发送) *
* *
* 1.通过本例程了解串口的基本原理及使用 ,理解并掌握对串口进行初始化 *
* *
* 2.请使用串口调试助手(Baud 4800、数据位8、停止位1、效验位无)做为上位机(发送)数据和(接受)数据,
* 请在字符串输入框中输入字符和数字(HEX),按发送按钮。观看接受窗显示情况.也可以用自动循环发送。
*
* 3.试验RS485需要用RS232转485的转换头。开板A对485转换头A B对应485转换头B.接法大家可以参考原理图。
* *
* 请学员认真消化本例程,学会用C语言操作串口和485的实现 *
********************************************************************************/
#include <REG52.H>
#include <stdio.h>
sbit RS485E=P3^7; //定义485的使能脚
bit SendFlag;
unsigned int ReData,SenData;
/**************************************
延时程序
**************************************/
void delay(unsigned char i)
{
unsigned char j;
for(i; i > 0; i--)
for(j = 200; j > 0; j--);
}
void main (void) {
SCON = 0x50; //REN=1允许串行接受状态,串口工作模式1
TMOD|= 0x20; //定时器工作方式2
PCON|= 0x80;
TH1 = 0xFd; //baud*2 /* reload value 19200、数据位8、停止位1。效验位无 (11.0592)
//TH1 = 0xF3; // //baud*2 /* 波特率4800、数据位8、停止位1。效验位无 (12M)
TL1 = 0xF3;
TR1 = 1;
ES = 1; //开串口中断
EA = 1; // 开总中断
// IE = 0x0;
while(1)
{
if (SendFlag==1) // max485(半双工通信) RE/DE定义 RE=0为接受状态 DE=1为发送状态(参考MAX485芯片管脚)
{ RS485E=1; // RS5485E=0为接收状态 RS5485E=1为发送状态
SBUF=SenData; //发送数据
delay(50);
}
else
{
RS485E=0; //接收状态
}
}
}
/****************************************************
串口中断程序
******************************************************/
void ser_int (void) interrupt 4 using 1
{
if(TI == 1)
{
TI = 0;
SendFlag = 0;
}
……………………
…………限于本文篇幅 余下代码请从51黑下载附件…………
复制代码
所有资料51hei提供下载:
C程序.zip
(17.23 KB, 下载次数: 384)
2017-6-5 18:53 上传
点击文件名下载附件
下载积分: 黑币 -5
作者:
dzbj
时间:
2017-6-5 21:00
不用做发送标记来改变485芯片的状态 上电后485的控制端置低 一直出于接收状态 发送函数里置高 发送完毕拉低就行了
作者:
fengxu81
时间:
2017-6-6 14:53
好东西,谢谢楼主!!!!!!!!!!!
作者:
akyo32
时间:
2017-11-10 21:56
犀利啊。多谢楼主分享!
作者:
154462859
时间:
2018-1-8 16:17
想来学习一下
作者:
numberv5
时间:
2018-1-18 11:11
学习学习
作者:
numberv5
时间:
2018-1-18 11:12
想来学习一下
作者:
电子电工
时间:
2018-3-21 16:24
485地址从哪设置
作者:
三达集团
时间:
2018-3-26 20:25
学习了
作者:
落木清风
时间:
2018-3-27 10:13
下载试试看吧
作者:
tzcl
时间:
2018-5-7 23:28
这个程序是由问题的。我测试的时候,232传输数据是没有问题的。但是利用485,发现返回数据是有规律的错误,而且,超过两个字节后,最后一个字节自动改为00,请问各位可有这个问题。
作者:
扔回海里ly
时间:
2018-5-14 00:29
tzcl 发表于 2018-5-7 23:28
这个程序是由问题的。我测试的时候,232传输数据是没有问题的。但是利用485,发现返回数据是有规律的错误, ...
我的单片机板子推荐程序也是这样,但是返回的信号一直是00,发送数据也不是返回的发送数据值,似乎像随机数,被淹没在大片的00中,很快就冲没了
作者:
mick32
时间:
2018-5-16 05:03
SBUF=SenData; //send data
Delay(50);
This will depend on baud rate
作者:
jia302
时间:
2018-5-16 23:20
非常感谢,非常感谢
作者:
carolineee
时间:
2018-5-21 20:31
感谢感谢
作者:
gsr64
时间:
2018-7-21 08:23
标题:
RE: Rs485通信单片机C程序
非常感谢
作者:
bird666
时间:
2018-8-15 17:55
感谢分享
作者:
Braver1
时间:
2018-8-24 17:30
简单易懂!适合小白白啊!还有发现51黑好多资料!!!那,我就注册了一个
作者:
cgm423
时间:
2018-11-17 17:43
学习了,好东西!!
作者:
难得糊涂2018
时间:
2018-11-17 20:17
有使用过的朋友吗
作者:
tao1112
时间:
2018-12-4 19:04
可以,这个非常的合适
作者:
tao1112
时间:
2018-12-4 19:17
这个非常的给力
作者:
qgbdxm
时间:
2018-12-22 20:50
正在弄485 学习一下
作者:
szqinyi
时间:
2018-12-23 08:48
把 delay(50); 改为 while(SendFlag ==1).
作者:
榆林上校
时间:
2018-12-26 05:56
收藏!谢谢分享!
作者:
yasi666
时间:
2019-1-29 10:38
谢谢分享
作者:
ammmm
时间:
2019-10-29 22:48
请问一直收不到数据是怎么回事
作者:
ammmm
时间:
2019-10-29 22:50
程序很清晰!!!
作者:
15889661439
时间:
2019-11-13 10:46
好东西,就是下载要money
作者:
moyu2016
时间:
2020-4-10 09:13
下载下来试试
作者:
刀妹
时间:
2020-10-10 22:25
使用很方便
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1