利用51单片机和1489芯片实现串口通信报告自发自收有源代码分解.docx

上传人:b****7 文档编号:9662328 上传时间:2023-02-05 格式:DOCX 页数:16 大小:1.42MB
下载 相关 举报
利用51单片机和1489芯片实现串口通信报告自发自收有源代码分解.docx_第1页
第1页 / 共16页
利用51单片机和1489芯片实现串口通信报告自发自收有源代码分解.docx_第2页
第2页 / 共16页
利用51单片机和1489芯片实现串口通信报告自发自收有源代码分解.docx_第3页
第3页 / 共16页
利用51单片机和1489芯片实现串口通信报告自发自收有源代码分解.docx_第4页
第4页 / 共16页
利用51单片机和1489芯片实现串口通信报告自发自收有源代码分解.docx_第5页
第5页 / 共16页
点击查看更多>>
下载资源
资源描述

利用51单片机和1489芯片实现串口通信报告自发自收有源代码分解.docx

《利用51单片机和1489芯片实现串口通信报告自发自收有源代码分解.docx》由会员分享,可在线阅读,更多相关《利用51单片机和1489芯片实现串口通信报告自发自收有源代码分解.docx(16页珍藏版)》请在冰豆网上搜索。

利用51单片机和1489芯片实现串口通信报告自发自收有源代码分解.docx

利用51单片机和1489芯片实现串口通信报告自发自收有源代码分解

 

单片机与台式电脑串行通信的实现

 

 

学院

专业

学生姓名

学号

摘要

基于串口通信的原理,分析和讨论了台式电脑与AT89SC52RC单片机如何编程以及硬件连接实现串行通信的。

本设计主要介绍如何使用台式机与一台单片机通过串口实现串行通信。

在本设计中单片机采用AT89C52,台式机的高12v电平由1489芯片实现和单片机的5v电压转化;软件设计方面,台式机采用串口调试助手实现发送,单片机方面用中断方式完成数据的接收和发送,程序开发采用KeilC语言。

关键字:

台式机,AT89SC52RC单片机,1489芯片,串行通信

第一部分:

设计目的

   通信是指不同的独立系统利用线路互相交换数据,它的主要目的是将数据从一端传送到另一端,实现数据的交换。

在现代工业控制中,通常采用计算机作为上位机与下层的实时控制与监测设备进行通讯。

串行通信因其结构简单、执行速度快、抗干扰能力强等优点,已被广泛应用于数据采集和过程控制等领域。

计算机与外界的信息交换称为通信。

基本的通信方式有并行通信和串行通信两种。

串行通信是指一条信息额各位数据被逐位按顺序传送的通信方式。

串行通信的特点是:

数据位传送,按位顺序进行,最少只需要一根传输线即可完成,成本低但传送速度快,串行通信的距离可以从几米到几千米。

随着计算机技术尤其是单片微型机技术的发展,人们已越来越多地采用单片机来对一些工业控制系统中如温度、流量和压力等参数进行监测和控制。

台式机具有强大的监控和管理能力,而单片机则具有快速及灵和的控制特点,通过台式机的RS-232串行接口与外部设备进行通信,是许多测控系统中常用的一种通信解决方案。

本文所介绍的单片机和PC机的串行通信方法,电路简单,兼容性好,可移植性强,能够极好的实现串行通信的功能。

第二部分:

设计内容

2.1.1串行通信的基本知识

串行通信是指使用一条数据线,将数据一位一位地依次传输,每一位数据占据一个固定的时间长度。

其只需要少数几条线就可以在系统间交换信息,特别适用于计算机与计算机、计算机与外设之间的远距离通信。

要使串行通信工作,需要一根三根线的电缆——1根发送,1根用来接收,1根接地即可。

开始传输时,设备先发送一个起始位,其次是数据位。

该数据位可以是五,六,七,或8位,基于商定而定。

两个发送方和接收器必须设置为相同的数据通信比特或正确的比特率。

数据位被发送完后,就会发送一个停止位。

一个停止位可以是一位,一个半位,或两位。

波特率是数据从一个设备到另一个的传输速度。

波特率通常以每秒的位数(bps)来计量。

2.1.2串行通信工作模式

如果在通信过程的任意时刻,信息只能由一方A传到另一方B,则称为单工。

如图(a)。

如果在任意时刻,信息既可由A传到B,又能由B传A,但只能由一个方向上的传输存在,称为半双工传输。

如图(b)。

如果在任意时刻,线路上存在A到B和B到A的双向信号传输,则称为全双工。

如图(c)

 

(a)

(b)

(c)

2.1.3异步传输和同步传输

串行传输中,数据是一位一位按照到达的顺序依次传输的,每位数据的发送和接收都需要时钟来控制。

发送端通过发送时钟确定数据位的开始和结束,接收端需要在适当的时间间隔对数据流进行采样来正确的识别数据。

接收端和发送端必须保持步调一致,否则数据传输就会出现差错。

为了解决以上问题,串行传输可采用以下两种方法:

异步传输和同步传输。

1.异步传输

通常,异步传输是以字符为传输单位,每个字符都要附加1位起始位和1位停止位,以标记一个字符的开始和结束,并以此实现数据传输同步。

所谓异步传输是指字符与字符(一个字符结束到下一个字符开始)之间的时间间隔是可变的,并不需要严格地限制它们的时间关系。

起始位对应于二进制值0,以低电平表示,占用1位宽度。

停止位对应于二进制值1,以高电平表示,占用1~2位宽度。

一个字符占用5~8位,具体取决于数据所采用的字符集。

例如,电报码字符为5位、ASCII码字符为7位、汉字码则为8位。

此外,还要附加1位奇偶校验位,可以选择奇校验或偶校验方式对该字符实施简单的差错控制。

发送端与接收端除了采用相同的数据格式(字符的位数、停止位的位数、有无校验位及校验方式等)外,还应当采用相同的传输速率。

典型的速率有:

9600b/s、19.2kb/s、56kb/s等。

异步传输又称为起止式异步通信方式,其优点是简单、可靠,适用于面向字符的、低速的异步通信场合。

例如,计算机与Modem之间的通信就是采用这种方式。

它的缺点是通信开销大,每传输一个字符都要额外附加2~3位,通信效率比较低。

例如,在使用Modem上网时,普遍感觉速度很慢,除了传输速率低之外,与通信开销大、通信效率低也密切相关。

 

2.同步传输

通常,同步传输是以数据块为传输单位。

每个数据块的头部和尾部都要附加一个特殊的字符或比特序列,标记一个数据块的开始和结束,一般还要附加一个校验序列(如16位或32位CRC校验码),以便对数据块进行差错控制。

所谓同步传输是指数据块与数据块之间的时间间隔是固定的,必须严格地规定它们的时间关系。

和异步传输相比,数据传输单位的加长容易引起时钟漂移。

为了保证接收端能够正确地区分数据流中的每个数据位,收发双主必须通过某种方法建立起同步的时钟。

可以在发送器和接收器之间提供一条独立的时钟线路,由线路的一端(发送器或者接收器)定期地在每个比特时间中向线路发送一个短脉冲信号,另一端则将这些有规律的脉冲作为时钟。

这种技术在短距离传输时表现良好,但在长距离传输中,定时脉冲可能会和信息信号一样受到破坏,从而出现定时误差。

另一种方法是通过采用嵌有时钟信息的数据编码位向接收端提供同步信息。

2.2台式机与单片机的通信设计实现

单片机是一种集成电路芯片,是采用超大规模集成电路技术把具有数据处理能力的中央处理器CPU、随机存储器RAM、只读存储器ROM、多种I/O口和中断系统、定时器/计数器等功能(可能还包括显示驱动电路、脉宽调制电路、模拟多路转换器、A/D转换器等电路)集成到一块硅片上构成的一个小而完善的微型计算机系统,在工业控制领域广泛应用。

通过单片机和台式机实现此次的数据通信,并用C51程序进行调试,程序简单,硬件实现也不复杂,性对于纯粹的使用C++来实现更具有说服力,该设计中使用的单片机是STC89C52RC,由于单片机的收发引脚电平为TTL的±5V电平,但是台式机的电平为±12V(为RS232电平),因此,要想实现计算机和单片机的正常通信必须要通过MAX232或者MC1489芯片实现电平转换。

将单片机的自发自收程序通过Keil和STP程序烧写器烧进单片机之后,可以实现台式机与51单片机的自发自收。

2.2.1:

STC89C52单片机的引脚及其单片机寄存器介绍

单片机是微型集成器件,其功能强大,使用灵活。

下图是51系列单片机的最小系统及其单片机的内部引脚:

51单片机最小系统及其引脚图

其中,在最小系统中,晶振和容微系统提供外接时钟,接在XTAL2和XTAL1上,晶振的频率为11.0592M,XTAL1和XTAL2:

接外部晶振和微调电容,在片内它是振荡器反相放大器和时钟发生器的输入端;RST,引导内部复位程序或电路。

要求RST保持高电平一段时间,对总体电路是实现复位。

开发板中,10和11引脚表示数据的接收和发送引脚。

2.2.2:

单片机常用寄存器介绍

单片机在实现相关功能(如定时计数、中断查询等)时,必须要设置相应的寄存器状态才能实现,较为主要的寄存器有以下几个:

寄存器

地址

实现功能

TMOD

89H

定时器/计数器方式控制寄存器

TH1

8DH

定时器/计数器1(高8位)

TL1

8BH

定时器/计数器0(高8位)

SCON

98H

串行口控制寄存器

PCON

87H

电源控制寄存器

其中:

定时器工作模式寄存器:

TMOD

GATE当GATE置位时,定时器仅当TR=1并且INT=1时才工作,如果GATE=0

置位TR定时器就开始工作。

C/T定时器方式选择如果C/T=1定时器以计数方式工作C/T=0时以定时方式工作

M1模式选择位高位

M0模式选择位低位

串行控制器:

SCON

SM0串行模式选择

SM1串行模式选择

SM2多机通讯允许位当模式0时此位应该为0模式1时当接收到停止位时该位将置位模式2或模式3时当接收的第9位数据为1时将置位

REN串行接收允许位

TB8在模式2和模式3中将被发送数据的第9位

RB8在模式0中该位不起作用在模式1中该位为接收数据的停止位在模式2和模式3中为接收数据的第9位

TI串行中断标志位由软件清零

RI接收中断标志位有软件清零

中断使能寄存器:

EA

EA使能标志,位置位则所有中断使能,复位则禁止所有中断

-保留

ET2定时器2中断使能

ES串行通信中断使能

ET1定时器1中断使能

EX1外部中断1使能

ET0定时器0中断使能

EX0外部中断0

电源控制寄存器:

PCON

在常见单片机中,除SMOD位外,其他位均为虚设的,SMOD是串行口波特率倍增位,当SMOD=1时,串行口波特率加倍。

(程序如果不设置,则默认SMOD为0)

2.2.3波特率计算

在使用串口做通讯时,一个很重要的参数就是波特率,只有上下位机的波特率一样时才可以进行正常通讯。

波特率是指串行端口每秒内可以传输的波特位数。

这里所指的波特率,如标准9600不是每秒种可以传送9600个字节,而是指每秒可以传送9600个二进位,而一个字节要8个二进位,如用串口模式1来传输那么加上起始位和停止位,每个数据字节就要占用10个二进位,9600波特率用模式1传输时,每秒传输的字节数是9600÷10=960字节。

51芯片的串口工作模式0的波特率是固定的,为fosc/12,以一个12M的晶振来计算,那么它的波特率可以达到1M。

模式2的波特率是固定在fosc/64或fosc/32。

模式1和模式3的波特率是可变的,取决于定时器1或2(52芯片

溢出速率,就是说定时器1每溢出一次,串口发送一次数据。

_CY-M_m_|#Z|0

电子爱好者社区2e

v

u

IH

   通常会使用定时器1工作在定时器工作模式2下,这时定时值中的TL1做为计数,TH1做为自动重装值,这个定时模式下,定时器溢出后,TH1的值会自动装载到TL1,再次开始计数,这样可以不用软件去干预,使得定时更准确。

在这个定时模式2下定时器1溢出速率的计算公式如下:

g^T'b"J_vf+r0溢出速率=(计数速率)/(256-TH1初值)

电子爱好者社区u2R;q'e.i_X;N

溢出速率=fosc/[12*(256-TH1初值)电子爱好者社区w_F$R"n_e_q_B

   上式中的“计数速率”与所使用的晶体振荡器频率有关,在51芯片中定时器启动后会在每一个机器周期使定时寄存器TH的值增加一,一个机器周期等于十二个振荡周期,所以可以得知51芯片的计数速率为晶体振荡器频率的1/12,一个12M的晶振用在51芯片上,那么51的计数速率就为1M。

通常用11.0592M晶体是为了得到标准的无误差的波特率,那么为何呢?

计算一下就知道了。

如我们要得到9600的波特率,晶振为11.0592M和12M,定时器1为模式2,SMOD设为0,分别看看所要求的TH1为何值。

代入

11.0592M电子爱好者社区(?

u

p_@_X)]5o_N

          9600=(1÷32)×((11.0592M/12)/(256-TH1))电子爱好者社区"v_T_^_X'~_uz_@xH

          TH1=253

8R_d_ou.j_|012M

~0[_N"w\_O0          9600=(1÷32)×((12M/12)/(256-TH1))

B:

A_s_o

l(Qy#m0          TH1≈252.7电子爱好者社区_HJ4@/fI_`_eb

  上面的计算可以看出使用12M晶体的时候计算出来的TH1不为整数,而TH1的值只能取整数,这样它就会有一定的误差存在不能产生精确的9600波特率。

当然一定的误差是可以在使用中被接受的,就算使用11.0592M的晶体振荡器也会因晶体本身所存在的误差使波特率产生误差,但晶体本身的误差对波特率的影响是十分之小的,可以忽略不计。

因此在程序中设计TH1=0XFDH.

2.2.4电平转换器件MC1489

由于MCS-51采用TTL电平,若用RS-232C标准接口通信必须进行电平转换。

目前RS-232C与TTL电平转换最常用的集成电路芯片是MC1489。

其内部结构和引脚如下图所示:

1489引脚图

MC1489可完成由RS-232C到TTL电平转换,输入为RS-232C电平,输出为TTL电平。

其内部有4个反相器,采用+5V电源供电。

MC1489中每个反相器都有一个控制端,高电平有效,可作为RS-232C操作的控制端。

2.2.5RS232串行口DB9接口定义

其中,主要将其中的2号和3号收发端口和电平转换器件MC1489的收发端口相连接,实现数据收发。

第三部分:

设计实现

3.1设计程序及其相关解释

单片机程序采用C51语言来实现程序的自发自收,单个字符的收发,同时在收到字符之后显示“Iget”,程序代码如下:

该程序由keil编译并生成hex文件,并通过STP61单片机烧写器烧进51单片机中,经由串口调试助手实现单个字符的串口自收通信。

3.2具体的硬件实现:

1:

设计使用的51单片机

2:

设计使用的MC1489

3:

设计使用的DB96

4:

系统的总体连接图

3.3实验结果:

使用串口调试助手选择串口的COM1端口,同时注意波特率和系统设计的相同(9600),输入单个字符可以实现单个字符的自发自收。

1:

以字符形式输入,单个字符数出(可以实现大小写,数字和符号的收发)

2:

以十六进制形式输入,十六进制输出(可以实现大小写,数字和符号的收发)

 

其中,4920677420分别代表I,空格,g,e,t,空格。

第四部分:

设计心得

通过此次设计更好的掌握了串口通信的相关知识,并且通过使用单片机实现通信,加强了自己的动手能力,在焊接和程序的调试查找过程中更加增加了自己的耐心,通过一遍遍的改程序和调试硬件,深深地意识到动手能力的重要性!

同时此次作业谢谢老师的指导,没有老师的指导和帮助可能自己现在仍旧存在很多误区没有解决,同时相信自己下一次会更好!

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 经管营销 > 财务管理

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1