单片机串行多机通信_第1页
单片机串行多机通信_第2页
单片机串行多机通信_第3页
单片机串行多机通信_第4页
单片机串行多机通信_第5页
已阅读5页,还剩35页未读 继续免费阅读

下载本文档

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

文档简介

1、摘要随着电子技术的发展和微处理器技术的应用,带有单片机的智能型测控系统的应用越来越广泛,多个单片机系统之间数据传输已经应用于工业、科研、农业等领域,而单片机之间的数据通信最常用的就是串口通信方式,串口通信可以在使用一根线发送数据的同时利用另一根线接收数据,使用简单且能实现远距离通信。本文介绍了一种单片机多机通信的设计方法,主机与从机之间通过串口实现通信,主机通过按键来选择要进行通信的从机,然后通过数字矩阵键盘控制从机的数码管显示数字0-9,同时该从机可以通过按键控制主机连接的LED灯亮灭,实现全双工通信。本文介绍的方法简单易懂,通过仿真基本上实现了上述功能,操作简单,性能稳定,可广泛应用于各种

2、多机通信系统中。关键字:单片机;多机通信;串口;数码管;LEDAbstractWith the development of electronic technology and the application of microprocessor technology, intelligent measurement and control system with a microcontroller application is more extensive, data transfer between multiple MCU system has been used in industria

3、l, research, agriculture and other fields, while the microcontroller the most commonly used for data communications between the serial communication, serial communication can use a line to send data at the same time use another line to receive data, using simple and can achieve long-distance communi

4、cations.This article describes the design method of a single-chip multi-machine communication via the serial communication between the host and slave, to communicate from machine host keys to select, from the machines digital tube display digital and digital matrix keyboard control -9, while the sla

5、ve can be the key control of the host to connect the LED lights brightly to extinguish, to achieve full-duplex communication.This article describes the method is simple and easy to understand, basically through simulation software to achieve the above functionality, simple operation, stable performa

6、nce, can be widely used in a variety of multi-machine communication system.Key word: Microcontroller;Multi Communication;Serial Port;Nixie tube;LE目 录1引言11.1本课题选取的目的及意义11.2本系统的主要研究内容22系统分析32.1串行通信简介32.2系统构成42.3系统工作原理43系统硬件设计53.1电路设计应用环境简介53.2系统硬件总体设计方案53.3主机电路模块63.3.1 单片机63.3.2 矩阵键盘电路83.3.3 主机控制电路93.

7、4从机电路模块103.5电源电路模块113.6元件清单124系统软件设计124.1软件设计应用环境与设计语言124.2软件设计流程144.3按键程序设计154.4串口通信164.5从机数码管显示程序设计195Protues ISIS软件仿真195.1Protues仿真软件简介195.2Proteus功能仿真215.3Proteus仿真结果226结论25参考文献26附录127附录228单片机课程设计1引言随着电子技术的不断发展,单片机的应用范围越来越广泛,在工业控制、家电控制、数据采集等多个领域都有着十分重要的作用,由于单片机的使用,越来越多的系统开始向智能化方向发展。而单片机自带的串口功能可以

8、实现其与其他外设MCU或PC机之间的通信,这样就使得控制系统更加的方便实用,利用单片机的串口通信可以实现多单片机之间的数据的远程传输、数据分析与系统综合控制功能,尤其是在数据量比较大的场合下,利用一个主机向各个从机发送控制指令是一个很好的解决方案,在这个过程中,串口通信是实现单片机与单片机之间通信的关键。现在多处理器通信已经在工业、科研、农业等领域广泛地应用。串行通信是指计算机主机与外设之间以及主机系统与主机系统之间数据的串行传送。使用串口通信时,发送和接收到的每一个字符实际上都是一次一位的传送的,每一位为1或者为0。串行通信只使用一条数据线,将数据一位一位地依次传输,每一位数据占据一个固定的

9、时间长度。其只需要少数几条线就可以在系统间交换信息。基于以上原因本文介绍了一种基于单片机的多机通信设计,实现单片机与单片机之间通过串口进行数据传输的功能。1.1本课题选取的目的及意义目前单片机渗透到我们生活的各个领域,几乎很难找到哪个领域没有单片机的踪迹。导弹的导航装置,飞机上各种仪表的控制,计算机的网络通讯与数据传输,工业自动化过程的实时控制和数据处理,广泛使用的各种智能IC卡,民用豪华轿车的安全保障系统,录相机、摄相机、全自动洗衣机的控制,以及程控玩具、电子宠物等等,这些都离不开单片机。更不用说自动控制领域的机器人、智能仪表、医疗器械了。单片机广泛应用于仪器仪表、家用电器、医用设备、航空航

10、天、专用设备的智能化管理及过程控制等领域随着计算机技术的发展及工业自动化水平的提高,在许多场合采用单机控制已不能满足现场要求,因而必须采用多机控制的形式,而多机控制主要通过多个单片机之间的串行通信实现。串行通信作为单片机之间常用的通信方法之一, 由于其通信编程灵活、硬件简洁并遵循统一的标准, 因此其在工业控制领域得到了广泛的应用。构成较大规模的检测、控制系统,经常要采用多个单片机,组成可以通信的多机系统。MCS一51系列单片机为实现多机通信联网设计了方便的串行通信接口功能。将多个MCS一51单片机组成串行总线形式的相互通道,通过写单片机的串行控制方式寄存器,将串行口置成方式2或方式3,就可以实

11、现主机与分机之间的串行通信。这种多机系统结构简单,应用广泛,但它只能实现由主机呼叫分机,然后实现主机与分机之间的全双工串行通信。我们在监控系统中要求既有主机与分机主动通信,又有分机与主机主动通信,这种结构的多机系统就无法满足要求。多机协同工作已是单片机发展的一个重要趋势,目前单片机多机通信的主要方式仍然是主从式多机通信系统。单片机多机通信的目的是实现分布式处理系统,单片机多机通信的方式有很多种,应用前景广阔,非常具有研究意义!1.2本系统的主要研究内容本文在研究传统的多机通信系统的基础上,设计了一种基于MCS51系列单片机AT89C51的多机通信系统。打开proteus仿真电路图,按下软件下方

12、的“开始”图标,启动系统,按下“1号机”按键,主机与从机1接通,通过主机外接的4*4矩阵键盘控制从机1的数码管,按下标号为0-9的按键时,对应从机1的数码管显示0-9,按下从机1外接的8个开关,可以控制的主机外接的8个LED发光二极管,实现全双工通信。按下“2号机”按键,机与从机2接通,通过主机外接的4*4矩阵键盘控制从机2的数码管,按下标号为0-9的按键时,对应从机2的数码管显示0-9,按下从机2外接的8个开关,可以控制的主机外接的8个LED发光二极管,也可以实现全双工通信。2系统分析2.1串行通信简介串行通信可以分为同步通信和异步通信两类。同步通信是一种连续串行传送数据的通信方式,一次通信

13、只传送一帧信息。这里的信息帧与异步通信中的字符帧不同,通常含有若干个数据字符。它们均由同步字符、数据字符和校验字符(CRC)组成。其中同步字符位于帧开头,用于确认数据字符的开始。数据字符在同步字符之后,个数没有限制,由所需传输的数据块长度来决定;校验字符有1到2个,用于接收端对接收到的字符序列进行正确性的校验。同步通信的缺点是要求发送时钟和接收时钟保持严格的同步。异步通信中,在异步通行中有两个比较重要的指标:字符帧格式和波特率。数据通常以字符或者字节为单位组成字符帧传送。字符帧由发送端逐帧发送,通过传输线被接收设备逐帧接收。发送端和接收端可以由各自的时钟来控制数据的发送和接收,这两个时钟源彼此

14、独立,互不同步。接收端检测到传输线上发送过来的低电平逻辑0(即字符帧起始位)时,确定发送端已开始发送数据,每当接收端收到字符帧中的停止位时,就知道一帧字符已经发送完毕。串口通信最重要的参数是波特率、起始位、数据位、停止位和奇偶校验。波特率:是一个衡量通信速度的参数,表示每秒钟传送的bit的个数。起始位:当通信线上没有数据被传送时处于逻辑“1”状态,当发送设备要发送一个数据时,先发送一个逻辑“0”信号,这个低电平就是起始位,起始位通过通信线传向接收设备,接收端检测到这个低电平后,就确认开始接收数据了。起始位的作用是使通信双方在传送数据前协调同步。数据位:是衡量通信中实际数据位的参数,当计算机发送

15、一个信息包,实际的数据不会是8位的,标准的值是5、7或8位,如何设置取决于要传送的信息。每个包是指一个字节,包括开始/停止位、数据位和奇偶校验位,由于实际数据位取决于通信协议的选取,术语“包”指任何通信的情况。停止位:用于表示单个包的最后一位。典型的值为1、1.5和2位,它是一个数据的结束标志,接收端接收到停止位后,通信线路上会回复逻辑“1”的状态,知道下一个起始位的到来。奇偶校验位:在串行通信中一种简单的检错方式,有四种方式:偶、奇、高和低。对于偶和检验的情况,串口会设置检验位,用一个值确保传输的数据有偶个或者奇个逻辑高位。高位和低位不真正的检查数据,简单置位逻辑高或者逻辑低校验,这样使得接

16、收设备能够知道一个位的状态,有机会判断是否有噪声干扰了通信或者是否传输和接收数据是否不同步。2.2系统构成主机控制电路显示电路串口从机1从机2控制电路显示电路显示电路控制电路图2.1 系统设计框图2.3系统工作原理打开proteus仿真电路图,按下软件下方的“开始”图标,启动系统,按下“1号机”按键,主机与从机1接通,通过主机外接的4*4矩阵键盘控制从机1的数码管,按下标号为0-9的按键时,对应从机1的数码管显示0-9,按下从机1外接的8个开关,可以控制的主机外接的8个LED发光二极管,实现全双工通信。按下“2号机”按键,机与从机2接通,通过主机外接的4*4矩阵键盘控制从机2的数码管,按下标号

17、为0-9的按键时,对应从机2的数码管显示0-9,按下从机2外接的8个开关,可以控制的主机外接的8个LED发光二极管,也可以实现全双工通信。3系统硬件设计3.1电路设计应用环境简介Protel电子线路设计软件是在TANGO基础上改进的电路CAD软件,它在原理图文件格式、印制板文件格式、原理图器件库文件格式、印制板封装库文件格式、原理图编译和网络表转换与检查等方面保持了与TANGO版本一致或兼容的前提下,对原TANGO版本做了一些改动。Protel电子线路设计软件由原理图编辑、印制板设计、原理图输出、印制板输出、原理图器件库编辑和其他应用程序组成。电路原理图的设计是印制电路板设计中的第一步,也是非

18、常重要的一步。电路原理图设计得好坏将直接影响到后面的工作。首先,原理图的正确性是最基本的要求,因为在一个错误的基础上所进行的工作是没有意义的;其次,原理图应该布局合理,这样不仅可以尽量避免出错,也便于读图、便于查找和纠正错误;最后,在满足正确性和布局合理的前提下应力求原理图的美观。进行原理图设计步骤:一、建立数据库。打开Protel软件后,在“文件”标题栏里选择“新建”选项,在弹出的对话框里选择Document Folder,然后点击OK即可。二、打开Documents,选择“文件”标题栏里选择“新建”选项,在弹出的对话框里选择“Schematic Document”选项,建立原理图文件,并给

19、原理图文件命名。三、设计电路原理图。利用Protel里的元器件库完成电路原理图的绘制。四、检查原理图电性能可靠性。选择工具(Tools)下面的电气规则检查,在“Rule Matrix”中选择要进行电气检查的项目,设置好各项后,在“Setup Electrical Rlues Check”对话框上选择“OK”即可运行电气规则检查,检查结果将被显示到界面上。3.2系统硬件总体设计方案本设计单片机之间通过串口进行通信,主机通过按键来选择要进行通信的从机,进而通过按键控制从机的数码管显示数字;同时从机可以通过按键控制主机连接的LED灯。 数码管与单片机的连接方式采用并行连接方式。系统设计框图如图3-1

20、所示:主机单片机矩阵键盘LED发光二极管串口从机1单片机从机2单片机按键数码管数码管按键图3.1 系统整体电路图3.3主机电路模块3.3.1 单片机AT89C51单片机内部主要由9个部件组成:1个8位中央处理器;4KBFlash存储器;128B的数据存储器;32条I/O口线;2个定时器/计数器;1个具有6个中断源、4个优先级的中断嵌套结构;用于多处理机通信、I/O扩展或全双工UART的串行口;特殊功能寄存器;1个片内振荡器和时钟电路。AT89S51系列单片机完全继承了MCS-51的指令系统,共有111条指令,按其功能可分为五大类:数据传送类指令、算术运算类指令、逻辑运算类指令、控制转移类指令、

21、布尔操作。AT89C51单片机引脚如图3-1所示。图3.1 AT89C51单片机引脚图管脚说明:P0口:8位、漏极开路的双向I/O口。P0能够用于外部程序数据存储器。它可以被定义为数据/地址的第八位。P0口在应用时必须外接上拉电阻,作为输入时,首先应将引脚置1。P1口:8位双向I/O口,内部含上拉电阻。作为输入时,应先将引脚置高;若负载为低电平,则通过内部上拉电阻向外输出电流。P2口:8位双向I/O口,内部含上拉电阻。作为输入时,应先将引脚置高;若负载为低电平,则通过内部上拉电阻向外输出电流。P3口:8位双向I/O口,内部含上拉电阻。作为输入时,应先将引脚置高;若负载为低电平,则通过内部上拉电

22、阻向外输出电流。P3口除了通用I/O口功能外,还有第二功能。P3口的第二功能定义如表3-1所示。引脚定义功能引脚定义功能P3.0-RXD串行输入口P3.1-TXD串行输出口P3.2-外部中断0P3.3-外部中断1P3.4-T0计时器0外部输入P3.5-T1计时器1外部输入P3.6-外部数据存储器写选通P3.7-外部数据存储器读选通表3.1 P3口第二功能定义RST:复位输入,低电平有效。ALE/PROG:地址锁存允许信号输出。在正常操作状态下,该引脚端口输出恒定频率的脉冲。其频率为晶振频率的1/6,可用作外部定时或其他触发信号。如果需要,可通过SFR的第0位置禁止ALE操作,但ALE的禁止位不

23、影响对外部存储器的访问。:片外程序存储器选通信号,低电平有效。当AT89S51执行来自外部程序存储器的指令代码时,PSEN/每个机器周期两次有效。在访问外部数据存储器时,PSEN/无效。:片外程序存储器访问允许信号,低电平有效。XTAL1:外接晶振。在单片机内部是反相放大器的输入及端。XTAL2:外接晶振。在单片机内部是反相放大器的输出端,输入到内部时钟发生器。3.3.2 矩阵键盘电路矩阵键盘电路如图3-2所示。单片机的P1口控制矩阵键盘。本设计采用4*4矩阵键盘。矩阵键盘的行线接P1.0-P1.3引脚,列线接P1.4-P1.7引脚。将P1.0-P1.3引脚置为高电平,P1.4-P1.7引脚依

24、次置为低电平,当按键没有按下时,P1.0-P1.3口各引脚状态不变,一旦有按键按下,则P1.0-P1.3就会有引脚变为低电平,这样,通过读入P1.0-P1.3的状态就可得知是哪一个按键按下了,然后单片机根据该按键代表的功能执行相应的程序。图3.2 矩阵键盘电路3.3.3 主机控制电路该部分电路设计如图3-3所示。单片机的时钟的频率直接影响着单片机的速度和系统的稳定性。AT89S51片内由一个反相放大器构成振荡器,可以通过XTAL1和XTAL2产生时钟。常用的单片机产生时钟的方法有两种:内部时钟方式和外部时钟方式。本设计选用外部时钟方式,单片机内部XTAL1引脚为高增益反向放大器的输入端,XTA

25、L2为输出端,在这2个引脚之间接石英晶振和电容,就可以构成一个稳定的自激振荡器。本设计选用的12MHz的晶振。复位是单片机的初始化操作,复位信号是高电平有效,复位操作有上电自动复位、按键电平复位、外部脉冲复位和自动复位四种方式。在本设计中复位电路采用按键电平方式,使RST引脚经过10u电解电容与VCC电源接通,同时经过电阻与地连接而实现,按下按键时,RST引脚置高,实现复位功能。单片机的P1口控制矩阵键盘电路,P2口控制8路LED灯,从机可以向主机发送指令来控制LED灯的亮灭。当单片机串口接收到从机发送来的指令时,判断其控制的是哪一路LED灯,再用单片机引脚控制该路LED灯。图3.3 主机控制

26、电路3.4从机电路模块本设计共设置2路从机,2路从机的电路设计和实现的功能是一样的,所以这里只介绍其中一路从机的电路设计。从机电路如图3-4所示。单片机的P1口控制8路按键,这8路按键用于实现控制主机的8路LED灯的亮灭;P2口控制数码管显示。半导体数码管的每个线段都是一个发光二极管(Light Emitting Diode,简称LED),因而也把它叫做LED数码管或LED七段显示器。半导体数码管不仅具有工作电压低、体积小、寿命长、可靠性高等优点,而且响应时间短(一般不超过0.1us),亮度也比较高。LED数码管由八只发光二极管组成,编号是a、b、c、d、e、f、g、h,分别和同名管脚相连,当

27、发光二极管导通时发光。每个二极管就是一个笔划,若干个二极管发光时,就构成一个显示字符。若将单片机的I/O口与数码管的a-g和h相连,高电平(对应共阴极数码管)或低电平(对应共阳极数码管)的位对应的发光二极管就会亮,这样,I/O口输出不同的代码就可以控制数码管显示不同的字符。由于本设计只用了一个数码管显示数字0-9,所以直接将数码管的8个段码引脚连接至单片机的引脚上,利用单片机的引脚输出要显示的数字的代码。图3.4 从机电路3.5电源电路模块电源部分提供整个电路所需各种电压,由电源变压器、整流电路、滤波电路及辅助稳压输出构成,电源变压器的功率由需要输出的电流大小决定,确保有充足功率余量。交流电经

28、过二极管整流之后,方向单一了,但是大小(电流强度)还是处在不断地变化之中。这种脉动直流一般是不能直接用来给无线电装供电的。要把脉动直流变成波形平滑的直流,还需要再做一番“填平取齐”的工作,这便是滤波。换句话说,滤波的任务,就是把整流器输出电压中的波动成分尽可能地减小,改造成接近恒稳的直流电。直流电压纹波的大小与滤波电路的电解电容的关系是电容越大纹波越小,小功率电路一般应满足:R*C=2T(R是负载电阻的阻值,C是滤波电容的容值,T是被滤波交流信号的周期)。滤波电路主要分为以下几种:一、电容滤波:电容器两端电压不能突变的特性,正好可以用来承担滤波的任务,电容量越大,滤波效果越好,输出波形越趋于平

29、滑,输出电压也越高,适于各种整流电路。整流滤波电路对电容器的容量和耐压值要求不是太高,一般根据输出电流大小估算电容器的容量,输出电流大,容量就大;电流小,容量就小。二、电感滤波:利用电感对交流阻抗大而对直流阻抗小的特点,可以用带铁芯的线圈做成滤波器。电磁滤波输出电压较低,相输出电压波动小,随负载变化也很小,适用于负载电流较大的场合。三、复式滤波器:把电容按在负载并联支路,把电感或电阻接在串联支路,可以组成复式滤波器,达到更佳的滤波效果。这种电路的形状很像字母,所以又叫型滤波器;电磁与电容组成的LC滤波器,其滤波效能很高,几乎没有直流电压损失,适用于负载电流较大、要求纹波很小的场合。但是,这种滤

30、波器由于电感体积和重量大(高频时可减小),比较笨重,成本也较高,一般情况下使用得不多;由电阻与电容组成的RC滤波器这种复式滤波器结构简单,能兼起降压、限流作用,滤波效能也较高,是最常用的一种滤波器。上述两种复式滤波器,由于接有电容,带负载能力都较差。稳压电路有分立元件稳压电路和集成稳压电路两种,其中集成稳压电路主要用于低电压小电流的整流电路,具有体积小,电路简单,稳压精度高,使用调试方便等特点。本设计中的供电电源电路如图3-5所示。220V市电先经过变压器降压至9V,降压后的交流电经过1N4007组成的二极管整流桥进行整流,再经大电解电容和小无极电容滤波进入到稳压块LM7805中,LM7805

31、的输出是+5V,可供电路中元器件的供电使用。图3.5 供电电源电路3.6元件清单单片机AT89C513按键Button32发光二极管LED-RED8数码管7SEG2其他4系统软件设计4.1软件设计应用环境与设计语言本设计软件的设计是在Keil C51的环境下编译的。Keil C51是美国Keil Software公司出品的51系列兼容单片机C语言软件开发系统,软件提供丰富的库函数和功能强大的集成开发调试工具,全Windows界面。Keil C51标准C编译器为8051微控制器的软件开发提供了C语言环境,同时保留了汇编代码高效、快速的特点。C51编译器的功能不断增强,使你可以更加贴近CPU本身,

32、及其它的衍生产品。C51已被完全继承到Vsion2的集成开发环境中,这个集成开发环境包含:编译器、汇编器、实时操作系统、项目管理器、调试器。Vsion2 IDE可为它们提供单一而灵活的开发环境。C51 V7版本是目前最高效、灵活的8051开发平台。它可以支持所有8051的衍生产品,也可以支持所有兼容的仿真器,同时支持其它第三方开发工具。因此,C51 V7版本无疑是8051开发用户的最佳选择。Keil C51编译器在遵循ANSI标准的同时,为8051微控制器系列特别设计,语言上的扩展能让用户使用应用中的所有资源。一、存储器和特殊功能寄存器的存取。C51编译器可以实现对8051系列所有资源的操作。

33、SFR的存取由sfr和sbit两个关键字来提供。变量可旋转到任一个地址空间。用关键字-at-还能把变量放入固定的存储器。存储模式决定了变量的存储类型。连接定位器支持的代码区可达32个,这就允许用户在原有64K ROM的8051基础上扩展程序。在V2的编译器和许多高性能仿真器中,可以支持应用程序的调试。二、中断功能。C51允许用户使用C语言编写中断服务程序,快速进、出代码和寄存器区的转换功能使C语言中断功能更加高效。可再入功能是用关键字来定义呃。多任务、中断或非中断的代码要求必须具备可再入功能。三、灵活的指针。C51提供了灵活高效的指针。通用指针用3个字节来存储存储器类型及目标地址,可以在805

34、1的任意存储区内存取任何变量。特殊指针在声明的同时已制定了存储器类型,指向某一特定的存储区域。由于地址的存储只需1-2字节,因此,指针存取非常迅速。本设计采用C语言来完成程序设计的,C语言有以下特点:1、语言简洁、紧凑、使用方便、灵活。C语言一共只有32个关键字,9种控制语句,程序书写自由,主要用小写字母表示,压缩了一切不必要的成分。2、运算符丰富。C的运算符包含的范围很广泛,共有34种运算符,使得C的运算类型极其丰富,表达式类型多样化,灵活使用各种运算符可以实现在其他高级语言中难以实现的运算。3、数据结构丰富,具有现代化语言的各种数据结构,能用来实现各种复杂的数据结构的运算。4、具有结构化的

35、控制语句,用函数作为程序的模块单位,便于实现程序的模块化。5、语法限制不太严格,程序设计自由度大。6、C语言能进行位操作,能实现汇编语言的大部分功能,可以直接对硬件进行操作。因此,C既具有高级语言的功能,又具有低级语言的许多功能,可用来写系统软件。C语言的这种双重性,使它既是成功的系统描述语言,又是通用的程序设计语言。7、生成目标代码质量高,程序执行效率高。8、用C语言写的程序可移植性好。基本上不用修改就能用于各种型号的计算机和各种操作系统。对操作系统和系统实用程序以及需要对硬件进行操作的场合,用C语言明显地优势于其他高级语言,有的大型应用软件也用C语言来编写。4.2软件设计流程系统软件分为两

36、个部分,主机软件设计和从机软件设计。主机软件设计流程图如图4-1所示。结束开始初始化确认从机编号扫描数字键通过串口向从机发送数据扫描按键接收从机发来的数据控制相应LED灯图4.1 主机软件设计流程图从机软件设计流程图如图4-2所示。结束开始初始化数码管送显通过串口向主机发送数据接收串口数据有按键按下?YN图4.2 从机软件设计流程图4.3按键程序设计单片机读取按键值的方法有两种:查询方式和中断方式。查询方式是利用键盘程序不断查询是否有按键按下,有按下则进入相应按键的子程序进行数据处理,没有则一直循环查询;中断方式是将按键动作与单片机的中断系统联系起来,有按键按下时,就引起单片机中断,使系统进入

37、中断处理程序。本设计采用查询方式来处理读取按键值程序。设计按键程序时,首先应注意的是按键的机械触点效应,原理上,按键按下时,单片机端口为低电平,但是由于按键的机械触点效应,按键在断开和闭合瞬间会有抖动过程,这个过程会出现一系列的负脉冲,这样会让单片机引起误判,因地,必须才需措施去掉按键抖动的影响。去按键抖动常用的有两种方法:硬件方法和软件方法。硬件方法一般是并接电容,或者加R-S触发器;软件去抖动一般采用延时的方法,按键抖动的过程一般持续5-10ms的时间,在判断按键状态时,只要加一个5-10ms的延时程序,再次判断按键是否状态不变,即可实现去抖动的作用。本设计中选用软件延时的方法去按键抖动。

38、延时子程序如下:void delay(uint tt) uchar i; for(;tt0;tt-) for(i=0;i2;i+); 4.4串口通信AT89S51的串行口是一个全双工的异步串行通信口,可以同时进行接收数据和发送数据,因为口内的接受缓冲器和发送缓冲器在物理上是隔离的,即是完全独立的。可以通过访问特殊功能寄存器SBUF,来访问接收缓冲器和发送缓冲器。接收缓冲器还具有双缓冲的功能,即它在接收第一个数据字节后,能接受第二个数据字节,但是,在它完成接收第二个数据字节之后,若第一个字节仍未取走,那么该字节数据将丢失。对串行口的控制主要包括对状态控制寄存器SCON、控制寄存器PCON、和串行

39、数据寄存器SBUF的设置。1、状态控制寄存器SCON:SCON是一个逐位定义的8位寄存器,由它控制串行通信的方式选择、接收和发送,指示串行口的状态。寄存器SCON既可字节寻址也可位寻址,字节地址为98H,位地址为98H-9FH。其格式如下表4-1所示:位地址9FH9EH9DH9CH9BH9AH99H98H位功能SM0SM1SM2RENTB8RB8TIRI表4.1 SCON地址格式SM0,SM1:串行口工作方式选择位;SM2:允许方式2、3中的多处理机通信位;REN:允许串行接收位,置位时,允许串行接收,清除时,禁止串行接收,可用软件置位/清除;TB8:方式2和方式3中要发送的第9位数据,可用软

40、件置位/清除;RB8:方式3和方式3中接收的第9位数据。方式1中接收的是停止位,方式0中不使用这一位。TI:发送中断标志位,硬件置位,软件清除。方式0中,在发送第8位末尾置位,在其他方式时,在发送停止位开始时设置;RI:接收中断标志位。硬件置位,软件清除。方式0中,在接收第8位末尾置位,在其他方式时,在接收停止位中间设置。2、控制寄存器PCON:PCON是一个逐位定义的8位寄存器,目前仅有几位有定义,其中仅最高位SMOD与串行口控制有关,其他位与掉电方式有关,其格式如表4-2所示。D7D6D5D4D3D2D1D0SMOD-GF1GF0PDIDL表4.2 PCON地址格式SMOD:串行通信波特率

41、系数控制位,当SMOD=1时,使波特率加倍。寄存器PCON的地址为87H,只能字节寻址。3、串行数据寄存器SBUF:SBUF包含在物理上隔离的两个8位寄存器:发送数据寄存器和接受数据寄存器,但是它们共用一个地址99H,其格式如下表4-3所示。D7D6D5D4DD2D1D0SD7SD6SD5SD4SD3SD2SD1SD0表4.3 数据寄存器格式串口发送数据程序如下:void send_buf(void) SBUF=D_ADDR; while(!TI); TI=0; SBUF=key_bpard; while(!TI); TI=0; delay(3000);单片机读取串口数据程序如下:void d

42、ushu(void) interrupt 4 using 1/串口接收中断 while(RI=0); P2=SBUF; RI=0;串行口控制寄存器SCON中的SM2为方式2或方式3的多机通信控制位,当串行口以方式2或方式3工作时,若SM2程控位为1,此时只有当串行口就收到的第9位数据RB8=1时,才置1中断标志RI,若接收到的RB8=0,则不产生中断标志,应用MCS-51串行口的这个标志,便可实现多机通信。在一个多机系统中有一个主机和二个从机组成的多机系统,从机的地址分别为00H,01H,从机系统由初始化程序将串行口编程为方式2或方式3接收,即9位异步通信方式,且置“1”SM2和REN,允许串

43、行口中断。在主机和某一个从机通信之前,先将从机地址发送给各个从机系统。接着才传送数据或命令,主机发出的地址信息的第9位为1,数据(包括命令)信息的第9位为0,当主机向各从机发送地址时,各从机的串行口接收到的第9位的信息RB8为1,置“1”RI中断标志位,各从机80C51响应中断,执行中断服务程序。在中断服务程序中,判断主机送来的地址是否和本机地址相符合,若为本机的地址,则清“0”SM2位,准备接收主机的数据或命令;若地址不相符,则保持SM2=1状态。接着主机发送数据,此时各个从机串行口接收到的RB8=0;只有与前面地址相符合的从机系统(即已清“0”SM2位的从机)才能激活中断标志位RI,从而进

44、入中断服务程序,在中断服务程序中接收主机的数据或执行主机的命令,实现和主机的信息传送;其他的从机因SM2保持为1,又RB8=0不激活中断标志RI,所接收的数据丢失不作处理,从而保证了主机和从机间通信的正确性。本次设计多机系统为主从式,由主机控制多机之间的通信,从机和从机之间的通信只能经主机才能实现。4.5从机数码管显示程序设计根据数码管的驱动方式不同,数码管送显方式有两种:静态送显和动态送显。静态显示驱动:静态驱动也称直流驱动,在静态显示驱动方式下,数码管的共阴极或共阳极共同接地或接电源,每个数码管的段选线与8位的单片机并口连接。静态显示驱动方式占用的单片机I/O端口比较多,一般在实用中不采用

45、。动态显示驱动:数码管动态显示方式是将所有的段选线并联在一起,由一个8位I/O口来控制,再利用单片机的其他I/O口来作为数码管的位选线。当单片机输出显示数字的译码时,哪个数码管显示由单片机对位选通电路的控制来选择,所以将欲显示的数码管的位选通端选通,该数码管就会显示,其它数码管均不会亮。通过轮流控制各个数码管的选通端使数码管轮流显示。在显示过程中,每个数码管的显示时间为1-2ms,由于人们的视觉暂留现象及发光二极管的余晖效应,只要扫描的速度够快,给人的印象就是同时点亮的,而且不会有闪烁感。本设计中只需要1位数码管显示摄像机参数的编号,采用静态显示方式控制比较简单。子程如下:while(1) K

46、EY_BORD=P1; delay(2); P2=tabrbuf1; 5Protues ISIS软件仿真5.1Protues仿真软件简介仿真软件采用 Proteus。在国外有包括斯坦福、剑桥等在内的几千家高校将Proteus作为电子工程学位的教学和实验平台;在国内也有众多大学正在体验Proteus的独一无二的功能并申报大学计划。该方法具有普遍意义。通过实际应用发现,采用该方法可以大大简化硬件电路测试和系统调试通过程中电路板制作、元器件安装、焊接等过程。很明显,使用该方法可以提高开发效率、降低开发成本、提升开发速度,对单片机系统开发具有指导意义。Proteus软件是来自英国Labcenter e

47、lectronics公司的EDA工具软件,Proteus软件有十多年的历史,在全球广泛使用,除了其具有和其它EDA工具一样的原理布图、PCB自动或人工布线及电路仿真的功能外,其革命性的功能是:将电路仿真和微处理器仿真进行协同,直接在基于原理图的虚拟原型上进行处理器编程调试,并进行功能验证,通过动态器件如电机、LED、LCD、开关等,实时看到运行后的输入、输出的效果,配合系统配置的虚拟仪器如示波器、逻辑分析仪等,Proteus为我们建立了完备的电子设计开发环境。Proteus软件由ISIS和ARES两个软件构成,其中ISIS是原理图编辑与仿真软件,ARES是布线编辑软件。本设计用的是ISIS软件

48、。ISIS是电路分析与实物仿真软件,可以仿真、分析(SPICE)各种模拟器件和集成电路,主要特性有:1、实现了单片机仿真和SPICE电路仿真相结合。具有模拟电路仿真、数字电路仿真、单片机及其外围电路组成的系统的仿真、RS-232动态仿真、I2C调试器、SPI调试器、键盘和LCD系统仿真的功能,有各种虚拟仪器如示波器、逻辑分析仪、信号发生器等。2、支持主流单片机系统的仿真。3、提供软件调试功能。在硬件仿真系统中也具有全速、单步、设置断点等调试功能。同时,还可以观察各个变量、寄存器等的当前状态,因此在该软件仿真系统中也具有这些功能。同时,还支持第三方的软件编译和调试环境,如Keil C51等软件。

49、4、具有强大的原理图绘制功能。Proteus ISIS的工作界面是一种标准的Windows界面,如图所示。包括:标题栏、主菜单、标准工具栏、绘图工具栏、状态栏、对象选择按钮、预览对象方位控制按钮、仿真进程控制按钮、预览窗口、对象选择器窗口、图形编辑窗口。运行Proteus程序后,进入软件的主界面。通过左侧工具栏中的P(从库中选择元件命令)命令,在Pick Devices 左侧窗口中选择所需元件的关键字,然后放置元件并调整方向和位置以及参数设置,最后进行连线。图5.1 Proteus ISIS的工作界面5.2Proteus功能仿真Proteus仿真时,单片机需要加载程序,加载程序为.HEX文件。

50、本设计利用Keil Vision2,在新建Keil项目时选择AT89C52单片机作为CPU,将C语言源程序导入,在“Options For Target”对话窗口中,选中“Output”选项中的“Create HEX File”,编译链接后就可以生成 .HEX文件。在Proteus ISIS中,选中AT89C51并单击鼠标左键,对AT89C51进行设置,设置单片机时钟频率为12MHz,按照正确的文件路径加载.HEX文件。对单片机设置完毕后就可以开始仿真了。仿真过程中如有硬件问题可在Proteus ISIS中直接修改,如有软件问题可在Keil Vision2中直接修改,通过Keil与Proteu

51、s的联合调试就可以得到满意的结果。最后载入hex文件后可以进行模拟仿真,可以全速运行也可以单步调试运行。单击Play按钮,进入仿真状态仿真按钮如图5-2所示,其中按钮1为开始运行,按钮2为step,按钮3为暂停,按钮4为停止。单击运行按钮,启动 Proteus ISIS 仿真。图5.2 仿真按钮5.3Proteus仿真结果首先根据电路原理图利用Protues软件画出仿真图。打开proteus软件,将所需要用到的元器件添加到左侧的元器件列表DEVICE中。单击按钮“P”,即可弹出元器件库对话框,可以从中选择元器件。输入元器件名称,可以选择所用元器件,选中后,单击“OK”即可。选完元器件后,在元器

52、件列表里回显示出来。按照电路原理图将仿真图画好,如图5.3所示。图5.3 系统总体仿真图运行后,按下主机1号键,开始主机与1号从机通信。再按下数字1,从机数码管显示1。效果如图5.4所示。按下从机按键P1.0引脚控制的按键,可控制主机D1灯,实现了从机控制主机LED灯的功能,效果如图5.5所示。2号从机与主机的通信与1号从机是一样的,效果图如图5.6和图5.7所示。图5.4 主机控制1号从机显示仿真效果图图5.5 1号从机控制主机LED灯仿真效果图图5.6 主机控制2号从机显示仿真效果图图5.7 2号从机控制主机LED灯仿真效果图6结论在本次毕业设计,我通过基于典型单片机AT89C51的设计和

53、应用,对于单片机工作原理、功能有了宏观的了解,并对单片机汇编程序的应用有了新的、进一步的认识。在本次设计的过程中,我发现很多的问题,给我的感觉就是下手很难,很不顺手,看似很简单的电路,要动手把它给设计出来,是很难的一件事,主要原因是我们没有经常动手设计过电路。另外单片机系统的知识似懂非懂,而且很多知识当时弄明白了,现在要用的时候又不记得,造成我用了大量的时间去查阅各种资料和程序命令,因此整个过程时间安排不合理。由于设计的计划没有安排好,设计的时间极为仓促,尤其是在硬件调试的过程中出现了很大的问题。另外资料的查找也是一大难题,这就要求我们在以后的学习中,应该注意到这一点,更重要的是我们要学会把从

54、书本中学到的知识和实际的电路联系起来,这不论是对我们以后的就业还是学习,都会起到很大的促进和帮助。本文介绍了一种基于单片机的多机通信的设计方法,论文首先介绍了多机通信的应用及研究现状、串口通信的概念,主要是串口通信的方式和重要的数据位说明,接着提出了利用串口通信实现多机通信的可行的设计方案,并从硬件电路设计和软件程序设计两个方面详细介绍了整个设计的原理及设计过程,最后完成了系统的仿真调试,可成功运行,从而验证了方案的可行性。当然,本设计还有很多不足之处,功能上还不够完善,在此基础上还可以进行系统扩展,以使整个设计的功能更加完善。36参考文献1 谢沅清,解月珍.电子技术基础.人民邮电出版社,1999.2 何立民. 单片机应用技术选编. 北京航空航天大学出版社,2006.3 谭浩强.C程序设计(第二版).清华大学出版社,2001.1.4 张毅刚,彭喜源.MCS-51单片机应用设计.哈尔滨工业大学出版社,1997.5 胡汉才.单片机原理及接口技术.清华

温馨提示

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

评论

0/150

提交评论