ImageVerifierCode 换一换
格式:DOCX , 页数:57 ,大小:178.81KB ,
资源ID:4379638      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bingdoc.com/d-4379638.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(通用串口通信.docx)为本站会员(b****4)主动上传,冰点文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰点文库(发送邮件至service@bingdoc.com或直接QQ联系客服),我们立即给予删除!

通用串口通信.docx

1、通用串口通信两片51单片机互相通信的串行通信程序(一个发送程序,一个接收程序)作者:佚名 来源:不详 录入:Admin 更新时间:2008-7-26 20:01:31 点击数:2 【字体: 】系统晶振是 11.0592 MHz;51单片机发送单片机程序;此程序用Proteus仿真通过 ;此程序在硬件上测试通过;2007-05-27;附有简化电路图;为了使初学者能看懂,程序与图尽可能的简单扼要;实验现象为,发送端的P1口的哪个键被接下,接收端的哪个灯对应着亮;如果把两个单片机的T和R通过无线模块(如基于MCP2120芯片的模块)来扩充,便可做成无线通信 ORG 0000H AJMP START

2、ORG 0040HSTART: MOV SP,#60H MOV SCON,#50H ;串口 方式 1 MOV TMOD,#20H ;T1 方式2 MOV TL1,#0FDH ;波特率 9600 的常数 MOV TH1,#0FDH SETB TR1 MOV r5,#00hWAIT: MOV p1,#0ffh MOV a ,p1 MOV r5,a lcall delay ;读键盘,这里去抖动,还要加几句话 MOV a ,p1 nop CJNE A,5,WAIT ;是否有键输入 MOV SBUF,a ;串口输出键盘输入的值 NOPSS: JBC TI,WAIT ;是否发送完毕 SJMP SSDELA

3、Y: ;延时子程序 PUSH 0 ;保存现场 PUSH 1 MOV 0,#06HDELAY1: MOV 1,#0H DJNZ 1,$ DJNZ 0,DELAY1 POP 1 ;恢复现场 POP 0 RET END;系统晶振是 11.0592 MHz;51单片机接收单片机程序;此程序用Proteus仿真通过;此程序在硬件上测试通过;2007-05-27;附有简化电路图;为了使初学者能看懂,程序与图尽可能的简单扼要;实验现象为,发送端的P1口的哪个键被接下,接收端的哪个灯对应着亮;如果把两个单片机的T和R通过无线模块(如基于MCP2120芯片的模块)来扩充,便可做成无线通信 ORG 0000H A

4、JMP START ORG 0040HSTART: MOV SCON,#50H ;串口 方式 1 MOV TMOD,#20H ;T1 方式 2 MOV TL1,#0FDH ;波特率 9600 的常数 MOV TH1,#0FDH SETB TR1 WAIT: JBC RI,DIS_REC ;是否接收到数据 sjmp waitDIS_REC: MOV A,SBUF ;读串口接收到的数据 MOV p1,a SJMP wait endPC机与多MCS51单片机间的串行通信设计作者:北京工业大学许丽佳陈阳舟来源:电子工程师点击数:1023更新时间:2006-5-30您可以添加到网摘 让更多人关注此文章:

5、摘要:主要讲解了IBMPC机与MCS51单片机多机系统的通信原理,给出了其硬件接口框图,并详细地分析了系统的多机通信软件设计。 关键词:单片机,分布式系统,串行通信1引言在测控系统和工程应用中,常遇到多项任务需同时执行的情况,因而主从式多机分布式系统成为现代工业广泛应用的模式。它们大多由IBMPC微机和MCS51单片机组成。单片机功能强、体积小、价格低廉、开发应用方便,尤其具有全双工串行通讯的特点,在工业控制、数据采集、智能仪器仪表、家用电器方面都有广泛的应用。同时,IBMPC机正好补充单片机人机对话和外围设备薄弱的缺陷。各单片机独立完成数据采集处理和控制任务,同时通过通信接口将数据传给PC机

6、,PC机将这些数据进行处理、显示或打印,把各种控制命令传给单片机,以实现集中管理和最优控制。故IBMPC机(上位机)与各MCS51单片机(下位机)之间的通信显得尤其重要。本文主要探讨它们之间的远距离串行通信接口和软件程序设计。2硬件设计接口RS232C串行通信接口是美国电气工业协会(EIA)与BELL公司等一起开发的一种标准通信协议,现在它在终端、外设与计算机中被广泛采用。该标准规定了21个信号和25个引脚,但在智能仪器与计算机之间的通信中常用2个信号及3个引脚(2脚数据输入,3脚数据输出,7脚信号地)。它采用双极性的负逻辑信号,0逻辑信号为3V至12V,1逻辑信号为3V至12V,它的传输速率

7、最大为20kbits,传输距离仅为15m。由于RS232主要是完成电平移位、转换和信号反相等,所以它有自己的电平转换与驱动芯片,如MC1488(发送)与MC1489(接受)。IBMPC机有两个标准的RS232串行口,其电平采用的是EIA电平,而MCS51单片机的串行通信是由TXD(发送数据)和RXD(接收数据)来进行全双工通信的,它们的电平是TTL电平,为了PC机与MCS51机之间能可靠地进行串行通信,需要用电平转换芯片。由于MC1488和MC1489需要12V、5V电源供电,故采用MAXIM公司生产的低功耗、单电源的MAX232芯片,因为它自身带有电源电压变换器,可以把5V电源变换成RS23

8、2输出电平所需的10V电压,能实现RS232的技术指标,并只需要5V的电源,为串行通信带来了较好的性能和低廉的价格。MAX232的接口电路图如图2所示。PC机采用可编程串行异步通信控制器8251A来实现,通过对INS8251A初始化可以控制串行数据传送格式和速度及其工作方式,使得它与单片机的通信方式一致,从而实现PC机与单片机之间的通信。MCS51和8251A的连接图见图3。由于远距离数据传输,在系统中用了两片MAX485芯片进行数据传送,还采用了两级光电隔离来提高系统的抗干扰能力。单片机和PC机之间的RS232通信硬件接口电路框图如图4所示。3串行通信的软件程序设计31主从式多机通信原理MC

9、S51用于多机通信时必须工作在方式2或方式3。以方式3为例,每发送一帧数据为11位:1位起始位(0),8位数据位和1位停止位(1),附加的第9位数据在非多机系统中为奇偶校验位,在发送端有SCON的TB8产生,在接收端传送到SCON的RB8。它还可设定为“0”或“1”作为在多机通信中区分数据帧(0标志)还是地址帧(1标志)的标志。在MCS51多机系统中有以下协议:所有的各从机均处于听命状态,即SM21,以便接收主机发来的地址,当接收到一帧信息的RB8为“1”时,表示主机发送来的是地址信息,所有的从机均发生接收中断,否则中断屏蔽。当一从机进入相应的中断服务程序,把接收到的地址和本机的地址比较,如果

10、相符合就令其SM20,并向主机发回本机地址以作应答,该从机就与主机联通,准备接收主机发来的命令或数据信息,而其他的未被寻址从机保持SM21并退出各自的中断服务程序。这样,只有SM20的从机才能接收到主机发送来的数据信息,顺利实现地址帧和数据帧的分离。被寻址从机在通信完成后重新使SM21,并退出中断服务程序,等待下次通信。32多机通信协议要实现单片机和PC机的正常通信,必须正确设定它们两者之间的通信方式,保证双方都用相同的波特率、起始位、停止位、奇偶校验位,并且要建立双方通信的应答信号。单片机既可工作在同步移位寄存器方式下也可工作在UART(通用异步收发器)下。串行口的通信方式是由特殊功能寄存器

11、SCON来控制的。其各控制定义如下: SM0,SM1:工作模式设定位;SM2:允许使用方法2、3多机通信控制位;RB8:接收数据第9位;TB8:发送数据第9位;TI:发送中断标志;RI:接收中断标志。本文中工作方式为3,即9位UART定时器T1作为波特率发生器,工作在方式2,若选定波特率为1200bps,则计数初值为0E8H(SMOD0,时钟频率Fosc为11059MHz)。PC机的异步通信接口为INTEL8251A,它可设定1位、15位或2位停止位,数据可在58位之间选择,通信频率为096Kbps,有奇偶校验、帧校验、溢出校验三种方式。可通过对它写入一定的方式控制字、命令控制字从而进行初始化

12、。它与MCS51的连接如前面所示,则它的数据口地址为0F0H,控制口地址为0F1H。它的工作状态寄存于其状态字寄存器中,可由MCS51的CPU读取。通信协议如下:(1)串行通信波特率为1200bps;(2)帧格式为8位数据位,一位起始位,一位可编程的第9位(即发送和接收的地址数据位的标志位),一位停止位;(3)主机和从机遵循主从原则,主机用呼叫方式选择从机,数据在主机和从机之间双向传递,各从机之间的相互通信需通过主机作为中介;(4)主从机之间还应传送一些供它们识别的命令和状态字,如以00H表示主机发送从机接收命令,以01H表示从机发送主机接收命令等。33通信程序设计思路及其实现程序主要包括主机

13、程序(由主机主程序和通信子程序组成)、从机主程序和其中断服务程序组成。主机程序主要完成对8251A的初始化以及主机与从机之间的通信,主机程序框图见图5。而从机主程序主要完成对串行口的初始化、波特率的设置(应与8251A的波特率一致),它的中断程序主要用来完成MCS51单片机与PC机的数据通信。从机中断服务程序框图见图6。 这里简单介绍8251A的初始化程序,设8251A工作于异步通信方式,波特率系数1,字符长度为8位,偶校验,所以方式字为7DH,又设8251A为全双工方式,出错标志复位,故其命令控制字为27H,其相应的初始化程序如下:MOV R0,0F0H4结束语本系统软硬件在IBM PCXT

14、机和DICE系列的MCS51单片机上进行过调试,运行良好,验证了其在 仿真平台的控制,现已用于实际系统,且特别适用于从机实时性要求较高的中小型工控系统。参考文献1何立民单片机应用文集(2)北京:北京航空航天大学出版社,19932何立民单片机高级教程北京:北京航空航天大学出版社,20003胡汉才单片机原理及其接口技术北京:清华大学出版社,19964陈荣保,肖本贤,李钢基于MODEM和单片机的远程通讯系统设计与实现微电子学与计算机,1999(1)5何飞跃。基于MCS51单片机的LCU与上位机的通信微计算机信息,1999(1)单片机C51串口中断接收和发送测试例程(含通信协议的实现)通信协议: 第1

15、字节,MSB为1,为第1字节标志,第2字节,MSB为0,为非第一字节标志,其余类推,最后一个字节为前几个字节后7位的异或校验和。 测试方法:可以将串口调试助手的发送框写上 95 10 20 25,并选上16进制发送,接收框选上16进制显示,如果每发送一次就接收到95 10 20 25,说明测试成功。 /这是一个单片机C51串口接收(中断)和发送例程,可以用来测试51单片机的中断接收 /和查询发送,另外我觉得发送没有必要用中断,因为程序的开销是一样的 #include #include #define INBUF_LEN 4 /数据长度 unsigned char inbuf1INBUF_LEN

16、; unsigned char checksum,count3; bit read_flag= 0 ; void init_serialcomm( void ) SCON = 0x50 ; /SCON: serail mode 1, 8-bit UART, enable ucvr TMOD |= 0x20 ; /TMOD: timer 1, mode 2, 8-bit reload PCON |= 0x80 ; /SMOD=1; TH1 = 0xF4 ; /Baud:4800 fosc=11.0592MHz IE |= 0x90 ; /Enable Serial Interrupt TR1 =

17、 1 ; / timer 1 run / TI=1; /向串口发送一个字符 void send_char_com( unsigned char ch) SBUF=ch; while (TI= 0 ); TI= 0 ; /向串口发送一个字符串,strlen为该字符串长度 void send_string_com( unsigned char *str, unsigned int strlen) unsigned int k= 0 ; do send_char_com(*(str + k); k+; while (k 127 ) count3= 0 ; inbuf1count3=ch; check

18、sum= ch- 128 ; else count3+; inbuf1count3=ch; checksum = ch; if ( (count3=(INBUF_LEN- 1 ) & (!checksum) ) read_flag= 1 ; /如果串口接收的数据达到INBUF_LEN个,且校验没错, /就置位取数标志 main() init_serialcomm(); /初始化串口 while ( 1 ) if (read_flag) /如果取数标志已置位,就将读到的数从串口发出 read_flag= 0 ; /取数标志清0 send_string_com(inbuf1,INBUF_LEN);

19、 RS-232、RS-422与RS-485标准及应用一、RS-232、RS-422与RS-485的由来 RS-232、RS-422与RS-485都是串行数据接口标准,最初都是由电子工业协会(EIA)制订并发布的,RS-232在1962年发布,命名为EIA-232-E,作为工业标准,以保证不同厂家产品之间的兼容。RS-422由RS-232发展而来,它是为弥补RS-232之不足而提出的。为改进RS-232通信距离短、速率低的缺点,RS-422定义了一种平衡通信接口,将传输速率提高到10Mb/s,传输距离延长到4000英尺(速率低于100kb/s时),并允许在一条平衡总线上连接最多10个接收器。RS

20、-422是一种单机发送、多机接收的单向、平衡传输规范,被命名为TIA/EIA-422-A标准。为扩展应用范围,EIA又于1983年在RS-422基础上制定了RS-485标准,增加了多点、双向通信能力,即允许多个发送器连接到同一条总线上,同时增加了发送器的驱动能力和冲突保护特性,扩展了总线共模范围,后命名为TIA/EIA-485-A标准。由于EIA提出的建议标准都是以“RS”作为前缀,所以在通讯工业领域,仍然习惯将上述标准以RS作前缀称谓。 RS-232、RS-422与RS-485标准只对接口的电气特性做出规定,而不涉及接插件、电缆或协议,在此基础上用户可以建立自己的高层通信协议。因此在视频界的

21、应用,许多厂家都建立了一套高层通信协议,或公开或厂家独家使用。如录像机厂家中的Sony与松下对录像机的RS-422控制协议是有差异的,视频服务器上的控制协议则更多了,如Louth、Odetis协议是公开的,而ProLINK则是基于Profile上的。 二、RS-232串行接口标准 目前RS-232是PC机与通信工业中应用最广泛的一种串行接口。RS-232被定义为一种在低速率串行通讯中增加通讯距离的单端标准。RS-232采取不平衡传输方式,即所谓单端通讯。 收、发端的数据信号是相对于信号地,如从DTE设备发出的数据在使用DB25连接器时是2脚相对7脚(信号地)的电平,DB25各引脚定义参见图1。

22、典型的RS-232信号在正负电平之间摆动,在发送数据时,发送端驱动器输出正电平在+5+15V,负电平在-5-15V电平。当无数据传输时,线上为TTL,从开始传送数据到结束,线上电平从TTL电平到RS-232电平再返回TTL电平。接收器典型的工作电平在+3+12V与-3-12V。由于发送电平与接收电平的差仅为2V至3V左右,所以其共模抑制能力差,再加上双绞线上的分布电容,其传送距离最大为约15米,最高速率为20kb/s。RS-232是为点对点(即只用一对收、发设备)通讯而设计的,其驱动器负载为37k。所以RS-232适合本地设备之间的通信。其有关电气参数参见表1。 规定 RS232 RS422

23、R485 工作方式 单端 差分 差分 节点数 1收、1发 1发10收 1发32收 最大传输电缆长度 50英尺 400英尺 400英尺 最大传输速率 20Kb/S 10Mb/s 10Mb/s 最大驱动输出电压 +/-25V -0.25V+6V -7V+12V 驱动器输出信号电平 (负载最小值) 负载 +/-5V+/-15V +/-2.0V +/-1.5V 驱动器输出信号电平 (空载最大值) 空载 +/-25V +/-6V +/-6V 驱动器负载阻抗() 3K7K 100 54 摆率(最大值) 30V/s N/A N/A 接收器输入电压范围 +/-15V -10V+10V -7V+12V 接收器输入门限 +/-3V +/-200mV +/-200mV 接收器输入电阻() 3K7K 4K(最小) 12K 驱动器共模电压 -3V+3V -1V+3V 接收器共模电压 -7V+7V -7V+12V 表1 三、RS-422与RS-485串行接口标准 1平衡传输 RS-422、RS-485与RS-232不一样,数据信号采用差分传输方式,也称作平衡传输,它使用一对双绞线,将其中一线定义为A,另一线定义为B,如图2。 通常情况下,发送驱动器A、B之间的正电平在+2+6V,是一个逻辑

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2