两个单片机之间数据通信的仿真实现.doc

上传人:苏美尔 文档编号:9134991 上传时间:2021-02-03 格式:DOC 页数:18 大小:418KB
返回 下载 相关 举报
两个单片机之间数据通信的仿真实现.doc_第1页
第1页 / 共18页
两个单片机之间数据通信的仿真实现.doc_第2页
第2页 / 共18页
两个单片机之间数据通信的仿真实现.doc_第3页
第3页 / 共18页
两个单片机之间数据通信的仿真实现.doc_第4页
第4页 / 共18页
两个单片机之间数据通信的仿真实现.doc_第5页
第5页 / 共18页
点击查看更多>>
资源描述

《两个单片机之间数据通信的仿真实现.doc》由会员分享,可在线阅读,更多相关《两个单片机之间数据通信的仿真实现.doc(18页珍藏版)》请在三一文库上搜索。

1、目 录一、课程设计内容要求 4二、方案设计 5三、电路原理图设计 63.1电路原理图 63.2 硬件系统简介 63.3 AT89C51 单片机简介 73.4 晶振电路的设计 7 四、软件的设计 84.1 软件流程图 84.2 程序的设计 10五、仿真与调试 14六、结论与心得 18七、参考文献 19摘 要80C51是最常见的一种8位单片机,具有多机通信的功能,可以很好完成基本的数据数据通信的功能。借助PROTEUS等仿真软件强大的仿真功能,可以从工程的角度直接能够看到仿真程序的运行电路工作的结果。因此弥补实验和实际单片机之间数据通信的脱节环节,因而具有一定的研究意义。本次设计在了解一定数据通信

2、有关知识的基础上,利用单片机串口进行多个单片机的数据通信的仿真基本上达到了与实际多个单片机之间的数据通信的相同一致的效果。一课程设计内容要求 单片机在工业控制、尖端武器、通信设备、信息处理、家用电器等各测控领域的应用非常广泛。单片机之所以能在通信设备的测控领域中广泛应用的一个重要的基础就是它具有数据通信的能力。而串行数据通信又是数据通信中最基本的也是最重要的一种。80C51是最常见的一种8位单片机,具有多机通信的功能,可以很好完成基本的数据数据通信的功能。借助PROTEUS等仿真软件强大的仿真功能,可以从工程的角度直接能够看到仿真程序的运行电路工作的结果。因此弥补实验和实际单片机之间数据通信的

3、脱节环节,因而具有一定的研究意义。本次设计在了解一定数据通信有关知识的基础上,利用单片机串口进行多个单片机的数据通信的仿真基本上达到了与实际多个单片机之间的数据通信的相同一致的效果。具体应完成以下任务 1分析设计任务,搜集参考文献,根据设计任务要求进行分析与论证,认真完成开题报告。 2熟悉了解并掌握8051单片机工作原理和结构及接口技术、串行通信工作原理、熟练掌握8051汇编语言或单片机C语言的运用 ,熟练掌握PROTEUS仿真软件的使用,了解并掌握串行通信的种类及学会如何利用单片机的来实现相关功能。 3根据要求,完成(仿真)硬件电路的设计,并再理解和掌握一定相关数据串行通信的与概念的基础上用

4、8051单片机汇编语言或C语言,完成数据串行通信的数据发送与接受。利用仿真软件完成多个单片机之间数据通信功能的软件设计。 4通过调试或(仿真)多个单片机之间的通信功能。 5总结设计过程,完成课程设计。二、方案设计本设计的题目要求是一个8951(主)与两个8951(副)做串行多工发送数据,但是串行通信分同步异步两种方式。1 异步通信ASYNC(Asynvhronous Data Communication)在异步通讯中数据或字符是一帧(frame)一帧地传送的。帧定义为一个字符的完整的通讯格式,通常也称为帧格式。最常见德的帧格式一般是先用一个起始位“0”表示字符的开始;然后是58位的数据,规定低

5、位在前,高位在后;其后是奇偶效验位,此位通过对数据奇偶性的检查,可用于判别字符传送的正确性,其有三种可能的选择,即奇,偶,无效验,用户可根据需要选择(在有的格式中这个位可省略);最后是停止位,用以表示字符的结束,停止位可以是1位,1.5位,2位,不同的计算机规定有所不同。从起始位开始就停止位结束构成完整的一帧。下图是一种11位的帧格式。由于异步通信每传送一帧有固定格式,通讯双方只需按约定的帧格式来发送和接收数据,所以硬件结构比同步通讯方式简单。此外,他还能利用校验位检测错误,所以这种通信方式应用较广泛。2 同步通信SYNC(Synchronous Data Communication)在同步通

6、信中,数据或字符开始处是用一同步字符在指示(一般约定为12个字符),以现发送端和接收端同步,一旦检测到约定同步字符,下面就连续按顺序接收数据。同步传送个数如下图因为同步通信数据块传送时去掉了字符的开始和结束的标志,所以其速度高于异步传送,但这种方式对硬件结构要求较高。在单片机主要是采用异步通讯方式,我们也采用这种通讯方式。串行通信制式的确定在串行通讯中,数据是在两机之间传送的。按照数据传送方向,串行通信可分为半双工(half duplex)制式和全双工(dull duplex)制式。所以我们的设计采取全双工的制式 为了使仿真效果,一目了然我们设计时用LED灯接收信号,用它的亮灭代表信号的传递效

7、果。三、电路设计3.1 电路原理图 图1 两单片机间数据通信原理图3.2 硬件系统的简介1). 主CPU为8751-A:P1接指拨开关,P2接指拨开关。2). 副CPU8751B:片接8个LED.3). 副CPU8751C:片接8个LED.4). 当主CPU8751A,P1的指拨开关切换时,此数据会发送给副CPU8951-B并控制其P2口8个LED的亮灭。同理,当主CPU 8951-A,P1的指拨开关切换时,此数据会发送给5). 副CPU8751C并控制其P2口8个LED的亮灭。当副CPU8951-B,P1的指拨开关切换时,此数据会发送给主CPU8751A并控制其P0口低四位的四个LED的亮灭

8、。同理,当副CPU8951-C, P1的指拨开关切换时,则此数据会发送给主CPU8951-A,并控制其P0口高四位的四个LED亮灭。3.3 AT89C51 单片机简介振荡器及定时电路CPU4K字节ROM128字节RAMSFR(26)8位并行口串行口2个16位定时器/计数器 图2 单片机内部结构图(1) 一个8位的CPU(2) 一个片内振荡器及时钟电路(3) 4KB的FLAShROM(4) 128的内部RAM(5) 可扩展64KB外部ROM和外部RAM的控制电路;(6) 2个16位的定时/计数器(7) 26个特殊功能寄存器(8) 4个8位的并行口(9) 一个全双工的串行口(10) 5个中断源,2

9、个外部中断,3内部中断(11) 内部硬件看门狗电路(12) 一个SPI串行接口,用于芯片的在系统编程3.4 晶振电路的设计1 设计原理8051片内有一由高增益反相放大器构成的振荡器。反相放大器的输入端为xTALl,输出端为xTAL2,两端踌接石英晶体及两个电容形成稳定的自激振荡器。电容通常取30PF左右。具体电路设计这部分在两个方案中是相同的,电路图如下 图3 晶振电路原理图四软件设计4.1软件流程图 中断地址符合否?发回地址接受下一帧是命令帧吗命令分类从接受准备就绪否?从接受准备就绪否?RRDY=1送主机TRDY=1送主机发送数据帧接受数据帧RRDY=0送主机TRDY=0送主机接收完否?发送

10、完否?SM2=1恢复现场 返回N N 非法命令 0100N N Y N NY Y图4 多机通讯从机中断服务程序框图子程序入口 串行口初始化 发送地址帧从机应答否?发送命令帧从机应答复否命令正确否命令分类从机接收 准备就绪否发送数据块从机发送 准备就绪否接受数据块返回N Y应答地址相符否?Y 命令从机复位 NNY NY01 NYY 4.2 程序的设计RI或TI串行中断请求。当接收或发送完一串行帧数据时,使内部串行口中断请求标志RI或TI=1,并请求中断。当某中断源的中断申请被CPU响应后,CPU将把此中断源的入口地址装入PC,中断服务程序即从此地址开始执行。中断源:串行口中断 入口地址:0023

11、H。TMOD为T0,T1的工作方式寄存器,当为工作方式2,功能为自动再装入8位计数器51 芯片的串口可以工作在几个不同的工作模式下,其工作模式的设置就是使用SCON 寄存器。主机程序A:ORG 00H JMP START ;UART中断起始地址 ORG 23H JMP UARTISTART: MOV TMOD,#00100000B ;TIMER1 工作在MODE2 ANL PCON,#01111111B ;SMOD=0 MOV TH1,#0F3H ;波特率为2400 SETB TR1 ;启动TIMER1 MOV SCON,#11010000B ;UART工作MODE3 MOV IE,#1001

12、0000B ;UART中断使能 SETB SM2 ;SM2=1 MOV 30H,#0FFH ;P1指拨开关的初值 MOV 31H,#OFFH MOV 32H,#0FFHLOOP: MOV A,P1 ;读入P1指拨开关值 CJNE A,30H,UART1 ;判断有否变化? JMP LOOP1LOOP1: MOV A,P2 ;读入P2指拨开关值 CJNE A,31H,UART2 ;判断有否变化? JMP LOOPUART1: MOV 30H,A ;P1指拨开关存入新值 SETB TB8 ;设TB8=1 MOV SBUF,#01H ;发送8951b的地址WAIT1: JBC TI,L1 ;发送完毕否

13、? JMP WAIT1L1: CLR TB8 ;清楚TB8=0 MOV SBUF,30H ;把P1指拨开关值发送给8951bWAIT2: JBC TI,LOOP ;发送完毕否 JMP WAIT2UART2: MOV 31H,A SETB TB8 MOV SBUF,#02HWAIT3: JBC TI,L3 JMP WAIT3L3: CLR TB8 MOV SBUF,31HWAIT4: JBC TI,LOOP JMP WAIT4UARTI: PUSH ACC ;压入堆栈 PUSH PSW JBC RI,L5 ;是否接受中断?RI=1? JMP RETURNL5: JB SM2,6 ; SM2=1接

14、收地址,SM2=0接收数据 MOV A,SBUF ; 接收数据载入累加器 MOV 33H,A ;暂存入(33H)RAM MOV A,32H ; 判断接收8951-B或8951-C的数据? CJNE A,#01H,L8 ;接到收8951-B的数据? MOV A,33H ;是则输出至P0显示(低4位) MOV P0,A SETB SM2 ;设SM2=1,准备接收下一个地址 MOV 32H,#0FFH ;清楚地址(32H)RAM JMP RETURNL8: CJNE A,#02H,RETURN MOV A,33H SWAP A MOV P0,A SETB SM2 MOV 32H,#0FFH JMP

15、RETURNL6: MOV A,SBUF ;载入接收到的地址 CJNE A,#01H,L7 ;是8951-B的地址? MOV 32H,A ;是则此将8951B的地址存入(32H)RAM CLR SM2 ;设SM2=0,准备接收数据 JMP RETURNL7: CJNE A,#02H,RETURN MOV 32H,A CLR SM2RETURN: POP PSW ;取回PSW POP ACC RETI END从机程序B: ORG 00H JMP START ORG 23H ;UART中断起始地址 JMP UARTI START: MOV TMOD,#00100000B ;TIMER1 工作在MO

16、DE2 ANL PCON,#01111111B ;SMOD=0 MOV TH1,#0F3H ;波特率为2400 SETB TR1 ;启动TIMER1 MOV SCON,#11010000B MOV IE,#10010000B SETB SM2 MOV 30H,#0FFHLOOP: MOV A,P1 CJNE A,30H,UART1 JMP LOOPUART1: ORL A,#0F0H ;有变化取低4位 MOV 30H,A ;存入P1指拨开关的新值 SETB TB8 ;设TB8=1 MOV SBUF,#01 ;发送本身地址(01H)给8951AWAIT1: JBC TI,L1 ;发送完毕否 JM

17、P WAIT1L1: CLR TB8 ;是则清楚TB8=0 MOV SBUF,30H ;将指拨开关的值发送给8951AWAIT2: JBC TI,LOOP ;发送完毕否 JMP WAIT2UARTI: PUSH ACC ;压入堆栈 PUSH PSW JBC RI,L5 ;是否为接收中断? JMP RETURNL5: JB SM2,L6 MOV A,SBUF MOV P2,A SETB SM2 JMP RETURNL6: MOV A,SBUF CJNE A,#01H,RETURN CLR SM2RETURN: POP PSW POP ACC RETI END从机程序C ORG 00H JMP S

18、TART ORG 23H JMP UARTISTART: MOV TMOD,#00100000B ANL PCON,#01111111B MOV TH1,#0F3H SETB TR1 MOV SCON,#11010000B MOV IE,#10010000B SETB SM2 MOV 30H,#0FFHLOOP: MOV A,P1 CJNE A,30H,UART1 JMP LOOPUART1: ORL A,#0FH SWAP A MOV 30H,A SETB TB8 MOV SBUF,#02WAIT1: JBC TI,L1 JMP WAIT1L1: CLR TB8 MOV SBUF,30HWA

19、IT2: JBC TI,LOOP JMP WAIT2UARTI: PUSH ACC PUSH PSW JBC RI,L5 JMP RETURNL5: JB SM2,L6 ;SM2=1接收地址,SM2=0接收数据 MOV A,SBUF ;SM=0,则接收数据并输出至P2 MOV P2,A SETB SM2 ;设SM2=1,准备接收下一个地址 JMP RETURNL6: MOV A,SBUF ;SM2=1,载入地址 CJNE A,#02H,RETURN ;是否(02H)地址? CLR SM2 ;是则清除SM2=0,准备接收数据RETURN: POP PSW POP ACC RETI END五仿真与

20、调试单击仿真运行开始按钮,我们能清楚地观察到每一个引脚的电频变化,红色代表高电频,蓝色代表低电频。如图6.14所示。 图5 完整电路图点击DSW1开关使它指向ON,U3的灯将熄灭,如图6所示 图 6 运行结果点击DSW1开关使它指向ON,U6的灯将熄灭,如图7所示 图 7 运行结果点击DSW4开关使它指向ON,灯A0,A1,A2,A3将亮起来如图8所示 图 8 运行结果点击DSW3开关使它指向ON,灯A4,A5,A6,A7将亮起来,如图9所示 图 9 运行结果经测试,该系统性能优越。六.结论与心得1、通过这次课程设计,加强了我们动手、思考和解决问题的能力。2、我沉得做课程设计同时也是对课本知识

21、的巩固和加强,由于课本上的知识太多,平时课间的学习并不能很好的理解和运用各个元件的功能,而且考试内容有限,所以在这次课程设计过程中,对知识使用有了更多的认识。认识来源于实践,实践是认识的动力和最终目的,实践是检验真理的唯一标准。所以这个课程设计对我们以后找工作的作用是非常大的。3、两个星期的课程设计,过程曲折可谓一语难尽。在此期间我们也失落过,也曾一度热情高涨。从开始时满富盛激情到最后汗水背后的复杂心情,点点滴滴无不令我回味无长。生活就是这样,汗水预示着结果也见证着收获。劳动是人类生存生活永恒不变的话题。通过做课程设计,我才真正领略到“艰苦奋斗”这一词的真正含义。我想说,设计确实有些辛苦,但苦

22、中也有乐,在如今单一的理论学习中,很少有机会能有实践的机会,但我们可以,而且设计也是一个团队的任务,一起的工作可以让我们有说有笑,相互帮助,配合默契,多少人间欢乐在这里洒下,大学里一年的相处还赶不上这十来天的合作,我感觉我和同学们之间的距离更加近了;我想说,确实很累,但当我们看到自己所做的成果时,心中也不免产生兴奋; 正所谓“三百六十行,行行出状元”。我们同样可以为社会作出我们应该做的一切,这有什么不好?我们不断的反问自己。也许有人不喜欢这类的工作,也许有人认为设计的工作有些枯燥,但我们认为无论干什么,只要人生活的有意义就可。社会需要我们,我们也可以为社会而工作。既然如此,那还有什么必要失落呢

23、?于是我们决定沿着自己的路,执着的走下去。同时我认为我们的工作是一个团队的工作,团队需要个人,个人也离不开团队,必须发扬团结协作的精神。某个人的离群都可能导致导致整项工作的失败。做课程设计只有一个人知道原理是远远不够的,必须让每个人都知道,否则一个人的错误,就有可能导致整个工作失败。团结协作是我们实习成功的一项非常重要的保证。而这次实习也正好锻炼我们这一点,这也是非常宝贵的。对我们而言,知识上的收获重要,精神上的丰收更加可喜。挫折是一份财富,经历是一份拥有。这必将成为我人生旅途上一个非常美好的回忆!通过这次课程设计使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论

24、知识与实践相结合起来,从理论中得出结论,才能真正为社会服务,从而提高自己的实际动手能力和独立思考的能力。在设计的过程中遇到问题,可以说得是困难重重,这毕竟第一次做的,难免会遇到过各种各样的问题,同时在设计的过程中发现了自己的不足之处,对以前所学过的知识理解得不够深刻,掌握得不够牢固。这次课程设计终于顺利完成了,在设计中遇到了很多问题,最后在老师的辛勤指导下,终于游逆而解。同时,在老师的身上我们学也到很多实用的知识,在次我们表示感谢!同时,对给过我帮助的所有同学和各位指导老师再次表示忠心的感谢!4、此次课程设计,学到了很多课内学不到的东西,比如独立思考解决问题,出现差错的随机应变,和与人合作共同提高,都受益非浅,今后的制作应该更轻松,自己也都能扛的起并高质量的完成项目。5、在此,衷心的感谢老师的细心指导。七.参考文献1 刘焕平主编。单片机原理及应用。北京邮电大学出版社.20082 张瑞玲主编。单片机原理与应用.西北工大出版社。20093 李荣正主编。PIC单片机原理及应用。北京航大出版社。20094 曹立军主编。单片机原理与应用。西安电科大出版社。20095 杨学昭主编。单片机原理接口技术及应用。西安电科大出版社。2009

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

当前位置:首页 > 科普知识


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