双机通信系统单片机课程设计_第1页
双机通信系统单片机课程设计_第2页
双机通信系统单片机课程设计_第3页
双机通信系统单片机课程设计_第4页
双机通信系统单片机课程设计_第5页
已阅读5页,还剩19页未读 继续免费阅读

下载本文档

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

文档简介

设计大概..........................................................21整体设计........................................................3设计要求..................................................3设计方案..................................................32双机通讯硬件设计................................................4AT89C51简介..............................................4AT89C51串行口的工作方式..................................5晶振电路设计..............................................8复位电路设计..............................................8接口电路的设计............................................9输入输出电路设计..........................................113双机通讯软件设计...............................................13串行通讯软件实现.........................................13串行通讯程序流程.........................................13程序清单.................................................164软件仿真......................................................205硬件连接......................................................216设计总结......................................................23参照文件.........................................................24设计大概要构成一个较大规模的控制系统,常常需要采纳多机控制实现,而AT89C51单片机有一个异步通讯方式的全双工串行接口,可以方便地构成双机、多机系统。而串行通讯也成为单片机与单片机、单片机与上位机之间进行数据传输的主要方式,是一种适用于远距离通讯的数据传输方式。串行通讯是单片机的一个重要应用。本次课程设计就是要利用单片机来完成一个系统,实现双片单片机串行通讯。通讯的结果适用数码管进行显示,数码管采纳查表方式显示。两个单片机之间采纳RS232进行双机通讯。在通讯过程中,使用通讯协议进行通讯。要点词:单片机;串行通讯;接口整体设计设计要求设计一个单片机双机通讯系统,单片机A接1个8位按键开关,单片机B接8个发光二极管,经过串行通讯实现由A机拨码开关控制B机发光二极管的亮灭。设计方案本次设计,对于两片AT89C51,采纳RS-232进行双机通讯。如图1所示,发送方的数据由串行口TXD段输出,经过电平变换芯片MAX232将TTL电平变换为RS-232电平输出,经过传输线将信号传达到接收端。接收方也使用MAX232芯片进行电平变换后,信号到达接收方串行口的接收端。接收方接收后,在LED二极管上显示接收的对应信息。晶振电路复位电路路拨码开关电路

发接送接口接口收机机

晶振电路复位电路显示电路图1双机通讯系统原理框图软件部分,经过通讯协议进行发送接收,发送机先送联系信号给接收机,当接收机接收到联系信号后,向发送机回答一个应答信号,表示同意接收。发送机收到应答信号后开始发送数据,每发送一个数据块字节都要计算“校验和”,假定数据长度为16个字节,初步地点为40H,一个数据块发送达成后马上发送“校验和”。接收机接收数据并存入数据缓冲区初步地点也为40H,每接收到一个数据字节便计算一次“校验和”,当接收到一个数据块后,在接受发送机发来的“校验和”,并将它与接收机计算的校验和进行比较。若两者相等,说明接受正确,接收机回答00H,发送机结束发送;若两者不等,说明接受不正确,接收机回答0FFH,央求重发,发送机重新发送数据一次。接收机接收到数据后经过发光二极管LED显示发送机的发送状态。双机通讯硬件设计2.1AT89C51简介AT89C51是一个带有4k字节储蓄器的单片机,它拥有128字节内部RAM;32个I/O口线和;两个16位准时/计数器,一个5向量两级中断结构,一个全双工串行通讯口,片内振荡器及时钟电路。同时,AT89C51可降至0Hz的静态逻辑操作,并支持两种软件可选的节电工作模式。悠闲方式停止CPU的工作,但同意RAM,准时/计数器,串行通讯口及中断系统连续工作。掉电方式保存RAM中的内容,但振荡器停止工作并严禁其余所有零件工作直到下一个硬件复位。如图2所示,DIP40封装的AT89C51的各个引脚及其功能。图2AT89C51单片机引脚封装AT89C51单片机各个引脚功能以下:(1)电源几时钟引脚?VCC(40号引脚):电源接入引脚?VSS(20号引脚):接地引脚?XTAL1(19号引脚):晶振接入的一个引脚?XTAL2(18号引脚):晶振接入的另一个引脚(2)控制线引脚?RST/VPD(9号引脚):复位信号输入引脚/备用电源输入引脚?ALE/PROG(30号引脚):地点锁存同意信号输出引脚/编程脉冲输入引EA/VPP(31号引脚):内外储蓄器选择引脚/片内EPROM编程电压输入引脚PSEN(29号引脚):外面程序储蓄器选通讯号输出引脚3)I/O引脚—(39—32号引脚):一般I/O口引脚/低位地点总线引脚—P1.7(1—8号引脚):一般I/O口引脚—P2.7(21—28号引脚):一般I/O口引脚/高位地点总线引脚—P3.7(10—17号引脚):一般I/O口引脚或第二功能引脚P3.0(10号引脚):RXD串行口输入P3.1(11号引脚):TXD串行口输出P3.2(12号引脚):INT0外面中断0输入P3.3(13号引脚):INT1外面中断1输入P3.4(14号引脚):T0准时器0的外面输入P3.5(15号引脚):T1准时器1的外面输入P3.6(16号引脚):WR片外数据储蓄器“写”选通控制输出P3.7(17号引脚):RD片外数据储蓄器“读”选通控制输出2.2AT89C51串行口的工作方式AT89C51的串行口是一个可编程全双工的通讯接口,拥有通讯异步接受和发送的所有功能,能同时进行数据的接收和发送,也可作为同步移位存放器使用。AT89C51的串行口主要由两个独立的串行数据缓冲存放器SBUF(一个发送缓冲存放器,一个接收缓冲存放器),串行口控制存放器、输入移位存放器及若干控制门电路构成。串行口数据缓冲存放器SBUFAT89C51可以经过特别功能存放器SBUF的读写操作,实现对串行接收或串行发送存放器的接见,串行接收和串行发送存放器在串行口内部是两个独立的储蓄单元,共用同一个地点99H。串行口数据传达使用的是内部数据传达指令“MOVA,SBUF”或“MOVSBUF,A”.当执行写操作时,接见串行发送存放器;当执行读操作时,接见串行接收存放器。串行口控制存放器SCONAT89C51串行口工作的设定、接收与发送控制的设置都是经过对串行口控制存放器SCON的编程确立的。SCON是一个特别功能存放器,其地点为98H,可位寻址,其各位的作用定义以下:表2控制存放器SCON9FH

9EH

9DH

9CH

9BH

9AH

99H

98HSCON(98H)

SM0

SM1

SM2

REN

TB8

RB8

TI

RISM0

、SM1:串行口工作方式选择位,工作方式选择如表

2所示。此中

fosc是晶体振荡器的频率。SM2:多机通讯控制位。在方式

0下,SM2应为

0;在方式

1下,假如

SM2=0,则只有收到有效的停止位时才会激活RI;在方式2和方式3下,如置SM2=1则只有收到第9位数据为1时,RI被激活(RI=1,申请中断,要求CPU取走数据)。REN:同意接收控制位。由软件置位或清零。REN=1,同意接收;REN=0,禁止接收。TB8:在方式2和方式3下,存放要发送的第9位数据,常用作奇偶校验位。在多机通讯中,可作为差别地点帧或数据帧的表记位,若为地点帧,TB8=1;若为数据帧,TB8=0。RB8:在方式2和方式3下,存放接收到的第9位数据;在方式1下,如SM2=0,则该位为接收到的停止位;方式0不用此位。TI:发送中断标记。在方式0下,发送完第8位数据位时,由硬件置位;在其余方式下,当开始发送停止位时,由硬件将TI置位,即是向CPU申请中断,CPU可以发送下一帧数据。在任何方式下,TI必然由软件清零。RI:接收中断标记。在方式0下,接收完第8位数据时,由硬件置位;在其余方式下,当接收到停止位时RI置位,即申请中断,要求CPU取走数据。它必然由软件清零。表3串行口工作方式选择SM0SM1方式功能波特率SM0SM1方式功能波特率000同步移位fosc/1210211位fosc/16或fosc/32存放器UART01110位UART可变11311位可变UART本设计发送机串行口的工作方式为方式1,即控制存放器SCON中内容以下:表4发送机控制存放器SCON9FH9EH9DH9CH9BH9AH99H98HSCON(98H)SM0SM1SM2RENTB8RB8TIRI01000000接收机的串行口的工作方式为方式1,即控制存放器SCON中内容以下:表5接收机控制存放器SCON9FH9EH9DH9CH9BH9AH99H98HSCON(98H)SM0SM1SM2RENTB8RB8TIRI01010000串口以方式1发送,由CPU执行一条写发送存放器指令“MOVSBUF,A”,即可将数据位逐个由TXD端发送。当发送一帧数据后,将TI置1。串口以方式1接受,需控制SMOD中的REN为1(SMOD为特别功能存放器PCON的最高位),此时对RXD引脚进行采样,当采样到初步地点有效时,开始接收数据。当一帧数据接收达成,且RI=0,SM2=0或接收到RB8=1时,接收数占有效,此时可利用读接收存放器指令“MOVA,SBUF”将数据送入CPU。同时将RI置1。若要再次发送或接收数据,必然将TI、RI清零。(3)波特率的计算依据表2可知串口工作方式方式1时一帧数据为10位(8位数据位,初步位、停止位各1位)。其传输波特率是可变的,由准时器T1的溢出率来决定。波特率=(2SMOD/32)(T1溢出率)当T1作为波特率发生器时,最典型的用法是使T1工作在自动再装入的8位准时器方式(即方式2,且TCON的TR=1,以启动准时器)。这时溢出率取决于TH1中的计数值。TH1溢出率fOSC/12256TH1在单片机的应用中,常用的晶振频率fosc为:12MHz和。在本设计中晶振频率采纳fosc=11,。0592MHz。即波特率为波特率=2SMODfosc(TH1)3212256晶振电路设计AT89C51单片机内部有一震荡电路,只要在单片机的XTL1(19号)和XTAL218号)引脚外接石英晶体(简称晶振)就构成了自激振荡器并在单片机内部产生时钟脉冲信号。如图3所示,图中电容器C1和C2的作用是坚固频率和快速起振,电容值为5~30pF,典型值为30pF,本设计取30pF。晶振CYS的振荡频率范围为~12MHz,典型值为12MHz和6MHz,本设计取12MHz。图3晶振电路复位电路设计AT89C51单片机的RST(9号)引脚引入高电平并保持两个机器周期时,单片机内部就执行复位操作。在实质中AT89C51平常有两种操作方式复位,一种是上电复位;另一种是按键上电复位。在双机通讯系统的设计中使用按键上电复位,如图4所示。图4复位电路单片机复位后进入初始化状态。初始化后,程序计数器PC=0000H,所以程序从0000H地点单元开始执行。单片机启动后,片内RAM为随机值,运转中的复位操作不改变片内RAM的内容。特别功能存放器复位后的状态是确立的。P0~P3为FFH,SP为07H,SBUF不定,IP、IE和PCON的有效位为0,其余的特别功能存放器的状态均为00H。接口电路的设计(1)直接通讯单片机与单片机进行双击串行通行时,可将两个单片机的串口直接连接,接线图如图5所示,这类接线传输距离短,抗搅乱能力差。图5直接通讯接线图(2)串口通讯单片机与单片机进行双击串行通行时,AT89C51串行接口的信号电平为TTL种类,抗搅乱性差、传输距离短。为了提升串行通讯的靠抗性,延长通讯距离,一般设计采纳标准的串行接口。RS-232C接口是1969年EIA推出的串行通讯标准,目前是PC机与通讯工业中应用最广的一种串行接口。数据传输速率在0~20kbps范围内的通讯,最大传输距离可达15m,能实现一发一收通讯,目前常用的RS—232C接口连接器有9针串口(DB—9)和25针串口(DB—25)。最常用的的是DB—9,常采纳三线制接法,即发送数据线、接受数据线和接地线三脚相连。传输线采纳障蔽双绞线,如图6所示。图6DB—9三线制接法RS—232C信号的电平与单片机串口信号的电平不一致,两者之间必然进行电平变换。使用电平变换芯片MAX232就可以实现RS232C/TTL电平的双向变换。MAX232芯片使用单一的+5V电源供电,配接5个1uF电解电容即可达成RS232C电平的TTL电平之间的变换,其电路接线图如图7所示。图7MAX232电平变换芯片电路接线图表6DB—9常用信号引脚说明DB—9引脚信号名称符号功能1载波检测DCD接收远程载波2接收数据RXD接受串行数据3发送数据TXD发送串行数据4数据准备就绪DTR准备就绪5信号的SGND信号公共地6数据准备就绪DSR准备就绪7发送央求RTS央求将线路切换到发送发式8同意发送CTS线路已接通,可以发送数据9振铃指示RI数据通讯接通,终端设备被呼叫2.6输入输出电路设计P1口是AT89C51单片机的独一的单功能口,仅能用作数据输入/输出口。P1口的位结构如图8所示图8P1口的位结构由图8可知,P1口由一个输出锁存器,两个三态输入缓冲器和输出驱动电路构成。内部设有上拉电阻。P1口是通用的准双向I/O口。输出高电平常,能向外供给拉电流负载,不用再接上拉电阻。当口用于输入时,须向口锁存器写入“1”。输入低电平有效。所以其输入电路如图9,输出电路图10:图9发送机输入电路图10接收机输出电路双机通讯软件设计经过通讯协议进行发送接收。发送机先送联系信号给接收机,当接收机接收到联系信号后,向发送机回答一个应答信号,表示同意接收。发送机收到应答信号后开始发送数据,每发送一个数据块字节都要计算“校验和”,假定数据长度为16个字节,初步地点为40H,一个数据块发送达成后马上发送“校验和”。接收机接收数据并存入数据缓冲区初步地点也为40H,每接收到一个数据字节便计算一次“校验和”,当接收到一个数据块后,在接受发送机发来的“校验和”,并将它与接收机计算的校验和进行比较。若两者相等,说明接受正确,接收机回答00H,发送机结束发送;若两者不等,说明接受不正确,接收机回答0FFH,央求重发,发送机重新发送数据一次。接收机接收到数据后经过发光二极管显示发送机的发送状态。串行通讯软件实现1)串行口工作于方式1;用准时器1产生9600bit/s的波特率。2)功能:将本机ROM中数码表TAB[16]中的16个数发送到从机,并保存在从机内部ROM中,从机收到这16个数据后送到一个数码管循环显示。3)通讯协议:发送机第一发送联系信号(E1H),接收机接收到此后返回一个连络信号(E2H)表示从机已准备好接收。通讯过程使用第九位发送奇偶校验位。接收机接收到一个数据后,马上进行奇偶校验,若数据没有错误,则返回00H,不然返回FFH。发送机发送一个数据后,等候接收机返回数据;若为00H,则连续发送下一个数据,若为FFH,则重新发送数据。串行通讯程序流程(1)发送机程序流程依据通讯协议发送机需向接收机发送联系信号“E1”,当接收到应答信号后,发送机发送数据,发送数据达成后将校验和发送至接收机,接收机进行校验如果正确等候下一次发送;假如错误重新发送数据。其流程图以下:开始设置波特率启动准时器T1设置串行口工作方式发送“E1”联系信号N接收机同意发送?Y指针初始化校验和清0发送1个数据字节求校验和数据块发送达成?Y发送校验和

NN接收机接收正确?Y返回图10发送流程图(2)接收机程序流程依据通讯协议,接收机等候发送机发出的联系信号“E1”并向发送机发送应答信号“E2”,当接收1个数据字节后求检验和,发送机在发送完一个数据块后将发送机计算的校验和发送至接收机,接收机将两个校验和进行比较,假如正确等候下一次接收;假如错误则发送犯错标记重新发送数据。其流程图以下:开始设置波特率启动准时器T1设置串行口工作方式等候发送机联系N发送机央求发送?Y发送应答信号指针初始化校验和清0接收1个数据字节求校验和数据块发送达成?Y

N比较校验和发送犯错标记N接收机接收正确?Y返回图11接收机流程图程序清单基于AT89C51单片机双机通讯时,串行输入输出可直接进行连接,实现双机通讯。这样连接方式,传输距离短,抗搅乱能力弱,但简单实现,其接线和程序较为简单,其程序以下:(1)发送机程序ORG0000HAJMPMAINORGO1OOHMAIN:MOVSP,#6OHMOVSCON,#40HMOVTMOD,#20HMOVTH1,#0FDHMOVTL1,#0FDHSETBTR1MOVP1,#0FFHMOV30H,#0FFHK0:MOVA,P1CJNEA,30H,KISJMPK0KI:MOV30H,AMOVSBUF,ASJMPK0WAIT:JBCT1,K0SJMPWAITEND(2)接收机程序ORG0000HAJMPMAINORGO1OOHMAIN:MOVSP,#6OHMOVSCON,#50HMOVTMOD,#20HMOVTH1,#0FDHMOVTL1,#0FDHSETBTR1MOVP1,#0FFHK0:JBRI,KKSJMPK0MOVA,SBUFMOVP1,ACLRRISJMPK0END发送机与接收机也可以经过串口进行通讯,这类通讯方式较上一种方式提升通讯距离,抗搅乱能力强,传输坚固,但其接线复杂,程序比较繁琐。其程序以下:(1)发送程序清单ASTRT:CLREAMOVTMOD,#20H;准时器1置为方式2MOVTH1,#0F4H;装在准时器初值,波特率为2400MOVTL1,#0F4HMOVPCON,#00HSETBTR1MOVSCON,#50H;设定串行口方式1,且准备接受应答信号ALOOP1:MOVSBUF,#0E1H;发送联系信号JNBTI,$;等候一帧发送达成CLBTI;同意在发送JNBRI,$;等候接收机的应答信号CLRRI;同意在接收MOVA,SBUF;接收机应答后,读至AXRLA,#0E2;判断接收机能否准备达成JNZALOOP1;接收机未准备好,连续联系ALOOP2:MOVP1,#0FFHMOV30H,#0FFH;设定拨码开关初值MOVR7,#10H;设定数据块长度MOVR6,#00H;清校验和单元ALOOP3:MOVA,P1;读入拨码开关CJNEA,30H,ALOOP4SJMPALOOP3ALOOP4:MOV30H,A;存入拨码开关新值MOVSBUF,A;发送一个数据字节MOVA,R6ADDA,P1;MOVR6,AINCR0JNBT1,$CLBT1DJNZR7,ALOOP3MOVSBUF,R6;JNBTI,$CLRTIJNBRI,$;CLRRIMOVA,SBUF;JNZALOOP2;SJMPALOOP3;END

;

;

求校验和保存校验和整个数据块能否发送达成发送校验和等候接收机应答信号接收机应答,读至A接收机应答错误,转至重新发送进入下一循环传达(2)接收程序清单BSTART:CLREAMOVTMOA,#20HMOVTH1,#0F4HMOVTL1,#0F4HMOVPCON,#00HSETBTR1MOVSCON,#5OHBLOOP1:JNBRI,$

;

;

设定串行口工作方式1,且准备接收等候1号机的联系信号CLRRIMOVA,SBUFXRLA,#0E2HJNZBLOOP1MOVSBUF,#0E2H

;;;

;

收到1号机的信号判断能否为1号机联系信号不是1号机联系信号,再等候是1号机联系信号,发应答信号JNBT1,$CLRTIBLOOP2:MOVR0,#40HMOVR7,#10HMOVR6,#00H

;;

;

设定数据块地点指针初值设定数据块长度初值清校验和单元BLOOP3:JNBRI,$CLRRIMOVA,SBUFMOV@R0,A;接收数据转储INCROADDA,R6;求校验和MOVR6,ADJNZR7,BLOOP3;判断数据块能否接收达成JNBRI,$;达成,接收1号机发来的校验和CLRRIMOVA,SBUFXRLA,R6;比较校验和JZEND1MOVSBUF,#0FFH;校验和相等,跳至发正确标记JNBTI,#;校验和不相等,发错误标记CLRTI;转重新接收SJMPBLOOP2END1:MOVSBUF,#00HRET软件仿真Proteus7Professional是一种低投资的电子设计自动化软件,它可以仿真单片机和周边设备,可以仿真51系列、AVR、PIC等常用的MCU。与KEIL和MPLAB不一样样的是,它还可以仿真周边的设备。比方,示波器、RAM、ROM、LED等。本次设计,经过两片两片AT89C52单片机由8位按键开关分别控制8个指示灯。详尽接线以下;发

温馨提示

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

评论

0/150

提交评论