首页 单片机双机之间的串行通信设计

单片机双机之间的串行通信设计

举报
开通vip

单片机双机之间的串行通信设计Preparedon24November2020单片机双机之间的串行通信设计专业方向课程设计报告题目:单片机双机之间的串行通信设计单片机双机之间的串行通信设计一.设计要求:两片单片机利用串行口进行串行通信:串行通信的波特率可从键盘进行设定,可选的波特率为1200、2400、4800和9600bit/s。方案论证:方案一:以两片51单片机作为通信部件,以4*4矩阵键盘作为数据输入接口,通过16个不同键值输入不同的信息,按照51单片机的方式3进行串口通信,从机采用中断方式接收信息并按照通信协议改变波特率或者用I/O口输...

单片机双机之间的串行通信设计
Preparedon24November2020单片机双机之间的串行通信设计专业方向课程设计报告题目:单片机双机之间的串行通信设计单片机双机之间的串行通信设计一.设计 要求 对教师党员的评价套管和固井爆破片与爆破装置仓库管理基本要求三甲医院都需要复审吗 :两片单片机利用串行口进行串行通信:串行通信的波特率可从键盘进行设定,可选的波特率为1200、2400、4800和9600bit/s。 方案 气瓶 现场处置方案 .pdf气瓶 现场处置方案 .doc见习基地管理方案.doc关于群访事件的化解方案建筑工地扬尘治理专项方案下载 论证:方案一:以两片51单片机作为通信部件,以4*4矩阵键盘作为数据输入接口,通过16个不同键值输入不同的信息,按照51单片机的方式3进行串口通信,从机采用中断方式接收信息并按照通信 协议 离婚协议模板下载合伙人协议 下载渠道分销协议免费下载敬业协议下载授课协议下载 改变波特率或者用I/O口输出、CD4511译码、数码管显示相关数据,整个系统的软件部分采用C语言编写。方案二:整个系统的硬件设计与方案一样,但是通信方式采用方式一进行通信,主从机之间的访问采用查询方式,数据输出直接由单片机的译码程序输出译码数据,同时软件编写采用汇编语言。两种方式从设计上来说各有特色,而且两种方式都应该是可行的。方案一中按照方式三通信可以输出九位数据而方式一只能输出八位数据,但就本题的要求来说方式一就可以了。主从机之间的交流采用中断方式是一种高效且保护单片机的选择,但是相比之下本人对查询方式的理解更好一些。数码管的显示若采用CD4511译码则直接输出数据就可以了,但是这样会增加硬件陈本,而且单片机的资源大部分都还闲置着,所以直接编写一段译码程序是比较好的做法。另外在软件编写上,采用C语言在后续设计中对硬件的考虑稍少一些,换言之采用汇编可以使自己对整个通信过程及单片机的部分结构有更清晰地认识所以综合考虑采用方案二。理论设计:采用AltiumDesigner绘制的原理图(整图)本系统主要包括五个基本模块:单片机最小系统(包括晶振电路、电源、复位电路及相关设置电路)、4*4矩阵键盘、功能控制电路、数据显示电路、波特率更改指示电路。本设计的基本思路是通过控制口选择将要实现的功能,然后矩阵键盘输入数据,单片机对数据进行处理(加校验码、设置功能标志位),然后与从机握手,一切就绪之后后就开始发送数据,然后从机对接收数据校验,回发校验结果,主机根据校验结果进行下一步动作,或者重发,或者进入下一数据的发送过程,然后按照此过程不段循环,直到结束。单片机最小系统:接上电源和地,晶振电路提供脉冲,加上复位电路,将EA接入高电电平选择片内程序存储器。这是一个单片机能够工作的最低设置。4*4矩阵键盘:将矩阵键盘接入p1口通过按键扫描程序读写P1口从而判断有无安键按下,通过查键值程序确定其键值从而得到输入数据。这是整个系统的输入接口。功能控制电路:控制键(图中为K3)被按下时为低电平,否则为高电平,这样就可以根据读入的的电平差别控制通信系统的功能。高电平时让从机显示接收到的数据,低电平从机更改波特率。数据显示模块:译码程序将获得的数据译成可直接显示的段码输到p2口,用数码管显示。为防止单片机的带负载能力不足,本设计中加了上拉电阻使数码管显示更清晰。波特率更改指示电路:在从机更改波特率之后同时给P1口写数是相应指示灯亮,指示此时两机之间通信的波特率为多少。开始开始主机软件流程图从机软件流程图初始化,设置初始波特率及相应寄存器初始化,设置初始波特率及相应寄存器等待主机握手N键按下收OEHYNY调用发送程序准备发送数据回发02H回发01H发送呼叫信号0EH,并等待从机回答等待主机发送数据并校验N01HN无错Y==1回发F0HYNY回发0FH对键值加校验位,加标志位,等待发送对键值加校验位,发送N==1NY更改波特率,及相关处理等待从机回答显示接收数据N0FHY等待从机回答返回0FHY返回电路仿真及仿真结果分析:控制键未被按下时,从机显示接收到到的数据指示灯未亮表明此时从机未设置波特率,以初始波特率工作控制键未被按下两机之间数字信号的传输用示波器观察两机之间的信息交流指示灯亮表明通信系统此时以指定波特率工作控制键被按下时,从机不显示数据控制键被按下下图是系统软件仿真的结果,以下现象表明系统能正常工作并实现预设结果。作品功能和使用说明:电源接口及开关波特率指示灯接上电源系统开始工作,功能件控制从机功能,键盘输入数据,主机发送数据,从机接收数据。当控制键未被按下时,从机显示接收到的数据;控制键被按下时从机不再显示数据,只更改波特率,同时点亮相应的指示灯。指示灯会指示当前工作的波特率,灯不亮时单片机以默认波特率工作。系统断电时结束通信。从机更改波特率,不显示数据从机只显示数据心得体会:经过这几天的努力终于将设计完成了。整个过程虽然遇到很多问题,但是确实感觉又学到了了不少东西。整个系统的设计很快就决定下来了,但是在软件编写完之后进行软件仿真时,一直不能不能成功。然后一步步的查错,从功能流程图开始,一步步检查,理清系统的时序逻辑关系。确保逻辑功能没问题后,对软件进行调试,逐步调试、设置相关寄存器、查看相应的io口,然后发现这里也没什么问题。于是直接在程序中设置标志位,观察程序的运行情况。后来发现问题主要出现在两个地方:一是软件不能自动返回,重复执行,于是在程序中增加了循环语句和返回语句;二是没有正确保存数据和取数据,主要体现在查键值后没有保护数据及进行校验后没有进行重取原数据,这是两个非常易错的问题。另外功能上单片机之间的“握手”和等待通讯过程也是非常重要的。另外在硬件制作时也遇到了一些问题,主要是在制作PCB板时由于腐蚀过度导致出现了很多断路,以至调试时得检查电路,同时对整个系统的美观造成很大影响。不过,这次设计确实让我对通信过程有更深的理解。七、参考文献[1]李建忠.单片机原理及应用(第二版.西安电子科技大学出版社)[2]何小艇.电子系统设计(第四版.浙江大学出版社)系统程序:/**************************************************************************约定:主机发送呼叫信号"0EH",咨询从机是否可以接受数据**从机发送"01H"表示可以接受,否则发送"02H"表示暂时不能接受数据**主机只有收到了应答信号"01H"才向从机发送数据,否则继续呼叫**主机收到"0FH"表示发送正确,收到"F0H"表示发送错误**设置:串口工作于方式1,定时器做波特率发生器工作于方式2,SMOD=1,**波特率为1200时计数初值为D0,2400--E8H,4800-F4H,9600-FAH**两片单片机开始波特率设为4800**通过按键进行功能选择,按下=0设置波特率未按=1数据显示**************************************************************************/主机程序:/*****************发送程序********************/ORG0000HLJMPMAINORG0030HMAIN:MOVSP,#60HMOVTMOD,#20H;置定时器/计数器1工作于方式2定时MOVTL1,#0F4H;置定时器/计数器1初值,初始波特率为4800MOVTH1,#0F4H;置重装值MOVPCON,#80H;SMOD=1MOVSCON,#50H;串行口工作于方式1SETBTR1/****************首先进行查键子程序***************/BEGAIN:ACALLKEYMOVR1,AACALLHUJIAOAJMPBEGAIN/************按键扫描****************/KEY:ACALLKS1;调用判断有无键按下子程序JNZLK1;有键按下(A)=0,AJMPKEYLK1:ACALLDELAYACALLKS1JNZCKEYAJMPKEYCKEY:MOVR2,#7FHMOVR4,#00HCKEY1:MOVP1,R2JB,LONEMOVA,#00HAJMPLPK;转到键值计算子程序LONE:JB,LTWOMOVA,#04HAJMPLPKLTWO:JB,LTHRMOVA,#08HAJMPLPKLTHR:JB,NEXT0MOVA,#0CHLPK:ADDA,R4PUSHACCLK3:ACALLKS1JNZLK3ACALLDELAYPOPACCRETNEXT0:INCR4MOVA,R2JNB,KENDRRAMOVR2,AAJMPCKEY1KEND:AJMPKEYKS1:MOVP1,#0FHMOVA,P1CPLAANLA,#0FHRET/************然后呼叫从机***************/HUJIAO:CALLDELAYMOVA,#0EHCPLMOVSBUF,AWAIT1:JBCTI,TXYES;等待发送完成SJMPWAIT1TXYES:JBCRI,NEXT1;等待从机回答SJMPTXYESNEXT1:MOVA,SBUF;判断从机是否同意,不同意则继续呼叫CJNEA,#01H,HUJIAOPANDUAN:JB,XSHU;功能键被按下,则发送数据设置波特率,否则只显示发送数据SHEZ:MOVA,R1SETB;=1显示=0设置波特率MOVC,PMOV,CMOVSBUF,AWAIT2:JNBTI,WAIT2CLRTIWAITC1:JNBRI,WAITC1CLRRICPLMOVA,SBUFCJNEA,#0FH,SHEZMOVA,R1ANLA,#0FHCJNEA,#00H,L1MOVTL1,#0D0H;重设波特率为1200MOVTH1,#0D0HLJMPFHL1:CJNEA,#01H,L2MOVTL1,#0E8H;重设波特率为2400MOVTH1,#0E8HLJMPFHL2:CJNEA,#02H,L3MOVTL1,#0F4H;重设波特率为4800MOVTH1,#0F4HLJMPFHL3:CJNEA,#03H,FHMOVTL1,#0FAH;重设波特率为9600MOVTH1,#0FAHLJMPFHXSHU:MOVA,R1;只显示数字时,A的高位不处理直接发送MOVC,PMOV,CMOVSBUF,AWAIT3:JNBTI,WAIT3CLRTIWAITC:JNBRI,WAITCCLRRIMOVA,SBUFCJNEA,#0FH,XSHUCLRFH:RET/**********延时子程序*********/DELAY:MOVR6,#0FFHLOOP1:DJNZR6,LOOP1RETJS:END从机程序:/*****************接收程序********************/ORG0000HLJMPMAINORG0030HMAIN:MOVSP,#60HRSTRT:MOVTMOD,#20H;置定时器/计数器1工作于方式2定时MOVTL1,#0F4H;置定时器/计数器1初值,初始波特率为4800MOVTH1,#0F4H;置重装值MOVPCON,#80H;SMOD=1MOVSCON,#50H;串行口工作于方式1SETBTR1JIESHOU:CLRTIJNBRI,JIESHOUCLRRIMOVA,SBUFCJNEA,#0EH,FA2FA1:MOVA,#01HMOVSBUF,ACPLWAIT1:JBCTI,RXSJMPWAIT1FA2:MOVA,#02HMOVSBUF,AWAIT2:JBCTI,JIESHOUSJMPWAIT2RX:CLRTIJNBRI,RXCLRRIMOVA,SBUFMOVC,PMOVR1,AJCFAF0FA0F:MOVA,#0FHMOVSBUF,AWAIT3:JNBTI,WAIT3CLRTISJMPCHULIFAF0:MOVA,#0F0HMOVSBUF,AWAIT4:JNBTI,WAIT4CLRTILJMPRXCHULI:MOVA,R1JB,SHEZ;=1显示=0设置波特率XIANS:ANLA,#0FHLCALLDISPLAYLJMPJSSHEZ:MOVP2,#00HANLA,#0FHCJNEA,#00H,L1MOVTL1,#0D0H;重设波特率为1200MOVTH1,#0D0HMOVP1,#0FEH;CLRLJMPJSL1:CJNEA,#01H,L2MOVTL1,#0E8H;重设波特率为2400MOVTH1,#0E8HMOVP1,#0FDH;CLRLJMPJSL2:CJNEA,#02H,L3MOVTL1,#0F4H;重设波特率为4800MOVTH1,#0F4HMOVP1,#0FBH;CLRLJMPJSL3:CJNEA,#03H,JIEMOVTL1,#0FAH;重设波特率为9600MOVTH1,#0FAHMOVP1,#0F7H;CLRJIE:LJMPJS/**********延时子程序*********/DELAY:MOVR6,#03FHLOOP1:DJNZR6,LOOP1RET/**********译码程序**********/DISPLAY:CJNEA,#00H,LT1MOVA,#00111111B;0SJMPLASTLT1:CJNEA,#01H,LT2MOVA,#00000110B;1SJMPLASTLT2:CJNEA,#02H,LT3MOVA,#01011011B;2SJMPLASTLT3:CJNEA,#03H,LT4MOVA,#01001111B;3SJMPLASTLT4:CJNEA,#04H,LT5MOVA,#01100110B;4SJMPLASTLT5:CJNEA,#05H,LT6MOVA,#01101101B;5SJMPLASTLT6:CJNEA,#06H,LT7MOVA,#01111101B;6SJMPLASTLT7:CJNEA,#07H,LT8MOVA,#00000111B;7SJMPLASTLT8:CJNEA,#08H,LT9MOVA,#01111111B;8SJMPLASTLT9:CJNEA,#09H,LT10MOVA,#01101111B;9SJMPLASTLT10:CJNEA,#0AH,LT11MOVA,#01110111B;ASJMPLASTLT11:CJNEA,#0BH,LT12MOVA,#01111111B;BSJMPLASTLT12:CJNEA,#0CH,LT13MOVA,#00111001B;CSJMPLASTLT13:CJNEA,#0DH,LT14MOVA,#00111111B;DSJMPLASTLT14:CJNEA,#0EH,LT15MOVA,#01111001B;ESJMPLASTLT15:CJNEA,#0FH,LASTMOVA,#01110001B;FLAST:MOVP2,ARETJS:LJMPJIESHOUEND
本文档为【单片机双机之间的串行通信设计】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
个人认证用户
MC
暂无简介~
格式:doc
大小:8MB
软件:Word
页数:0
分类:
上传时间:2021-10-24
浏览量:15