单片机与计算机串行通信.doc_第1页
单片机与计算机串行通信.doc_第2页
单片机与计算机串行通信.doc_第3页
单片机与计算机串行通信.doc_第4页
单片机与计算机串行通信.doc_第5页
免费预览已结束,剩余13页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

郑州航空工业管理学院单片机原理与应用课程设计说明书 09 级 电气工程及其自动化 专业 0906072 班级题 目 单片机和计算机的串行通信 姓 名 张圣皓 学号 090607236 指导教师 王义琴 职称 讲师 二 12 年 6 月 1 日摘要: 单片机由于性价比高、使用灵活等优点而广泛应用于各种电子系统、自动控制系统,但是存储容量小。处理的数据量不大。为了克服这一缺点,可以将单片机连接到PC机上,由单片机采集数据,然后将数据汇总到PC机,再进行各种数据处理。单片机与PC机之间的通讯是其中的关键技术之一,PC机与单片机间一般采用的是串行通信,由于51系列单片机中一般集成了双全工的串行端口,只要配以电平转换的驱动电路、隔离电路就可组成一个简单可行的通信接口。关键词:pc机、MCS-51单片机、串行通信 目 录 一、单片机与计算机的串行通信的基本原理 二、设计方案 三、硬件设计及MCS-51单片机系统和RS-232接口简介 四、软件设计(包括程序流程和程序代码) 五、结论 六、参考资料1、 单片机与计算机的串行通信的基本原理 串行通信技术是单片机系统开发中常用的技术之一,串行口也是单片机常规内部集成的功能。设计PC机与单片机进行串行通信硬件电路及软件流程,本设计通过定时器来设定通信的波特率,通过设置几个寄存器来设定工作方式。PC机与单片机之间则由RS-232C接口相连。1 进一步熟悉和掌握单片机的结构及工作原理。2 掌握单片机的接口技术及相关外围芯片的外特性,控制方法。3 通过课程设计,掌握以单片机核心的电路设计的基本方法和技术,了解有关电路参数的计算方法。4 通过实际程序设计和调试,逐步掌握模块化程序设计方法和调试技术。5 通过完成一个包括电路设计和程序开发的完整过程,使学生了解开发一单片机应用系统的全过程,为今后从事相应的工作打下基础 二、设计方案 1、查阅资料,学习PC与 一个或多个单片机串口通信设计;2、硬件设计,给出原理框图,并简要介绍各组成部分;3、软件设计,给出程序流程图和程序清单,并说明各部分程序要实现;4、总结,结出结论 三、硬件设计 1、整体设计在PC系统中都装有异步通信适配器,利用它可以实现异步串行通信。适配器的核心元件是可编程的intel8251芯片,它使PC有能力与其他具有RS-232标准的接口的计算机或设备进行通信,而MCS-51单片机本身具有一个双全工的串行口,因此只要配上电平转换电路就可以和RS-232接口组成一个简单的通信通道。简单的PC与单片机通信只要3根线就可以了,单片机的TXD、RXD与PC的RXD、TXD分别相连,连接地线。由于51系列单片机的串行口使用的是TTL电平,因此在PC和单片机间要有RS-232电平转换电路,图1所示为PC与单片机的通信图。图1 PC机与单片机的通信图2、MCS-51单片机系统(1)MCS-51单片机1MCS-51单片机内部具有一个采用UART工作方式的全双工的串行通信接口。该接口不仅可以同时进行数据的接受和发送,也可以作为同步移位寄存器使用。该接口有4种工作方式,其中字符格式有8位、10位、11位,并可以以不同的波特率工作。1串行口的内部结构MCS-51单片机的串行接口结构如图2所示:图2 MCS-51单片机的串行接口图该接口有两根串行通信传输线RXD(P3.0)和TXD(P3.1),以串行形式与外部逻辑接口。数据的接收和发送就是通过这两根信号线来实现的。在物理上存在两个互相独立的接收、发送缓冲器SBUF,属于特殊功能寄存器,这样可以同时进行数据的接收和发送,实现全双工传送。2串行口的控制寄存器串行口数据缓冲器SBUF两个互相独立的接收、发送缓冲器SBUF公用一个地址99H对应着2个寄存器:发送寄存器和接收寄存器。发送缓冲器用于存放要发送的数据,只能写入,不能读出。接收缓冲器用于存放接收到的数据,只能读出,不能写入。通过辨认对SBUF的指令是读指令还是写指令来区别是对接收缓冲器还是对发送缓冲器进行操作。读SBUF,比如MOV A,SBUF指令,就是读接收缓冲器的内容;写SBUF,比如MOV SBUF,A指令,就是修改发送缓冲器的内容。串行控制寄存器SCONSCON可用于确定串行通信的工作方式和控制串行通道的某些功能,监视和控制串行口的工作状态,也可用于存放要发送和接收到的第9个数据(TB9、RB8),并没有接收和发送中断标志RI和TI。表1 SCON的格式SM0SM1SM2RENTB8RB8TIRISM0、SM1:串行口操作模式选择位,指定了串行通信的工作方式。串行接口有4种工作方式。各种工作方式的区别在于功能、数据格式和波特率的不同。表2 串行口的各种工作方式SM0SM1工作方式功能波特率0008位同步移位寄存器f/1200010位UART可变10211位UARTf/64或f/3211311位UART可变在任务6中,就是使用了MOV SCON,40H(01000000B)指令来设置单片机串行口的工作方式为方式1的。SM2:多机通信控制位。主要用于方式2和方式3 中(数据为9位)。在方式2和方式3处于接收状态时,如SM2=1,REN=1,且接收到的第9位数据RB8是0,则RI(接收中断标志位)不会被置1。只有在接收到的第9位数据RB8是1,则RI才会被置1。在方式2和方式3处于接收状态时,如SM2=0,无论接收到的第9位数据RB8时0还是1,RI都会被置1。在方式1中,如SM2=1,只有在接收到有效停止位时,则RI才会被置1。在模式0中,SM2必须为0。REN:允许串行接收控制位。由软件置1或清除。REN=1,允许接收。启动串行口的RXD,开始接收数据;REN=0,禁止接收。在任务6中就是用指令SETB REN来允许乙机的串行口接收的。TB8:在方式2 和方式3时,它就是要发送的第9个数据位,一般是程控位2。按需要由软件进行置1或清0。如在多处理通信中,用于表示是地址桢还是数据桢。在模式9中。此位不用。RB8:接收数据位8。在方式2和3时,它是接收到的第9个数据位。在模式1中,如SM2=0,RB8时接收到的停止位;在模式0中,此位不用。TI:发送中断标志位。在模式0中,当发送完第8位数据时,由硬件置1;在其他模式中,在发送停止位前,由硬件置1。TI=1时,申请中断,CPU响应中断后,发送下一桢数据。RI:接收中断标志位。在模式0中,接收第8位结束时,由硬件置1;在其他模式中,在接收停止位的半中间,由硬件置1。RI=1时,申请中断,要求CPU取走数据。但在模式一中,SM2=1时,如未接收到有效的停止位,则不会对RI置位。在任何模式中,CPU响应中断后,都必须用软件来清除RI和TI。在任务6中,在甲机发送和乙机接收程序中,都有JBC这样一条指令,就是用来清除TI和RI标志的。特殊功能寄存器PCONPCON主要是为CHMOS型单片机的电源控制而设置的SFR,在HMOS的MCS-51单片机中,除了最高位SMOD位外,其他位都是虚设的。表3 PCON的格式SMODGF1GF0PDIDLSMOD是串行口波特率选择位,只有这一位和串行通信有关。方式0的波特率固定,当使SMOD=1时,则使方式1、方式2、方式3的波特率加倍。当SMOD=0时,各工作方式的波特率不加倍。3串行口的工作方式MCS-51单片机的串行接口有四种工作方式,用户可以通过SCON中的SM1、SM0位来选择。方式0 方式0为同步移位寄存器方式,其波特率是固定的,为振荡频率f的1/12,数据由RXD(P3.0脚)端输入,同步移位脉冲由TXD(P3.1脚)端输出,发送、接收的是8位数据,低位在前。发送: 当一个数据写入串行口发送缓冲器SBUF时,串行口将8位数据以fosc/12的波特率从RXD引脚输出(低位在前),发送完置中断标志TI为1,请求中断。在再次发送数据之前,必须由软件清TI为0。具体接线图如图3所示。其中,74LS164为串入并出移位寄存器。图3 方式0 的发送接线图接收:在满足REN=1和RI=0的条件下,串行口即开始从RXD端以fosc/12的波特率输入数据(低位在前),当接收完8位数据后,置中断标志RI为1,请求中断。在再次接收数据之前,必须由软件清RI为0。具体接线图如图4所示。其中,74LS165为并入串出移位寄存器。图4 方式0 的接收接线图串行控制寄存器SCON中的TB8和RB8在方式0中未用。值得注意的是,每当发送或接收完8位数据后,硬件会自动置TI或RI为1,CPU响应TI或RI中断后,必须由用户用软件清0。方式0时,SM2必须为0。方式1在方式1状态下,串行口为8位异步通信接口。一桢信息为10位,包括1位起始位(0),8位数据位(低位在前)和1位停止位(1)。如图5所示图5 方式1的信息格式TXD为发送端,RXD为接收端。波特率不变。方式1是单片机与PC机串行通信最常用的方式。发送:发送时,数据从TXD端输出,当数据写入发送缓冲器SBUF后,启动发送器发送。当发送完一帧数据后,置中断标志TI为1。方式1所传送的波特率取决于定时器1的溢出率和PCON中的SMOD位。 接收: 接收时,由REN置1,允许接收,串行口采样RXD,当采样由1到0跳变时,确认是起始位“0”,开始接收一帧数据。当RI=0,且停止位为1或SM2=0时,停止位进入RB8位,同时置中断标志RI;否则信息将丢失。所以,方式1接收时,应先用软件清除RI或SM2标志。方式2方式2下,串行口为11位UART,传送波特率与SMOD有关。发送或接收一帧数据包括1位起始位0,8位数据位,1位可编程位(用于奇偶校验)和1位停止位1。其帧格式如图6所示。图6 方式2 的信息帧格式发送:发送时,先根据通信协议由软件设置TB8,然后用指令将要发送的数据写入SBUF,启动发送器。写SBUF的指令,除了将8位数据送入SBUF外,同时还将TB8装入发送移位寄存器的第9位,并通知发送控制器进行一次发送。一帧信息即从TXD发送,在送完一帧信息后,TI被自动置1,在发送下一帧信息之前,TI必须由中断服务程序或查询程序清0。接收: 当REN=1时,允许串行口接收数据。数据由RXD端输入,接收11位的信息。当接收器采样到RXD端的负跳变,并判断起始位有效后,开始接收一帧信息。当接收器接收到第9位数据后,若同时满足以下两个条件:RI=0和SM2=0或接收到的第9位数据为1,则接收数据有效,8位数据送入SBUF,第9位送入RB8,并置RI=1。若不满足上述两个条件,则信息丢失。方式3 方式3为波特率可变的11位UART通信方式,除了波特率以外,方式3和方式2完全相同。4MCS-51串行口的波特率在串行通信中,收发双方对传送的数据速率,即波特率要有一定的约定。MCS-51单片机的串行口通过编程可以有4种工作方式。其中,方式0和方式2的波特率是固定的,方式1和方式3的波特率可变,由定时器1的溢出率决定,下面加以分析。方式0和方式2 在方式0中,波特率为时钟频率的1/12,即fosc/12,固定不变。在方式2中,波特率取决于PCON中的SMOD值,当SMOD=0时,波特率为fosc/64;当SMOD=1时,波特率为fosc/32。 方式1和方式3在方式1和方式3下,波特率由定时器1的溢出率和SMOD共同决定。即:方式1和方式3的波特率=定时器1溢出率其中,定时器1的溢出率取决于单片机定时器1的计数速率和定时器的预置值。计数速率与TMOD寄存器中的C/位有关。当C/=0时,计数速率为fosc/12;当C/=1时,计数速率为外部输入时钟频率。下表列出了各种常用的波特率及获得办法。表4定时器1产生的常用波特率波特率(b/s)f/MHzSMOD定时器1C/T模式初始值方式0:112*方式2:375k121*方式1、3:62.5k12102FFH19.2k11.059102FDH9.6k11.059002FDH4.8k11.059002FAH2.4k11.059002F4H1.2k11.059002E8H137.5k11.9860021DH110600272H11012001FEEBH3、RS-232接口简介(1)信息格式PC 的主板上通常都预留有一个或两个九针(DB一9)全双工串行接口(COM1、COi2),其电气标准遵循RS一232C标准 RS-232是使用最早、应用最多的一种异步串行通信总线标准,它是美国电子工业协会1962年公布,1969年最后修订而成的。其中RS表示recommended standard,232是该标准的识别号。RS-232主要用来定义各电路数据终端之间的电气性能。RS-232接口总线适用于设备之间的通信距离不大于15米,传输速度最大为20Kbit/s。 RS-232采用标准的异步通信串行数据格式,即信息的开始为起始位,信息的结束为停止位1,信息本身可以是5、6、7、8位,可根据需要再加上一位奇偶校验位,如果两个信息之间有间隔,加上空闲位1。如图7所示图7 RS-232的信息格式在通常的异步串行通信中只使用其中三个引脚,即引脚2(接收RXD)、引脚3(发送TXD)、引脚5(信号地SG)各引脚功能如图8所示图8 九针串口引脚功能图(2)RS-232C的接口信号RS-232C规标准接口有25条线,4条数据线、11条控制线、3条定时线、7条备用和未定义线。 常用的只有9根,它们是:联络控制信号线:数据装置准备好(Data set ready-DSR)有效时(ON)状态,表明MODEM处于可以使用的状态。数据终端准备好(Data set ready-DTR)有效时(ON)状态,表明数据终端可以使用。这两个信号有时连到电源上,一上电就立即有效。这两个设备状态信号有效,只表示设备本身可用,并不说明通信链路可以开始进行通信了,能否开始进行通信要由下面的控制信号决定。请求发送(Request to send-RTS)用来表示DTE请求DCE发送数据,即当终端要发送数据时,使该信号有效(ON状态),向MODEM请求发送。它用来控制MODEM是否要进入发送状态。允许发送(Clear to send-CTS)用来表示DCE准备好接收DTE发来的数据,是对请求发送信号RTS的响应信号。当MODEM已准备好接收终端传来的数据,并向前发送时,使该信号有效,通知终端开始沿发送数据线TxD发送数据。这对RTS/CTS请求应答联络信号是用于半双工MODEM系统中发送方式和接收方式之间的切换。在全双工系统中作发送方式和接收方式之间的切换。在全双工系统中,因配置双向通道,故不需要RTS/CTS联络信号,使其变高。接收线信号检出(Received Line detection-RLSD)用来表示DCE已接通通信链路,告知DTE准备接收数据。当本地的MODEM收到由通信链路另一端(远地)的MODEM送来的载波信号时,使RLSD信号有效,通知终端准备接收,并且由MODEM将接收下来的载波信号解调成数字两数据后,沿接收数据线RxD送到终端。此线也叫做数据载波检出(Data Carrier dectection-DCD)线。振铃指示(Ringing-RI)当MODEM收到交换台送来的振铃呼叫信号时,使该信号有效(ON状态),通知终端,已被呼叫。数据发送与接收线:发送数据(Transmitted data-TxD)通过TxD终端将串行数据发送到MODEM,(DTEDCE)。接收数据(Received data-RxD)通过RxD线终端接收从MODEM发来的串行数据,(DCEDTE)。地线有两根线SG、PG信号地和保护地信号线,无方向。上述控制信号线何时有效,何时无效的顺序表示了接口信号的传送过程。例如,只有当DSR和DTR都处于有效(ON)状态时,才能在DTE和DCE之间进行传送操作。若DTE要发送数据,则预先将DTR线置成有效(ON)状态,等CTS线上收到有效(ON)状态的回答后,才能在TxD线上发送串行数据。这种顺序的规定对半双工的通信线路特别有用,因为半双工的通信才能确定DCE已由接收方向改为发送方向,这时线路才能开始发送。2个数据信号:发送TXD;接收RXD。1个信号地线:SG。6个控制信号:DSR数传机(即modem)准备好,Data Set Ready.DTR数据终端(DTE,即微机接口电路,如Intel8250/8251,16550)准备好,Data Terminal Ready。RTSDTE请求DCE发送(Request To Send)。CTSDCE允许DTE发送(Clear To Send),该信号是对RTS信号的回答。DCD数据载波检出,Data Carrier Detection当本地DCE设备(Modem)收到对方的DCE设备送来的载波信号时,使DCD有效,通知DTE准备接收, 并且由DCE将接收到的载波信号解调为数字信号, 经RXD线送给DTE。RI振铃信号 Ringing当DCE收到交换机送来的振铃呼叫信号时,使该信号有效,通知DTE已被呼叫。表5 RS-232C的接口信号232引脚CCITTModem名称说明用途异步同步1101AA保护地设备外壳接地PEPE2103BA发送数据数据送ModemTXD3104BB接收数据从Modem接收数据RXD4105CA请求发送在半双工时控制发送器的开和关RTS5106CB允许发送Modem允许发送CTS6107CC数据终端准备好Modem准备好DSR7102AB信号地信号公共地SGSG8109CF载波信号检测Modem正在接收另一端送来的信号DCD9空10空11空12接收信号检测(2)在第二通道检测到信号13允许发送(2)第二通道允许发送14118发送数据(2)第二通道发送数据15113DA发送器定时为Modem提供发送器定时信号16119接收数据(2)第二通道接收数据17115DD接收器定时为接口和终端提供定时18空19请求发送(2)连接第二通道的发送器20108CD数据终端准备好数据终端准备好DTR21空22125振铃振铃指示RI23111CH数据率选择选择两个同步数据率24114DB发送器定时为接口和终端提供定时25空(3)RS-232电平转换器MAX232RS-232规定了自己的电气标准,由于它是在TTL电路之前研制的,因此它的电平不是+5V和地,而是采用负逻辑,即逻辑“0”:+5V5V,逻辑“1”:5V15V。因此RS-232不能和TTL电平直接相连,必须进行电平转换。本设计选用MAX232。MAX232的引脚图如下所示:图9 MAX232的引脚图管脚说明如下C0+、C0-、C1+、C1-是外接电容端;R1IN、R2IN是2路RS-232C电平信号接收输入端;RlOUT、R2OUT是2路转换后的TTL电平接收信号输出端,送8051的RXD接收端;TlIN、T2IN是2路TTL电平发送输入端,接8051的TxD发送端;TlOUT、T2OUT是2路转换后的发送RS-232C电平信号输出端,接传输线;V+经电容接电源+5V;V-经电容接地。这种连接的传输介质一般采用双绞线,通信距离一般不超过15m,传输率小于20kB/s。(4)RS-232总线规定2RS-232标准总线为25根,采用标准的D型25芯插头座。引脚及功能如图10所示图10 RS-232C引脚图在最简单的全双工系统中,仅有发送数据、接收数据和信号地三根线即可。对于MCS-51单片机。利用其RXD线、TXD线和一根地线。就可以构成符合RS-232接口标准的全双工串行通信口,这是PC机和单片机最简单的零调制经济型连接,是进行全双工通信所必须的最少线路。图11给出了采用MAX232芯片的PC机与单片机串行通信接口电路,与PC机相连采用PC机的9芯标准插座。图11 PC机与单片机串行通信接口电路四、软件设计将PC机键盘的输入发送给单片机,单片机收到PC机发来的数据后,回送同一数据给PC机,并在屏幕上显示出来。只要屏幕上显示的字符和所键入的字符相同,说明两者之间的通信正常。双方约定:波特率为2400bit/s,通信格式为8个数据位,一个停止位,无奇偶校验位。1、单片机通讯软件。单片机通过中断方式接收PC机发送的数据,并回送。根据信息格式,可以设定单片机的串行口工作在方式1。在串行口方式1中,波特率是由定时器T1产生的。如晶振为6MHZ,波特率为2400bit/s,这时T1工作在方式2(自动重新装入初值)。经计算,T1的初始值应为F3H,SMOD=1。 程序框图如图12、13所示:图12 主程序流程图 图13 中断服务子程序流程图程序设计如下: ORG 0000H LJMP START ;主程序入口 ORG 0023H LJMP INTS ;串行口中断入口 ORG 0100HSTART:MOV TMOD,#20H ;初始化定时器1为方式2 MOV TL1,#0F3H ;与2400波特率相应的定时器初值 MOV TH1,#0F3H SETB TR1 ;启动定时器1 MOV SCON,#50H ;串行口工作在方式1,允许接收 MOV PCON,#80H ;SMOD=1 SETB EA ;开串行口中断 SETB ES ;允许中断LOOP: SJMP LOOP ;等待数据接收INTS: CLR EA ;禁止中断 CLR RI ;清除中断标志RI MOV A,SBUF ;从SBUF取接收到的数据 MOV SBUF,A ;回送WAIT: JNB TI,WAIT ;判断回送是否完毕 CLR TI ;清除TI标志 POP A ;发送完,恢复现场 POP DPH POP DPL SETB EA ;允许中断,准备接收新的数据 RETI ;中断返回 END 2 、PC机通信软件PC机方面的通信程序用汇编语言编写。 程序如下: stack Segment para stack code Db 256 dup(0) Stack ends Code Segment para public code Start proc far Assume cs:code,ss:stack PUSH DS MOV AX,0 PUSH AX CLIINPUT: MOV AL,80H ;置DLAB=1 MOV DX,3FBH ;写入通信线控制寄存器OUT DX,AL MOV AL,30H ;置产生2400 b/s波特率除数低位 MOV DX,3F8H OUT DX,AL ;写入除数锁存器低位 MOV AL,00H ;置产生2400 b/s波特率除数高位 MOV DX,3F9H OUT DX,AL ;写入除数锁存器高位 MOV AL,03H ;设置数据格式 MOV DX,3FBH ;写入通信线路控制寄存器 OUT DX,AL MOV AL,00H ;禁止所有中断 MOV DX,3F9HOUT DX,ALWAIT1: MOV DX,3FDH ;发送保持寄存器不空则循环等待 IN AL,DX TEST AL,20H JZ WAIT1WAIT2: MOV AH,1 ;检查键盘缓冲区,无字符则循环等待 INT 16H JZ WAIT2 MOV AH,0 ;若有,则取键盘字符 INT 16HSEND: MOV DX,3

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论