《双机间的串口双向通信20.doc》由会员分享,可在线阅读,更多相关《双机间的串口双向通信20.doc(23页珍藏版)》请在三一办公上搜索。
1、 单片机应用课程设计任务书 学 院计算机与信息工程学院专 业网络工程课程名称单片机应用课程设计题 目双机间的串口双向通信设计完成期限自2014年12月22日 至 2015年1月4日 共2周内容及任务一、项目的目的实现双机串口双向通信,验证双机通信原理,提高动手能力,检验知识掌握情况。二、项目任务的主要内容和要求两个单片机(甲机和乙机)之间采用方式1双向串行通信。甲机按键可通过串口控制乙机的LED亮灭,乙机的按键可控制串口向甲机发送按下的次数,按下的次数通过串口显示在甲机P0口的数码管上。三、项目设计思路使用甲乙两片89C51双机通信。发送方的数据由串行口输出,经过电平转换输出,经过传输线将信号
2、传送到接收端。接收方也进行电平转换后,信号到达接收方串行口的接收端。接受方接收后,在数码管上显示接收的信息。本设计是硬件电路和软件编程相结合的设计方案,选择合适的编程语言是一个重要的环节。在单片机的应用系统程序设计时,常用的是汇编语言和C语言。C语言虽然执行效率没有汇编语言高,但语言简洁,使用方便,灵活,运算方便,表达类型多样化,数据结构类型丰富,具有结构化的控制语句,程序设计自由度大,有很好的可重用性,可移植性等特点。所以我们采用C语言编写了程序。四、具体成果形式和要求两个单片机(甲机和乙机)之间采用方式1双向串行通信。(1) (甲机的K1按键可通过串口控制乙机的LED1点亮,LED2灭,甲
3、机的K2按键控制乙机LED1灭,LED2点亮,甲机的K3按键控制乙机的LED1和LED2全亮。(2) 乙机的K2按键课控制串口向甲机发送按下的次数,按下的次数通过串口显示在甲机P0口的数码管上。进度安排起止日期工作内容12.29-12.31查资料,构建主题思想,绘制电路图1.1-1.2代码实现1.3-1.4代码调试和文档资料主要参考资料1张毅刚,彭喜元,姜守达,乔立岩. 新编MCS-51单片机应用设计. 哈尔滨工业大学出版社. 2009.082李全利.单片机原理与接口技术.高等教育出版社.2009.013蔡明文,冯先成.单片机课程设计.华中科技出版社.2007.034范红刚,魏学海,任思璟.5
4、1单片机自学笔记.北京航空航天大学出版社.2010.01指导教师意见(签字): 年 月 日系(教研室)主任意见(签字): 年 月 日单片机应用课程设计说明书学院名称: 计算机与信息工程学院 班级名称: 网工124 学生姓名: 卞可虎 学 号: 2012211369 题 目: 双机间的串口双向通信设计 指导教师: 于红利 起止日期: 2014.12.29至2015.1.4 目 录一、绪论1二、相关知识62.1 双机通信介绍62.2单片机AT89C51介绍62.3 串行通信简介92.3.1串行通信的特点92.3.2串行通信技术标准9三、总体设计103.1 设计需求10四、硬件设计104.1 系统硬
5、件电路设计104.1.1整体电路设计104.1.2 控制电路设计114.1.3 复位电路114.1.4 显示电路12五、软件设计125.1发送端程序流程125.2接收端程序流程135.3按键程序145.4串口通信程序155.5数码管显示程序16六、Proteus软件仿真16七、结束语19参考文献20指导教师评语21成绩评定21附录:源程序22一、 绪论电子技术的飞速发展,单片机也步如一个新的时代,越来越多的功能各异的单片机为我们的设计提供了许多新的方法与思路。单片机之间的通信可以分为两大类:并行通信和串行通信。串行通信传输线少,长距离传输时成本低,且可以利用数据采集方便灵活,成本低廉等优点,在
6、通信中发挥着越来越重要的作用。所以本系统采用串行通信来实现单片机之间可靠的,有效的数据交换。对于一些类似复杂的后台运算及通信与高实时性前台控制系统、软件资源消耗大的系统、功能强大的低消耗系统、加密系统等等。如果合理使用多种不同类型的单片机组合设计,可以得到极高灵活性与性能价格比,因此,多种异型单片机系统设计渐渐成为一种新的思路,单片机技术作为计算机技术的一个重要分支,由于单片机体积小,系统运行可靠,数据采集方便灵活,成本低廉等优点,在通信中发挥着越来越重要的作用。但在一些相对复杂的单片机应用系统中,仅仅一个单片机资源是不够的,往往需要两个或多个单片机系统协同工作。这就对单片机通信提出了更高要求
7、。二、相关知识2.1 双机通信介绍两台机器的通信方式可分为单工通信、半双工通信、双工通信,他们的通信原理及通信方式为:单工通信:是指消息只能单方向传输的工作方式。单工通信信道是单向信道,发送端和接收端的身份是固定的,发送端只能发送信息,不能接收信息;接收端只能接收信息,不能发送信息,数据信号仅从一端传送到另一端,即信息流是单方向的。通信双方采用单工通信属于点到点的通信。根据收发频率的异同,单工通信可分为同频通信和异频通信。半双工通信:这种通信方式可以实现双向的通信,但不能在两个方向上同时进行,必须轮流交替地进行。也就是说,通信信道的每一段都可以是发送端,也可以是接端。但同一时刻里,信息只能有一
8、个传输方向。如日常生活中的例子有步话机通信等。双工通信:双工通信是指在同一时刻信息可以进行双向传输,和打电话一样,说的同时也能听,边说边听。这种发射机和接收机分别在两个不同的频率上能同时进行工作的双工机也称为异频双工机。双工机的特点是使用方便,但线路设计较复杂,价格也较高。2.2单片机AT89C51介绍AT89C51是一个低功耗,高性能的8位单片机,片内含8k的可反复擦写1000次的Flash只读程序存储器,兼容标准 MCS-51指令系统及80C51引脚结构,芯片内集成了通用8位中央处理器和ISP Flash存储单元,功能强大的微型计算机的AT89C51可为许多嵌入式控制应用系统提供高性价比的
9、解决方案。AT89C51有40个引脚,8k的片内程序存储器,256 bytes的随机存取数据存储器,32个外部双向输入/输出口,5个中断优先级2层中断嵌套中断,2个16位可编程定时计数器,2个全双工串行通信口, WDT电路,片内时钟振荡器。AT89C51芯片DIP双列直插式封装引脚如图1.1所示。图1.1 AT89C51引脚排列P0 口:P0口是一个8位的双向I/O口。作为输出口时,每位能驱动8个TTL逻辑电平。对P0端口写“1”时,引脚是高阻抗输入。当访问外部程序和数据存储器时,P0口也被作为低8位地址/数据复用。P1 口:P1 口是一个具有内部上拉电阻的8 位双向I/O 口,P1 输出缓冲
10、器可以驱动4 个 TTL 逻辑电平。对P1 端口写“1”时,内部上拉电阻把端口拉高,此时是输入口使用。作为输入使用时,因为外部拉低的引脚由于内部电阻,将输出电流(IIL)。P3口亦作为AT89C51特殊功能(第二功能)使用,如表1.1所示.P2 口:P2口是一个具有内部上拉电阻的8 位双向I/O 口,P2 输出缓冲器可以驱动4 个TTL逻辑电平。对P2 端口写“1”时,内部上拉电阻把端口拉高,此时是输入口使用。作为输入使用时,因为外部拉低的引脚由于内部电阻,将输出电流(IIL)。P3 口:P3 口是一个具有内部上拉电阻的8 位双向I/O 口,P2 输出缓冲器能驱动4 个TTL逻辑电平。对P3
11、端口写“1”时,内部上拉电阻把端口拉高,此时是输入口使用。作为输入使用时,因为外部拉低的引脚由于内部电阻,将输出电流(IIL)。 P3口亦作为AT89C51特殊功能(第二功能)使用,如表1.2所示.P1引脚口第二功能如下: 表1.1 P1口引脚第二功能引脚第二功能P1.0/T2定时器/计数器T2的外部计数输入P1.1/T2EX定时器/计数器T2的捕捉/重载触发信号和方向控制P1.5/MOSI在系统编程用P1.6/MISO在系统编程用P1.7/SCK在系统编程用P3引脚口第二功能如下:表1.2 P3口引脚第二功能引脚第二功能P3.0/RXD串行输入口P3.1/TXD串行输出口P3.2/INTO外
12、中断0P3.3/INT1外中断1P3.4/TO定时/计数器0 P3.5/T1定时/计数器1P3.6/WR外部数据存储器写选通P3.7/RD外部数据存储器读选通ALE/PROG:在访问外部程序存储器或数据存储器时,ALE(地址锁存允许)输出脉冲用于锁存地址的低8位字节。一般情况下,ALE仍以时钟振荡频率的1/6输出固定的脉冲信号,因此它可对外输出时钟或用于定时目的。PSEN:程序储存允许(PSEN)输出是外部程序存储器的读选通信号,当AT89C51由外部程序存储器取指令(或数据)时,每个机器周期两次PSEN有效,即输出两个脉冲,在此期间,当访问外部数据存储器,将跳过两次PSEN信号。EA/VPP
13、:当外部访问允许,使CPU仅访问外部程序存储器(地址为0000H-FFFFH),EA端必须保持低电平(接地)。当加密位LB1被编程,复位时内部会锁存EA端状态。例如EA端为高电平,接Vcc端,CPU则执行内部程序存储器的指令。2.3 串行通信简介2.3.1串行通信的特点在远程通信和计算机科学中,串行通信是指在计算机总线或其他数据通道上,每次传输一个位元数据,并连续进行以上单次过程的通信方式。与之对应的是并行通信,它在串行端口上通过一次同时传输若干位元数据的方式进行通信。一位接一位地顺序传送。这样一个字节的数据要分8次由低位到高位按顺序一位位地传送。由此可见,串行通信的特点如下:1、节省传输线,
14、这是显而易见的。尤其是在远程通信时,此特点尤为重要。这也是串行通信的主要优点;2、数据传送效率低。与并行通信比,这也这是显而易见的。这也是串行通信的一个重要缺点。串行通信被用于长距离通信以及大多数计算机网络,在这些应用场合里,电缆和同步化使并行通信实际应用面临困难。凭借着其改善的信号完整性和传播速度,串行通信总线正在变得越来越普遍,甚至在短程距离的应用中,其优越性已经开始超越并行总线不需要串行化元件等缺点。2.3.2串行通信技术标准(1)数据传输率比特率和波特率:比特率是指每秒传输的二进制位数,用bps(bit/s)表示。波特率是指每秒传输的符号数,若每个符号所含的信息量为1比特,则波特率等于
15、比特率。在计算机中,一个符号的含义为高低电平,它们分别代表逻辑“1”和逻辑“0”,所以每个符号所含的信息量刚好为1比特,因此在计算机通信中,常将比特率称为波特率,即:1波特(B)=1比特(bit)=1位/秒(1bps)例如:电传打字机最快传输率为每秒10个字符/秒,每个字符包含11个二进制位,则数据传输率为:11位/字符10个字符/秒=110位/秒=110波特(Baud)计算机中常用的波特率是:110、300、600、1200、2400、4800、9600、19200、28800、33600,目前最高可达56Kbps.(2)发送时钟和接收时钟在串行通信中,二进制数据以数字信号的信号形式出现,不
16、论是发送还是接收,都必须有时钟信号对传送的数据进行定位。在TTL标准表示的二进制数中,传输线上高电平表示二进制1,低电平表示二进制0,且每一位持续时间是固定的,由发送时钟和接收时钟的频率决定。接收时钟和发送时钟与波特率有如下关系:F=nB这里F是发送时钟或接收时钟的频率;B是数据传输的波特率;n称为波特率因子。设发送或接收时钟的周期为Tc,频率为F的位传输时间为Td,则:Tc=1/F,Td=1/B得到:Tc=T/n在实际串行通信中,波特率因子可以设定。在异步传送时,n=1,16,64实际常采n=16,即发送或接收时钟的频率要比数据传送的波特率高n倍。在同步通信中波特率因子必等于1。三、总体设计
17、3.1 设计需求本设计需要用甲机三个开关控制乙机两个 LED灯三种亮灭方式,用甲机的数码管显示乙机开关的点击次数,用反相器实现电路电平高低转换,使电路输入输出,用复位电路控制整个系统电路恢复原状态。发送方的数据由串行口输出,经过电平转换输出,经过传输线将信号传送到接收端。接收方也进行电平转换后,信号到达接收方串行口的接收端。接受方接收后,在数码管上显示接收的信息。 图3.1 系统框架图四、硬件设计4.1 系统硬件电路设计4.1.1整体电路设计将数码管与单片机U1的P0口连接构成系统的开关记数显式电路的部分;将开关与单片机P3接口连接组成系统的按键电路,用来对显示器的控制;LED的段选端与单片机
18、U2的P2口连接构成系统的LED显示系统; 单片机左边部分电路与单片机构成系统的复位电路。图4.1 系统电路图4.1.2 控制电路设计本系统将甲机的开关K2,K3分别连接两个反相器,并分别把两个开关连接甲机单片机引脚P1.0和P1.1;将K1连接引脚P3.2,三个开关另一端接地,此电路用甲机三个开关分别控制乙机两个LED灯的三种亮灭状况。开关控制电路设计图如图4.2所示。图4.2控制电路设计图4.1.3 复位电路本设计将元器件如电路设计图4.3所示连接并与单片机的引脚相连,构成系统的复位电路。甲机点击复位电路开关,可以使乙机LED灯全灭,恢复未开启状态,乙机点击复位电路开关,使甲机数码管变为零
19、。图4.3 复位电路图4.1.4 显示电路本设计将LED数码显示管的段选端与甲机单片机的P0口相连,由于数码管采用的是动态显示,所以通过对P0的8位二进制数据的改变使数码显示管动态显示;将LED的位选端与单片机的P2口连接使LED数码显示管不断的到位选信号在与数选信号不断的配合下显示开关按键次数数据。系统显示部分电路设计图如图4.4所示。图4.4 系统显示部分电路设计图五、软件设计5.1发送端程序流程本系统是通过利用反相器实现高低电平的转换进行信息的输入输出,最后利用LCD亮灭实现甲机功能,用数码管记数实现乙机功能。具体过程如下:先初始化显示器,然后利用甲机开关按键发送信号,然后通过从机的应答
20、,从机应答后,甲机发送数据实现发送端功能,设计流程图如图5.1所示:主程序开始从机应答程序初始化主机发送信号开关按下主机发送数据输出完成?清除标志位未应答未完成图5.1发送端程序流程图5.2接收端程序流程乙机先把程序初始化,接受甲机的发送信号,接收未成功,重新接收,若接收成功从机发送接收完成信息,以及显示系统功能,设计流程图如图5.2所示:主程序开始接收完成?程序初始化接收数据未完成发送信号接收完成?未完成清除标志位显示重新接收图5.2接收端程序流程图5.3按键程序单片机读取按键值的方法有两种:查询方式和中断方式。查询方式是利用键盘程序不断查询是否有按键按下,有按下则进入相应按键的子程序进行数
21、据处理,没有则一直循环查询;中断方式是将按键动作与单片机的中断系统联系起来,有按键按下时,就引起单片机中断,使系统进入中断处理程序。本设计中有3个按键,采用中断方式来处理读取按键值程序。读取按键子程序如下:while(1)DelayMS(100);if(K1=0)Operation_NO=1;if(K2=0)Operation_NO=2;if(K3=0)Operation_NO=3;switch(Operation_NO)case 1: Putc_to_S(A);break;case 2: Putc_to_S(B);break;case 3: Putc_to_S(C);break; 5.4串口
22、通信程序本系统采用晶振的频率为11.0592MHz,T1工作在模式2下,波特率为9600b/s,将上述公式变形并带入数据得T1的初值为0xFD。单片机主程序中串口中断的使用代码如下:void main()P0=0x00;SCON=0x50;TMOD=0x20;TH1=0xfd;TL1=0xfd;PCON=0x00;RI=0;TI=0;TR1=1;IE=0x90;5.5数码管显示程序本设计中显示驱动方式,数据通过74LS164的数据端送至数码管显示。先按照74LS164的时钟时序写入8段码,写完后送入数码管程序如下:uchar Operation_NO=0;uchar code DSY_CODE
23、=0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90;void DelayMS(uint ms)uchar i;while(ms-)for(i=0;i=0&SBUF=9) P0=DSY_CODESBUF;else P0=0x00; 六、Proteus软件仿真用Keil软件编译程序生成可执行文件.hex文件后,在Proteus文件中在单片机里加入Keil软件中生成的hex文件,Hex文件烧入到单片机中后,开始运行电路图,点击开关K1,K2,K3,实现LED灯1,2的点亮。U2的K2开关点击次数可以再数码管显示,系统的电路及显示效果均到达设计要求,显
24、示电路功能如下图5.1所示。 图6.1系统显示图程序运行时,点击甲机按键K1,乙机的LED1灯亮,点击甲机按键K2,乙机LED2亮,点击甲机按键K3,乙机LED1,2灯都亮,系统效果图如图5.2所示图6.2 开关控制LED灯亮灭图点击乙机开关K2,每点击开关K2一次,甲机数码管就加一,点击甲机K2五次,数码管显示五,系统效果图如图5.3所示。图6.3数码管显示开关按键次数图七、结束语通过此次课程设计,使我更加扎实的掌握了有关单片机方面的知识,在设计过程中虽然遇到了一些问题,但经过一次又一次的思考,一遍又一遍的检查终于找出了原因所在,也暴露出了前期我在这方面的知识欠缺和经验不足。 在课程设计过程
25、中,我们不断发现错误,不断改正,不断领悟,不断获取。这次课程设计终于顺利完成了,在设计中遇到了很多问题,最后在老师的指导下,终于游逆而解。在今后的学习实践过程中,一定要不懈努力,不能遇到问题就想到要退缩,一定要不厌其烦的发现问题所在,然后一一进行解决,只有这样,才能成功的做成想做的事,才能在今后的道路上劈荆斩棘,收获喜悦!回顾起此课程设计,至今我仍感慨颇多,从理论到实践,在这段日子里,可以说得是苦多于甜,但是可以学到很多很多的东西,同时不仅可以巩固了以前所学过的知识,而且学到了很多在书本上所没有学到过的知识。通过这次课程设计使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把
26、所学的理论知识与实践相结合起来,从理论中得出结论,才能真正为社会服务,从而提高自己的实际动手能力和独立思考的能力。参考文献1张毅刚,彭喜元,姜守达,乔立岩. 新编MCS-51单片机应用设计. 哈尔滨工业大学出版社. 2009.082李全利.单片机原理与接口技术.高等教育出版社.2009.013蔡明文,冯先成.单片机课程设计.华中科技出版社.2007.034范红刚,魏学海,任思璟.51单片机自学笔记.北京航空航天大学出版社.2010.015许超,吴新杰,张丹. 基于Proteus和Keil的单片机课程教学改革.辽宁大学学报,2011.016石明江,顾亚雄,张禾 .单片机原理与应用课程教学改革与实
27、践.计算机教育出版社,2011.067李学军. 如何用MCS-51单片机扩展串口进行通讯. 宁夏机械,2003.02学生签名: 填表日期: 年 月 日 指导教师评语成绩评定 指导教师签名: 填表日期: 年 月 日 附录:源程序甲机程序#include#define uchar unsigned char#define uint unsigned intsbit K1=P32;sbit K2=P33;sbit K3=P11;uchar Operation_NO=0;uchar code DSY_CODE=0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0
28、x90;void DelayMS(uint ms)uchar i;while(ms-)for(i=0;i=0&SBUF=9) P0=DSY_CODESBUF;else P0=0x00;乙机程序#include#define uchar unsigned char#define uint unsigned intsbit LED1=P20;sbit K2=P33;sbit LED2=P21;uchar NumX=-1;void DelayMS(uint ms)uchar i;while(ms-)for(i=0;i120;i+);void main()LED1=1;LED2=1;SCON=0x50;TMOD=0x20;TH1=0xfd;TL1=0xfd;PCON=0x00;RI=0;TI=0;TR1=1;IE=0x90;while(1)DelayMS(100);if(K2=0)while(K2=0);NumX=+NumX%11;SBUF=NumX;while(TI=0);TI=0;void Serial_INT() interrupt 4if(RI)RI=0;switch(SBUF)caseA:LED1=0;LED2=1;break;caseB:LED1=1;LED2=0;break;caseC:LED1=0;LED2=0;break;