实验27
485通信实验
RS-232在现代网络通信中已暴露出数据传输速度慢、传输距离短、接口处各信号间容易产生干扰等缺点。通信速率要求不是很高的情况下,RS-485总线的通信距离可以达到
1200m
,这样就可以通过多台单片机来构建一个远程多机通信系统。
相关原理图:

本试验需要RS-232C/RS-485转换器进行接口转换。这个转换器是选购件,用户可自行购买或参考相关资料自制。

硬件连接:MAX485的RO引脚接到单片机的串口接收引脚RXD
P3.0,MAX485的DI引脚接到单片机的串口发送引脚TXD
P3.1。由于MAX485为半双工通信方式,不能同时发送和接收数据,只能通过控制RE和DE引脚的状态来进行发送数据和接收数据的转换。这里将MAX485的RE和DE引脚连在一起,把他接低电平时MAX485处于接收数据状态,把它高电平(5V)时MAX485则处于发送数据状态。为了试验方便我们通过硬件连线手动控制其接地或者接5V.
在软件上232通信和MAX485通信是一样的。
A端和B端分别为接收和发送的差分信号端,当A引脚的电平高于B时,代表发送的数据为1;当A的电平低于B端时,代表发送的数据为0,
A和B端之间加匹配电阻,一般可选120欧姆的电阻。
试验方法:烧写MAX485.HEX通过后,关闭xlisp烧写软件,把XL2000的JP17(编程/仿真)按下到仿真状态。
打开配套光盘的工具软件sscomv20串口调试工具。选择通信串口号(一般是com1),波特率4800。
程序运行照片:

接线方法:
1、按键接到P3口。用一条8PIN数据排线,把按键部份的JP37,接到CPU部份的P3口JP53.
2、接8位数码管的数据线。将数码管部份的数据口 JP5接到CPU部份的P0口JP51.
3、接8位数码管的显示位线。将数码管部份的显示位口 JP8接到CPU部份的P2口JP52.
4、用两条1PIN线把MAX485的RO 接单片机P30, DI 接单片机P31
6、用串口线连接MAX485转换器和电脑的串口。
7、用两条1PIN线,连接485转换器D+,D- 到开发板MAX485的A,B
用1条1PIN线连接开发板MAX485的E(控制就是RE,DE)分别接地, 和5V 来分别作接受,发送的实验。
接收过程:在字符串输入框中输入1,然后点“发送”xl1000的数码管则显示1。输入2则显示2。

发送过程:分别按下xl2000端口按键部分的的K02,K03,K04,K05 四个按键,
这时可以看到串口调试工具分别收到4句话。你按的是p3.2键,你按的是p3.3键,你按的是p3.4键,你按的是p3.5键。

程序流程图:
 |
汇编语言参考程序:
ORG 0000H AJMP main0 ORG 0030H main0: MOV 20H,#00H;设置串口工作方式 MOV TMOD,#22H MOV SCON,#40H MOV TH1,#0F3H;设置速率4800,(12M晶体) MOV PCON,#80H SETB TR1 SETB REN;允许接收 clr p2.6;开数码管的最后一位 ajmp start start: l1:jnb p3.3,l3;检测键盘,如果P3.3按下则执行L3 jnb p3.4,l4 jnb p3.5,l5 JNB P3.2,L6 jbc ri,rec mov p0,#0ffh rec: mov a,sbuf;缓冲数据送到a mov p1,a CJNE A,#00110001b,T00 MOV P0,#07eH ;数码管显示2 mov p0,#0ffh t00: CJNE A,#00110010b,T2 MOV P0,#0A2H ;数码管显示2 mov p0,#0ffh T2: CJNE A,#00110011b,T3 MOV P0,#62H T3: CJNE A,#00110100b,T4 MOV P0,#74H T4: CJNE A,#00110101b,T5 MOV P0,#61H T5: CJNE A,#00110110b,T6 MOV P0,#21H T6:CJNE A,#00110111b,T7 MOV P0,#7AH T7: CJNE A,#00111000b,T8 MOV P0,#20H T8:CJNE A,#00111001b,t9 MOV P0,#60H T9: CJNE A,#00110000b,t10 MOV P0,#28H t10:ljmp L1 l3: mov dptr,#ok1;置表头1 ajmpsenda3 senda3: clr a ; movc a,@a+dptr cjne a,#'$',senda_3 ajmp start;遇到$则从头开始执行。 senda_3:mov sbuf,a;发送数据 JNB TI,$; CLR TI ; inc dptr Ljmp senda3 l4: mov dptr,#ok2;置表头2 ajmpsenda3 l5: mov dptr,#ok3;置表头3 ajmpsenda3 l6: mov dptr,#ok4;置表头4 ajmpsenda3 ok1: db 0dh,0ah,0dh,0ah,"如果我还有一天寿命,那天我要做你女友。我还有一天的命吗?..没有。所以,很可惜。我今生仍然不是你的女友。如果我有翅膀,我要从天堂飞下来看你。我有翅膀吗?..没有。所以,很遗憾。我从此无法再看到你。",0dh,0ah,'$' ok2: db 0dh,0ah,0dh,0ah,"倚天版开发套件是51测试网在志强版开发套件的基础上开发的增强型编程试验一体化开发套件,适合于零基础,或者初中级单片机爱好者 使用。并适合于单片机程序员的前期试",0dh,0ah,'$' ok3: db 0dh,0ah,0dh,0ah,"89c51text-xp是51测试网为初学者量身定做的一套编程试验一体化51开发套件。采用单片机精确时序编程,质量非常稳定,决不会因为编程器的原因烧毁芯片。由一个51编程器和一个51标准",0dh,0ah,'$' ok4: db 0dh,0ah,0dh,0ah," 2002年11月15日本站申请国际域名成功名称 http://www.51c51.com 我要c51!!!2002年9月推出标准版开发套件2002年10月推出xp版",0dh,0ah,'$' end
|