双单片机控制流水灯.doc

上传人:scccc 文档编号:12496992 上传时间:2021-12-04 格式:DOC 页数:3 大小:76.50KB
返回 下载 相关 举报
双单片机控制流水灯.doc_第1页
第1页 / 共3页
双单片机控制流水灯.doc_第2页
第2页 / 共3页
双单片机控制流水灯.doc_第3页
第3页 / 共3页
亲,该文档总共3页,全部预览完了,如果喜欢就下载吧!
资源描述

《双单片机控制流水灯.doc》由会员分享,可在线阅读,更多相关《双单片机控制流水灯.doc(3页珍藏版)》请在三一文库上搜索。

1、案例 8 双单片机通信控制流水灯用串行工作方式进行单片机之间的通信, 电路图如下图所示。 两个 89S51 单片机 通过串行口进行通信, 设置 U1 使用的晶振频率是 11.0592MHz,U2 使用的晶振频率 是 22.1184MHz,U1的RXD 接U2的 TXD ,U1的TXD 接U2的 RXD ,U2接 8个 发光二极管,要求由 U1 向 U2 发送数据,使 8 个发光二极管按从左到右逐一点亮的 流水灯效果。MCS-51 单片机之间的串行异步通信1串行口的编程 串行口需初始化后,才能完成数据的输入、输出。其初始化 过程如下:(1)按选定串行口的工作方式设定 SCON的 SM0、SM1两

2、位二进制编码。(2)对于工作方式 2或 3,应根据需要在 TB8中写入待发送的第 9位数据(地 址为 1,数据为 0)。( 3)若选定的工作方式不是方式 0,还需设定接收 /发送的波特率。( 4)设定 SMOD 的状态,以控制波特率是否加倍。(5)若选定工作方式 1或 3,则应对定时器 T1 进行初始化以设定其溢出率。2案例分析 由于串行口通信时传输的“ 0”或者“ 1”是通过相对于“地”的 电压区分的,因此使用串行口通信时,必须将双方的“地”线相连以使其具有相同 的电压参考点。需要注意的是,异步通信时两个单片机的串行口波特率必须是一样 的。由于 U1 使用的晶振频率是 11.0592MHz,

3、 U2 使用的晶振频率是 22.1184MHz, 因此二者的串行口初始化程序不完全一样。 假设使用 240bit/s 的波特率,使用串行工 作方式 1,Tl 使用自动装载的方式 2,则 Ul 的 TH1 应初始化为 136,U2 的 TH1 应 初始化为 16。对应的程序完成如下功能: Ul 和U2进行双工串行通信, Ul给 U2循环发送流水 灯控制字, U2 收到控制字后送到 P0 口,点亮相应发光二极管,双方都用中断方式 进行收发。(1)单片机 U1 的源程序#include<reg51.h>unsigned char sdata=0xfe;void isr_uart();vo

4、id main()TMOD=0X20;TH1=136;TL1=136;SCON=0x40;PCON=0;TR1=1;EA=1;ES=1;SBUF=sdata;while(1);void isr_uart() interrupt 4sdata<<=1;sdata |=1;if(sdata=0xff) sdata=0xfe;SBUF=sdata;TI=0;(2)单片机 U2 的源程序#include<reg51.h> unsigned char sdata;void isr_uart();void main()TMOD=0X20;TH1=16;TL1=16;SCON=0X50;PCON=0;TR1=1;EA=1;ES=1;while(1) ;void isr_uart() interrupt 4RI=0;sdata=SBUF;P0=sdata;

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

当前位置:首页 > 社会民生


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