单机片毕业论文基于AT89C51单片机间的多机通信的设计与仿真.docx
《单机片毕业论文基于AT89C51单片机间的多机通信的设计与仿真.docx》由会员分享,可在线阅读,更多相关《单机片毕业论文基于AT89C51单片机间的多机通信的设计与仿真.docx(35页珍藏版)》请在冰点文库上搜索。
![单机片毕业论文基于AT89C51单片机间的多机通信的设计与仿真.docx](https://file1.bingdoc.com/fileroot1/2023-5/24/8b70c1c9-083e-444e-b988-20b76e96eb88/8b70c1c9-083e-444e-b988-20b76e96eb881.gif)
单机片毕业论文基于AT89C51单片机间的多机通信的设计与仿真
本科毕业论文(设计)
论文题目:
基于AT89C51单片机间的多机通信
的设计与仿真
学生姓名:
学号:
专业:
计算机科学与技术
班级:
指导教师:
完成日期:
2012年5月20日
基于AT89C51单片机间的多机通信的设计与仿真
内容摘要
单片机作为微型计算机的一个分支,具有体积小,应用广泛等优点,在工业控制,通信和家用电器等各个领域都有十分广泛的应用。
单片机的多机通信就是在单片机的发展与行业标准的提高上发展起来的一个非常重要研究方向。
单片机的单机控制已经不能满足需要,而多机的协调工作是一个非常重要的发展趋势。
多机通信是指有两台以上的单片机组成的网络结构可以通过串行通信方式共同实现对某一过程的最终控制。
本文主要介绍了一种基于AT89C51单片机简的多机通信方式,采用自定义串行通信协议,实现单片机AT89C51多机通信的方法和技巧。
系统设计和解决了8位单片机在多机通信方面的一些问题,在实现方面,系统实现了主机与从机间的通信,以及从机与从机间的通信。
关键词:
单片机多机通信串口通信
DesignAndSimulationofMicrocomputerMulti-machineCommunicationBasedonAT89C51
Abstract
Microcomputerasabranchofmicrocomputer,hastheadvantagesofsmallvolume,applicationwidespreadandsoonmerits,intheindustrycontrol,thecorrespondenceandthedomesticelectricappliancesandsooneachdomainallhastheextremelywidespreadapplication..Microcomputermulti-machinecommunicationinmicrocomputerdevelopmentandindustrystandardsdevelopedasaveryimportantresearchdirection.Microcomputercomputercontrolcannolongermeettheneeds,andmultiplemachinecoordinationisanimportantdevelopmenttrend.Multimachinecommunicationmeanshasmorethantwomicrocomputernetworkstructurecanbeobtainedbyserialcommunicationtoachievecommoninaprocesscontrol.
ThispaperintroducedonekindbasedontheAT89C51microcomputerJanemulti-machinecommunicationmanner,usingacustomserialcommunicationprotocols,MCUAT89C51machinecommunicationmethodandskill.Thesystemdesignandtosolvethe8microcontrollerinmultimachinecommunicationproblems,inimplementation,systemrealizesthecommunicationbetweenhostandslave,aswellasfromthemachineandslavemachinecommunication.
Keywords:
MicrocomputerMultiComputerCommunicationSerialCommunication
序言
随着单片机和计算机技术的不断发展,单片机应用也从独立的单机向网络发展,由计算机和单片机构成的多级网络系统已成为单片机技术发展的一个方向,二者的结合,充分发挥了单片机在实时数据采集和数据管理上的优点,单片机在计算机网络通讯与数据传输,工业自动化过程的实时控制和处理等都有广泛的应用,已渗透到我们生活的各个领域,许多应用都涉及到单片机多机通信,然而,单片机对网络数据的处理方式不同于通用计算机系统,尤其有的单片机只提供8位数据收发接口,在一定程度上阻碍了单片机在网络方面的应用。
这里使用的AT89C51单片机有一个全双工串口,TXD是它的发送端,RXD是它的接收端。
本论文主要研究以单片机为控制系统,设计一个可以进行多机之间的通信的仿真系统。
本设计首先要求学生具有较好的电子电路的设计能力和分析解决问题的能力,同时还应掌握具体的电子电路的设计方法,然后根据分析结果得出合理的实现方案;充分利用网络资源,丰富完善个人在理论研究、电子电路的设计方面的技能。
一、绪论
(一)课题背景的和意义
目前单片机渗透到我们生活的各个领域,几乎很难找到哪个领域没有单片机的踪迹。
导弹的导航装置,飞机上各种仪表的控制,计算机的网络通讯与数据传输,工业自动化过程的实时控制和数据处理,广泛使用的各种智能IC卡,民用豪华轿车的安全保障系统,录象机、摄象机、全自动洗衣机的控制,以及程控玩具、电子宠物等等,这些都离不开单片机。
更不用说自动控制领域的机器人、智能仪表、医疗器械了。
单片机广泛应用于仪器仪表、家用电器、医用设备、航空航天、专用设备的智能化管理及过程控制等领域随着计算机技术的发展及工业自动化水平的提高,在许多场合采用单机控制已不能满足现场要求,因而必须采用多机控制的形式,而多机控制主要通过多个单片机之间的串行通信实现。
串行通信作为单片机之间常用的通信方法之一,由于其通信编程灵活、硬件简洁并遵循统一的标准,因此其在工业控制领域得到了广泛的应用[1]。
随着单片机和计算机技术的不断发展,单片机应用也从独立的单机向网络发展,由计算机和单片机构成的多级网络系统已成为单片机技术发展的一个方向,二者的结合,充分发挥了单片机在实时数据采集和数据管理上的优点,单片机在计算机网络通讯与数据传输,工业自动化过程的实时控制和处理等都有广泛的应用,已渗透到我们生活的各个领域,许多应用都涉及到单片机多机通信,然而,单片机对网络数据的处理方式不同于通用计算机系统,尤其有的单片机只提供8位数据收发接口,在一定程度上阻碍了单片机在网络方面的应用。
(二)国内外研究现状
单片微型计算机(SingleChipMicrocomputer)简称单片机,又称MCU(MicroControllerUnit),是将计算机的基本部分微型化,使之集成在一块芯片上的微机.片内含有CPU、ROM、RAM、并行I/O、串行I/O、定时器/计数器、中断控制、系统时钟及系统总线等。
随着科技的发展,单片机已不是一个陌生的名词,它的出现是近代计算机技术发展史上的一个重要里程碑,因为单片机的诞生标志着计算机正式形成了通用计算机系统和嵌入式计算机系统两大分支。
单片机单芯片的微小体积和低的成本,可广泛地嵌入到如玩具、家用电器、机器人、仪器仪表、汽车电子系统、工业控制单元、办公自动化设备、金融电子系统、舰船、个人信息终端及通讯产品中,成为现代电子系统中最重要的智能化工具[2]。
所涉及的市场占有率最高的是MCS—51系列,因为世界上很多知名的IC生产厂家都生产51兼容的芯片。
生产MCS—51系列单片机的厂家如美国AMD公司、ATMEL公司、INTEL公司、WINBOND公司、PHILIPS公司、ISSI公司、TEMIC公司及南韩的LG公司、日本NEC、西门子公司等。
到目前为止,MCS—51单片机已有数百个品种,还在不断推出功能更强的新产品。
现代的单片机普遍具备通信接口,可以很方便地与计算机进行数据通信,为在计算机网络和通信设备间的应用提供了极好的物质条件,现在的通信设备基本上都实现了单片机智能控制,从手机,电话机、小型程控交换机、楼宇自动通信呼叫系统、列车无线通信、再到日常工作中随处可见的移动电话,集群移动通信,无线电对讲机等。
单片机的通信领域应用首先从两片单片机之间的通信发展起来,后来有了主从式多机通信并得到了广泛的应用,又出现了以单片机作为下位机与以PC机作为上位机的通信应用,上位机用VB或VC++等面向对象的程序设计语言编写通信收发程序,也得到广泛的应用[3]。
(三)单片机间的多机通信技术
多机通信机制在单片机内部的实现如下:
串行口控制寄存器SCON中的SM2为多机通信接口控制位。
串行口以方式2或3接收时,若SM2为1,则仅当接收到的第9位数据RB8为1时,数据才装入SBUF,置位RI,请求CPU对数据进行处理;如果接收到的第9位数据RB8为0,则不产生中断标志RI,信息丢失,CPU不做任何处理。
当SM2为0时,则接收到一个数据后,不管第9位数据RB8是0还是1,都将数据装入接收缓冲器SBUF并置位中断标志RI,请求CPU处理[4]。
多机通信过程如下:
(1)所有从机的SM2=1,处于只接收地址帧状态,“听号”;
(2)主机发地址信息,并以第9位表示发送的是地址;
(3)从机接收到地址帧后与本机地址比较;
(4)被寻址从机(机号相符)SM2=0,其余从机SM2=1不变;
(5)主机发数据信息,对已被寻址的从机因SM2=0,可以接收主机发来的信息,其余从机因SM2=1不理睬主机;
(6)当主机与另外从机通信时,可另发地址帧。
并且先前寻址的从机这次未被寻址时,SM2置1[5]。
本文主要介绍了一种基于AT89C51单片机简的多机通信方式,采用自定义串行通信协议,实现单片机AT89C51多机通信的方法和技巧。
系统设计和解决了8位单片机在多机通信方面的一些问题,在实现方面,系统实现了主机与从机间的通信,以及从机与从机间的通信。
单片机的多机通信在未来工业控制,通信,家用电器等领域都将有很大的发展空间,单片机依靠其体积小,性价比高,经济性上的优势一定会在未来的各个控制领域大展其优势。
二、系统设计相关原理
(一)系统设计原理
1.系统框图
对题目进行深入的分析和思考,可将整个系统分为以下几个部分:
主机电路、从机电路、数字显示电路等模块组成。
具体的系统框图2-1如下图所示。
图2-1系统框图
2.系统原件说明
这里简单的说明系统中所使用的主要元器件,并对部分元器件进行了简单的介绍。
表2-1中列举了主要使用元器件的名称,并进行了简单的说明。
在后边又介绍了部分元器件的简单原理和框图说明。
表2-1系统元件表
元件名称
说明
AT89C51
主机和从机使用的的单片机
CAP
电容
CAP-ELEC
电解电容
CRYSTAL
晶体振荡器
7SEG-BCD-GRN
绿色数码管
BUTTON
控制按钮
RES
电阻
(1)共阳极的LED数码管
LED数码管(LEDSegmentDisplays)是由多个发光二极管封装在一起组成“8”字型的器件,引线已在内部连接完成,只需引出它们的各个笔划,公共电极。
LED数码管常用段数一般为7段有的另加一个小数点,还有一种是类似于3位“+1”型。
位数有半位,1,2,3,4,5,6,8,10位等等,LED数码管根据LED的接法不同分为共阴和共阳两类,了解LED的这些特性,对编程是很重要的,因为不同类型的数码管,除了它们的硬件电路有差异外,编程方法也是不同的[6]。
数码管分为共阳极的LED数码管、共阴极的LED数码管两种。
下图例举的是共阳极的LED数码管,共阳就是7段的显示字码共用一个电源的正。
在本系统中选用的数据显示电路的共阳极的LED数码管。
下面图3-7为共阳极数码管内部原理图。
图2-2共阳极数码管原理图
(2)数码管的驱动方式
数码管要正常显示,就要用驱动电路来驱动数码管的各个段码,从而显示出我们要的数字,因此根据数码管的驱动方式的不同,可以分为静态式和动态式两类[7]。
静态显示驱动:
静态驱动也称直流驱动。
静态驱动是指每个数码管的每一个段码都由一个单片机的I/O端口进行驱动,或者使用如BCD码二-十进制译码器译码进行驱动。
静态驱动的优点是编程简单,显示亮度高,缺点是占用I/O端口多,实际应用时必须增加译码驱动器进行驱动,增加了硬件电路的复杂性。
动态显示驱动:
数码管动态显示接口是单片机中应用最为广泛的一种显示方式之一,动态驱动是将所有数码管的8个显示笔划“a、b、c、d、e、f、g、dp”的同名端连在一起,另外为每个数码管的公共极COM增加位选通控制电路,位选通由各自独立的I/O线控制,当单片机输出字形码时,所有数码管都接收到相同的字形码,但究竟是那个数码管会显示出字形,取决于单片机对位选通COM端电路的控制,所以我们只要将需要显示的数码管的选通控制打开,该位就显示出字形,没有选通的数码管就不会亮。
通过分时轮流控制各个数码管的的COM端,就使各个数码管轮流受控显示,这就是动态驱动。
(3)AT89C51方框图
图2-3AT89C51方框图
(二)单片机AT89C51芯片简介
AT89C51是一种带4K字节FLASH存储器(FPEROM—FlashProgrammableandErasableReadOnlyMemory)的低电压、高性能CMOS8位微处理器,俗称单片机。
AT89C2051是一种带2K字节闪存可编程可擦除只读存储器的单片机。
单片机的可擦除只读存储器可以反复擦除1000次。
该器件采用ATMEL高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。
由于将多功能8位CPU和闪烁存储器组合在单个芯片中,ATMEL的AT89C51是一种高效微控制器,AT89C2051是它的一种精简版本。
AT89C单片机为很多嵌入式控制系统提供了一种灵活性高且价廉的方案[8]。
其引脚结构如下图
图2-4AT89C51引脚图
1.主要特性
(1)与MCS-51兼容
(2)4K字节可编程FLASH存储器
(3)寿命:
1000写/擦循环
(4)数据保留时间:
10年
(5)全静态工作:
0Hz-24MHz
(6)三级程序存储器锁定
(7)128×8位内部RAM
(8)32可编程I/O线
(9)两个16位定时器/计数器
(10)5个中断源
(11)可编程串行通道
(12)低功耗的闲置和掉电模式
(13)片内振荡器和时钟电路
2.管脚说明
VCC:
供电电压。
GND:
接地。
P0口:
P0口为一个8位漏级开路双向I/O口,每脚可吸收8TTL门电流。
当P1口的管脚第一次写1时,被定义为高阻输入。
P0能够用于外部程序数据存储器,它可以被定义为数据/地址的第八位。
在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口管脚备选功能
P3.0RXD(串行输入口)
P3.1TXD(串行输出口)
P3.2/INT0(外部中断0)
P3.3/INT1(外部中断1)
P3.4T0(记时器0外部输入)
P3.5T1(记时器1外部输入)
P3.6/WR(外部数据存储器写选通)
P3.7/RD(外部数据存储器读选通)
RST:
复位输入。
当振荡器工作时,RST引脚出现两个机器周期以上高电平将使单片机复位。
ALE/PROG:
当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的地位字节。
在FLASH编程期间,此引脚用于输入编程脉冲。
在平时,ALE端以不变的频率周期输出正脉冲信号,此频率为振荡器频率的1/6。
因此它可用作对外部输出的脉冲或用于定时目的。
然而要注意的是:
每当用作外部数据存储器时,将跳过一个ALE脉冲。
如想禁止ALE的输出可在SFR8EH地址上置0。
此时,ALE只有在执行MOVX,MOVC指令是ALE才起作用。
另外,该引脚被略微拉高。
如果微处理器在外部执行状态ALE禁止,置位无效。
/PSEN:
外部程序存储器的选通信号。
在由外部程序存储器取指期间,每个机器周期两次/PSEN有效。
但在访问外部数据存储器时,这两次有效的/PSEN信号将不出现。
/EA/VPP:
当/EA保持低电平时,则在此期间外部程序存储器(0000H-FFFFH),不管是否有内部程序存储器。
注意加密方式1时,/EA将内部锁定为RESET;当/EA端保持高电平时,此间内部程序存储器。
在FLASH编程期间,此引脚也用于施加12V编程电源(VPP)[9]。
XTAL1:
反向振荡放大器的输入及内部时钟工作电路的输入。
XTAL2:
来自反向振荡器的输出。
3.振荡器特性
XTAL1和XTAL2分别为反向放大器的输入和输出。
该反向放大器可以配置为片内振荡器。
石晶振荡和陶瓷振荡均可采用[10]。
如采用外部时钟源驱动器件,XTAL2应不接。
有余输入至内部时钟信号要通过一个二分频触发器,因此对外部时钟信号的脉宽无任何要求,但必须保证脉冲的高低电平要求的宽度。
4.芯片擦除
整个PEROM阵列和三个锁定位的电擦除可通过正确的控制信号组合,并保持ALE管脚处于低电平10ms来完成。
在芯片擦操作中,代码阵列全被写“1”且在任何非空存储字节被重复编程以前,该操作必须被执行。
此外,AT89C51设有稳态逻辑,可以在低到零频率的条件下静态逻辑,支持两种软件可选的掉电模式。
在闲置模式下,CPU停止工作。
但RAM,定时器,计数器,串口和中断系统仍在工作。
在掉电模式下,保存RAM的内容并且冻结振荡器,禁止所用其他芯片功能,直到下一个硬件复位为止[11]。
三、系统硬件设计
(一)总硬件电路图
采用atmel公司的AT89C51单片机,一个主机两个从机共三片。
每片单片机的外围电路都有按钮输入电路和7段数码管显示电路。
其中主机的按钮实现发送数据、汇总数据和加1数据修改命令的输入,数码管用来显示发送的数据、接收的数据和寄存器当前数据的显示。
从机的单个按键只用于寄存器的数值修改,用数码管显示接收的数据和当前寄存器值。
图3-1多机通信系统电路图
1.晶振和复位电路
单片机要能工作,必须给单片机加上晶振和复位电路,晶振电路如图3-2(a)所示,复位电路如图3-2(b)所示。
(a)晶振电路图
(b)复位电路图
图3-2时钟和复位电路图
(二)单元电路的设计
下面我们将系统设计作以详细的介绍。
本多机通信仿真设计包括主机控制电路(AT89C51)、从机控制电路、数字显示电路等几部分。
1.主机电路
主机AT89C51编程可实现循环访问个从机,共含有3个操作扭,分别为发送数据扭(将主机数据发给从机),汇总数据钮(汇总两从机数据之和)和加1按钮(增加数据),3个数码管,左边的单独显示主机操作模式,右边两个共同显示主机数据。
主机电路如图3-3所示。
图3-3主机电路图
2.从机电路
从机可以接受主机发送的数据,有加1操作扭,可以输入数据。
从机电路图如图3-4所示。
图图3-4从机电路图
四、系统软件设计
三个单片机之间“一主二从”多机通信,主机将其数码管显示的内容发送给从机,并可将从机回发的数据求和并显示,每个单片机的现实数字通过各自的按键修改,主机控制信号发送和从机数据的汇总。
具体实现:
主、从机的串口通信方式都采用查询方式,波特率为9600Hz,从机地址有其p1口的输入状态确定。
(一)软件总程序设计
程序设计流程图如图4-1所示
(a)中断方式发送程序
(b)中断方式接收程序
图4-1串行通信中断方式流程图
(二)主机通信子程序
本系统选用12MHZ晶振,采用9600HZ波特率。
程序流程如图4.2所示,其定时器串行口通信的初始化步骤如下:
(1)确定串口工作于方式3,并允许接收——对SCON寄存器送控制字C0H(SM0=1,SM1=1,REN=1);
(2)确定定时器T1工作于方式2——对TMOD寄存器送控制字20H(M1=1,M0=0)
(3)装入定时器T1的初值——TH1=F3H,TL1=F3H;
(4)启动定时器1——TCON中的TR1位置1;
(5)串行口用中断方式收发数据,开CPU和源中断——对IE寄存器90H(EA=1,ES=1)。
主机通信程序流程图如图4-2所示
图4-2主机程序图
(三)从机通信子程序
从机通信程序流程图如图4-2所示
图4-3从机程序图
五、系统仿真设计
根据多机通信系统的原理,运用Proteus软件对其进行仿真设计,由于Proteus含有AT89C51,因此在仿真设计中直接选用AT89C51来进行相关设计与仿真。
(一)软件介绍
1.Proteus系统概述
Proteus软件包括ISIS.EXE(电路原理图设计、原理仿真)、ARES.EXE(印刷电路版设计)两个主要程序,三大基本功能。
其电路原理仿真功能,不仅有分离元件。
小规模集成器件的仿真功能,能用箭头与颜色表示电流的方向与大小,而且有多种带CPU的可编程序器件的仿真功能,不仅可作电路原理[12],模拟电路。
数字电路实验,而且可作单片机与接口实验。
特别是可为课程设计与毕业设计提供综合系统仿真。
2.Proteus的主界面介绍
Proteus的主界面三大窗口:
编辑窗口、器件工具窗口、浏览窗口。
两大菜单:
主菜单与辅助菜单(通用工具与专用工具菜单),其中主菜单有:
(1)文件菜单:
新建、加载、保存、打印;
(2)浏览菜单:
图纸网络设置,快捷工具选项;
(3)编辑菜单:
取消、剪切、考贝、粘贴;
(4)库操作菜单:
器件封装库编辑、库管理;
(5)工具菜单:
实时标注自动放线,网络表生成,电气规则检查;
(6)设计菜单:
设计属性编辑、添加删除图纸、电源配置;
(7)图形分析菜单:
传