返回 科技论文 首页
基于AT89S51单片机的串行通信系统设计

  摘要:大量电气工程的实施使得单片机得到了广泛运用。在信息化时代到来后, 计算机技术与PLC 联合运用使得工业化生产效率显著改进,而AT89 单片机则是其中运用较多的。而分析基于AT89 单片机的串口通信的应用,并通过串行通信把单片机和计算机技术运用到一起是有意义的。
  关键词:AT89单片机;串行通信;运用
  中图分类号:TP302文献标识码:A文章编号:1009-3044(2011)20-4991-03
  AT89 单片机是当前电气运行中运用较多的单片机产品之一,笔者结合自身工作经验,通过实例设计阐述了串行通信的特点和应用,方便理解学习单片机串行通信的知识点,并利用串行通信把单片机和计算机应用到一起。
  AT89单片机的串行口具有两条独立的数据线――发送端TXD和接收端RXD,它允许数据同时往两个相反的方向传输。一般通信时发送数据由TXD端输出,接收数据由RXD端输入。
  AT89单片机的串行口既可以用于网络通信,亦可实现串行异步通信,还可以用作同步移位寄存器。如果在串行口的输入输出引脚上加上电平转换器,就可方便地构成标准的RS-232接口。
  常用于数据通信的传输方式有单工、半双工、全双工和多工方式。AT89单片机的串行接口是一个全双工通信接口,它有两个物理上独立的接收、发送缓冲器SBUF,可以同时发送和接收数据。但是发送缓冲器只能写入,不能读出;接收缓冲器只能读出,不能写入。两个缓冲器共用一个地址(99H)。
  1 串行通信系统的硬件设计
  1.1 系统所需设备及软件
  本系统硬件的实现需FX-A单片机实验实训平台、A51编程器及FX-51pro编程软件、计算机及Keil uVision3编译软件。
  FX-A单片机实验实训平台是我院专为单片机初学者设计,通过该平台能够完成单片机课程中的所有实验项目及实训项目。FX-A单片机实验实训平台由实验板区和万用开发板区两部分组成。实验板区电路固定,有各种控制模块,其中有流水灯、蜂鸣器、键盘、IIC存储、232通信接口、数码管显示、液晶1602显示;单独控制或组合控制可以完成各种各样的实验及仿真程序调试,主要完成单片机程序的测试,帮助初学者完成51单片机学习中的软件实验。万用开发板区可以亲自动手搭建各种单片机电路,能够完成单片机系统的整体开发过程。
  A51编程器工作电压为直流9V,工作时功率小于0.5瓦,满足对个别芯片需要12V编程的要求。与编程器配套的有九芯串口线和外接电源,编程器电路板中带有电源开关和工作指示灯。监控芯片的功能设计是整个编程器的核心技术之一,对编程的所有操作都需要通过监控芯片来完成调度,我们采用AT89S52芯片来做监控芯片,在监控芯片里设计了一套与计算机的通信协议,使编程器的硬件功能得到了充分的展示,自主的知识产权对我们今后对编程器功能进行升级提供的技术保障。
  编程器使用中的具体性能如下:
  1)使用串口通讯,编程过程中的擦除、烧写、校验各种操作完全由编程器上的监控芯片控制,不受PC配置及其主频的影响,因此烧写成功率高可以达到100%,烧写速度很快并且烧写速度和微机的档次无关。
  2)采用57600高速波特率进行数据传送,编程速度可以和一般并行编程器相媲美,经测试,烧写一片4K ROM的AT89S51仅需要9.5S,而读取和校验仅需要3.5S。
  3)体积小巧,外接电源适配器向编程器提供9V电源,最大程度的保护用户计算机,电源开关方便用户不使用时不必使编程器长期带电。
  4)软件界面友好,菜单、工具栏、快捷键齐全,全中文操作,提供加密功能,可以保护您的创作产权。
  5)功能完善,具有编程、读取、校验、空检查、擦除、加密等系列功能。
  6)40pin和20pin锁紧插座,所有器件全部以第一脚对齐,无附加跳线,对于DIP封装芯片无需任何适配器。
  7)采用优质万用锁紧插座,和接触不良等问题彻底说再见,可烧写40脚单片机芯片和20脚单片机芯片。
  8)因为采用了9针传口通讯,这样一来就不会再和打印机抢一个打印口,随时随地想烧就烧。
  Keil C51 是德国知名软件公司Keil(现已并入 ARM 公司)开发的基于8051内核的微控制器软件开发平台,是目前开发 8051 内核单片机的主流工具。它支持众多不同公司的MCS51 架构的芯片,它集编辑,编译,仿真等于一体,同时还支持PLM、汇编和C 语言的程序设计,它的界面和常用的微软VC++的界面相似,界面友好,易学易用,在调试程序,软件仿真方面也有很强大的功能。
  使用 Keil 的开发工具 其项目开发周期和任何软件开发项目都大致一样:创建 C 或汇编语言的源程序; 编译或汇编源文件;纠正源文件中的错误;从编译器和汇编器连接目标文件;测试连接的应用程序并下载。
  1.2 系统所用电子元器件
  如表1所示。
  1.3 系统硬件原理图
  如图1所示。系统上电后,K1键将进行加一操作,并在LED管上显示,K2键将进行减一操作,并在LED管上显示,K3以外部中断1的方式发出当前LED管显示的二进制信息,同时,系统能随时接收上位机发过来的二进制数据,并在LED上显示,系统与PC机的通信格式为8位,无校验,1200BPS。串行口接收数据采用查询接收标志位来判断是否有接收数据。
  2 串行通信系统的软件设计
  系统软件功能流程图如图2。
  在AT89S51中应用串行口通信时需要考虑下述步骤,但顺序依据编程人员自身特点进行合理安排。
  1)设置外部中断请求允许位,设置IE寄存器中的EA、ES;
  2)根据需要设置SCON寄存器,确定串行口的工作方式并初始化标志位;
  3)波特率与T1有关则设置TMOD寄存器,设定T1的工作方式;
  4)推算出对应波特率T1寄存器的初值,传递到T1;
  5)启动T1定时器,T1便成为了波特率发生器;
  6)将电源控制寄存器PCON最高位SMOD设置成1,单片机系统的波特率将翻一倍;
  7)编写中断处理子程序,注意该子程序的中断编号是4。
  源程序代码如下:
  /****************定时器应用实验***************/
  #include //包含头文件
  typedef unsigned char uchar;//数据类型简洁化声明
  typedef unsigned int uint;
  #define led P1 //led数据总线端口定义
  sbit key1=P3^5; //key1端口定义
  sbit key2=P3^4; //key2端口定义
  sbit key3=P3^3; //key3端口定义
  uchar i=0x00;
  /****************1ms延时子程序***************/
  void delay(uint t)
  {
   uint i,j;
   for(i=t;i>0;i--)
   for(j=110;j>0;j--);
  }
  /****************主函数***************/
  void main()
  {
   EA=1; //开总中断
   EX1=1; //开外部中断1
   IT1=1; //设置外部中断1为下降沿触发
   SCON=0X50; //设置串口
   TMOD=0X20; //设置定时器工作模式
   TH1=0XE6;//设置定时器初值使波特率为1200bps
   TL1=0XE6;
  
   TR1=1; //启动定时器
  
   RI=0; //接收中断清零
   led=0xff;
   while(1)
   {
   if(RI==1) //查询接收中断
   {
   i=SBUF; //取出接收缓冲
   led=~i;
   RI=0;
   }
   if(key1==0) //判断按键1
   {
   delay(15);
   if(key1==0)
   {
   i++;
   led=~i;
   while(key1==0);
   }
   }
   if(key2==0) //判断按键2
   {
   delay(15);
   if(key2==0)
   {
   i--;
   led=~i;
   while(key2==0);
   }
   }
   }
  }
  /****************外部中断1服务子函数***************/
  void int1() interrupt 2 using 1
  {
   SBUF=i; //将数据发送给串口
   while(TI==0);
   TI=0;
  }
  此源程序已经过FX-A单片机实验实训平台的测试,运行稳定可靠。
  3 结束语
  该串行通信方法具有电路结构简单清晰、程序容易实现等特点,通过实际操作证明可行。通过以上系统设计的实现,阐述了单片机串行通信从硬件到软件的知识点和应用技巧,方便大家理解学习。
  参考文献:
  [1] 王静霞.单片机应用技术(C语言版)[M].北京:电子工业出版社,2009.
  [2] 唐继贤.51单片机工程应用实例[M].北京:北京航空航天大学出版社,2008.
  [3] 王建校,王建国.51系列单片机及C51 程序设计[M].北京:科学出版社,2002.
  注:本文中所涉及到的图表、注解、公式等内容请以PDF格式阅读原文


【相关论文推荐】
  • 基于AT89S51单片机的倒车雷达系统的设计
  • 基于AT89S51单片机的综合报警系统设计
  • 基于AT89S51单片机的自习室管理系统
  • 基于AT89S51单片机的实验室数据采集系统的设计
  • 基于AT89S51单片机的瓦斯报警器的设计
  • 基于AT89S51单片机简易交通灯控制系统的设计
  • 基于AT89S51单片机的出租车计价器系统设计
  • 基于AT89S51单片机的智能交通灯设计
  • 基于AT89S51单片机的LED点阵显示屏设计