您的当前位置:首页正文

串口通信【单片机】

来源:九壹网


目 录

摘 要.............................................................. 2 第一章 :单片机简介.................................................. 3

1.1 单片机定义 .................................................. 3 1.2 芯片简介 .................................................... 3

1.2.1 AT89C51 单片机......................................... 3 1.2.2 MAX 232 简介........................................... 6

第二章 :串口通信原理............................................... 9

2.1双向串口通信方框图........................................... 9

2.1.1 通讯原理............................................... 9 2.1.2 串口通讯接口.......................................... 10 2.2 程序下载 ................................................... 11 第三章 :软件部分设计.............................................. 13

3.1 PROTEUS 介绍 .............................................. 13 3.2 程序设计 ................................................... 14

3.2.1 课程设计的程序要求.................................... 14 3.2.2 流程图................................................ 14 3.2.3 程序................................................. 15

第四章:调试与仿真................................................. 20

4.1 调试助手设置 ............................................... 20

4.1.1 串口用于ASCII码字符的传输设置........................ 20 4.2 串口设置 ................................................... 21

4.2.1 通常设置.............................................. 21 4.2.2 调试流程图............................................ 23 4.2.3 串口系列选择.......................................... 24

设计总结........................................................... 25 参考文献........................................................... 26

1

摘 要

计算机与计算机或计算机与终端之间的数据传送可以采用串行通讯和并行通讯二种方式。由于串行通讯方式具有使用线路少、成本低,特别是在远程传输时,避免了多条线路特性的不一致而被广泛采用。 在串行通讯时,要求通讯双方都采用一个标准接口,使不同 的设备可以方便地连接起来进行通讯。 RS-232-C接口(又称 EIA RS-232-C)是目前最常用的一种串行通讯接口。它是在1970年由美国电子工业协会(EIA)联合贝尔系统、 调制解调器厂家及计算机终端生产厂家共同制定的用于串行通讯的标 准。它的全名是“数据终端设备(DTE)和数据通讯设备(DCE)之间 串行二进制数据交换接口技术标准”该标准规定采用一个25个脚的 DB25连接器,对连接器的每个引脚的信号内容加以规定,还对各种信 号的电平加以规定。

随着计算机技术尤其是单片微型机技术的发展,人们已越来越多地采用单片机来对一些工业控制系统中如温度、流量和压力等参数进行检测和控制。PC机具有强大的监控和管理功能,而单片机则具有快速及灵活的控制特点,通过PC机的RS-232串行接口与外部设备进行通信,是许多测控系统中常用的一种通信解决方案。因此如何实现PC机与单片机之间的通讯具有非常重要的现实意义。

2

第一章:单片机简介

1.1 单片机定义

单片机微型计算机是微型计算机的一个重要分支,也是颇具生命力的机种。单片机微型计算机简称单片机,特别适用于控制领域,故又称为微控制器。 通常,单片机由单块集成电路芯片构成,内部包含有计算机的基本功能部件:中央处理器、存储器和I/O接口电路等。因此,单片机只需要和适当的软件及外部设备相结合,便可成为一个单片机控制系统。

单片机经过1、2、3、3代的发展,目前单片机正朝着高性能和多品种方向发展,它们的CPU功能在增强,内部资源在增多,引角的多功能化,以及低电压底功耗。

1.2 芯片简介

本章主要介绍AT89C51单片机和MAX232芯片。

1.2.1 AT89C51 单片机

AT89C51是一种带4K字节闪存可编程可擦除只读存储器(FPEROM—Flash Programmable and Erasable Read Only Memory)的低电压、高性能CMOS 8位微处理器,俗称单片机。AT89C2051是一种带2K字节闪存可编程可擦除只读存储器的单片机。单片机的可擦除只读存储器可以反复擦除1000次。该器件采用ATMEL高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。由于将多功能8位CPU和闪烁存储器组合在单个芯片中,ATMEL的AT89C51是一种高效微控制器,AT89C2051是它的一种精简版本。AT89C单片机为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。外形及引脚排列如(图1.1)所示 。

3

图1.1 AT89C2单片机

一.主要特性: ·与MCS-51 兼容

·4K字节可编程闪烁存储器 ·寿命:1000写/擦循环 ·数据保留时间:10年 ·全静态工作:0Hz-24MHz ·三级程序存储器锁定 ·128×8位内部RAM ·32可编程I/O线 ·两个16位定时器/计数器 ·5个中断源 ·可编程串行通道 ·低功耗的闲置和掉电模式 ·片内振荡器和时钟电路

二.管脚说明

VCC:供电电压。 GND:接地。

P0口:P0口为一个8位漏级开路双向I/O口,每脚可吸收8TTL门电流。当P1口的管脚第一次写1时,被定义为高阻输入。P0能够用于外部程序数据存

4

储器,它可以被定义为数据/地址的第八位。在FIASH编程时,P0 口作为原码输入口,当FIASH进行校验时,P0输出原码,此时P0外部必须被拉高。

P1口:P1口是一个内部提供上拉电阻的8位双向I/O口,P1口缓冲器能接收输出4TTL门电流。P1口管脚写入1后,被内部上拉为高,可用作输入,P1口被外部下拉为低电平时,将输出电流,这是由于内部上拉的缘故。在FLASH编程和校验时,P1口作为第八位地址接收。

P2口:P2口为一个内部上拉电阻的8位双向I/O口,P2口缓冲器可接收,输出4个TTL门电流,当P2口被写“1”时,其管脚被内部上拉电阻拉高,且作为输入。并因此作为输入时,P2口的管脚被外部拉低,将输出电流。这是由于内部上拉的缘故。P2口当用于外部程序存储器或16位地址外部数据存储器进行存取时,P2口输出地址的高八位。在给出地址“1”时,它利用内部上拉优势,当对外部八位地址数据存储器进行读写时,P2口输出其特殊功能寄存器的内容。P2口在FLASH编程和校验时接收高八位地址信号和控制信号。

P3口:P3口管脚是8个带内部上拉电阻的双向I/O口,可接收输出4个TTL门电流。当P3口写入“1”后,它们被内部上拉为高电平,并用作输入。作为输入,由于外部下拉为低电平,P3口将输出电流(ILL)这是由于上拉的缘故。

P3口也可作为AT89C51的一些特殊功能口,如下表所示: 口管脚 备选功能 P3.0 RXD(串行输入口) P3.1 TXD(串行输出口) P3.2 /INT0(外部中断0) P3.3 /INT1(外部中断1) P3.4 T0(记时器0外部输入) P3.5 T1(记时器1外部输入) P3.6 /WR(外部数据存储器写选通) P3.7 /RD(外部数据存储器读选通)

P3口同时为闪烁编程和编程校验接收一些控制信号。

RST:复位输入。当振荡器复位器件时,要保持RST脚两个机器周期的高电平时间。

ALE/PROG:当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的地位字节。在FLASH编程期间,此引脚用于输入编程脉冲。在平时,ALE端以不变的频率周期输出正脉冲信号,此频率为振荡器频率的1/6。因此它可用作对外部输出的脉冲或用于定时目的。然而要注意的是:每当用作外部数据存储器时,

5

将跳过一个ALE脉冲。如想禁止ALE的输出可在SFR8EH地址上置0。此时, ALE只有在执行MOVX,MOVC指令是ALE才起作用。另外,该引脚被略微拉高。如果微处理器在外部执行状态ALE禁止,置位无效。

/PSEN:外部程序存储器的选通信号。在由外部程序存储器取指期间,每个机器周期两次/PSEN有效。但在访问外部数据存储器时,这两次有效的/PSEN信号将不出现。

/EA/VPP:当/EA保持低电平时,则在此期间外部程序存储器(0000H-FFFFH),不管是否有内部程序存储器。注意加密方式1时,/EA将内部锁定为RESET;当/EA端保持高电平时,此间内部程序存储器。在FLASH编程期间,此引脚也用于施加12V编程电源(VPP)。

XTAL1:反向振荡放大器的输入及内部时钟工作电路的输入。 XTAL2:来自反向振荡器的输出。

振荡器特性: XTAL1和XTAL2分别为反向放大器的输入和输出。该反向放大器可以配置为片内振荡器。石晶振荡和陶瓷振荡均可采用。如采用外部时钟源驱动器件,XTAL2应不接。有余输入至内部时钟信号要通过一个二分频触发器,因此对外部时钟信号的脉宽无任何要求,但必须保证脉冲的高低电平要求的宽度。

1.2.2 MAX 232 简介

MAX232芯片是美信公司专门为电脑的RS-232标准串口设计的单电源电平转换芯片, 由于标准规定, RS232 的电平采用±12V,与89C51单片机串行口的TTL电平不一致。因此,采用集成电平转换芯片MAX232进行电平转换成+5v单电源供电,方能实现电压一致性驱动电路。

该器件符合TIA/EIA-232-F标准,每一个接收器将TIA/EIA-232-F电平转换成5-V TTL/CMOS电平。每一个发送器将TTL/CMOS电平转换成TIA/EIA-232-F电平。

如图1.2所示:

6

图1.2 MAX 232芯片

一.引脚介绍:

第一部分是电荷泵电路。由1、2、3、4、5、6脚和4只电容构成。功能是产生+12v和-12v两个电源,提供给RS-232串口电平的需要。

第二部分是数据转换通道。由7、8、9、10、11、12、13、14脚构成两个数据通道。

其中13脚(R1IN)、12脚(R1OUT)、11脚(T1IN)、14脚(T1OUT)为第一数据通道。8脚(R2IN)、9脚(R2OUT)、10脚(T2IN)、7脚(T2OUT)为第二数据通道。TTL/CMOS数据从T1IN、T2IN输入转换成RS-232数据从T1OUT、T2OUT送到电脑DB9插头;DB9插头的RS-232数据从R1IN、R2IN输入转换成TTL/CMOS数据后从R1OUT、R2OUT输出。

第三部分是供电。15脚GND、16脚VCC(+5v)。 二.主要特点:

1、符合所有的RS-232C技术标准 2、只需要单一 +5V电源供电

3、片载电荷泵具有升压、电压极性反转能力,能够产生+10V和-10V电压V+、V-

7

4、功耗低,典型供电电流5mA 5、内部集成2个RS-232C驱动器

6、内部集成两个RS-232C接收器

三.RS232串口标准:

串行通信接口标准经过使用和发展,目前已经有多种;但都是在RS232标准的基础上经过改进而形成的。RS-232C标准最初是由美国EIA和BELL公司一起开发并于1969年公布的通信进议,而至1997年,远程工业协会(TIA)又发布了最新的一个版本,命名为TIA/EIA-232-F。而ITF(国际电信联盟)和CCITT(国际电话与电报顾问委员会)发布了一个类似的标准——V.28。这些标准都对串行通信接口的有关问题,如信号线功能、电器特性都作了明确规定。由于通信设备厂商都生产与RS-232C制式兼容的通信设备,因此,它作为一种标准,目前已在微机通信接口中广泛采用,不仅被内置于每一台计算机,同时也被内置于从微控制器到主机的多种类型的计算机及其相连接的设备;也就是常说的RS232端口。

PC机的RS232端口与一般单片机上的UART接口从数据收发的时序上看,是一样的协议,不同的是两者用以表达逻辑“1”和“0”的规定是不一样的,即电平是不兼容的。RS232端口用正负电压来表示逻辑状态,与TTL(单片机的UART接口电平)以高低电平表示逻辑状态的规定是不同的。因此,为了能够同计算机接口和终端的TTL器件连接,必需进行电平和逻辑关系的变换。实现这种变换的方法可用分立元件,也可用集成电路芯片。MAX232芯片就是目前应用较为广泛的电平转换器件,它可以实现TTL到EIA双向电平转换;该芯片支持两路串行异步通讯,RIN1为第一路输入,ROUT1为第一路输出;RIN2为第二路输入管脚,ROUT2为第二路输出。

8

第二章:串口通信原理

2.1双向串口通信方框图

MAX 232 电平转换器 单片机PC机 2.1.1 通讯原理

串行通讯的基本概念:与外界的信息交换称为通讯。基本的通讯方式有并行通讯和串行通讯两种。

一条信息的各位数据被同时传送的通讯方式称为并行通讯。并行通讯的特点是:各数据位同时传送,传送速度快、效率高,但有多少数据位就需多少根数据线,因此传送成本高,且只适用于近距离(相距数米)的通讯。

一条信息的各位数据被逐位按顺序传送的通讯方式称为串行通讯。串行通讯的特点是:数据按位顺序传送,最少仅需一根传输线即可完成,成本低但传送速度慢。串行通讯的距离可以从几米到几千米。

根据信息的传送方向,串行通讯可以进一步分为单工、半双工和全双工三种。信息只能单向传送为单工;信息能双向传送但不能同时双向传送称为半双工;信息能够同时双向传送则称为全双工。

串行通讯又分为异步通讯和同步通讯两种方式。在单片机中,主要使用异步通讯方式。

SPCE061A单片机有一个全双工串行口。全双工的串行通讯只需要一根输出线和一根输入线。数据的输出又称发送数据(TXD),数据的输入又称接收数据(RXD)。串行通讯中主要有两个技术问题,一个是数据传送、另一个是数据转换。数据传送主要解决传送中的标准、格式及工作方式等问题。数据转换是指数据的串并行转换。具体说,在发送端,要把并行数据转换为串行数据;而在接收端,却要把接收到的串行数据转换为并行数据。

异步通讯:它用一个起始位表示字符的开始,用停止位表示字符的结束。其

9

图2.1 串口通信方框图

每帧的格式如下:

在一帧格式中,先是一个起始位0,然后是8个数据位,规定低位在前,高位在后,接下来是奇偶校验位(可以省略),最后是停止位1。用这种格式表示字符,则字符可以一个接一个地传送。

启动位D0D7D6D5D4D3D2D1startstop8位数据奇偶优先检查位结束位parity 在异步通讯中,CPU与外设之间必须有两项规定,即字符格式和波特率。字符格式的规定是双方能够对0和1的串理解成同一种意义。原则上字符格式可以由通讯的双方自由制定,但从通用、方便的角度出发,一般还是使用一些标准为好,如采用ASCII标准。

波特率即数据传送的速率,其定义是每秒钟传送的二进制数的位数。 2.1.2 串口通讯接口

常用PC机串行接口有3种:PS/2接口用于连接键盘和鼠标;RS232C串行接口一般用来实现PC机

与较低速外部设备之间的远距离通信;USB通用串行总线接口是现在比较流行的接口,它最大的好处在

于能支持多达127个外设,外设可以独立供电,也可以通过USB接口从主板上获得500 mA@+5 V的电

流,并且支持热拔插,真正做到即插即用。

PC机的3种串行接口都可以用于与外设之间的数据通信,PS/2接口由于是专用于键盘和鼠标,在PC机的编程处理上要麻烦一些,而且在多数情况下,其他外设还不能占用。USB接口有着功能强大、传输速度高、连接外设数量多,可向外设提供电源等特点,其应用越来越广,但是与RS232C串行接口比较,USB接口的上位机(即PC机)程序的开发有着开发难度大、涉及知识面广、开发周期长等特点,同时在下位机(即单片机)硬件设计时必须选用带有USB接口的单片机或扩展专门的USB接口芯片,这必然会给下位机的软硬件系统设计增加难度并提高了软硬件成本。所以,USB接口通常用于对传输速度要求高、传输功能复杂、或需上位机提供电源的外设和装置上。整体原理图如(图2.2串口通信原理图)。

10

图2.2 串口通信原理图

在此电路中要注意:

(1)VCC接电源,必须保证稳定可靠;

(2)nEA管脚不可悬空,必须连到VCC,或者通过上拉电阻接到VCC; (3)复位电路建议采用传统的RC复位,最好多带一个复位按键,以便操作; (4)晶振的频率点不是任意的,推荐使用11.0592MHZ或者22.1184MHZ; (5)nPSEN 管脚请悬空,不要接GND;

2.2 程序下载

51单片机有一个全双工的串行通讯口,所以单片机和计算机之间可以方便地进行串口通讯。进行串行通讯时要满足一定的条件,比如计算机的串口是RS232电平的,而单片机的串口是TTL电平的,两者之间必须有一个电平转换电路,我们采用了专用芯片MAX232进行转换,虽然也可以用几个三极管进行模拟转换,但是还是用专用芯片更简单可靠。我们采用了三线制连接串口,也就是说和计算机的9针串口只连接其中的3根线:第5脚的GND、第2脚的RXD、第3脚的TXD。这是最简单的连接方法,但是对我们来说已经足够使用了,电路如下图所示,MAX232的第10脚和单片机的11脚连接,第9脚和单片机的10脚连接,

11

第15脚和单片机的20脚连接。如下图3.1图示

图2.3 ISP 连接图

使用MAX232串口通信电路图(9孔串口接头)

串口通讯的硬件电路如上图所示为了能够在计算机端看到单片机发出的数据,我们必须借助一个WINDOWS软件进行观察,这里利用如下图标的一个免费计算机串口调试软件。

12

第三章:软件部分设计

3.1 PROTEUS 介绍

Proteus软件是英国Labcenter electronics公司出版的EDA工具软件(该软件中国总代理为广州风标电子技术有限公司)。它不仅具有其它EDA工具软件的仿真功能,还能仿真单片机及外围器件。它是目前最好的仿真单片机及外围器件的工具。虽然目前国内推广刚起步,但已受到单片机爱好者、从事单片机教学的教师、致力于单片机开发应用的科技工作者的青睐。Proteus是世界上著名的EDA工具(仿真软件),从原理图布图、代码调试到单片机与外围电路协同仿真,一键切换到PCB设计,真正实现了从概念到产品的完整设计。是目前世界上唯一将电路仿真软件、PCB设计软件和虚拟模型仿真软件三合一的设计平台,其处理器模型支持8051、HC11、PIC10/12/16/18/24/30/DsPIC33、AVR、ARM、8086和MSP430等,2010年即将增加Cortex和DSP系列处理器,并持续增加其他系列处理器模型。在编译方面,它也支持IAR、Keil和MPLAB等多种编译器。 一.其功能特点

Proteus软件具有其它EDA工具软件(例:multisim)的功能。这些功能是:

(1)原理布图

(2)PCB自动或人工布线 (3)SPICE电路仿真 二.革命性的特点

(1)互动的电路仿真

用户甚至可以实时采用诸如RAM,ROM,键盘,马达,LED,LCD,AD/DA,部分SPI器件,部分IIC器件。

(2)仿真处理器及其外围电路可以仿真51系列、AVR、PIC、ARM、等常用主流单片机。还可以直接在基于原理图的虚拟原型。

上编程,再配合显示及输出,能看到运行后输入输出的效果。配合系统配置的虚拟逻辑分析仪、示波器等,Proteus建立了完备的电子设计开发环境。 三.具有4大功能模块

(1)智能原理图设计(ISIS)

(2)完善的电路仿真功能(Prospice) (3)独特的单片机协同仿真功能(VSM) (4)实用的PCB设计平台 四.电路功能仿真

13

在PROTEUS绘制好原理图后,调入已编译好的目标代码文件:*.HEX,可以在PROTEUS的原理图中看到模拟的实物运行状态和过程。

PROTEUS 是单片机课堂教学的先进助手。

PROTEUS不仅可将许多单片机实例功能形象化,也可将许多单片机实例运行过程形象化。前者可在相当程度上得到实物演示实验的效果,后者则是实物演示实验难以达到的效果。

目前Proteus的最新版为7.7 sp2,今年将推出8.0版本,增加DSP系列及ARM cortex处理器。

3.2 程序设计

3.2.1 课程设计的程序要求:

单片机接受PC机发来的不同指令信号,完成不同的工作。

本设计程序流程:在PC机上使用串口调试软件,向单片机发送字符串。 (1)当接收到指令信号为:‘go’。单片机向PC机发送字符串‘WELCOME TO CHINA!’;

(2)当接收到指令信号为:‘who’。单片机向PC机发送字符串‘MY NAME IS LIMING!’;

(3)当接收到指令信号为:‘home’。单片机向PC机发送字符串‘YINGYONGKEXUEXUEYUAN!’;

这时,串口调试软件就会在窗口显示出相应的字符串,如果接受的字符串不正确,单片机不响应。 3.2.2 流程图

开始 系统下载文件 系统测试 输出显示 系统上传文件 结束 3.1 串口通信流程图

14

3.2.3 程序

#include

code unsigned char r1[]={\"go\code unsigned char r2[]={\"who\code unsigned char r3[]={\"home\

code unsigned char s1[]={\"WELCOME TO CHINA!\code unsigned char s2[]={\"MY NAME IS LIMING\code unsigned char s3[]={\"YINGYONGKEXUEXUEYUAN\unsigned char send_s;

unsigned char s_count,s_count2,t_count; unsigned char temp; unsigned char buf[20];

void service_intt0() interrupt 1 using 2 //串口中断号为1,后面的using为寄存器组切换2 {

EA=0; t_count++; if(t_count>=10) {

if(s_count==2) { }

else if(s_count==3) { }

if((buf[0]==r2[0])&&(buf[1]==r2[1])&&(buf[2]==r2[2])) { }

send_s=2;

if((buf[0]==r1[0])&&(buf[1]==r1[1])) { }

send_s=1;

15

else if(s_count==4) {

if((buf[0]==r3[0])&&(buf[1]==r3[1])&&(buf[2]==r3[2])&&(buf[3]==r3[3]))

{ send_s=3;

}

}

s_count=0;

t_count=0;

} TH0=0x3c; TL0=0xb0; EA=1;

}

void service_ints() interrupt 4 using 3 //using为寄存器组切换3 { EA=0; if(RI==1) { buf[s_count]=SBUF; s_count++; t_count=0; TH0=0x3c; TL0=0xb0; RI=0;

}

else if(TI==1) { ;

}

EA=1;

串口中断号为4,后面的16

}

void main() {

TMOD=0x21; //定时器1工作在方式2,定时器0工作在方式1 TH0=0x3c; //波特率为9600 TL0=0xb0;

TH1=0xfd; //实现波特率9600(系统时钟11.0592MHZ) TL1=0xfd;

TR0=1; //启动定时器0 TR1=1; //启动定时器1

SCON=0x50; //选择串口工作方式,打开接受允许 PCON=0X90; //波特率不增倍 RI=0; //清楚中断标志位 TI=0; //允许处理发送中断 ET0=1;

ES=1; //允许串口中断 EA=1; //单片机中断允许 while(1) {

if(send_s==1) {

EA=0; s_count2=0;

while(s1[s_count2]!='\\0') { }

send_s=0;

TH0=0x3c; //波特率设置 TL0=0xb0;

EA=1; //单片机中断允许

SBUF=s1[s_count2];

while(TI==0){;} //TI==0,则中断响应,不做任何处理 TI=0; s_count2++;

17

}

else if(send_s==2) { EA=0; s_count2=0;

while(s2[s_count2]!='\\0') { SBUF=s2[s_count2]; while(TI==0){;} TI=0; s_count2++;

}

send_s=0; TH0=0x3c; TL0=0xb0; EA=1;

}

else if(send_s==3) { EA=0;

s_count2=0;

while(s3[s_count2]!='\\0') { SBUF=s3[s_count2]; while(TI==0){;} TI=0; s_count2++; }

send_s=0; TH0=0x3c; TL0=0xb0; EA=1;

}

else if(send_s==4)

18

{ EA=0; send_s=0; TH0=0x3c;

TL0=0xb0;

EA=1; }

}

}

19

第四章:调试与仿真

4.1 调试助手设置

串口是计算机上一种非常通用设备通信的协议(不要与通用串行总线Universal Serial Bus或者USB混淆)。大多数计算机包含两个基于RS232的串口。串口同时也是仪器仪表设备通用的通信协议;很多GPIB兼容的设备也带有RS-232口。同时,串口通信协议也可以用于获取远程采集设备的数据。

串口通信的概念非常简单,串口按位(bit)发送和接收字节。尽管比按字节(byte)的并行通信慢,但是串口可以在使用一根线发送数据的同时用另一根线接收数据。它很简单并且能够实现远距离通信。比如IEEE488定义并行通行状态时,规定设备线总常不得超过20米,并且任意两个设备间的长度不得超过2米;而对于串口而言,长度可达1200米。 4.1.1 串口用于ASCII码字符的传输设置

通信使用3根线完成:(1)地线,(2)发送,(3)接收。由于串口通信是异步的,端口能够在一根线上发送数据同时在另一根线上接收数据。其他线用于握手,但是不是必须的。串口通信最重要的参数是波特率、数据位、停止位和奇偶校验。对于两个进行通行的端口,这些参数必须匹配:

a,波特率:这是一个衡量通信速度的参数。它表示每秒钟传送的bit的个数。例如300波特表示每秒钟发送300个bit。当我们提到时钟周期时,我们就是指波特率例如如果协议需要4800波特率,那么时钟是4800Hz。这意味着串口通信在数据线上的采样率为4800Hz。通常电话线的波特率为14400,28800和36600。波特率可以远远大于这些值,但是波特率和距离成反比。高波特率常常用于放置的很近的仪器间的通信,典型的例子就是GPIB设备的通信。

b,数据位:这是衡量通信中实际数据位的参数。当计算机发送一个信息包,实际的数据不会是8位的,标准的值是5、7和8位。如何设置取决于你想传送的信息。比如,标准的ASCII码是0~127(7位)。扩展的ASCII码是0~255(8位)。如果数据使用简单的文本(标准 ASCII码),那么每个数据包使用7位数据。每个包是指一个字节,包括开始/停止位,数据位和奇偶校验位。由于实际数据位取决于通信协议的选取,术语“包”指任何通信的情况。

c,停止位:用于表示单个包的最后一位。典型的值为1,1.5和2位。由于数据是在传输线上定时的,并且每一个设备有其自己的时钟,很可能在通信中两

20

台设备间出现了小小的不同步。因此停止位不仅仅是表示传输的结束,并且提供计算机校正时钟同步的机会。适用于停止位的位数越多,不同时钟同步的容忍程度越大,但是数据传输率同时也越慢。

d,奇偶校验位:在串口通信中一种简单的检错方式。有四种检错方式:偶、奇、高和低。当然没有校验位也是可以的。对于偶和奇校验的情况,串口会设置校验位(数据位后面的一位),用一个值确保传输的数据有偶个或者奇个逻辑高位。例如,如果数据是011,那么对于偶校验,校验位为0,保证逻辑高的位数是偶数个。如果是奇校验,校验位位1,这样就有3个逻辑高位。高位和低位不真正的检查数据,简单置位逻辑高或者逻辑低校验。这样使得接收设备能够知道一个位的状态,有机会判断是否有噪声干扰了通信或者是否传输和接收数据是否不同步 。

4.2 串口设置

为了使调成程序,我们首先要对串口进行设置。

4.2.1 通常设置

1.支持1-64个串行端口。

2.可设置非标准或更高的波特率,不限于列表中的特定波特率。

3.可设置串口的2个输出线路信号DTR/RTS的状态,以及TxD信号的BREAK状态。4.可实时显示串口的4个输入线路信号CTS/DSR/RING/DCD的状态。 5.可分别清空发送区或接收区的数据。 6.可对发送的数据和接收的数据单独计数。

一.发送数据:

1.发送数据时,可采用手动发送和自动发送,自动发送还可以指定发送的周期。2.发送区的数据可以按字符方式或16进制方式解释、发送。 3.按字符方式发送时,发送区可输入中英文混合字符。

4.按16进制方式发送时,发送区的每个数据间只需用空格或回车隔开,每个数据只有最低2个16进制字符有效。

5.发送区的数据可以从文件中调入,读入到发送区时,可按字符方式或16进制方式显示。

21

图4.1 调试原理图

二.接收数据:

1.接收区的数据可以按字符方式或16进制方式显示。

2.按字符方式接收时,在低速波特率下,可正确接收和显示中英文混合字符。 3.可手动或自动保存接收区内容到指定文件中。自动保存的接收内容长度没有限制。

4.可采用仿超级终端方式操作和显示。

22

4.2.2 调试流程图

调试内容为第四章的实验要求。 按要求完成实验内容。 开始 N 是否接收数据 接收数据 接收数据是否为给定?

Y N 为给定数据或 不为给定数 者字符串 据或者字符 串 测试成功,系统测试失败,系 输出相应结果 统不响应 结束

图4.2调试流程图

23

4.2.3 串口系列选择 V2.00 2002/12/31 159K 1.串行端口号增加到16个。 2.增加一些选项,可选择以下功能:

(1)可选择接收区的光标是否总是跟随在接收内容的最后。

a.如果是,可以看到最新接收到的内容,但当内容比较多时,接收区会闪烁。 b.如果不是,则会看不到最后接收到的内容,即屏幕不刷新,但接收速度快。 (2)可选择在接收字符时,控制字符(00h-1Fh)是否显示为[xx]。 a.如果是,则不可显示的控制字符将按16进制方式显示,用[]括起来。 b.如果不是,控制字符会显示为空格或其他,特别是若接收到控制字符00h后,会造成之后接收到的其它内容都无法正常显示出来。 (3)可选择是否仿超级终端方式。

a.如果是,则发送和接收的内容都同时显示在接收区中,特别方便Modem或 ADAM4000系列等字符设备的调试。

b.如果不是,则接收区只显示接收到的内容。 (4)可选择是否自动保存接收区内容。

a.如果是,可设置自动保存的接收字符总数,以及保存文件名。接收之前,先 按[开始保存],之后每接收满指定的字符数,就自动保存到文件中,并清空接收区以便继续接收。接收完成后,按[停止保存]可得到完整的接收文件。接收内容的长度没有限制。

b.如果不是,则需要自己手动保存。接收完成后,按[保存为],再输入文件名,确认后,就可保存接收区的所有内容到指定文件中。 3.发送/接收显示区的范围大小可自由上下左右调整。 4.可选择是否计数。 5.修改一些BUG。

V1.10 2001/12/30 153K

1.更换通讯模块,支持在Windows 9x/Me/NT/2000/XP下正确运行。 2.增加TxD信号的BREAK控制。 3.增加发送数据的流量控制功能。

4.在低速波特率下,仍能正确接收和显示中文字符。

5.串口初始化时,根据DTR/RTS/BREAK的选择,自动设置输出信号的状态。 6.接收区显示字符超过30000个,就自动清空。

24

设计总结

这次单片机课程设计历时三个多星期,在整整三个多星期的日子里,可以说是苦多于甜,但是可以学的到很多很多的东西,同时不仅可以巩固以前所学过的知识,而且学到了很多在书本上所没有学到过的知识。通过这次设计,进一步加深了对单片机的了解,让我对它有了更加浓厚的兴趣。特别是当每一个子模块编写调试成功时,心里特别的开心。但是在编写顶层文件的程序时,遇到了不少问题,特别是各元件之间的连接,以及定时器的设定,总是有错误,在细心的检查下,终于找出了错误和警告,排除困难后,程序编译就通过了,心里终于舒了一口气。在调试仿真时,也遇到了一点困难,想要的结果总是不能正确的显示,后来,在多次的调试之后,才发现是因为输入的定时器时间太长了。经过屡次调试,终于找到了比较合适的输入数值,仿真成功了。

其次,在连接各个模块编译程序的时候一定要注意各个变量的定义和功能,因为每个定义和功能不一样的,会影响实验结果,再者就是程序需规范化,语法不能出错,编译才能通过,试验才能成功。

通过这次课程设计使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正为社会服务,从而提高自己的实际动手能力和独立思考的能力。在设计的过程中遇到问题,可以说得是困难重重,在实验过程中难免会遇到过各种各样的问题,同时在设计的过程中发现了自己的不足之处,对以前所学过的知识理解得不够深刻,掌握得不够牢固。

同时也确定了,单片机在目前的发展形势下,表现出几大趋势:可靠性及应用越来越水平高和互联网连接已是一种明显的走向。所集成的部件越来越多;NS(美国国家半导体)公司的单片机已把语音、图象部件也集成到单片机中,也就是说,单片机的意义只是在于单片集成电路,而不在于其功能了;如果从功能上讲它可以讲是万用机。原因是其内部已集成上各种应用电路。功耗越来越低和模拟电路结合越来越多。随着半导体工艺技术的发展及系统设计水平的提高,单片机还会不断产生新的变化和进步,最终人们可能发现:单片机与微机系统之间的距离越来越小,甚至难以辨认。

总的来说,这次设计的串口通信还是比较成功的,在设计中遇到了很多问题,最后在老师的辛勤的指导下,终于游逆而解,有点小小的成就感,终于觉得平时所学的知识有了实用的价值,达到了理论与实际相结合的目的,不仅学到了不少知识,而且锻炼了自己的能力,使自己对以后的路有了更加清楚的认识。最后,对给过我帮助的所有同学和各位指导老师再次表示忠心的感谢!

25

参考文献

【1】官 波、容玉平. AT89C51的扩展串口与PC机间的通讯[ J ]. 2001, (3) : 61~63 【2】马宏忠. 多台单片机与IBM - PC机间的快速通讯[ J ].电气自动化, (4) : 36~38 【3】朱明宇,武 峰. 8031单片机主从式数据采集系统设计[ J ], 1997, (4) : 9~12 【4】李 华. MCS51系列单片机实用接口技术[M ]. 北京:北京航空航天大学出版社, 1993 【5】张毅坤. 单片微型计算机原理及应用,西安电子科技大学出版社 1998

【6】余锡存 曹国华.单片机原理及接口技术[M].陕西:西安电子科技大学出版社,2000.7 【7】雷丽文 等.微机原理与接口技术[M].北京:电子工业出版社,1997.2 【8】余永权. ATMEL89系列(MCS-51兼容)FLASH单片机原理及应用. 1997 【9】李建忠 单片机原理及应用 西安电子科技大学出版社2002(1) 【10】胡汉才. 单片机原理及其接口技术. 清华大学出版社.1996年 【11】戴佳 戴卫恒 C语言应用程序设计 电子工业出版社 2006(1) 【12】潘新民 王燕芳. 微型计算机控制技术. 电子工业出版社. 2003年 【13】李钟实. 实用电子报警器精选百例. 北京:科学技术文献出版社.2002(4) 【14】江思敏 姚鹏翼 胡荣. Protel电路设计教程. 清华大学出版社. 2002 【15】阎石. 数字电子技术基础. 高等教育出版社. 1998(2) 【16】童诗白. 模拟电子技术基础. 高等教育出版社. 1998(4) 【17】龚运新 单片机C语言开发技术 清华大学出版社2006(1)

26

因篇幅问题不能全部显示,请点此查看更多更全内容

Top