51单片机双机通信

实验原理及内容:

【实验要求】

用甲、乙两片单片机进行串口通信,在甲机设置一个开关,当甲机开关按下时,乙机的LED点亮。

  1.新建一个文件夹,以名字拼音命名,将工程放到文件夹内。

  2.画出仿真图,做出仿真效果。

【实验原理】

1.对IO口进行相应的硬件连接,通过判断相应的IO口电平是否被拉高来确定开关是否被按下,当开关按下时执行相应的程序。

2.原理图

 ba3dffa140d04b32aadb0f55fccc5eea.jpg

 

3.程序设计思路

(1)硬件部分原理

开关一端接地,一端接入IO口,当IO口无输入时默认为低电平,开关按下后IO口电平被拉高,其相应寄存器位会变1,通过判断相应位是否为1来确定开关是否被按下。LED采用共阴接法,IO口输出高电平时LED亮。

(2)软件部分原理

①甲机程序用于将P1口的值发送到串口,在程序中,首先进行了一些初始化设置,包括设置定时器1为模式2,设置波特率为9600,设置串口为模式1(只发送数据),启动定时器1等。

②然后进入主循环,不断读取P1口的值,并将其发送到串口。通过将P1口的值赋给SBUF寄存器,可以将其发送到串口。在发送完成之前,程序会等待TI(发送完成标志位)为1,表示发送完成。然后将TI清零,以便下一次发送。

③乙机程序用于接收串口数据并将其显示在P0口。在程序中,首先进行了一些初始化设置,包括设置定时器1为模式2,设置波特率为9600,设置串口为模式3(发送和接收数据),启动定时器1等。

④然后进入主循环,不断等待接收完成。当RI(接收中断标志位)为1时,表示接收完成。然后将RI清零,以便下一次接收。接着,将接收到的数据从SBUF寄存器中读取出来,并将其显示在P0口。  

(3)主程序流程

   步骤1)未开关未按下时时,LED处于2熄灭状态

      步骤2)检测开是否按下,向乙机LED点亮。

【实验内容与步骤】

一、程序注释

甲机程序

f0e202bd527249e891052da84fa2419f.png

 

乙机程序

968549d04ef4499383180fd814a4b070.png

 

 

二、仿真和现象分析

开关断开

18878675cb3045358e61169c283bd11b.jpg

开关闭合

d60ee2a96acd446eb170ea76a3f7becb.jpg

 

【总结】

    在这次实验中,当闭合下开关时,乙机的LED没有任何反应,后面发现是甲乙机TX与TX、RX与RX连接到了一起,犯了最基本的错误,改正过来之后还是没有任何反应,在网上查找了资料,发现两机的波特率和其他参数的设置需要一致,以确保两个单片机之间能够正常进行数据的发送和接收,改变参数后可以实现功能。

 

  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值