单片机之间的串口通信设计毕业论文.doc

上传人:小小飞 文档编号:3915885 上传时间:2019-10-10 格式:DOC 页数:26 大小:398.50KB
返回 下载 相关 举报
单片机之间的串口通信设计毕业论文.doc_第1页
第1页 / 共26页
单片机之间的串口通信设计毕业论文.doc_第2页
第2页 / 共26页
单片机之间的串口通信设计毕业论文.doc_第3页
第3页 / 共26页
单片机之间的串口通信设计毕业论文.doc_第4页
第4页 / 共26页
单片机之间的串口通信设计毕业论文.doc_第5页
第5页 / 共26页
点击查看更多>>
资源描述

《单片机之间的串口通信设计毕业论文.doc》由会员分享,可在线阅读,更多相关《单片机之间的串口通信设计毕业论文.doc(26页珍藏版)》请在三一文库上搜索。

1、厦门华天涉外职业技术学院高职毕业设计目录摘要21 绪论21.1 选题背景21.2 技术发展概况32 方案设计42.142.2 设计方案53 系统硬件设计63.1 电路设计应用环境简介63.2 按键输入电路63.3 单片机控制电路73.3.1 AT89S5173.3.2 单片机控制电路设计83.4 显示电路93.4.1 74LS164简介93.4.2 显示电路103.5 电源电路114 系统软件设计124.1 软件设计应用环境124.2 设计流程图134.3 按键程序设计144.4 串口通信程序设计164.5 显示程序设计195 总结21参考文献23附录24摘要 随着电子技术的发展和微处理器技术

2、的应用,带有单片机的智能型测控系统的应用越来越广泛,多个单片机系统之间数据传输已经应用于工业、科研、农业等领域,而单片机之间的数据通信最常用的就是串口通信方式,串口通信可以在使用一根线发送数据的同时利用另一根线接收数据,使用简单且能实现远距离通信。本文介绍了一种单片机之间串口通信的设计方法,通过按键输入数据,单片机通过串口将数据发送给另一个单片机,同时发送的数据均可在2个单片机控制的数码管上显示,以检测串口通信的准确性。本文介绍的方法简单易懂,可广泛应用于各种串口数据通信系统中。关键字:单片机、串口通信、数码1 绪论1.1 选题背景随着电子技术的不断发展,单片机的应用范围越来越广泛,在工业控制

3、、家电控制、数据采集等多个领域都有着十分重要的作用,由于单片机的使用,越来越多的系统开始向智能化方向发展。而单片机自带的串口功能可以实现其与其他外设MCU或PC机之间的通信,这样就使得控制系统更加的方便实用,利用单片机的串口通信可以实现数据的远程传输、数据分析与系统综合控制功能,尤其是在数据量比较大的场合下,利用一个主机向各个从机发送控制指令是一个很好的解决方案,在这个过程中,串口通信是实现单片机与单片机之间通信的关键。现在多处理器通信已经在工业、科研、农业等领域广泛地应用。串行通信是指计算机主机与外设之间以及主机系统与主机系统之间数据的串行传送。使用串口通信时,发送和接收到的每一个字符实际上

4、都是一次一位的传送的,每一位为1或者为0。串行通信只使用一条数据线,将数据一位一位地依次传输,每一位数据占据一个固定的时间长度。其只需要少数几条线就可以在系统间交换信息。本文基于以上原因本文介绍了基于单片机之间的串口通信设计,实现单片机与单片机之间通过串口进行数据传输的功能。1.2 技术发展概况数据通信是通信技术和计算机技术相结合而产生的一种新的通信方式。要在两地之间传输信息必须由传输信道,根据传输媒体的不同,有有线数据通信与无线数据通信之分,但它们都是通过传输信道将数据终端与计算机连接起来,而使不同地点的数据终端实现软、硬件和信息资源的共享。数据通信的发展主要分为五个阶段。第一阶段:以语言为

5、主,通过人力、马力、烽火等原始手段传递信息;第二阶段:文字、邮政;第三阶段:印刷;第四阶段:电报、电话、广播;第五阶段:信息时代,除语言信息外,还有数据、图像、文本等。通信作为电信是从19世纪30年代开始的。1831年,法拉第发现电磁感应;1837年,莫尔斯发明电报;1873年,马克斯韦尔提出了电磁场理论;1876年,贝尔发明电话;1895年,马可尼发明无线电,开辟了电信的新纪元;1906年发明电子管,从而模拟通信得到发展;1928年,出现了奈奎斯特准则和取样定理;1948年,提出了山农定理;20世纪50年代发明半导体,从而数字通信得到发展。20世纪60年代发明集成电路。20世纪40年代提出静

6、止卫星概念,但无法实现;20世纪50年代航天技术开始活跃;1963年第一次实现同步卫星通信;20世纪60年代发明了激光,企图用于通信,但未成功;20世纪70年代发明光导纤维,光纤通信得到发展。串口通信的概念:串口按位发送和接收字节,尽管比按字节的并行通信慢,但是串口可以在使用一根线发送数据的同时利用另一根线接收数据,很简单且能实现远距离通信,长度可以达到1200米。最被人们熟悉的串行通信技术标准是EIA-232、EIA-422和EIA-485,也就是以前所称的RS-232、RS-422和RS-485,由于EIA提出的建议标准都是以RS作为前缀,所以在同业通信领域,仍然习惯将上述标准以RS作为前

7、缀称谓。EIA-232、EIA-422和EIA-485最初都是由电子工业协会制定并发布的,EIA-232在1962年发布,后来陆续有不少改进版本,其中最常用的是EIA-232-C版。目前EIA-232是PC机与通信工业中应用最广泛的一种串行接口。EIA-422标准全称是“平衡电压数字接口电路的电气特性”,它定义了一种平衡通信接口,将传输速率提高到了10Mbps,传输距离延长到了1219米,并允许在一条平衡总线上最多连接10个接收器。1983年EIA在EIA-422的基础上制定了EIA-485标准,增加了多点、双向通信能力,即允许多个发送器连接到同一条总线上,同时增加了发送器的驱动能力和冲突保护

8、特性,扩展了总线共模范围,后命名为TIA/EIA-485-A标准。2 方案设计2.1 串行通信简介设计题目单片机之间的串口通信设计。 串行通信可以分为同步通信和异步通信两类。同步通信是一种连续串行传送数据的通信方式,一次通信只传送一帧信息。这里的信息帧与异步通信中的字符帧不同,通常含有若干个数据字符。它们均由同步字符、数据字符和校验字符组成。其中同步字符位于帧开头,用于确认数据字符的开始。数据字符在同步字符之后,个数没有限制,由所需传输的数据块长度来决定;校验字符有1到2个,用于接收端对接收到的字符序列进行正确性的校验。同步通信的缺点是要求发送时钟和接收时钟保持严格的同步。异步通信中,在异步通

9、行中有两个比较重要的指标:字符帧格式和波特率。数据通常以字符或者字节为单位组成字符帧传送。字符帧由发送端逐帧发送,通过传输线被接收设备逐帧接收。发送端和接收端可以由各自的时钟来控制数据的发送和接收,这两个时钟源彼此独立,互不同步。接收端检测到传输线上发送过来的低电平逻辑0(即字符帧起始位)时,确定发送端已开始发送数据,每当接收端收到字符帧中的停止位时,就知道一帧字符已经发送完毕。串口通信最重要的参数是波特率、起始位、数据位、停止位和奇偶校验。波特率:是一个衡量通信速度的参数,表示每秒钟传送的bit的个数。起始位:当通信线上没有数据被传送时处于逻辑“1”状态,当发送设备要发送一个数据时,先发送一

10、个逻辑“0”信号,这个低电平就是起始位,起始位通过通信线传向接收设备,接收端检测到这个低电平后,就确认开始接收数据了。起始位的作用是使通信双方在传送数据前协调同步。数据位:是衡量通信中实际数据位的参数,当计算机发送一个信息包,实际的数据不会是8位的,标准的值是5、7或8位,如何设置取决于要传送的信息。每个包是指一个字节,包括开始/停止位、数据位和奇偶校验位,由于实际数据位取决于通信协议的选取,术语“包”指任何通信的情况。停止位:用于表示单个包的最后一位。典型的值为1、1.5和2位,它是一个数据的结束标志,接收端接收到停止位后,通信线路上会回复逻辑“1”的状态,知道下一个起始位的到来。奇偶校验位

11、:在串行通信中一种简单的检错方式,有四种方式:偶、奇、高和低。对于偶和检验的情况,串口会设置检验位,用一个值确保传输的数据有偶个或者奇个逻辑高位。高位和低位不真正的检查数据,简单置位逻辑高或者逻辑低校验,这样使得接收设备能够知道一个位的状态,有机会判断是否有噪声干扰了通信或者是否传输和接收数据是否不同步。2.2 设计方案 本设计2个相同单片机之间通过串口进行通信,通过按键输入要发送的数据,该数据为数字,并可在数码管上显示出来,设置完后通过串口通信发送给另一个单片机,另一个单片机接收到后在数码管上显示出来,2个单片机可以互相发送数据,通过2个单片机系统的数码管显示的数字可以判断串口通信发送的数据

12、的正确性。系统设计框图如图2-1所示。本设计主要由按键输入电路、单片机控制电路和数码管显示电路组成,2个单片机的电路图完全相同,实现的功能也相同,所以本文只介绍其中一块单片机电路的设计方法和串口通信的原理。图2-1 系统设计框图3 系统硬件设计3.1 电路设计应用环境简介Protel电子线路设计软件是在TANGO基础上改进的电路CAD软件,它在原理图文件格式、印制板文件格式、原理图器件库文件格式、印制板封装库文件格式、原理图编译和网络表转换与检查等方面保持了与TANGO版本一致或兼容的前提下,对原TANGO版本做了一些改动。Protel电子线路设计软件由原理图编辑、印制板设计、原理图输出、印制

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

14、”选项,在弹出的对话框里选择“Schematic Document”选项,建立原理图文件,并给原理图文件命名。三、设计电路原理图。利用Protel里的元器件库完成电路原理图的绘制。四、检查原理图电性能可靠性。选择工具下面的电气规则检查,在“Rule Matrix”中选择要进行电气检查的项目,设置好各项后,在“Setup Electrical Rlues Check”对话框上选择“OK”即可运行电气规则检查,检查结果将被显示到界面上。3.2 按键输入电路常用的按键有独立键盘和矩阵键盘,矩阵式键盘分行和列,通过行和列来确定某一个按键的位置,适用于多键盘操作,可以节省单片机的I/O口。独立式键盘是直

15、接将按键连接至单片机I/O口,单片机通过检测I/O的电平来判断按下的按键,编程简单,但是占用I/O资源比较多。本设计中只需要用到4个按键来实现数据的输入,所以使用独立式键盘即可。按键输入电路如图3-1所示。单片机的P1.0-P1.3引脚用来控制4路按键,4个按键分别代表4组数据“1、12、123、1234”,不同长度的数据可以更充分的检测串口数据传输的准确性。图3-1 按键输入电路3.3 单片机控制电路3.3.1 AT89S51AT89S51单片机内部主要由9个部件组成:1个8位中央处理器;4KBFlash存储器;128B的数据存储器;32条I/O口线;2个定时器/计数器;1个具有6个中断源、

16、4个优先级的中断嵌套结构;用于多处理机通信、I/O扩展或全双工UART的串行口;特殊功能寄存器;1个片内振荡器和时钟电路。AT89S51系列单片机完全继承了MCS-51的指令系统,共有111条指令,按其功能可分为五大类:数据传送类指令、算术运算类指令、逻辑运算类指令、控制转移类指令、布尔操作。AT89S51单片机引脚如图3-2所示。图3-2 AT89S51单片机引脚图管脚说明:P0口:8位、漏极开路的双向I/O口。P0能够用于外部程序数据存储器。它可以被定义为数据/地址的第八位。P0口在应用时必须外接上拉电阻,作为输入时,首先应将引脚置1。P1口:8位双向I/O口,内部含上拉电阻。作为输入时,

17、应先将引脚置高;若负载为低电平,则通过内部上拉电阻向外输出电流。P2口:8位双向I/O口,内部含上拉电阻。作为输入时,应先将引脚置高;若负载为低电平,则通过内部上拉电阻向外输出电流。P3口:8位双向I/O口,内部含上拉电阻。作为输入时,应先将引脚置高;若负载为低电平,则通过内部上拉电阻向外输出电流。P3口除了通用I/O口功能外,还有第二功能。P3口的第二功能定义如表3-1所示。表3-1 P3口第二功能定义引脚定义功能引脚定义功能P3.0-RXD串行输入口P3.1-TXD串行输出口P3.2-外部中断0P3.3-外部中断1P3.4-T0计时器0外部输入P3.5-T1计时器1外部输入P3.6-外部数

18、据存储器写选通P3.7-外部数据存储器读选通RST:复位输入,低电平有效。ALE/PROG:地址锁存允许信号输出。在正常操作状态下,该引脚端口输出恒定频率的脉冲。其频率为晶振频率的1/6,可用作外部定时或其他触发信号。如果需要,可通过SFR的第0位置禁止ALE操作,但ALE的禁止位不影响对外部存储器的访问。:片外程序存储器选通信号,低电平有效。当AT89S51执行来自外部程序存储器的指令代码时,PSEN/每个机器周期两次有效。在访问外部数据存储器时,PSEN/无效。:片外程序存储器访问允许信号,低电平有效。XTAL1:外接晶振。在单片机内部是反相放大器的输入及端。XTAL2:外接晶振。在单片机

19、内部是反相放大器的输出端,输入到内部时钟发生器。3.3.2 单片机控制电路设计该部分电路设计如图3-3所示。单片机的时钟的频率直接影响着单片机的速度和系统的稳定性。AT89S51片内由一个反相放大器构成振荡器,可以通过它俩产生时钟。常用的单片机产生时钟的方法有两种:内部时钟方式和外部时钟方式。本设计选用外部时钟方式,单片机内部XTAL1引脚为高增益反向放大器的输入端,XTAL2为输出端,在这2个引脚之间接石英晶振和电容,就可以构成一个稳定的自激振荡器。外接晶振振荡频率不大于单片机的最大工作频率即可。如果有串行通信,需要选择振荡频率除以串行通信频率可以整除的晶振。本设计选用的11.0592MHz

20、晶振。复位是单片机的初始化操作,复位信号是高电平有效,复位操作有上电自动复位、按键电平复位、外部脉冲复位和自动复位四种方式。在本设计中复位电路采用按键电平方式,使RST引脚经过10u电解电容与VCC电源接通,同时经过电阻与地连接而实现,按下按键时,RST引脚置高,实现复位功能。 单片机的P1.0-P1.3引脚控制4个按键用于输入数字,P2口控制数码管显示电路,单片机之间的通信通过串行口RXD和TXD。图3-3 单片机控制电路3.4 显示电路3.4.1 74LS164简介74LS164为8位移位寄存器,管脚图如图3-4所示。当/MR为低电平时,输出端(Q0-Q7)均为低电平。串行数据输入端(A,

21、B)可控制数据。当A、B有一个为高电平,则另一个就允许输入数据,并在CLOCK上升沿作用下决定Q0的状态。真值表如表3-2所示。图3-4 74LS164引脚图表3-2 74LS164真值表InputsOutputs/MRClockA BQ0 Q1 . Q7 L H H H HXL X X X X H H L X X L L L . L QA0 QB0 . QH0 H QAn . QGn L QAn . QGn L QAn . QGnH高电平,L低电平,X任意电平,低到高电平跳变,QA0、QB0、QH0规定的稳态条件建立前的电平,Qan、QGn时钟最近的前的电平。3.4.2 显示电路本设计中选用

22、数码管作为显示器件。LED数码管由八只发光二极管组成,编号是a、b、c、d、e、f、g、h,分别和同名管脚相连,当发光二极管导通时发光。每个二极管就是一个笔划,若干个二极管发光时,就构成一个显示字符。若将单片机的I/O口与数码管的a-g和h相连,高电平(对应共阴极数码管)或低电平(对应共阳极数码管)的位对应的发光二极管就会亮,这样,I/O口输出不同的代码就可以控制数码管显示不同的字符。为减少电路板中的焊接线,本设计选用4位一体数码管,采用串行输入并行输出的8位移位寄存器74LS164进行驱动输出,单片机的P2.6和P2.7引脚分别作为74LS164的数据线和CLK信号。74LS164将输入的串

23、行数据锁存在并行输出端,通过这些并行口线驱动数码管的各字段。数码管选用共阳型,当74LS164的某个输出端口为低电位时,数码管对应的字段将被点亮。软件设计中数码管采用循环送显的方式,单片机通过控制9012来选择要送显的数码管,当需要某一位数码管显示时,该数码管相对应的9012三极管基极所连接的单片机引脚输出高电平,三极管导通,进而选通该位数码管。74LS164的输出Q0-Q7分别对应接到数码管的a-h端口。单片机将数据写入到74LS164内部锁存,再由74LS164将显示译码送入该位数码管个码段显示,从而实现了单片机控制数码管显示的功能。显示电路如图3-5所示。图3-5 显示电路3.5 电源电

24、路电源部分提供整个电路所需各种电压,由电源变压器、整流电路、滤波电路及辅助稳压输出构成,电源变压器的功率由需要输出的电流大小决定,确保有充足功率余量。交流电经过二极管整流之后,方向单一了,但是大小(电流强度)还是处在不断地变化之中。这种脉动直流一般是不能直接用来给无线电装供电的。要把脉动直流变成波形平滑的直流,还需要再做一番“填平取齐”的工作,这便是滤波。换句话说,滤波的任务,就是把整流器输出电压中的波动成分尽可能地减小,改造成接近恒稳的直流电。稳压电路有分立元件稳压电路和集成稳压电路两种,其中集成稳压电路主要用于低电压小电流的整流电路,具有体积小,电路简单,稳压精度高,使用调试方便等特点。4

25、 系统软件设计4.1 软件设计应用环境本设计软件的设计是在Keil C51的环境下编译的。Keil C51是美国Keil Software公司出品的51系列兼容单片机C语言软件开发系统,软件提供丰富的库函数和功能强大的集成开发调试工具,全Windows界面。Keil C51标准C编译器为8051微控制器的软件开发提供了C语言环境,同时保留了汇编代码高效、快速的特点。C51编译器的功能不断增强,使你可以更加贴近CPU本身,及其它的衍生产品。C51已被完全继承到Vsion2的集成开发环境中,这个集成开发环境包含:编译器、汇编器、实时操作系统、项目管理器、调试器。Vsion2 IDE可为它们提供单一

26、而灵活的开发环境。C51 V7版本是目前最高效、灵活的8051开发平台。它可以支持所有8051的衍生产品,也可以支持所有兼容的仿真器,同时支持其它第三方开发工具。因此,C51 V7版本无疑是8051开发用户的最佳选择。Keil C51编译器在遵循ANSI标准的同时,为8051微控制器系列特别设计,语言上的扩展能让用户使用应用中的所有资源。编辑器和调试器:一、源代码编辑器:uVision2编辑器包含了所有用户熟悉的特性。彩色语法显像和文件辩识都对C源代码进行和优化。可以在编辑器内调试程序,它能提供一种自然的调试环境,使你更快速地检查和修改程序。二、断点:uVision2允许用户在编辑时设置程序断

27、点(甚至在源代码未经编译和汇编之前)。用户启动V2调试器之后,断点即被激活。断点可设置为条件表达式,变量或存储器访问,断点被触发后,调试器命令或调试功能即可执行。 在属性框中可以快速浏览断点设置情况和源程序行的位置。代码覆盖率信息可以让你区分程序中已执行和未执行的部分。三、调试函数语言:uVision2中,可以编写或使用类似C的数语言进行调试。1、内部函数:如printf, memset, rand及其它功能的函数。 2、信号函数:模拟产生CPU的模拟信号和脉冲信号。 3、用户函数:扩展指令范围,合并重复动作。 四、变量和存储器:用户可以在编辑器中选中变呈来观察其取值。双层窗口显示,可进行以下

28、调整:当前函数的局部变量;用户在两个不同watch窗口页面上的自定义变量;堆栈调用(call stack)页面上的调用记录;不同格式的四个存储区。C51允许用户使用C语言编写中断服务程序,快速进、出代码和寄存器区的转换功能使C语言中断功能更加高效。可再入功能是用关键字来定义的。多任务,中断或非中断的代码要求必须具备可再入功能。C51提供了灵活高效的指针。通用指针用3个字节来存储存储器类型及目标地址,可以在8051的任意存储区内存取任何变量。特殊指针在声明的同时已指定了存储器类型,指向某一特定的存储区域。由于地址的存储只需12字节,因此,指针存取非常迅速。Keil C51兼容单片机C语言软件开发

29、系统,与汇编相比,C语言在功能上、结构上、可读性、可维护性上有明显的优势,因而易学易用。4.2 设计流程图 本系统软件设计分为发送机和接收机,发送机程序设计流程图如图4-1所示,接收机程序设计流程图如图4-2所示。数据发送完成?结束开始初始化读取数据送数码管显示数据发送至串口扫描按键NY图4-1 发送机程序设计流程图数据接收完成?结束开始初始化读取数据送数码管显示NY触发串口中断?NY图4-2 接收机程序设计流程图4.3 按键程序设计单片机读取按键值的方法有两种:查询方式和中断方式。查询方式是利用键盘程序不断查询是否有按键按下,有按下则进入相应按键的子程序进行数据处理,没有则一直循环查询;中断

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

31、键状态时,只要加一个5-10ms的延时程序,再次判断按键是否状态不变,即可实现去抖动的作用。本设计中选用软件延时的方法去按键抖动。读取按键子程序如下:if(key_1=0) delay(20); if(key_1=0) while(key_1=0);flag_t=1; unm_t=1; if(key_2=0) delay(20); if(key_2=0) while(key_2=0); flag_t=2; unm_t=2; if(key_3=0) delay(20); if(key_3=0) while(key_3=0);flag_t=3; unm_t=3; if(key_4=0) delay

32、(20); if(key_4=0) while(key_4=0);flag_t=4; unm_t=4; 4.4 串口通信程序设计AT89S51的串行口是一个全双工的异步串行通信口,可以同时进行接收数据和发送数据,因为口内的接受缓冲器和发送缓冲器在物理上是隔离的,即是完全独立的。可以通过访问特殊功能寄存器SBUF,来访问接收缓冲器和发送缓冲器。接收缓冲器还具有双缓冲的功能,即它在接收第一个数据字节后,能接受第二个数据字节,但是,在它完成接收第二个数据字节之后,若第一个字节仍未取走,那么该字节数据将丢失。对串行口的控制主要包括对状态控制寄存器SCON、控制寄存器PCON、和串行数据寄存器SBUF的

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

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

35、D=1时,使波特率加倍。寄存器PCON的地址为87H,只能字节寻址。3、串行数据寄存器SBUF:SBUF包含在物理上隔离的两个8位寄存器:发送数据寄存器和接受数据寄存器,但是它们共用一个地址99H,其格式如下表4-3所示。表4-3 数据寄存器格式D7D6D5D4DD2D1D0SD7SD6SD5SD4SD3SD2SD1SD0对于波特率发生器采用定时器/计数器1。定时器/计数器是单片机内的重要部件,其作用主要包括产生各种时标间隔、记录外部事件的数量等。AT89S51单片机有2个16位的定时器/计数器:定时器/计数器0(T0)和定时器/计数器1(T1)。定时器/计数器的核心是一个16位的加1计数器:

36、做定时器时,其计数脉冲来源于时钟振荡器(经12分频后提供),这个脉冲的周期称为单片机的机器周期,每一个机器周期定时寄存器自动加1,所以定时器也可看做是计算机器周期的计数器,由于每一个机器周期为12个时钟振荡周期,所以定时器的分辨率是时钟振荡频率的1/12,一旦振荡频率选定,则机器周期也确定。AT89S51单片机的定时器/计数器T0由TH0、TL0构成,T1由TH1、TL1构成。TMOD用于控制和确定各定时器/计数器的功能和工作模式。TCON用于控制定时器/计数器T0、T1的启动和停止计数,同时包含定时/计数器的状态。T0、T1的方式寄存器TMOD:方式寄存器TMOD是一个逐位定义的8位寄存器,

37、是只能字节寻址的寄存器,字节地址为89H,其格式如表4-4所示。表4-4 TMOD各位定义D7D6D5D4D3D2D1D0GATEC/TM1M0GATEC/TM1M0 T1 T0其中低4位定义定时器/计数器T0,高4位定义定时器/计数器T1,各位的意义如下:GATE门控位。GATE=1时,由外部中断/INT0、/INT1和TR0、TR1来启动定时器。当/INT0引脚为高电平时,TR0置位,启动定时器T0;当/INT1引脚为高电平时,TR1置位,启动定时器T1。GATE=0时,仅由TR0和TR1置位来启动定时器T0、T1。C/T功能选择位。C/T=1时,选择计数功能;C/T=0时,选择定时功能。

38、M0、M1方式选择位。由于M1和M0两位,可以有4种工作方式,如表4-5所示。表4-5 T0、T14种工作方式M1M0工作方式计数器配置00方式013位计数器01方式116位计数器10方式2自动再装入的8位计数器11方式3T0分为两个8位计数器、T1停止计数T0、T1控制寄存器TCON:TCON是一个逐位定义的8位寄存器,既可字节寻址也可位寻址,字节地址为88H,为寻址的地址为88H8FH。与中断源有关的位如表4-6 所示。表4-6 TCON定义位D7D6D5D4D3D2D1D0TCONTF1TF0IE1IT1IE0IT0位地址8FH8DH8BH8AH89H88H串口波特率的设定:单片机的串口

39、工作在方式3下,其波特率由定时器1(T1)的溢出率来决定,计算公式为:其中:T1的溢出率=,波特率的公式变为:上式中,SMOD为波特率倍增位;f为振荡频率;k为T1的定时器的位数,T1工作在模式0下k=13,模式1下k=16,模式2下k=8。本系统采用晶振的频率为11.0592MHz,T1工作在模式2下,波特率为9600b/s,将上述公式变形并带入数据得T1的初值为0xFD。单片机主程序中串口中断的使用代码如下:void main(void) EA=0; /关中断 IP=0x00; SCON=0X50; /中断初始化 TMOD=0x21; PCON &= 0x00; TH1 = 0xFD; /

40、定时器0赋初始值 TL1 = 0xFD; TR1=1; ET0=1; TR0=1; EA=1; /开中断 4.5 显示程序设计根据数码管的驱动方式不同,数码管送显方式有两种:静态送显和动态送显。静态显示驱动:静态驱动也称直流驱动,在静态显示驱动方式下,数码管的共阴极或共阳极共同接地或接电源,每个数码管的段选线与8位的单片机并口连接。静态显示驱动方式占用的单片机I/O端口比较多,一般在实用中不采用。动态显示驱动:数码管动态显示方式是将所有的段选线并联在一起,由一个8位I/O口来控制,再利用单片机的其他I/O口来作为数码管的位选线。当单片机输出显示数字的译码时,哪个数码管显示由单片机对位选通电路的

41、控制来选择,所以将欲显示的数码管的位选通端选通,该数码管就会显示,其它数码管均不会亮。通过轮流控制各个数码管的选通端使数码管轮流显示。在显示过程中,每个数码管的显示时间为1-2ms,由于人们的视觉暂留现象及发光二极管的余晖效应,只要扫描的速度够快,给人的印象就是同时点亮的,而且不会有闪烁感。本设计中选用动态显示驱动方式,数据通过74LS164的数据端送至数码管显示。先按照74LS164的时钟时序写入8段码,写完后送入数码管,子程序如下: void write_164(uchar lx) /向164写入段码 uchar i,j;j=lx;for(i=0;i1; delay(2);void dis

42、p_all(void) /送数码管显示 uchar i,j; for(i=0;i20;i+) for(j=0;j4;j+) P2=0X0F; write_164(DISP_SAVEj); delay(50); P2=0X0F; write_164(0xff);5 总结我所做的是单片机通信协议设计,从开学初我就开始准备。毕业设计完成了,达到了预期的目的。一开始拿到这个题目的时候,真不知道从哪下手,在老师的指导下,自己找资料、看书,总算完成了。通过这次的毕业设计,使我对单片机有了更深的认识,从理论和实践上都得到了很大的提高,所以这次任务的完成是我学到了很多东西。首先,丰富了自己的知识面,学到了以前

43、没能学通的东西,具体了解了怎样去完成一个电路的设计:从流程图、电路图、焊接电路板、检查电路板、仿真到烧片一整套东西。从毕业设计中,学到了单片机AT89C51的内部结构及其工作原理,了解了时钟电路和控制电路的工作原理,巩固了汇编语言的使用能力,提高了自己动手的能力,学到了很多经验,并且提高了自己分析问题的能力和创新能力,得到了理论联系实际的机会,做出了成果。使自己在硬件设计方面树立了信心,为以后从事这方面的工作打好了基础,这也是这次毕业设计的最大收获。在一开始接触这个题目的时候,真的很茫然,不知道从哪开始下手,不知道单片机串行通信协议是干什么的?怎么才能做出来?用什么做?这些问题一个都不知道。后

44、来在老师的指导下,才知道我要怎么开始做。自己就开始找资料,了解单片机AT89S51、通信传输的有关知识,学习时钟电路、控制电路的设计原理,看不懂的时候就去问老师、同学和朋友。在这些都搞得比较明白后就开始画设计流程图和电路图,最后用了很长时间才完成自己的通信程序设计,给老师看后,在老师的帮助下,改正了几处有问题的地方,完成后就开始仿真。但是仿真的时候却又遇到了麻烦,先是汇编语言的程序错误,Topice52仿真软件提示我的程序有问题,程序自身没有通过检验。接着仔细根据提示检查程序上的错误,直到软件仿真结束。接下来的工作一切还算顺利,在老师还有同学的帮助下,都一一解决。这次的毕业设计总的来说还是很成功的,自己从中学到很多,也发现了不少问题,为自己以后的学习

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 其他


经营许可证编号:宁ICP备18001539号-1