毕业设计14PC机与单片机串行通信的研究.pdf_第1页
毕业设计14PC机与单片机串行通信的研究.pdf_第2页
毕业设计14PC机与单片机串行通信的研究.pdf_第3页
毕业设计14PC机与单片机串行通信的研究.pdf_第4页
毕业设计14PC机与单片机串行通信的研究.pdf_第5页
已阅读5页,还剩1页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

收稿日期 : 2003 - 08 - 26作者简介 : 梁中华 (1952 - ) ,男 ,辽宁北票人 ,教授 .信息科学与工程 文章编号 : 1000 - 1646 (2005) 03 - 0302 - 06PC 机与单片机串行通信的研究梁中华 1 , 王子威 2 , 祁春清 1 , 索 迹 1(11 沈阳工业大学 电气工程学院 , 沈阳 110023 ; 21 辽宁石油化工大学 信息工程学院 , 辽宁 抚顺 113001)摘 要 : 针对研究生常需要数据采集而设计了一个串行通信系统 . 该系统上位机为 PC 机 ,下位机为 MCS251 单片机 . 文中给出了通信协议设计 ,硬件设计和软件设计 . 协议中有 6 种通信命令 ,适用于各种数据交换 ;硬件方面设计了时钟电路和波特率配置 ;软件方面完成了中断子程序、数据交换子程序和上位机串行通讯程序的设计、编写和调试 . 下位机用汇编语言 ,上位机用 C 语言 ;该串行通信系统的硬件与软件已调试成功并运行良好 .关 键 词 : 串行通信 ; 单片机 ; 波特率 ; 多机通信 ; 通信协议中图分类号 : TP 91413 文献标识码 : AResearch of serial communication bet ween PC and MCS251 serial single chipL IAN G Zhong2hua1 , WAN G Zi2wei2 , Q I Chun2qing1 , SUO Ji1(11 School of Electrical Engineering , Shenyang University of Technology , Shenyang 110023 , China ; 21 School of Information& Engineering , Liaoning University of Petroleum & Chemical Technology , Fushun 113001 , China)Abstract : Presents a serial communication system in order to satisfy the postgraduate need of collecting data.The host computer is PC , while the slave computer is single chip computer MCS251. The paper designs theserial communication protocol ,the hardware and software. There are six commands that can apply all kindsof data exchange in the serial communication protocol. In the hardware , the clock circuit is designed , andthe baud rate is configured. In the software , the programs , such as the interruption subroutine , dataexchange subroutine and the host serial communication subroutine , are designed , compiled and debugged.C language is adopted in the host computer , while the assemble language is used in slave computer. Thehardware and software of the system have been successfully debugged and run.Key words : serial communication ; single chip computer ;baud rate ;multi2computer serial communication ;communication protocol在电力电子器件故障预报的研究中制作了数据采集系统 ,其中用到了串行通信技术 ,设计了一种实用的串行通信的硬件和软件 ,并且已调试成功 . 这套软硬件还可以应用在主从式集散控制系统上 . 它充分地利用了单片机测控功能强的优点和 PC 机数据处理、图形显示的优势 . 本设计使用PC机的 RS2232C 串口 ,用 (收、发、地 ) 三线制传输数据 ,连线少 ,接口简单 .1 硬件接口电路的连接上位机为 PC 机 ,使用 COM1 或 COM2. 下位机为 MCS251 单片机 ,使用内置的 UART. IBM -PC 的串行口采用 RS2232C 标准 ,为 + 12 V 电平 ,MCS251 的串行口是 TTL 电平 . 这里通信采用主从方式 ,由 PC 机确定与哪个单片机进行通信 . 其接口电路如图 1 所示 . 图中 MC1488 为发送电平转换电路 ,MC1489 为接收电平转换电路 . 从PC 机引出的发送线 ( TXD) ,经过 1489 与单片机接收端 (RXD)相连 . 由于 1488 为两态输出不能直接连在一起 ,故通过二极管组成线或电路后接到PC 机的接收端 (RXD)上 . 图 1 中的二极管的型号均为 4148.第 27 卷 第 3 期2 0 0 5 年 6 月沈 阳 工 业 大 学 学 报Journal of Shenyang University of TechnologyVol127 No13J un. 2 0 0 5图 1 上下位机通信接口图Fig. 1 Interfacing hardware diagram of communicationbetween PC and single chip2 串行通信中波特率的设置在串行通信中 ,通信双方应该采用相同的波特率以确保通信成功 .PC 机系统中配备有异步通信适配器 ,该板上有 8250 异步通信接口 , PC 机上波特率的设置是通过 8250 初始化而实现的 . 在 COM2 的 8250 寄存器中 ,2F8H、 2F9H 分别设置为波特率因子的低8 位和高 8 位值 . 该因子 ( k) 的取值范围在 1 65535 之间 ,对输入时钟 (11843 2) 进行分频 ,产生16 倍波特率的时钟 ,波特率为 11843 2/ (16 k) .MCS251 单片机的串行接口 ( UART) 是一个全双工的接收缓冲式的串行通信接口 ,可以同时发送和接收数据 . 波特率随串行口工作方式选择不同而异 . 它除了与系统的晶振、特殊控制寄存器PCON 的 SMOD 位 (D7 位 ) 有关外 ,还与定时器T1 的设置有关 . 为了减少误差或者说为了不受单片机时钟频率的限制 ,这里采用外部时钟电路 . 设置串口工作在方式 3 ,在此方式下可选不同的波特率 ,并且对于 MCS251 系列单片机来说用 T1 做波特率发生器通用性好 . T1 工作在方式 2 (计数方式 ) ,8 位 ,自装入 ,当使用内部时钟 f OSC时 ,串口波特率 f b 为f b = 2SMOD f OSC32 12 256 - ( TH1) 当使用外部时钟 ( f e) 时f b = 2SMOD f e32 256 - ( TH1) 当 f b = 9 600 b/ s 时 ,外部时钟频率 f e 的计算如下f e = 32256 - TH1 2SMOD f b =16 9 600 = 15316 kHz其中 :SMOD = 1 , TH1 = 255.即 f e = 916 kHz 16 = 15316 kHz.外时钟电路图如图 2 所示 . 该电路工作频率虽不如晶振电路稳定 ,但是电路简单 ,易获得所需的 15316 kHz 的频率 ,且调试后证明串口可以稳定工作 .图 2 外部时钟产生电路Fig. 2 The outer clock producing circuit图 2 的频率计算公式为1f e = RClnV DD - V T-V DD - V T+ V T+V T-要得到 15316 kHz 的频率 ,图 2 中参数为V DD = 5 V , V T- = 2 V , V T+ = 3 V , C =1 000 p F , R = 8103 k .3 上下位机串行通信协议的设计311 基本思路31111 下位机工作方式下位机采用半双工工作方式 ,分三步骤执行 :首先接收命令 ,此时不向上位机发送数据 ;接收完命令后处理该命令 ,这期间不接收也不发送 ;最后给上位机回复 ,此时 ,也不接收数据 .31112 串行通信口数据缓冲区在外 RAM 中为串行口设置一个数据缓冲区 . 因为是半双工方式 ,所以收发共用同一个串口缓冲区 ( R/ T Buffer) . R/ T Buffer 的大小根据需要设定 ,可以是 32 ,64 ,128 ,256 个字节长 . 本次设计为 64 字节长 . 缓冲区还含有 8 字节长的头部 . 是命令、参数、字节长度等 . R/ T Buffer 设在外RAM 的 00H FFH 空间 . 一般由 0FFH 向前数需要占用的长度 . 本设计为由 0FFH 向前数 64 +8 个字节 ,因此 R/ T Buffer 占用 0B8H 0FFH 空间 ,而前部的 00H B7H 空间留作算术运算 .31113 软件软件方面完成的串行通信分为两部分 . 一部分是串口中断服务程序 ,主要完成 :接收上位机下传的信息 (各个字节 ) ,并存入 R/ T Buffer ;发送下位机上传的信息 (各个字节 ) ,由 R/ T Buffer 中读出 ;接收时计算校验码 ;发送时计算校验码 ,并发303第 3 期 梁中华等 : PC 机与单片机串行通信的研究 出校验码 . 另一部分是数据交换子程序 ,主要完成 : 处理上位机下传的数字 ,由 R/ T Buffer 中读出 ,将其送入需要的单元 ;为串口准备上传的数字 . 由规定的单元读出写入 R/ T Buffer 中 ,并触发串口发送 .31114 Registers 的 4 个区的使用主程序使用 Registers 的 0 区 ;主程序调用的子程序 (主调子程序 ) 使用 Registers 的 1 区 ; T0中断服务程序使用 Registers 的 2 区 ;串口中断服务程序使用 Registers 的 3 区 .31115 数据交换缓冲区在外 RAM 中设置 2 个上下位机数据交换缓冲区 (交换缓冲区 ) . 一个是 Read Buffer ,存有送给上位机的数据 . 本设计中长度为 64 个字节长 ,在外 RAM 中 ,地址是 0100H 013FH. 另一个是Write Buffer ,存有上位机下传来的数据 . 本设计中长度为 64 个字节长 ,在外 RAM 中 ,地址是0140H 017FH.31116 3 区 Registers中的 R0 R7 的规定本设计规定了 3 区的 Registers(R0 R7) 专用于串口的收发 ,其它程序不允许使用 . 另外定义了R0 R7 的功能 : R0 用作间址寄存器 ,内存有收发数据的地址 (外 RAM 的地址 ) ; R1 用作接收计数器 ; R2 用作发送计数器 ; R3 用作接收发送的累加校验 (check)码的累加单元 ;R4 R7 用作保护现场 .312 上下位机的通信协议上位机下发信息的格式如表 1 所示 .表 1 PC机下发信息格式Table 1 Information transmitting format in PCAddress field + 9th BitN (本次信息后面的字节数 )CommandParameter1Parameter2Parameter3Data1Data mCheck code其中 :Address field + 9th Bit 为寻址码 ; N 为本字节后面的字节数 ;Command 为命令代码 ;Data1 Datam 为 m 个字节数据 ; Parameter1 为 Data 字节数 ( m ) ; Parameter2 为低 8 位地址 ( ADL ) ;Parameter3 为 高 8 位地址 (ADH) ; Check code 为校验码 .下位机把接收到的数据 (地址码除外 ) ,存入由 B8H 开始的 R/ T Buffer 中 . N 存入 B8H 单元 ,Command 存入 B9H 单元 , ,依次类推 .采用多机通信方式时 ,一台上位机 (如 PC机 )或称主机 ,多台 (最多 256 台 )下位机 (如 MCS251系列单片机 ) 或称从机 . 需要将所有从机的SM2 1 ,使之处于只接收 AF 的状态 (AF 指地址场 Address Field) . 主机下发 AF (8 位 ) ,且后跟第九位 9thBit = 1 时 ,表示寻址 . 被寻址的从机使SM2 0 ,准备接收 9thBit = 0 的信息 . 而后主机下发指令和数据 ,且 9thBit = 0. 被寻址的从机能接收这些指令和数据 ,其它从机此时因 SM2 = 1 ,不能接受 9thBit = 0 的数据 . 从而实现了多机通信 .定义的命令如下 :Command = 01H :是标准取数据的命令 ,即从规定的 Readbuffer 中取出全部数据 . 无参数 ,此命令下发 4 个字节数据 ,其中 N 后面有 2 个字节 ,故 N = 2. 其命令格式如下 :AF 2 01H Check CodeCommand = 02H 是标准给数据命令 ,即向规定的Write buffer 中写入全部数据 . 无参数 ,此命令下发 4 + 64 个字节 , N 后有 2 + 64 个字节 ,故 N =66. 其命令格式如下所示 :AF 66 02H Data1 Data64 Check CodeCommand = 03H :是非标准取数据命令 ,即从规定的 Read buffer 中的首址 + n 取出 m 个字节 . 有 2个字节参数 ,共下发 6 个字节 , N 后有 4 个字节 ,故 N = 4. 其命令格式如下所示 :AF 4 03H Pa1 Pa2 Check Code其中 : Pa1 (8Bits) = m ,表示字节数 ;Pa2 (8Bits) = n ,表示从第 n 个字节开始 .Command = 04H :是非标准给数据命令 ,即向规定的 Write buffer 中从首址 + n 开始写入 m个字节 . 有 2 个字节参数 ,共下发 6 + m 个字节 ,N 后有 4 + m 个字节 ,故 N = 4 + m .其命令格式如下所示 :AF 4 + m 04H Pa1 Pa2 Date1 Datam CheckCode其中 : Pa1 (8Bits) = m ,表示字节数 ;Pa2 (8Bits) = n ,表示第 n 个字节开始 ;Data1 Data m 表示共有 m 个字节的数据 .403 沈 阳 工 业 大 学 学 报 第 27 卷Command = 05H :取任意地址中的数据的命令 ,向下位机给出 16 位的首地址 ,并取由此开始的 m 个字节的数据 . 有 3 个字节的参数 ,要下发7 个字节 , N 后有 5 个字节 ,故 N = 5. 其命令格式如下所示 :AF 5 05H Pa1 Pa2 Pa3 Check code其中 : Pa1 (8Bits) = m ,表示字节数 ;Pa2 (8Bits) = ADL ,表示低 8 位地址 ;Pa3 (8Bits) = ADH ,表示高 8 位地址 ;Command = 06H :是向任意地址中给数据的命令 ,向下位机给出 16 位的首地址 ,并下传由此开始的 m 个字节的要写入下位机的数据 . 有 3 个字节参数 ,要下发 7 + m 个字节 , N 后有 5 + m个字节 ,故 N = 5 + m .其命令格式如下所示 :AF 5 +m 06H Pa1 Pa2 Pa3 Data CheckCode其中 : Pa1 (8Bits) = m ,表示字节数 ;Pa2 (8Bits) = ADL ,表示低 8 位地址 ;Pa3 (8Bits) = ADH ,表示高 8 位地址 ;Data 表示共有 m 个字节的数据 .313 下位机上传的信息格式下位机上传的信息格式如表 2 所示表 2 下位机上传信息格式Table 2 Information transmitting format in single chipNAnswerData1Data mCheck Code其中 : N 为本字节后面的上传字节数 ;Answer 为应答码 :Answer = 00H ,表示下位机接收校验码错误 (Check Code 0) ;Answer = 01H ,表示下位机无校验码错误 ,且正常执行了命令 ;Data1 Data m :表示 m 个字节数据 ;Check Code :校验码 .发送前 N 放到 B8H 单元 ,Answer 放到 B9H单元 ,后面的数据依次放到各个单元 .4 串行通信程序设计411 主程序单片机的通信软件采用汇编语言编写 . 单片机的主程序始址为 0033H ,用于定时器 T1 串行口、寄存器以及标志位的初始化 ,并开中断 . 初始化之后是数据交换子程序和系统需要的其它程序 . 主程序在这里循环执行 . 流程框图如图 3 所示 .图 3 单片机的主程序流程图Fig. 3 Flow chart of main program412 串口中断子程序MCS251 单片机的串口中断子程序的入口地址为 0023H. 其基本思路是 :响应中断后 ,将接收和发送分为两段处理 . 在接收段中 ,若是第一次接收则判断是否寻址本机 ,若为本机地址 ,将 SM2置 0 后返回 ;第二次接收 N 和作接收 N 后面信息准备 . 第三次开始以 R1 为计数器接收 N 后面的字节 ,直到全部接收完 ( R1 = 0) . 接收中进行部分校验和计算 . 接收完时 ,置命令标志 ,通知数据交换程序处理此命令 . 同时将 SM2 置为 1 ,为下次寻址做好准备 . 在发送段中 ,将发送标志 TI 和发送的第九位数据 TB8 置 0 后 ,判断发计数器 R2的值 . R2 的计数初值由数据交换子程序置入 . 若R2 不为 0 也不为 1 ,应继续发送数据 . 当 R2 = 1时 ,发最后一位校验和 ,并将计数器 R2 减 1 ,之后R2 = 0 ,表示发送结束 ,将接收允许位置 1 ,进入允许接收状态 . 程序流程图如图 4 所示 .413 数据交换子程序数据交换子程序专用来进行数据的交换 . 在接收数据时 ,数据交换子程序从 R/ T Buffer 中将所接收的上位机数据读出并存入 Write Buffer中 ;在发送数据时 ,数据交换子程序把准备向上位机发送的数据从 Read Buffer 中读出存入 R/ TBuffer 中 ,由串口中断程序发送给上位机 . 数据交503第 3 期 梁中华等 : PC 机与单片机串行通信的研究 换期间 ,该子程序只发出一个字节 ,表示的信息是后面将要发送的字节数 . 这个字节被作为计数初值置入发计数器 R2. 发完这一个字节后触发中断 . 后面的数据由串口中断子程序发出 . 每次进入数据交换子程序 ,都首先判断是否有命令 ,若有命令 ,则接着判断校验码是否正确 ,然后判断是哪个命令 ,去执行相应的命令 . 对于 1、 3、 5 命令 ,回复上位机数据的同时给出 Answer 码 ;而 2、 4、 6 命令 ,在子程序结束前统一给出 Answer 码 :其中 00表示 O K ,01 表示 Error. 程序流程图如图 5 所示 .图 4 串口中断子程序流程图Fig. 4 Flow chart of serial interupting subprgram414 PC机通信程序本系统的上位机采用 C 语言对串行口进行编程控制 . C 语言对 I/ O 口操作方便 ,简单易懂 ,图 5 数据交换子程序Fig. 5 Subprogram of data change还可以实现很直观的人机对话 ,方便用户 . 编程的基本思路如下 :按照多机通讯协议的规定 ,寻址时第九位需要置 1. 下发命令和数据时第九位需要置 0. 这里利用 8250 的通信线路控制寄存器( ICR)中的奇偶校验位 ( EPS)来达到此目的 . 发送地址码前 ,EPS 置 0 ,则第九位为 1. 发 N 、命令、参数、数据、校验码前 ,EPS 置 1 ,则第九位为 0. 这里的 N 将告诉下位机 N 后面还有多少个字节 ,下603 沈 阳 工 业 大 学 学 报 第 27 卷位机将它作为计数器来进行数据的接收 ,这样不会丢失数据 . 判断无校验和错误以及无延时错误之后 ,开始接收数据并保存数据 . 当有任意键按下时 ,程序结束 ,否则循环执行 . PC 机的编程框图如图 6 所示 .图 6 PC 机的串行通讯程序流程图Fig. 6 Flow chart of serial communication program5 结束语本系统的软件和硬件是针对于故障预报数据采集系统设计的 ,在 IBM PC 机上和 MCS251 单片机上调试通过 ,运行效果良好 . 所设计的 6 种命令可方便灵活地实现在 PC 与 MCS251 之间交换各种数据 . 如需要其它特殊的数据交换 ,还可增加命令 . 最多命令可达 256 种 . 增加命令时只需简单修改“数据交换子程序” ,以及上位机 C 语言程序 .这是一种实用的串行通信技术 ,可应用在需要此技术的其它场合 .参考文献 : 1 谭浩强 . C 程序设计 M .北京 :清华大学出版社 ,1992.( Tan H Q. C programmer M . Beij ng : TsinghuaUniversity Press. 1992) 2 胡汉才 . 单片机原理与接口技术 M .北京 :清华大学出版社 ,1996.( Hu H C. Principle of single chip computer andinterfacing technology M . Beij ng : Tsinghua Univer2sity Press ,1996. ) 3 曹素芬 . MCS251 系列单片机原理与接口技术教程 .沈阳 :东北大学出版社 . 1994.(Cao S F. Principle and interfacing technology tutorialof MCS251 serial single chip computer M .Shenyang :Northeastren University Press ,1994. ) 4 周明德 . 微型计算机 IBM2PC/ XT (0520 系列 ) 系统原理及应用 (上 ) M .北京 : 清华大学出版社 ,1991.( Zhou M D. System principle and applicationmicrocomputer IBM2PC/ XT (0520 series) ( I) M .Beijing : Tsinghua University Press ,1991. ) 5 王齐 . Windows 98 中的串行通信 J ,微电脑世界 ,1999 (3) :45 - 60.(Wang Q. Serial communication of windows 98 J .Microcomputer World ,1999(3) :45 - 60. ) 6 李朝青 . PC 机及单片机数据通信技术 M .北京 :北京航空航天大学出版社 ,2001.(Li C Q. Data communication t

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论