




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、精选优质文档-倾情为你奉上0 前言 单片机因其优越的性价比和灵活的功能配置而被广泛的应用于测控领域。而PC则因为丰富的软、硬件资源,被广泛应用于网络监控系统中。这就是一台PC与多台单片机所组成的主从式网络测控系统。串行通信是计算机和外部设备进行数据交换的重要渠道,由于其成本低,性能稳定并遵循统一的标准,因而在工程中被广泛应用。本文以华东石油局的一台油田钻井的滚动轴承信号采集系统为例,讨论一种基于串行通信标准的测控系统的通信协议及其具体的软、硬件实现。在本系统中,上位机以PC和Windows操作系统为软、硬件资源;下位机采用ATMEL公司89C51
2、,总线标准采用的是测控系统常用的RS-485。1 通信系统的硬件设计尽管RS-232有些缺点,但在两台短距离设备间的短距离信息传输时,最通用的还是RS-232。但对于多台设备的长距离传输,它就很难实现。而RS-485是一个多引出线接口,这个接口可以有多个驱动器和接收器,可以实现一台PC和多台单片机之间的串行通信;而且RS-485的最长的传输距离为1200m,适合中距离的传输。本文针对油田钻井的滚动轴承信号采集及传输,根据工地实际工作环境,采用RS-485通信接口。1.1 PC和RS-485总线的接口3该接口的主要功能是完成RS-232到RS-485的转变,完成这个功能的芯片很多,比
3、如MAX-485,我们的系统采用的是ADAM公司的ADAM4250,RS-232/RS-485转换器,结构如图(1)所示:
4、60; 图1 ADAM4250 1.2 89c51和RS-485总线的接口1,4 由于MAX48x/49x系列收发器组成的差分平衡系统抗干扰能力强,接收器可检测到200mV的信号,传输的数据可以在千米以外得到恢复,特别适合远距离通信,可以组成标准的通信网络。本系统采用MAX487接口芯片作为收发器,由于它的输入阻抗是标准接收器的4倍,因此最多可以挂128个接收器。1.3 系统的总体连接 本系统采用一
5、主多从的总线型连接方式,如图2所示。为了消除反射,吸收噪音,采用2个120 的匹配电阻R1和R2连在总线的两端。其中n不大于128。 图2 系统总体连接图 2 通信协议的设计 由于RS-485通
6、信是一种半双工通信,发送和接受共用同一物理通道,在任意时刻只允许一台单片机处于发送状态,因此要求应答的单片机必须在侦听到总线上呼叫信号已经发送完毕,并且在没有其他单片机应答信号的情况下才能应答。如果在时序上配合不好,就会发生总线冲突,使整个系统的通信瘫痪,无法正常工作。上位机与下位机之间如何进行数据传输,怎么提高通信的效率和可靠性,以及对通信过程中的故障处理,帧格式的约定,都需要一套详尽的通信协议。RS-485总线只制定了物理层电气标准,对上层通信协议没有规定。这给设计者提供了很大的灵活性。一套完整的通信协议既要求结构简单,功能完备,又要求具有可扩充性与兼容性,并且尽量标准化。本系统的协议就是
7、从这几个方面考虑的,它主要包括以下几个部分:2.1 上下位机间的通信过程(1)通信均有上位机发起,下位机不主动申请通信;(2)当处于轮询状态时,上位机依据下位机地址,定时向下位机发送呼叫指令。此时,每台下位机都中断接受并判断,地址不相符的下位机中断返回,执行其他下位机任务;反之则把本机地址及其状态作为应答信号发送给上位机。上位机接收到应答信号后,可以作进一步的处理。2.2 通信协议本系统采用比较简单的通信协议:PC机需要与单片机通信时,首先发送一个字节的信号,以16进制表示为AAH,单片机接收到AAH后,就将需要发送的数据连续地向PC机发送;PC机与单片机通信结束时,向单片机发送一个字节的信号
8、,以16进制表示为55H,结束数据发送。单片机发送给PC机的数据格式为: 开始码数据体校验和结束码00HDATA0DATA1DATAN-1DATASUMFFH 3 通信系统的软件设计3.1 上位机通信软件设计 本系统的上位机软件用VB6.0实现,利用VB6.0提供的MSComm通信控件,可以方便的访问串口,实现数据的接收和发送。由于本系统用一台上位机监控多台下位机,所以上位机监控界面主要包括3个:(1)轮询界面,即主监控界面。可以监测到下位机的状态(运行,停机,故障)。考虑到通用型,下位机的台数可以根据实际需要添加或删除,最多可带128台下位机。本系统默认为50
9、台。(2)下位机运行监视和控制界面。主要是对某一台定位控制器进行状态监视和位置给定。(3)下位机内部参数设定界面。可以根据实际需要对某一台定位控制器的运行参数进行修改。 开发通信程序的关键是发送和接受数据。下面给出上位机中数据发送和接收的部分程序: MSComml.Settings=Settings ; 串口的波特率设置
10、 send_arr0(0)=&H02 数据发送数组 send_arr1(0)=BPQ_Address send_arr7(0)=se
11、nd_arr1(0)Xor send_arr2(0)Xor send_arr6(6) Output_Enable=False ; 关闭轮询 Open_Port
12、0; 开串口 MSComm1.RTSEnable=False 置发送状态
13、0; MSComm1.Output=send_arr0 发送 Choose_Delay
14、0; 发送延时 MSComm1.Output=send_arr1 Choose_Delay MSComm1.Output=sen_arr7 Choose_Delay MSComm1.RTSEnable=True &
15、#160; 置接收状态 Choose_Frame_delay ; 接收延时 Accept_arr=MSCo
16、mm1.Input 数据接收数组 For j=Lbound(Accept_arr)To Ubound(Accept_arr) If Ubound(Accept_arr)=7 Then
17、0; Buf(j)=buf(j)+Str(Accept_arr(j) 由于程序较长,对程序其它部分不详细叙述,这里只列几个注意点:(1)由于采用半双工传输方式,开始发送前要禁止接受。发送结束后要先关闭发送再开启接收,以保证数据传输的正确性。(2)发送以字节为单位,每个字节间要考虑延时,以免因溢出而丢失数据。延时时间主要取决于传输时所确定的波特率。(3)接收数据也要考虑延时,以等待下位机将一个单位的数据全部发给上位机。3.2 下位机通信软件的设计2本系统中的单片机采用的是ATMEL公司89C51,这是在国内应用相当广泛的一款单片机,程序用C51来编写
18、,从实时性角度来考虑,下位机的通信方式采用中断方式。这样下位机程序就包括了下位机主程序和下位机中断服务程序。主程序用于定时器T1初始化、串行口初始化和中断初始化。中断服务程序用于对上位机的通信。主程序和中断服务程序的框图如图3、图4所示。由于篇幅所限,程序这里就不做介绍。 图(3) 下位机主程序框图 图(4) 下位机中断服务程序框图49
19、9元 378元 780元 1200元 950元 480元4 结束语 本文设计并实现了一种应用于油田钻井滚动轴承的振动信号测控系统。该系统采用PC与多单片机之间的串行通信实现测控,采用RS-485总线标准,半双工传输方式。上位机采用Windows环境 下VB6.0开发,编程简单,界面良好,维护方便;下位机利用单片机内自带的USART通信接口,很好的实现异步串行通信。实验表明,该方法对于工作环境比较恶劣的钻井油田滚动轴承的振动信号的采集与传输,达到了实际要求,为滚动轴承故障检测提供了方便而有效的振动信号。 参考文献基金号:江苏省
20、高校自然科学基金资助项目(03KJB)1 范逸之,陈立元 Visual Basic与RS-232串行通信控制 北京:中国青年出版社 20022 石东海 单片机数据通信技术从入门到精通 西安:西安电子出版社 20023 ADAM 4000 Data Acquisition Modules Users Manual Advantech Co.Ltd 1999
21、160; 4 王金成 王旭 一种基于RS-485总线的远程通信系统软件实现 微计算机信息 2001年17卷第9期 系统晶振是 11.0592 MHz;51单片机发送单片机程序;此程序用Proteus仿真通过 ;此程序在硬件上测试通过;2007-05-27;附有简化电路图;为了使初学者能看懂,程序与图尽可能的简单扼要;实验现象为,发送端的P1口的哪个键被接下,接收端的哪个灯对应着亮;如果把两个单片机的T和R通过无线模块(如基于MCP2120芯片的模块)来扩充,便可做成无线通信 &
22、#160; ORG 0000H
23、60; AJMP START ORG
24、 0040HSTART: MOV SP,#60H
25、 MOV SCON,#50H
26、0; ;串口 方式 1 MOV TMOD,#20H
27、; ;T1 方式2 MOV
28、; TL1,#0FDH ;波特率 9600 的常数 MOV &
29、#160; TH1,#0FDH SETB TR1
30、 mov r5,#00h
31、 WAIT: mov p1,#0ffh
32、 mov a ,p1 mov
33、0; r5,a lcall delay
34、; ;读键盘,这里去抖动,还要加几句话 mov a ,p1 &
35、#160; nop CJNE A,5,WAIT &
36、#160; ;是否有键输入 MOV SBUF,a
37、 ;串口输出键盘输入的值 NOPSS:
38、; JBC TI,WAIT ;是否发送完毕
39、60; SJMP SSDELAY: &
40、#160; ;延时子程序 PUSH &
41、#160; 0 ;保存现场
42、; PUSH 1 MOV
43、 0,#06HDELAY1: MOV 1,#0H DJNZ &
44、#160; 1,$ DJNZ 0,DELAY1 &
45、#160; POP 1 &
46、#160; ;恢复现场 POP 0 &
47、#160; RET END;系统晶振是 11.0592 MHz;51单片机接收单片机程序;此程序用Proteus仿真通过;此程序在硬件上测试通过;2007-05-27;附有简化电路图;为了使初学者能看懂,
48、程序与图尽可能的简单扼要;实验现象为,发送端的P1口的哪个键被接下,接收端的哪个灯对应着亮;如果把两个单片机的T和R通过无线模块(如基于MCP2120芯片的模块)来扩充,便可做成无线通信 ORG
49、; 0000H AJMP START
50、 ORG 0040HSTART:
51、160; MOV SCON,#50H ;串口 方式 1
52、60; MOV TMOD,#20H ;T1 方式 2
53、0; MOV TL1,#0FDH
54、160; ;波特率 9600 的常数 MOV TH1,#0FDH
55、0; SETB TR1 &
56、#160; WAIT: JBC RI,DIS_REC
57、0; ;是否接收到数据 sjmp
58、160; waitDIS_REC: MOV A,SBUF
59、160; ;读串口接收到的数据 mov
60、; p1,a SJMP wait
61、160; end双机通信怎么连,多机通信并上去就可以了 回答者: - 2009-4-2 15:16 5-接地;8-电源; 一主机多从机时:单片机的RXD接MAX485的RO,单片机的TXD接MAX的DI;MAX485的DE和RE接单片机IO口上(只接在一个IO口即可,因为是半双工通信)。 主机MAX485与从机MAX485:主机A接从机B,从机A接主机B。(MAX485的A和B之间接一匹配电阻大小100
62、欧) 回答者: - 2009-4-3 10:01 给设计图?RS-485单片机的话,单纯从硬件来说,其实和RS-232串口非常类似,只是将232芯片替换成485芯片就可以了,多机通信的问题,485本身就支持点对多点通信的,只不过是半双工的,在软件编写的时候要多注意一下仲裁机制而已。这个是根据协议来的,485总线设备是带有地址码的,打个比方吧,232串口通信就是两个人通过电话进行通信,肯定只能点对点,而485则是教室里面一个老师和很多个学生交谈,当老师(主控设备)点名(即轮询到某个485地址码)要求某个学生(从设备)回答问题,这个学生如果没有翘课(从设备故障或者通信故障
63、)的话,就应答站起来回答问题。在老师点名,学生答问的过程中,都是只有一个人发言,因为485总线有这样的仲裁机制,所以才可以实现点到多点的通信,而232的则没有这个机制,所以不行。不知道这样是否清楚。 下图是使用MAX485芯片设计了一个RS232到RS485的转换接口电路图。AT89C51是一种带4K字节闪烁可编程可擦除只读存储器(FPEROMFalsh Programmable and Erasable Read Only Memory)的低电压,高性能CMOS8位微处理器,俗称单片机。AT89C2051是一种带2K字节闪烁可编程可擦除只读存储器的单片机。单片机的可擦除只读存储器可以反复擦除
64、100次。该器件采用ATMEL高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。由于将多功能8位CPU和闪烁存储器组合在单个芯片中,ATMEL的AT89C51是一种高效微控制器,AT89C2051是它的一种精简版本。AT89C单片机为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。外形及引脚排列如图所示主要特性:·与MCS-51 兼容 ·4K字节可编程闪烁存储器 ·寿命:1000写/擦循环·数据保留时间:10年·全静态工作:0Hz-24MHz·三级程序存储器锁定·128×8位内部RA
65、M·32可编程I/O线·两个16位定时器/计数器·5个中断源 ·可编程串行通道·低功耗的闲置和掉电模式·片内振荡器和时钟电路管脚说明:VCC:供电电压。GND:接地。P0口:P0口为一个8位漏级开路双向I/O口,每脚可吸收8TTL门电流。当P1口的管脚第一次写1时,被定义为高阻输入。P0能够用于外部程序数据存储器,它可以被定义为数据/地址的第八位。在FIASH编程时,P0 口作为原码输入口,当FIASH进行校验时,P0输出原码,此时P0外部必须被拉高。P1口:P1口是一个内部提供上拉电阻的8位双向I/O口,P1口缓冲器能接收输出4TT
66、L门电流。P1口管脚写入1后,被内部上拉为高,可用作输入,P1口被外部下拉为低电平时,将输出电流,这是由于内部上拉的缘故。在FLASH编程和校验时,P1口作为第八位地址接收。 P2口:P2口为一个内部上拉电阻的8位双向I/O口,P2口缓冲器可接收,输出4个TTL门电流,当P2口被写“1”时,其管脚被内部上拉电阻拉高,且作为输入。并因此作为输入时,P2口的管脚被外部拉低,将输出电流。这是由于内部上拉的缘故。P2口当用于外部程序存储器或16位地址外部数据存储器进行存取时,P2口输出地址的高八位。在给出地址“1”时,它利用内部上拉优势,当对外部八位地址数据存储器进行读写时,P2口输出其特殊功能寄存器
67、的内容。P2口在FLASH编程和校验时接收高八位地址信号和控制信号。P3口:P3口管脚是8个带内部上拉电阻的双向I/O口,可接收输出4个TTL门电流。当P3口写入“1”后,它们被内部上拉为高电平,并用作输入。作为输入,由于外部下拉为低电平,P3口将输出电流(ILL)这是由于上拉的缘故。P3口也可作为AT89C51的一些特殊功能口,如下表所示:口管脚 备选功能P3.0 RXD(串行输入口)P3.1 TXD(串行输出口)P3.2 /INT0(外部中断0)P3.3 /INT1(外部中断1)P3.4 T0(记时器0外部输入)P3.5 T1(记时器1外部输入)P3.6 /WR(外部数据存储器写选通)P3
68、.7 /RD(外部数据存储器读选通)P3口同时为闪烁编程和编程校验接收一些控制信号。RST:复位输入。当振荡器复位器件时,要保持RST脚两个机器周期的高电平时间。ALE/PROG:当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的地位字节。在FLASH编程期间,此引脚用于输入编程脉冲。在平时,ALE端以不变的频率周期输出正脉冲信号,此频率为振荡器频率的1/6。因此它可用作对外部输出的脉冲或用于定时目的。然而要注意的是:每当用作外部数据存储器时,将跳过一个ALE脉冲。如想禁止ALE的输出可在SFR8EH地址上置0。此时, ALE只有在执行MOVX,MOVC指令是ALE才起作用。另外,该引脚
69、被略微拉高。如果微处理器在外部执行状态ALE禁止,置位无效。/PSEN:外部程序存储器的选通信号。在由外部程序存储器取指期间,每个机器周期两次/PSEN有效。但在访问外部数据存储器时,这两次有效的/PSEN信号将不出现。/EA/VPP:当/EA保持低电平时,则在此期间外部程序存储器(0000H-FFFFH),不管是否有内部程序存储器。注意加密方式1时,/EA将内部锁定为RESET;当/EA端保持高电平时,此间内部程序存储器。在FLASH编程期间,此引脚也用于施加12V编程电源(VPP)。XTAL1:反向振荡放大器的输入及内部时钟工作电路的输入。XTAL2:来自反向振荡器的输出。振荡器特性:XT
70、AL1和XTAL2分别为反向放大器的输入和输出。该反向放大器可以配置为片内振荡器。石晶振荡和陶瓷振荡均可采用。如采用外部时钟源驱动器件,XTAL2应不接。有余输入至内部时钟信号要通过一个二分频触发器,因此对外部时钟信号的脉宽无任何要求,但必须保证脉冲的高低电平要求的宽度。PC机与单片机AT89C51的串行通信 在以单片机为基础的数据采集和实时控制系统中,通过计算机中的 RS-232 接口进行计算机与单片机之间的命令和数据传送,就可以利用计算机对生产现场进行监测和控制。由于计算机上的 RS-232 所传送的距离不超过 30m ,所以,在远距离的数据传送和控制时,可以用 的接口转换芯片
71、将 RS-232 转换成 RS-485 协议进行远距离传送。在发送和接收端都进行协议转换后, RS-485 协议对数据传送来说是相对透明的,所以依然可以使用计算机中的 RS-232 进行远距离的数据传送和控制。在最简单的 RS-232 直接传送通信系统中,只要发送和接收双方同时准备好,仅用信号发送端 (TXD) ,信号接收端 (RXD) 和信号地 (GND)3 根线即可进行通信;若以应答方式进行数据通信,可使用请求发送 (RTS) 、清除发送 (CTS) 或数据终端准备 (DTR) 、数据装置准备 (DSR) 进行硬件握手。在 Windows95 下,可以很方便地使用 Win32 通信 API
72、 函数来实现这些硬件的握手以及数据的传送。在 89C51 单片机系统中,分别从 P3.0 和 P3.1 引出串口线 RXD 和 TXD 通过专用的电平转换芯片转换成 RS-232 接口标准的电平,这样,二者之间就可以通过 RS-232 接口进行数字信号的传送。单片机也可以以直接传送或应答握手的方式进行数据通信,但由于握手方式占用其他的端口,而单片机的端口数量有限,所以,计算机与单片机的通信常采用直接传送的方式,本文将重点介绍。 1 Windows95 下的通信编程 Windows95 通信体系提
73、供了 1 个改进的串行应用程序接口 SAPI 用来进行交互式串行通信。其中,串口和其他通信设备是作为文件进行处理的,串口的打开、关闭、读取和写入所用的函数和操作文件的函数相同。 通信会话以调用 CreateFile 函数开始, CreateFile 函数为读访问或写访问打开串口,打开成功后返回该串口句柄,供读写串口时使用。 CreateFile 函数的使用如下: CreateFile(szDevice,fdwAccess,fdwShareMode,lpsa,fdwCreate,fdwAttrsAndFlags,hTemplateFile) 其中,第 1 个参数 szDevice 是要打开的串口
74、逻辑名,如 COM1 或 COM2 ;第 2 个参数 fdwAccess 指定串口的访问类型,如读、写或两者兼而有之,大部分通信是双向的,因而通常设置为: GENERICREAD GENERICWRITE ;第 3 个参数 fdwShareMode 指定串口的共享属性,串口不能共享,所以它必须为 0 ;第 4 个参数 lpsa 引用安全性属性结构;第 5 个参数 fdwCreate 指定如果 CreateFile 正被已有的文件调用时应做些什么,既然串口总是存在,此参数就必须被设置为 OPENEXISTING 。第 6 个参数 fdwAttrsAndFlags 描述了该端口的各种属性,对串口而
75、言,唯一有意义的设置是 FILEFLAGOVERLAPPED ,指定该设置时,端口 I/O 可以在后台进行;最后 1 个参数 hTemplateFile 是指向模板文件的句柄,当端口打开时,该参数为 NULL 。 打开串口后,在 Windows95 下可以对串口进行合适的配置。 Windows95 提供了 COMMPROP 结构, COMMPROP 结构中包含了对串口允许的设置,如波特率、数据位数、停止位的个数以及奇偶校验方法等,如果串口连接到调制解调器, COMMPROP 结构中还包含调制解调器支持的设置。但 COMMPROP 结构给出的只是
76、单纯的信息,它不能用来改变串口的设置。 Windows95 下串口设置的改变是通过改变它的 DCB 结构来实现的, DCB 结构中包含了所有串口的设置,其中包括硬件的握手、流控制等。 Windows95 提供 GetCommState 函数来得到当前串口的设置情况,该函数接收 1 个打开的端口句柄和 1 个指向 DCB 结构的指针,在 DCB 结构中返回信息, GetCommState 函数的补充函数是 SetCommState 函数, SetCommState 函数将 DCB 结构中的内容写向串口设置,这 2 个函数的调用如下: &
77、#160; BOOLGetCommState(hComm,&dcb) BOOLSetCommState(hComm,&dcb) 其中, hComm 为打开串口的句柄, dcb 为 1 个指向 DCB 的结构。 Windows95 中实现串口的读写函数与文件的读写函数相同,读写函数的使用格式如下: ReadFile(hComm,inbuff,nBytes,&a
78、mp;nBytesRead,&overlapped) WriteFile(hComm,outbuff,nBytes,&nBytesWrite,&overlapped) 其中,第 1 个参数是打开串口的句柄,第 2 个参数是数据所使用的缓冲区,第 3 个参数是要读取的字节数,第 4 个参数是实际读取的字节数,实际读取的字节数可能小于要读取的字节数,最后 1 个参数指向 1 个覆盖似的结构,当 CreateFile 中 dwAttrsAndFlags 参数设置为 FILEFL
79、AGOVERLAPPED 时,此参数可以指定 1 个 OVERLAPPED 结构,使数据的读写操作在后台进行。 读写端口可以通过 4 种技术来实现:查询、同步 I/O 、异步 I/O( 后台 I/O) 和事件驱动 I/O 。查询方式直接、易于理解,但占用大量 CPU 时间;同步 I/O 直到读取所指定字节数或超时时才返回,这样很容易长时间地阻塞线程;异步 I/O 可以在后台读写数据,而在前台做其他的事情;事件驱动 I/O 是由 Windows95 通知应用程序某些事件什么时候发生,然后根据所发生的事情来对串口进行操作。
80、 这 4 种不同的技术,各有利弊和自己适用的领域,所以,在不同的通信系统中,可以根据不同的要求采用不同的技术。在监测系统中,由于事件的偶然性和要求传送的实时性,计算机常采用事件驱动 I/O 方式来进行现场监测。 在事件驱动 I/O 方式下, Windows95 报告给应用程序的事件由函数 GetCommMask 返回,改变返回的事件时,可以使用 SetCommMask 函数设置,这 2 个函数的调用如下: GetCommMask(hComm,&dwMask)
81、60; SetCommMask(hComm,dwMask) 第 1 个参数是打开串口的句柄,第 2 个参数是要等待的 1 个或多个事件的掩码。在用 SetCommMask 设置了有用的事件后,应用程序调用 WaitCommEvent 函数来等待事件的发生,直到事件发生, WaitCommEvent 函数返回。 WaitCommEvent 函数使用格式如下: WaitCommEvent(hComm,&dwEvent,&overlapped)
82、160; 第 1 个参数是打开串口的句柄,第 2 个参数是返回的事件,第 3 个参数是指定同步或者异步操作。当函数返回后,可根据返回的事件掩码进行相应的串口操作。 完成通信后,串口应该关闭,否则,它始终处于打开状态,其他应用程序就不能打开或使用它。关闭串口的函数为: CloseHandle(hComm) ,其中, hComm 为打开的串口句柄。 2 单片机下的通信编程 单片机 89C51 的串行端口有 4 种工作方式,通过编程设计,可以使其工作在任一方式,以满
83、足不同场合的需要。其中,方式 0 主要用于外接移位寄存器,以扩展单片机的 I/O 电路;方式 1 主要用于双机之间或外设电路的通信;方式 2 、 3 除有方式 1 的功能外,还可用作多机通信,以构成多微机系统,方式 2 、 3 的区别在于波特率的不同。 单片机的串行通信的波特率可以程控设定,在不同的工作方式下,由时钟振荡频率的分频值或由定时器 T1 的定时溢出时间确定。 单片机的串行端口有 2 个控制寄存器,用来设置工作方式、发送或接收的状态、特征位、数据传送的波特率以及中断标志 TI 和 RI 。单片机的串行端口有 1 个数据寄存器 SBUF ,该寄存器为发送和接收所共有,在一定条件下,向
84、SBUF 写入数据就启动了发送过程,读 SBUF 就启动了接收过程。 单片机可以采用循环方式或中断方式实现串行数据的传送。在循环方式下,单片机循环对数据寄存器 SBUF 进行读写来实现数据的接收和发送;在中断方式下,对方式 1 、 2 来说, 1 帧数据发送或接收完后, TI/RI 自动置 1 ,请求串行中断,若 CPU 响应中断,则执行串行中断服务程序,并把 TI/RI 清 0 以再次响应中断。对在方式 2 、 3 下的接收,还要视串口控制寄存器 SCON 的设置才可确定 RI 是否被置位以及串口中断是否开放。 实时控制中,由于事件的突发性,常采用中断的方式进行数据传送,中断方式能更大限度地
85、提高资源的利用率,使 CPU 在不进行数据通信时做其他的工作。下面重点介绍单片机在方式 1 下的中断方式编程。 方式 1 是 10 位异步通信方式,其中包括 1 个起始位, 8 个数据位和 1 个停止位。波特率由定时器 T1 的溢出率和串口控制寄存器 SMOD 的状态确定,在 CPU 的晶振为 11.0592MHz 时,波特率常采用 9600b/s 。 对 SBUF 进行写操作就可启动发送,在发送移位时钟的同步下,从 TXD 先送出起始位,然后是 8 位数据位,最后是停止位,这样, 1 帧数据发送完,中断标志 TI 置位。 在允许接收的条件下 (REN 1) ,当 RXD 出现由 1 到 0
86、的负跳变时,即被当成是串行发送来的 1 帧数据的起始位,从而启动 1 次接收过程。当 8 位数据接收完,并检测到高电平停止位后,即把收到的 8 位数据装入 SBUF ,置位 RI , 1 帧数据的接收过程就完成了。 下面是单片机以方式 1 在直接传送下的中断接收和发送程序。由于没有使用通信握手,所以通信双方都应做好通信准备。在计算机接收、单片机发送时,由计算机先发送字母“ R ”,通知单片机计算机已准备好,然后计算机在事件驱动 I/O 方式下等待接收到字符“ Y ”;当单片机接收到“ R ”时,向计算机发送“ Y ”,表示单片机也已准备好,这样,一旦计算机接收到“ Y ”就表示双方都已准备好,
87、二者之间就可以进行数据交换了。在计算机发送、单片机接收时,计算机发送 1 帧数据,单片机响应中断,接收数据。单片机程序的具体实现过程如下: org 0000h ajmp start org 0023h ;串行中断入口 ljmp s&r org 0100h start: mov tmod,#20h ;设置定时器 T1 方式 2 mov pcon,#00h ;使 SMOD 为 0 mov tll,#0fdh ;波特率为 9600b/s mov thl,#0fdh setb ea ;开全局中断 clr et1 ;关 T1 中断 setb es ;开串行中断 setb trl ;开 T1 定时
88、 mov scon,#50h ;串行方式 1 ,允许接收 sjmp $ S&r:mov c,ri jcre cive;RI 为 1 ,执行接收子程序 sjmp send ;否则,执行发送子程序 recive:mov a,sbuf ;接收数据 clr ri cjne a,#52h,re ;是否接收到“ R ” mov a,#59h ;是,发送“ Y ” mov sbuf,a sjmpendtr re:mov rl,a ; r1 为接收数据存放地址 inc r1 sjmpendtr send:mova,r0 ;发送数据, r0 为存放数据的地址 movsbuf,a jnbti,$ clrt
89、i incr0 end tr:reti ;中断返回 3 结束语 串口通信是一种广泛应用于各个领域的通信方式,由于目前大部分计算机都安装了 Windows95 操作系统,所以本文具体实现了在 Windows95 下利用它的 SDK 函数来与单片机进行串口通信。本文所提出的实现函数在所有当前流行软件如 VC+ 、 Delphi 等中都可实现。它不仅可以用于近距离的 RS-232 通信,而且,还可以实现中远距离 RS-485 通信。在使用该程序的通信系统中,近远距离的通信都取得良好的效果。 参考文献
90、 1 MirhoCA,TerrisseA 著,贺军,高胜友译 .WINDOWS95 通信编程 . 北京:清华大学出版社, 1997 2 陈光东,赵性初 . 单片微型计算机原理与接口技术 . 武汉:华中理工大学出版社, 1993PC机与单片机AT89C51的串行通信22009-02-16 15:08线路控制寄存器(LCR):位 注 释 Bit7=1允许访问波特率因子寄存器Bit7=0允许访问接收/发送及中断允许寄存器Bit6设置间断,0-禁止,1-设置Bit5:3=XX0无校验Bit5:3=001奇
91、校验Bit5:3=011偶校验Bit5:3=101奇偶保持为1Bit5:3=111奇偶保持为0Bit2=01位停止位Bit2=12位停止位(数据位6-8位),1.5位停止位(5位数据位)Bit1:0=005位数据位Bit1:0=016位数据位Bit1:0=107位数据位Bit1:0=118位数据位LCR用来设定通讯所需的一些基本参数。Bit7为1指定波特率因子寄存器有效,为0则指定发送/接收及IER有效。Bit6置1会将发送端置为0,这将会使接收端产生一个“间断”。Bit3-5用来设定是否使用奇偶校验以及奇偶校验的类型,Bit3=1时使用校验,Bit4为0则为奇校验,1为偶校验,而Bit5则强
92、制校验为1或0,并由Bit4决定具体为0或1。Bit2用来设定停止位的长度,0表示1位停止位,为1则根据数据长度的不同使用1.5-2位停止位。Bit0:1用来设定数据长度。MODEM控制寄存器(MCR):位 注 释 Bit7未使用Bit6未使用Bit5自动流量控制(仅16750)Bit4环路测试Bit3辅助输出2Bit2辅助输出1Bit1设置RTSBit0设置DSRMCR寄存器可读可写,Bit4=1进入环路测试模式。Bit3-0用来控制对应的管脚。线路状态寄存器(LSR):位 注 释 Bit7FIFO中接收数据错误Bit6发送移位寄存器空Bit5发送保持寄存器空Bit4间断Bit3帧格式错Bi
93、t2奇偶错Bit1超越错Bit0接收数据就绪LSR为只读寄存器,当发生错误时Bit7为1,Bit6为1时标示发送保持及发送移位寄存器均空,Bit5为1时标示仅发送保持寄存器空,此时,可以由软件发送下一数据。当线路状态为0时Bit4置位为1,帧格式错时Bit3置位为1,奇偶错和超越错分别将Bit2及Bit1置位为1。Bit0置位为1表示接收数据就绪。MODEM状态寄存器(MSR):位 注 释 Bit7载波检测Bit6响铃指示Bit5DSR准备就绪Bit4CTS有效Bit3DCD已改变Bit2RI已改变Bit1DSR已改变Bit0CTS已改变MSR寄存器的高4位分别对应MODEM的状态线,低4位表示MODEM的状态线是否发生了变化。以上我们详细介绍了PC机的串行通讯硬件环境,以下将分别给出使用查询及中断驱动的方法编写的串行口驱动程序。这些程序仅使用RXD/TXD,无需硬件握手信号。(2) 使用查询方法的串行通讯程序设计:pollin
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025非正式住宅买卖合同书
- 2025简化版门市租赁合同
- 艺术元素解析
- 2025餐馆店面装修合同模板
- 2025【技术咨询合同(含技术指导、技术评估)】技术服务合同
- 2025标准服务员劳动合同
- 2025年解除商业租赁合同范本模板
- 2025借款抵押股权合同示范文本
- 2025版权质押合同适用范围
- 《效益引擎:课件中的成本削减策略》
- (二模)2025年深圳市高三年级第二次调研考试历史试卷(含标准答案)
- 广西《疼痛综合评估规范》(材料)
- 2025年山东省淄博市张店区中考一模历史试题(含答案)
- 美容师考试与法律法规相关知识及试题答案
- 推动研究生教育高质量发展方案
- 陕西省2024年高中学业水平合格考化学试卷试题(含答案解析)
- 输液泵/微量注射泵使用技术操作考核评分标准
- 八十天环游地球-完整版PPT
- DB32-T 1072-2018 太湖地区城镇污水处理厂及重点工业行业主要水污染物排放限值-(高清现行)
- 江西省鄱阳湖康山蓄滞洪区安全建设工程项目环境影响报告书
- SJG 74-2020 深圳市安装工程消耗量定额-高清现行
评论
0/150
提交评论