l单片机课程设计双机串行通信.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
l单片机课程设计双机串行通信

单片机课程设计 课题名称:单片机双机串口通信设计 小组成员: 姓名 学号 两个单片机之间串行接口通信设计 目录 一、实验要求……2 1、设计内容 2、设计要求 二、实验原理……2 三、实验程序图……4 四、实验电路图……6 五、实验程序……7 六、Proteus仿真结果……8 七、实验器材……8 八、总结……8 2010/12/24 一、实验要求 1、设计内容 1)用全双共数据传送法实现两机互相通信。 2)完成双机通信的设计制作及仿真。 2、设计要求 1)能本机显示按键的数值。 2)能向对方机发送按键的数。 3)能接收对方机发送的数并显示。 4)发送数及按键用中断实现。 5)用串行口的全双工方式通信。 二、实验原理 (1)单片机串行接口通信功能 图①AT89C51 计算机与外界的信息交换称为通信,常用的通信方式有两种:并行通信和串行通信。51单片机用4个接口与外界进行数据输入与数据输出就是并行通信,并行通信的特点是传输信号的速度快,但所用的信号线较多,成本高,传输的距离较近。串行通信的特点是只用两条信号线(一条信号线,再加一条地线作为信号回路)即可完成通信,成本低,传输的距离较远。 51单片机的串行接口是一个全双工的接口,它可以作为UART(通用异步接受和发送器)用,也可以作为同步移位寄存器用。51单片机串行接口的结构如下: (1)数据缓冲器(SBUF) 接受或发送的数据都要先送到SBUF缓存。有两个,一个缓存,另一个接受,用同一直接地址99H,发送时用指令将数据送到SBUF即可启动发送;接收时用指令将SBUF中接收到的数据取出。 (2)串行控制寄存器(PCON) SCON用于串行通信方式的选择,收发控制及状态指示,各位含义如下: SM0 SM1 SM2 REN TB8 RB8 TI RI SM0,SM1:串行接口工作方式选择位,这两位组合成00,01,10,11对应于工作方式0、1、2、3。串行接口工作方式特点见下表 SM0 SM1 工作方式 功能 波特率 0 0 0 8位同步移位寄存器(用于I/O扩展) fORC/12 0 1 1 10位异步串行通信(UART) 可变(T1溢出率*2SMOD/32)) 图②MAX232引脚图 MAX232 芯片其内部有一个电源电压变换器,可以将输入+5V的电压变换成RS-232C输出电平所需的±12V电压。所以采用这种芯片来实现接口电路特别方便,只需单一的+5V电源即可。 MAX232芯片的引脚结构如下图所示。其中管脚1~6(C1+、V+、C1-、C2+、C2-、V-)用于电源电压转换,只要在外部接入相应的电解电容即可;管脚7~10和管脚11~14构成两组TTL信号电平与RS-232信号电平的转换电路,对应管脚可直接与单片机串行口的TTL电平引脚相连。 三、实验框图 (1)发送端流程图 (2)接收端流程图 说明:两个单片机不分主从机,任何一个单片机均可作为发送端或接收端,这里为了便于理解而设置主从机一说。 四、实验电路图 LOGICSTATE 逻辑状态 用鼠标点击,可改变该方框连接位置的逻辑状态#includereg51.h #define uchar unsigned char #define uint unsigned int #define duan P1 #define dis P2 void main() { uchar key_in=0xff; //I/O口作输入时,检测外设状态,允许输出高电平 TMOD=0x20; //设置为定时器1方式2 TH1=0xfd; //装初值,波特率设为9600 TL1=0Xfd; EA=1; //开总中断 ET1=1; //允许定时器1中断 TR1=1; //开启定时器1中断 SCON=0x50; //串口控制寄存器设置,方式1、开串口接收。SM0=0;SM1=1;REN=1; ES=1; //开串口中断 while(1) { if(key_in != duan) { key_in=duan; SBUF=key_in; //发送数据 while(!TI); //等待数据发送,由TI判断发送是否结束 TI=0;

文档评论(0)

1789811832 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档