




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
51系列单片机多串口通讯任务的实现吴佳1,钱伟康2(1.上海理工大学中德学院,上海,200093;2.上海理工大学电气工程学院,上海,200093)摘要在51系列单片机系统应用日益广泛的今天,数据通讯是单片机实现自动化控制的主要方式之一。而串口通讯又是单片机的主要通讯方式,然而传统51单片机的串口已很难满足当今高速、多串口通讯的应用要求,因此寻找一种新的串口通讯方式就显得尤为重要了。本文就如何利用51汇编语言来实现软件模拟串口进行分析和讨论。关键词:单片机,串口通讯,汇编语言中图分类号:TP520在单片机系统的应用中,串口通讯是单片机的主要通讯方式,它的基本原理是通过对单片机输出引脚TXD和RXD每隔一定时间输出高电平或低电平来实现数据的通讯。因此单片机的串口受到定时器T1的影响,往往传送速度会受到很大限制,当波特率大于19.2k时,传统串口就很难实现了(表1所示为常用串口通讯模式)。此外现今的单片机系统不但要求要和下位机通讯,而且还要同时和上位机通讯(一般为PC机)。由此可见,为了满足现今单片机系统的多级通讯要求,传统的单片机串口在功能和应用上已经显得捉襟见肘了,因此用软件来模拟串口通讯就有了很大的应用价值。表1常用波特率与其他参数设置串口工作波特率/(bit·s-1)晶振频率/MHz定时器T1方式SMOD模式定时器初值62.5k12120FFH19.2k11.0592120FDH9.6k11.0592020FDH方式1和4.8k11.0592020FAH方式32.4k11.0592020F4H1.2k11.0592020E8H137.5k11.0592021DH1多串口通讯原理首先讨论串口通讯的工作原理(这里只讨论异步串行通讯)。8051通过引脚RXD(P3.0,串口数据接收端)和引脚TXD(P3.1,串口数据发送端)与外界进行通讯[1]。其内部结构可简化为如图1所示。图中有两个物理上独立连接的接收、发送缓冲器SBUF,他们占用同一地址99H,可同时发送、接收数据。发送缓冲器只能写入,不能读出;接收缓冲器只能读出,不能写入。串行发送与接收的速率与移位时钟同步。51单片机用定时器T1作为串行通信的波特率发生器,T1溢出频率经二分频后又经过16分频作为串行发送或接收的移位脉冲。移位脉冲的速率即是波特率。图1串口内部结构示意图图2发送字节5AH流程图从图中可以看出,接收器是双缓冲结构,在前一个字节被从接收缓冲器SBUF读出之前,第二个字节即开始被接收,但是在第二个字节接收完毕而前一个字节CPU未读取时,会丢失前一个字节。串行口的发送和接收都是以特殊功能寄存器SBUF的名义进行读或写的。当向SBUF发“写”命令时即执行“MOVSBUF,A”指令,发送缓冲器SBUF自动装载并开始由TXD引脚向外发送一帧数据,发送完便使发送中断标志位TI(SCON.1)=1。同理在满足串口接收中断标志位RI(SCON.0)=0的条件下,置允许接收位REN(SCON.4)=1就会接收一帧数据并装载到接收缓冲器SBUF中,同时使RI=1,并申请中断。当执行“MOVA,SBUF”指令后便完成了一次读操作。由此可见,8051串口通讯是通过引脚TXD和RXD以T1经分频后作为波特率把一帧的数据一位一位的发送或接收。因此,我们完全可以用软件的方式来模拟一个串口。这里我们假设使用的单片机为ATMEL89C51RC2[2]。具体做法为:使用89C51RC2自带的定时器T2为波特率发生器,利用外部中断INT0作为中断源,通过引脚INT0(P3.2)和INT1(P3.3)向外接收发送数据。其原理由图2所示。图2中我们可以看出一个字节的发送完全是按照这个字节每个位的数据(0或1)来发送的。例如5AH这个字节的二进制为01011010B,加上起始位为低电平,停止位为高电平,一共十位,按照从低到高的顺序一位一位地发送。另外用T2作为定时器又可做到波特率可调控的特点。当波特率为9600时,即它每秒能传送9600bit的数据,所以他传送一个bit的时间为1/9600=104μs。为了确保数据采样的准确率,我们取52μs为一个单位时间,这样就能保证是在高电平或低电平的中间点的位置上来取值,以保证准确性。图3所示为数据采样示意图。在接收数据时,由于起始位为电平0信号,这样正好能触发外部中断来模拟串行口中断。接下来就可通过硬件和软件来实现串行口的模拟。图3数据采样示意图2硬件设计参考按照MAXIM公司提供的设计参考,串口通讯电路由89C521RC2单片机芯片、串口芯片MAX232CPE和串行口P1组成。外部中断INT0与芯片的R1OUT引脚相连,外部中断INT1与芯片的T1IN引脚相连,相对于串行口的2脚和3脚,外接的5个25V/1μF的电容具有滤波效应。图4所示[3]为串口通讯的基本设计电路。3试验结果ATMELAT89C51RC2单片机自带的定时器T2的计算公式为:fout=fclk/12×(0FFFFH-RCAP2H/RCAP2L)(1)式(1)中fout是定时器T2的溢出频率,fclk是晶振频率,RCAP2和RCAP2L是定时器T2的初值寄存器,他们都是八位的寄存器,在计算时代入寄存器所存储的初值。若取fclk=11.0592MHz;RCAP2H/RCAP2L=0FFCFH,则通过计算可得T2的时间周期T=12×(0FFFFH-0FFCFH)/11059200≈52μs,其中0FFFFH-0FFCFH是十六进制的计算,然后再换算成十进制除以11059200,结果为52μs正好满足波特率的需求。图4串口连接电路图图5所示为用示波器所测得的调试波形图,图中横轴代表时间,每格为时间尺度400μs,从曲线上可以看出,它传送3个数据位的时间为320μs,因此它每传送一位的时间为106μs,误码率约为1.9%,完全在可接收范围中。而且从波形的质量来看完全满足串行传送的电平要求。图5示波器所测的调试波形图CH1通道的触发电平为5V每个格子代表400μsCH1通道为上升沿触发,这里测到9.2V的电压值.在程序设计方面,需特别注意程序的时序问题。这里要强调的是位与位之间的时间间隔一定要精确(包括起始和停止位),另外程序指令要精炼,如果程序过于庞大,就会造成位与位之间的时间间隔过长,从而形成时间上的误差累积,使得整个程序接收或发送的时序误差加大。本设计通过示波器的观测,证明其整个程序的设计是正确的。4参考源代码发送子程序:UART2SD:CLRTXD2设置起始位JNBTF2,$等待半个方波周期CLRTF2MOVR2,#08HJNBTF2,$等待一个方波周期CLRTF2U2SDLP:发送循环RRCAMOVTXD2,C8BIT按照顺序一位一位发送JNBTF2,$CLRTF2JNBTF2,$CLRTF2DJNZR2,U2SDLPSETBTXD2设置停止位RET接收子程序:UART2RV:JBRXD2,$是否到起始位SETBTR2启动定时器TR2JNBTF2,$等待起始位结束CLRTF20.5BITJNBTF2,$CLRTF21BITJNBTF2,$CLRTF21.5BITMOVC,RXD2MOVACC.0,CJNBTF2,$2.0BITCLRTF2⋯⋯⋯⋯⋯⋯重复刚才的程序JNBTF2,$CLRTF28.5BITMOVC,RXD2MOVACC.7,CJNBTF2,$CLRTF2JNBRXD2,$等待停止位SETBRXD2设置停止位RET这里要说明的是在接收子程序中,采用了累加器ACC来代替SBUF的功能,并用标志位C来存储引脚INT0的数据。这样做就能够十分准确地把要接收的数据保存下来。结束语如今,越来越多的单片机系统需要用到两个或两个以上串口(与上位机和下位机)的通讯要求。与上位机通讯一般指的是与PC的串口异步通讯,它具有速度快、高精度和负载能力强的特点,常用于监控软件的通讯方式[4]。但是与下位机通讯往往就要求串行口拥有可调节的特性,这是传统单片机附带的串口通讯所欠缺的。以上所讨论的方法不仅能弥补单片机只有一个串行口的不足,而且它还具有波特率可调的种种优势,这就有实际的应用价值。这一用单片机实现多串口通讯的技术已经成功地应用于“EDV3中文控制系统”,它是利用单片机(ATMEL8052系列)来实现对一个整流系统中的各个模块的实时控制及相对应的状态参数的中文显示。参考文献[1]李朝青.8051串行口及串行通讯技术.北京:北
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 山西省晋中市名校2024-2025学年初三中考总复习单元同步滚动测试卷化学试题含解析
- 山西省河曲实验中学2024-2025学年初三下学期期末(一模)语文试题含解析
- 江苏省淮安市金湖县2024-2025学年数学四年级第二学期期末检测试题含解析
- 茂名市电白县2024-2025学年五年级数学第二学期期末综合测试试题含答案
- 上海市嘉定区名校2025届初三下学期期末复习检测试题(一模)英语试题含答案
- 智慧农业建设智能灌溉与作物监测技术推广应用
- 加盟商合同范本
- 软件工程师合同
- 三个孩子赡养协议书范本
- 人事部人才与专家工作办公室合同风险防范策略
- 2024年我国人口老龄化问题与对策
- 蚂蚁咬伤患者的护理
- WT1806E功率分析仪操作规程
- 新146道100以内四个数字的加减法混合题目
- 《机器人技术应用项目教程》(第二版)课件 2-项目三 威纶触摸屏的组态设计 任务一 触摸屏的组态与连接;触摸屏控制气缸推动
- 中考英语688高频词大纲词频表
- YY-T 0954-2015 无源外科植入物-I型胶原蛋白植入剂
- 12-2017-2021年陕西中考数学真题分类汇编之统计与概率
- 2024年时事政治热点题库200道含完整答案(必刷)
- 屈光性白内障手术发展
- 基于物联网的智能衣柜
评论
0/150
提交评论