两个单片机之间数据通信的仿真实现.docx
- 文档编号:5508459
- 上传时间:2022-12-17
- 格式:DOCX
- 页数:19
- 大小:291.14KB
两个单片机之间数据通信的仿真实现.docx
《两个单片机之间数据通信的仿真实现.docx》由会员分享,可在线阅读,更多相关《两个单片机之间数据通信的仿真实现.docx(19页珍藏版)》请在冰豆网上搜索。
两个单片机之间数据通信的仿真实现
目录
一、课程设计内容要求……………………………………4
二、方案设计………………………………………………5
三、电路原理图设计………………………………………6
3.1电路原理图…………………………………………6
3.2硬件系统简介………………………………………6
3.3AT89C51单片机简介………………………………7
3.4晶振电路的设计……………………………………7
四、软件的设计……………………………………………8
4.1软件流程图…………………………………………8
4.2程序的设计…………………………………………10
五、仿真与调试……………………………………………14
六、结论与心得……………………………………………18
七、参考文献………………………………………………19
摘要
80C51是最常见的一种8位单片机,具有多机通信的功能,可以很好完成基本的数据数据通信的功能。
借助PROTEUS等仿真软件强大的仿真功能,可以从工程的角度直接能够看到仿真程序的运行电路工作的结果。
因此弥补实验和实际单片机之间数据通信的脱节环节,因而具有一定的研究意义。
本次设计在了解一定数据通信有关知识的基础上,利用单片机串口进行多个单片机的数据通信的仿真基本上达到了与实际多个单片机之间的数据通信的相同一致的效果。
一.课程设计内容要求
单片机在工业控制、尖端武器、通信设备、信息处理、家用电器等各测控领域的应用非常广泛。
单片机之所以能在通信设备的测控领域中广泛应用的一个重要的基础就是它具有数据通信的能力。
而串行数据通信又是数据通信中最基本的也是最重要的一种。
80C51是最常见的一种8位单片机,具有多机通信的功能,可以很好完成基本的数据数据通信的功能。
借助PROTEUS等仿真软件强大的仿真功能,可以从工程的角度直接能够看到仿真程序的运行电路工作的结果。
因此弥补实验和实际单片机之间数据通信的脱节环节,因而具有一定的研究意义。
本次设计在了解一定数据通信有关知识的基础上,利用单片机串口进行多个单片机的数据通信的仿真基本上达到了与实际多个单片机之间的数据通信的相同一致的效果。
具体应完成以下任务
1.分析设计任务,搜集参考文献,根据设计任务要求进行分析与论证,认真完成开题报告。
2.熟悉了解并掌握8051单片机工作原理和结构及接口技术、串行通信工作原理、熟练掌握8051汇编语言或单片机C语言的运用,熟练掌握PROTEUS仿真软件的使用,了解并掌握串行通信的种类及学会如何利用单片机的来实现相关功能。
3.根据要求,完成(仿真)硬件电路的设计,并再理解和掌握一定相关数据串行通信的与概念的基础上用8051单片机汇编语言或C语言,完成数据串行通信的数据发送与接受。
利用仿真软件完成多个单片机之间数据通信功能的软件设计。
4.通过调试或(仿真)多个单片机之间的通信功能。
5.总结设计过程,完成课程设计。
二、方案设计
本设计的题目要求是一个8951(主)与两个8951(副)做串行多工发送数据,但是串行通信分同步异步两种方式。
1异步通信ASYNC(AsynvhronousDataCommunication)
在异步通讯中数据或字符是一帧(frame)一帧地传送的。
帧定义为一个字符的完整的通讯格式,通常也称为帧格式。
最常见德的帧格式一般是先用一个起始位“0”表示字符的开始;然后是5~8位的数据,规定低位在前,高位在后;其后是奇偶效验位,此位通过对数据奇偶性的检查,可用于判别字符传送的正确性,其有三种可能的选择,即奇,偶,无效验,用户可根据需要选择(在有的格式中这个位可省略);最后是停止位,用以表示字符的结束,停止位可以是1位,1.5位,2位,不同的计算机规定有所不同。
从起始位开始就停止位结束构成完整的一帧。
下图是一种11位的帧格式。
由于异步通信每传送一帧有固定格式,通讯双方只需按约定的帧格式来发送和接收数据,所以硬件结构比同步通讯方式简单。
此外,他还能利用校验位检测错误,所以这种通信方式应用较广泛。
2同步通信SYNC(SynchronousDataCommunication)
在同步通信中,数据或字符开始处是用一同步字符在指示(一般约定为1~2个字符),以现发送端和接收端同步,一旦检测到约定同步字符,下面就连续按顺序接收数据。
同步传送个数如下图
因为同步通信数据块传送时去掉了字符的开始和结束的标志,所以其速度高于异步传送,但这种方式对硬件结构要求较高。
在单片机主要是采用异步通讯方式,我们也采用这种通讯方式。
串行通信制式的确定
在串行通讯中,数据是在两机之间传送的。
按照数据传送方向,串行通信可分为半双工(halfduplex)制式和全双工(dullduplex)制式。
所以我们的设计采取全双工的制式
为了使仿真效果,一目了然我们设计时用LED灯接收信号,用它的亮灭代表信号的传递效果。
三、电路设计
3.1电路原理图
图1两单片机间数据通信原理图
3.2硬件系统的简介
1).主CPU为8751-A:
P1接指拨开关,P2接指拨开关。
2).副CPU8751—B:
片接8个LED.
3).副CPU8751—C:
片接8个LED.
4).当主CPU8751—A,P1的指拨开关切换时,此数据会发送给副CPU8951-B并控制其P2口8个LED的亮灭。
同理,当主CPU8951-A,P1的指拨开关切换时,此数据会发送给
5).副CPU8751—C并控制其P2口8个LED的亮灭。
当副CPU8951-B,P1的指拨开关切换时,此数据会发送给主CPU8751—A并控制其P0口低四位的四个LED的亮灭。
同理,当副CPU8951-C,P1的指拨开关切换时,则此数据会发送给主CPU8951-A,并控制其P0口高四位的四个LED亮灭。
3.3AT89C51单片机简介
图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个外部中断,3内部中断
(11)内部硬件看门狗电路
(12)一个SPI串行接口,用于芯片的在系统编程
3.4晶振电路的设计
1设计原理
8051片内有一由高增益反相放大器构成的振荡器。
反相放大器的输入端为xTALl,输出端为xTAL2,两端踌接石英晶体及两个电容形成稳定的自激振荡器。
电容通常取30PF左右。
⑵具体电路设计
这部分在两个方案中是相同的,电路图如下
图3晶振电路原理图
四.软件设计
4.1软件流程图
中断
N
N
非法命令01
00
NN
Y
NN
Y
Y
图4多机通讯从机中断服务程序框图
N
Y
Y
N
N
Y
N
Y
01
N
YY
4.2程序的设计
RI或TI-串行中断请求。
当接收或发送完一串行帧数据时,使内部串行口中断请求标志RI或TI=1,并请求中断。
当某中断源的中断申请被CPU响应后,CPU将把此中断源的入口地址装入PC,中断服务程序即从此地址开始执行。
中断源:
串行口中断入口地址:
0023H。
TMOD为T0,T1的工作方式寄存器,当为工作方式2,功能为自动再装入8位计数器
51芯片的串口可以工作在几个不同的工作模式下,其工作模式的设置就是使用SCON寄存器。
主机程序A:
ORG00H
JMPSTART;UART中断起始地址
ORG23H
JMPUARTI
START:
MOVTMOD,#00100000B;TIMER1工作在MODE2
ANLPCON,#01111111B;SMOD=0
MOVTH1,#0F3H;波特率为2400
SETBTR1;启动TIMER1
MOVSCON,#11010000B;UART工作MODE3
MOVIE,#10010000B;UART中断使能
SETBSM2;SM2=1
MOV30H,#0FFH;P1指拨开关的初值
MOV31H,#OFFH
MOV32H,#0FFH
LOOP:
MOVA,P1;读入P1指拨开关值
CJNEA,30H,UART1;判断有否变化?
JMPLOOP1
LOOP1:
MOVA,P2;读入P2指拨开关值
CJNEA,31H,UART2;判断有否变化?
JMPLOOP
UART1:
MOV30H,A;P1指拨开关存入新值
SETBTB8;设TB8=1
MOVSBUF,#01H;发送8951-b的地址
WAIT1:
JBCTI,L1;发送完毕否?
JMPWAIT1
L1:
CLRTB8;清楚TB8=0
MOVSBUF,30H;把P1指拨开关值发送给8951-b
WAIT2:
JBCTI,LOOP;发送完毕否
JMPWAIT2
UART2:
MOV31H,A
SETBTB8
MOVSBUF,#02H
WAIT3:
JBCTI,L3
JMPWAIT3
L3:
CLRTB8
MOVSBUF,31H
WAIT4:
JBCTI,LOOP
JMPWAIT4
UARTI:
PUSHACC;压入堆栈
PUSHPSW
JBCRI,L5;是否接受中断?
RI=1?
JMPRETURN
L5:
JBSM2,6;SM2=1接收地址,SM2=0接收数据
MOVA,SBUF;接收数据载入累加器
MOV33H,A;暂存入(33H)RAM
MOVA,32H;判断接收8951-B或8951-C的数据?
CJNEA,#01H,L8;接到收8951-B的数据?
MOVA,33H;是则输出至P0显示(低4位)
MOVP0,A
SETBSM2;设SM2=1,准备接收下一个地址
MOV32H,#0FFH;清楚地址(32H)RAM
JMPRETURN
L8:
CJNEA,#02H,RETURN
MOVA,33H
SWAPA
MOVP0,A
SETBSM2
MOV32H,#0FFH
JMPRETURN
L6:
MOVA,SBUF;载入接收到的地址
CJNEA,#01H,L7;是8951-B的地址?
MOV32H,A;是则此将8951-B的地址存入(32H)RAM
CLRSM2;设SM2=0,准备接收数据
JMPRETURN
L7:
CJNEA,#02H,RETURN
MOV32H,A
CLRSM2
RETURN:
POPPSW;取回PSW
POPACC
RETI
END
从机程序B:
ORG00H
JMPSTART
ORG23H;UART中断起始地址
JMPUARTI
START:
MOVTMOD,#00100000B;TIMER1工作在MODE2
ANLPCON,#01111111B;SMOD=0
MOVTH1,#0F3H;波特率为2400
SETBTR1;启动TIMER1
MOVSCON,#11010000B
MOVIE,#10010000B
SETBSM2
MOV30H,#0FFH
LOOP:
MOVA,P1
CJNEA,30H,UART1
JMPLOOP
UART1:
ORLA,#0F0H;有变化取低4位
MOV30H,A;存入P1指拨开关的新值
SETBTB8;设TB8=1
MOVSBUF,#01;发送本身地址(01H)给8951-A
WAIT1:
JBCTI,L1;发送完毕否
JMPWAIT1
L1:
CLRTB8;是则清楚TB8=0
MOVSBUF,30H;将指拨开关的值发送给8951-A
WAIT2:
JBCTI,LOOP;发送完毕否
JMPWAIT2
UARTI:
PUSHACC;压入堆栈
PUSHPSW
JBCRI,L5;是否为接收中断?
JMPRETURN
L5:
JBSM2,L6
MOVA,SBUF
MOVP2,A
SETBSM2
JMPRETURN
L6:
MOVA,SBUF
CJNEA,#01H,RETURN
CLRSM2
RETURN:
POPPSW
POPACC
RETI
END
从机程序C
ORG00H
JMPSTART
ORG23H
JMPUARTI
START:
MOVTMOD,#00100000B
ANLPCON,#01111111B
MOVTH1,#0F3H
SETBTR1
MOVSCON,#11010000B
MOVIE,#10010000B
SETBSM2
MOV30H,#0FFH
LOOP:
MOVA,P1
CJNEA,30H,UART1
JMPLOOP
UART1:
ORLA,#0FH
SWAPA
MOV30H,A
SETBTB8
MOVSBUF,#02
WAIT1:
JBCTI,L1
JMPWAIT1
L1:
CLRTB8
MOVSBUF,30H
WAIT2:
JBCTI,LOOP
JMPWAIT2
UARTI:
PUSHACC
PUSHPSW
JBCRI,L5
JMPRETURN
L5:
JBSM2,L6;SM2=1接收地址,SM2=0接收数据
MOVA,SBUF;SM=0,则接收数据并输出至P2
MOVP2,A
SETBSM2;设SM2=1,准备接收下一个地址
JMPRETURN
L6:
MOVA,SBUF;SM2=1,载入地址
CJNEA,#02H,RETURN;是否(02H)地址?
CLRSM2;是则清除SM2=0,准备接收数据
RETURN:
POPPSW
POPACC
RETI
END
五.仿真与调试
单击仿真运行开始按钮
,我们能清楚地观察到每一个引脚的电频变化,红色代表高电频,蓝色代表低电频。
如图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、我沉得做课程设计同时也是对课本知识的巩固和加强,由于课本上的知识太多,平时课间的学习并不能很好的理解和运用各个元件的功能,而且考试内容有限,所以在这次课程设计过程中,对知识使用有了更多的认识。
认识来源于实践,实践是认识的动力和最终目的,实践是检验真理的唯一标准。
所以这个课程设计对我们以后找工作的作用是非常大的。
3、两个星期的课程设计,过程曲折可谓一语难尽。
在此期间我们也失落过,也曾一度热情高涨。
从开始时满富盛激情到最后汗水背后的复杂心情,点点滴滴无不令我回味无长。
生活就是这样,汗水预示着结果也见证着收获。
劳动是人类生存生活永恒不变的话题。
通过做课程设计,我才真正领略到“艰苦奋斗”这一词的真正含义。
我想说,设计确实有些辛苦,但苦中也有乐,在如今单一的理论学习中,很少有机会能有实践的机会,但我们可以,而且设计也是一个团队的任务,一起的工作可以让我们有说有笑,相互帮助,配合默契,多少人间欢乐在这里洒下,大学里一年的相处还赶不上这十来天的合作,我感觉我和同学们之间的距离更加近了;我想说,确实很累,但当我们看到自己所做的成果时,心中也不免产生兴奋;正所谓“三百六十行,行行出状元”。
我们同样可以为社会作出我们应该做的一切,这有什么不好?
我们不断的反问自己。
也许有人不喜欢这类的工作,也许有人认为设计的工作有些枯燥,但我们认为无论干什么,只要人生活的有意义就可。
社会需要我们,我们也可以为社会而工作。
既然如此,那还有什么必要失落呢?
于是我们决定沿着自己的路,执着的走下去。
同时我认为我们的工作是一个团队的工作,团队需要个人,个人也离不开团队,必须发扬团结协作的精神。
某个人的离群都可能导致导致整项工作的失败。
做课程设计只有一个人知道原理是远远不够的,必须让每个人都知道,否则一个人的错误,就有可能导致整个工作失败。
团结协作是我们实习成功的一项非常重要的保证。
而这次实习也正好锻炼我们这一点,这也是非常宝贵的。
对我们而言,知识上的收获重要,精神上的丰收更加可喜。
挫折是一份财富,经历是一份拥有。
这必将成为我人生旅途上一个非常美好的回忆!
通过这次课程设计使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正为社会服务,从而提高自己的实际动手能力和独立思考的能力。
在设计的过程中遇到问题,可以说得是困难重重,这毕竟第一次做的,难免会遇到过各种各样的问题,同时在设计的过程中发现了自己的不足之处,对以前所学过的知识理解得不够深刻,掌握得不够牢固。
这次课程设计终于顺利完成了,在设计中遇到了很多问题,最后在老师的辛勤指导下,终于游逆而解。
同时,在老师的身上我们学也到很多实用的知识,在次我们表示感谢!
同时,对给过我帮助的所有同学和各位指导老师再次表示忠心的感谢!
4、此次课程设计,学到了很多课内学不到的东西,比如独立思考解决问题,出现差错的随机应变,和与人合作共同提高,都受益非浅,今后的制作应该更轻松,自己也都能扛的起并高质量的完成项目。
5、在此,衷心的感谢老师的细心指导。
七.参考文献
1.刘焕平主编。
单片机原理及应用。
北京邮电大学出版社.2008
2.张瑞玲主编。
单片机原理与应用.西北工大出版社。
2009
3.李荣正主编。
PIC单片机原理及应用。
北京航大出版社。
2009
4.曹立军主编。
单片机原理与应用。
西安电科大出版社。
2009
5.杨学昭主编。
单片机原理接口技术及应用。
西安电科大出版社。
2009
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 两个 单片机 之间 数据通信 仿真 实现