一种基于Delphi和AT89S52单片机的串行通讯模块的实现

来源 :电脑知识与技术 | 被引量 : 0次 | 上传用户:mutaozhang
下载到本地 , 更方便阅读
声明 : 本文档内容版权归属内容提供方 , 如果您对本文有版权争议 , 可与客服联系进行内容授权或下架
论文部分内容阅读
  摘要:提出基于AT89S52单片机的下位机数据采集系统与Delphi环境下PC机的串行通讯的软硬件实现方法。简要介绍系统的工作流程和通讯控制原理,详细介绍单片机与PC 机通讯的硬件控制电路、通讯协议以及上下位机软件实现过程,重点介绍Delphi语言中SPComm控件的使用方法。采用软硬件相结合的方法进行仿真和调试,成功实现了功能要求。实际应用表明,这种通讯方案稳定可靠且控制简单,具有很强的工程实用性和广泛的应用前景。
  关键词:AT89S52单片机;RS 232;串行通讯;Delphi
  中图分类号:TP338文献标识码:A文章编号:1009-3044(2008)36-2779-03
  Serial Communication between PCand AVRSingle Chip under Environment of Delphi
  LI Jun-heng, GU Ai-yu
  (Guangdong Province Institute of Techmology Automation College, Guangzhou 510006, China)
  Abstract: under environment of Delphi and the data collecting system based on AVR single chip processor. Simply introduces the workflow of the system and the control principle of communication. Detailedly introduces the hardware circuit chart ,communication agreement and actualization method of software of serial communication between computer and single chip. It specially places emphasis on the Operation of SPComm component in the programme language of Delphi ,adoptes combining software and hardware to carry out emulation and debugging and succeeded to realize the required function. Physically application indicates that this proposal of communication got powerful stability and credibility and simple control ,possess of strong engineering practica bility and extensive market foreground.
  Key words: AT89S52 singlechip; RS232; serialcommunication; Delphi; SPComm
  1 引言
  随着现代计算机技术和电子技术的发展,采用价格低廉、现场控制能力强的单片机作为下位机直接对控制对象进行驱动控制和实时数据的采集、处理,并通过串口与上位PC机进行串行通讯,在现代工业测控领域中得到了广泛的应用。近些年,在监测与控制软件系统的开发设计中,由于Delphi具有可视化开发环境,强大的数据库开发功能。包含功能丰富的VCL库,而且封装了大量的Windows API函数等特点,使得Delphi在处理大量数据和实现PC机与单片机的串行通讯等方面应用十分方便。本文即介绍了报警控制系统中上下位机的串行通讯。下位机采用AT89S52进行数据集,前置电路对3路检测信号进行光电转换和放大处理后送入到AT89S52单片机自带的10位A/D转换器中进行A/D转换,单片机再将三路转换值以16进制通过串行通讯发往PC机;上位机中采用Delphi编写软件,利用Delphi的强大数据库功能管理下位机发送的数据,供图表显示和产量、成品计算等;并在Delphi中利用SPComm控件实现与下位机的串行通讯。
  2 硬件电路图
  串口是微机上的标准设备,在进行串行通讯时不需要给微机增加额外的硬件,电路简单且技术可靠。在PC机与单片机构成的上下位机系统中,若采用软件实现握手协议,则利用基本3线制(TXD,RXD,GND)的连接即可实单片机与PC机的通讯,硬件电路如图1所示。由于单片机信号电平(TTL电平)与PC机配置的串行接口电平(RS 232电平)两者电气规范不一致,故采用MAX232电平转换芯片进行电平转换。
  3 下位机软件设计
  ATMEL单片机AT89S52的UART是一个高度灵活的串行通讯设备,能进行全双工操作,可工作在异步方式或同步方式下,并具有多处理器通讯模式。倍速异步通讯模式等增强型,通信功能,下位机的软件设计主要是通讯协议的设定和相关程序的设计。
  3.1 通讯协议
  给上下位机设置适当的通讯协议是保证上下位机能正常通讯的基础。系统采用全双工异步通讯模式,通讯协议设置如下:
  波特率采用9 600帧格式,数据格式采用8位数据位,1位起始位,1位停止位,为使通讯更可靠使用了奇偶校验功能,采用奇校验。但如果上位机检测出所接收的数据错误,则丢弃不用,不再给下位机发信号请求重新发送数据,以保证单片机稳定的采样频率。
  握手协议采用软件实现上下位机的握手,下位机要往上位机发送数据时,先发送一个握手信号:aa;上位机收到后回发一个信号:bb,表示已经做好数据接收准备。
  3.2 程序设计
  下位机通讯的程序采用C语言编写,主要任务是完成UART的初始化、采集数据的A/D转换、握手的实现和数据的发送。这里主要介绍串口的初始化程序以及通讯程序的流程图。
  串口的初始化程序:主要设置相关的通信协议。
  #include
  #define uint unsigned int
  #define uchar unsigned char
  void init()
  {
  SCON=0x40;
  TMOD=0x20;
  PCON=0x00;
  TH1=0xfd;
  TL1=0xfd; //波特率设置为9600
  EA=0;
  REN=1;
  TR1=1;
  }
  uchar ReceiveData(void)//自定义接收函数
  {
  uchar c;
  while(RI==0);
  RI=0;
  c=SBUF;
  return c;
  }
  void main()
  {
  init();
  RI=0;
  while(1)
  {
  P1=ReceiveData();
  }
  while(1);
  }
  通訊流程简介:在完成相关的初始化工作后,启动A/D转换,当3路信号都转换完成后单片机往上位机发握手信号,等待上位机的应答。串口发送采用查询方式,即CPU不停地查询数据寄存器是否为空,若为空则装载新的数据开始发送;而接收则采用中断方式,在数据接收结束后进入中断服务程序,为使程序尽量少地在中断中停留,中断服务程序中仅完成对握手信号的判别和发送标志的置位。当握手成功后,单片机把转换的数据往上位机发送,数据全部发送完成后即进入下一轮的采样、转换和发送。串行通讯流程如图2所示。
  
  图2 串口通信流程
  
  4 上位机软件设计
  Delphi是一种采用事件驱动方式、面向对象的可视化高级编程语言,本系统的通讯软件设计采用Delphi7.0。在Delphi可以利用的众多串行通信控件中,SPComm控件是最简单,功能比较强大的一种。该控件具有丰富的与串口通信密切相关的属性及事件,提供对串口的各种操作。
  4.1 SPComm 的主要属性、方法和事件
  4.1.1 属性
  Commonage:串口名,填写COM1,COM2 等串口的名字,字符型变量;
  Baud Rate:设定波特率。如9 600 ,19 200 等,在串口 打开后也可更改波特率;
   ParityCheck 是否使能奇偶校验;
  ByteSize:字节长度。根据实际情况可设定为5,6,7或8 位;
  Parity:奇偶校验位;StopBit s:停止位的位数;
  SendDataEmpty:这是一个布尔属性,为True时表示发送缓存为空,或者发送队列里没有信息;为False 时表示发送缓存不为空,或者发送队列里有信息。
  4.1.2 方法Startcomm:用于打开串口,若打开失败通常会报错;
  StopComm:用于关闭串口,没有返回值。
  4.1.3 函数
  WriteCommData(pDataToWrite:PChar;dwSizeofDataToWrite:Word):boolean:用于发送一个字符串到写线程,发送成功返回True,失败则返回False,执行此函数将立即得到返回值,发送操作随后执行。函数有2个参数,其中pDataToWrite是需要发送的字符串,dwSizeofDataToWrite是发送的字符串的长度。
  4.1.4事件
  OnReceiveData:procedure(Sender:TObject;Buffer:Pointer;Bufferlength:Word)of object:当输入缓存有数据时触发该事件,在这里可以对从串口收到的数据进行处理。Buffer中是收到的数据,Bufferlength是收到的数据长度。
  OnReceiveError:procedure(Sender:TObject;EventMask:DW() RD):当接收数据时出现错误将触发该事件。
  4.2 程序关键部分的实现
  Delphi中用于串口通讯的程序较少,集中在简单的串口打开和关闭、握手信号的测试和下位机采集数据的接收这几大板块,以下仅做简单介绍。
  4.2.1打开串口并初始化
  Procedure T Form 1.opencomm(Sender:T object);
  Begin
  Comm1.CommName:=comm.;//选择串口
  Comm1.BaudRage:=9600;//设定波特率为9600
  Comm1Parity:=odd;//奇偶校验
  Comm1.StopBits:=_1; //1位停止位
  Comm1.ByteSize:=_8; //8位数据位
  Comm1.StartComm; //打开串口
  End;
  4.2.2 测试握手信号
  Procedure T Form1.Button Click(Sender:T 0bject);
  Var
  I:byte;
  Comm. Flg:Boolean; //变量定义
  Begin
  Sbuf[1]:=byte(aa);
  Comm. Flg:=true; //若信号正确设定为true
  If not T Form1.comm1.write commdata(@ sbuf[1],1)then
  Begin
  Comm. Flg:=false;//若接收错误标志为false
  End;End;
  4.2.3 数据接收事件
  Procedure T Form1.comm ReceiveData(Sender:T 0bject;Buffer;Pointer;Bufferlength;Word);
  Var
  I,j:integer;
  Comm. Revstr:shortstring;
  RevP:RecData[1…1024]of byte; //变量定义
  begin
  setLengrh(commRevStr,BufferLength);//设置字符串长度与缓冲区大小相等;
  move(buffer,pchar(@ rbuf),bufferlength);//将缓冲区内容拷贝到字符串地址上;
  for i:=1tobufferlengrh do
  begin
  view string:=view string inttohex(rbuf[i],2) ””;//接收到的数据在窗体中显示
  RecData[i]:=integer(S[i]);//存储接收到的数据
  ……
  End;
  End;
  4.2.4 关闭串口
  Procedure T Form1.Button 3Click(Sender:T 0bject);
  Begin;
  Comm1.StopComm;//关闭Comm1
  End;
  5 结束语
  本文对实现上位机与单片机之间穿行通信的方法进行了详细的讨论,在实际报警控制系统应用中,这种串口通信方法表现了很强的工程实用性,通讯可靠稳定且成本低廉同时由于上下位机都是用高级语言编写,稍加修改便可方便的移植到其他类似的工程系统中故在测控工程领域有着广泛的前景。
  
  参考文献:
  [1] 黄军,熊勇.Delphi串口通信编程[M].北京:人民邮电出版社,2002.
  [2] 范逸之,陈立元.Delphi与RS232串行通信[M].北京:清华大学出版社,2004.
  [3] 孙滨,宋健.用Delphi实现上位机与PIC单片机的串行通訊[J].现代电子技术,2004,27(16):92-93.
  [4] 桑开勇,陈铁军.Delphi环境下利用SPComm控件进行单片机串口通信[J].现代电子技术,2006,24(15):26-28.
  [5] 徐新华,任晓,吕涛.基于Delphi的PC机与PIC单片机的串行通信[J].电子工程师,2006(3):59-59.
  [6] 倪倩,程勇,高绘玲.Delphi环境下油泵测控系统PC机与单片机通讯的实现[J].福建电脑,2005(12):120-121.
  [7] 丁易新.PC机与AVR单片机之间穿行通信的实现[J].现代电子技术,2005,28(12).
其他文献
摘要:.NET 平台下ASP.NET 的应用开发得到了越来越多的应用,而MVC设计模式在ASP.NET 中得到了充分的实现和支持。该文对.NET 技术结合MVC 设计模式的三层架构进行了深入剖析,给出了一个三层架构模型及各层的实现策略,该模型及实现策略对于web应用开发而言,能够实现系统的设计目标,具有通用性。  关键词:ASP.NET;MVC设计模式;三层架构;实现策略  中图分类号:TP311
摘要:随着移动电子设备日益普及,移动电子商务要又好又快发展,其安全性必须得到重视。该文针对移动电子商务的安全问题,阐述了无线公钥基础设施技术WPKI的组成及安全框架,其在移动电子商务中的应用情况。  关键词:移动电子商务;安全技术;WPKI;应用  中图分类号:TP393文献标识码:A文章编号:1009-3044(2008)36-2880-02  The Applied Study onWPKI
摘要:在J2EE架构中集成XML技术是一种可扩展性很强的组合。文章讨论了J2EE架构中XML技术在数据描述和交换、数据显示以及面向消息的分布式计算等方面的应用。  关键词:J2EE;XML;JSP;XSLT;EJB;message-oriented  中图分类号:TP391文献标识码:A 文章编号:1009-3044(2008)35-2147-03  The XML in J2EE  CAI Xi
摘要:通过对大学生就业情况的调查,发现大学生就业的一大基石是语文素质。语文知识储备丰富与否,在人的职业生涯中占据重要地位。因而,必须加强大学生的语文素质建设,打好新时期大学生就业的基石。  关键词:语文素质 就业基石  引言  语文教育作为我国现代教育的重要组成部分,必须适应现代化社会、经济建设发展的要求,注重人的素质培养与提升,为社会培育出更多的高素质人才队伍,实现高校教育的宗旨;要体现出高校教
摘要:该文介绍了在Delphi中通过网络传输下位机采集的数据,使用IXYPlot控件将数据实时以直观的工控波形界面进行显示的方法,并结合应用实例给出了数据显示的应用程序。  关键词:Delphi;实时数据;波形;显示  中图分类号:TP312文献标识码:A文章编号:1009-3044(2008)33-1386-02  The Method of Realizing Remote Data Wave
《义务教育语文课程标准(2011年版)》对语文课程性质的界定明确告诉我们:“语言文字运用”是语文课程的核心理念,是教学活动与教学设计的基本走向。通过调查大量的教学实践可知:目前,小学语文课堂教学在如何落实“语言文字运用”的理念与实际操作层面上,淡化甚至忽略语文课程性质的意识和做法比较普遍。教师习惯将理解语言作为教学的重要目标,不能有效区分“课文内容”和“教学内容”,注重文本内容的开发,忽视语言的运
书名:现代汉语语法研究教程(第五版)  作者:陆俭明  出版社:北京大学出版社  出版时间:2019年  ISBN:9787301304983  定价:59元  语法研究是语言学领域的重点研究内容。语法的变化与发展在某种意义上提示了语言的发展与变迁,语法是语句形成的基础,语句则是语言应用的基础。只有深刻把握语法的内涵与特征才能真正理解一门语言背后的文化现象、结构规律和使用规范,做到语言应用的形式与
【摘要】统编教材“快乐读书吧”的课程设置中,安排了成长小说的专题阅读。本文从成长小说的基本要素、阅读取向以及教师带读时应该关注的思维视角出发,提出了以下观点:苦难是成长的仪式和驱动力,反抗是成长的必然姿态与模样,自省是由蛹化蝶的必由之路。  【关键词】成长小说,阅读取向,思维视角  统编教材“快乐读书吧”的设置,无疑推进了儿童阅读的课程化实施。“快乐读书吧”对整本书阅读的课程设计,体现了一个学期重
摘要:网上(在线)拍卖模式已经成为电子商务重要的常见业务之一,P2P是因特网的一种新的应用模式,JXTA是SUN公司提出的一个P2P的网络底层支撑平台。因此利用JXTA平台,采用P2P技术设计了一个用于网上电子交易的网上拍卖系统(P2PNAS)。该论文对基于P2P/JXTA的网上拍卖系统进行了研究与探讨,利用P2P技术实现在线商品发布、查询、竞价与交易的电子商务业务。  关键词:JXTA;P2P;
摘要:我国多数油田经过一次、二次采油后,仅能采出地下总储量的30%左右,这意味着有60%~ 70%的剩余石油仍然残留在地下成为剩余油。加强剩余油分布规律研究、提高石油采收率不仅有着可观的经济效应,而且关系到国家石油战略的安全。  本研究应用神经网络的原理,基于BP网络使用MATLAB语言建立一个剩余油分布的预测系统。该系统通过学习在地理坐标和孔隙度之间建立一个非线性函数关系,以此来预测任何区域的孔