基于51单片机的多机通信系统设计
基于AT89C51单片机的CAN总线的多机通信
朗曙 撼
图报 送 电 理 2 发 件 原 文硬路图
度和反馈调节部分∞。用于显示温度的外部温度传感器采用数字 式温度传感器 D 1B 0 反馈调节部分主要 由两个发光二极管来 S82 。 实现 , 当温度在设置温度门限之外 , 相应的灯光代表实际中控制加 热装置或制冷装置。另外 , 采用 矩 阵键盘设置上下限温度值 , 不仅节省 I 口资源, / O 而且操作简便。根据系统原理 , 电路主要 由 图 3 报文接收硬件 电路原理 图 图 4 系统总体流程图 四大部分组成 : 智能 C N节点部分 、 A 输入控制部分 、 输出控制部分 超出适合水稻苗生长的温度范围或者低于此温度范围 ,要证 明所没计 和反馈控制部分。 如图 1 所示 , 输入输出和反馈模块统称为具体功能单 的电路是否符合实际要求 ,就必须人工设定两个门限温度值作为实际
・
2 0 0 ・
科 教 文 化
企业往往将生产经营的信息资料视为己有进行保密。这对于制造商来 3体育用品零售业供应链实现信息共享的途径 说, 如何协调链条上各节点之间的关系 , 尤其是和销售商之间的关 系, 3 加快对中小型专卖店 、 . 1 连锁店、 便利店和折扣店的整合 、 , 重组 建 尤为重要 , 此时信息共享的作用就凸显出来了。在现实实际过程 中, 立大型的、 各 多服务的体育零售店 , 实行直销和代销。有实力和影响力 的 利益相关群体因为利益和终极 目 的不统一 ,很难实现所谓的信息共 零售商要实行 自有品牌战略。首先, 标 零售商企业的经营者要有革新经营 享, 例如图 2 现实理想化模式 , . 各利益相关企业之间是关闭的环形 图, 观念 ~ 以“ 主动营销” 取代传统的“ 被动零售” ; 营销企业必须造就 其次, 信 息是为所有利益相关企业共享的。 为什么无法实现呢? 那因为现实实 和培养一批高素质的体育经营管理 ^ 因为此时的零售商不仅只销售 、 才, 践中存在诸多问题 。 商品, 还要负责做好产 品开发设计、 品牌管理 、 生产与质量检验 、 促销宣 2 体育用品零售业信息共享中存在的问题 . 3 传等一系列复杂的营销工作。 2 .我国零售业在 2 31 0世纪 9 0年代的发展可以说是 日 新月异, 主 3 针对不同地域 、 . 2 不同年龄、 不同职业、 不同爱好 的消费者 , 建立多 要表现在零售业态的发展, 即从过去单一的百货商场 、 小商店格局到现 样化的信息反馈渠道和信息流通渠道 , 例如网络 、 电视 、 报纸等多种媒 在的连锁超市 、 便利店 、 折扣店 、 专卖店等多种业态共存共荣 的发展格 介。 保证各利益相关群体 的信 息 共享的实现 , 建立快速反应的区域体育 局。零售业开始专业化后, 出现了各种专业化的零售店, 如体育用品专卖 用品零售商供应链。这建立在交易企业间“ 战略联盟 ” 的基础上 , 建立 店和综合 的体 育用品商场就是零售业专业化趋势的重要体现日然而’ “ 当的商 品、 当的时期 、 。 体 适 适 以适 当的价格 、 并在适 当的场所供给的系 育用品零售业的发展仍仅限于业态 、 店面的平面拓展, 没有进行产品的 统”1 5 1 。 立体纵深 发掘 , P 例如 B产品。 3 体育用品零售商供应链各利益相关企业之间要建立 战略合作 . 3 2 _巾国市场巨大 ,而且不同区域 ,不同空间结构信息是不一样 伙伴关系 , .2 3 在一定时期内的共享信 息、 共担风险 、 同获利 的协议关系。 共 的, 所以在大范围内实现信息共享是不现实的, 无法实现 决速反应供应 供应链上的各企业应构建 以“ 共享信息为荣 , 保守信息为耻 ” 的联盟文 链 和敏 捷化 供应链 。 化, 把整个联盟的利益放在第一位。同时联盟要尽量考虑成员的需要 , 2 .在零售业供应链巾, .3 3 供应商 、 制造商、 零售商和消费者, 彼此之 建立的第三方监督机构要在行为上保证公平 ,这样有利于成员之间的 最终使得信息共享成为一种义务 , 成为一种 间可以相互联系 , 组成各种各样的战略联盟 , 导致生产信息、 库存信息 、 相互谦让和避免恶 陛竞争 , 技术信息、对未来市场的预测信 息等视为某一利益相关企业已有进行 自觉日 。 3 . 4当今 中 国的市 场经 济正 处 于 转 型期 , 场 自身 的优 胜 劣 汰能 力 市 保密, 这样就阻碍了信息的快速流通和反馈。 以竞争和合作并存是零 所 并没正真正的发挥出来 , 因此首先要加强政府对市场 的宏观调控 , 建立 售业供应链战略联盟的重要特点。 个有序的市场 , 以使得人们对未来收益充满售 。另外 , 要逐步完善 2 . 4中国著名体育品牌企业安踏的成功启示 作为多年来保持高速增长、 在体育用品行业实现“ 中国制造 ” 升级 零售业供应链战略联盟信誉管理的法律、 法规。 结合我国现阶段的实际 为“ 1 叶同创造” 的典 代表, 对安踏而言 , 与中国奥委会签订 的合作合同 情况 , 逐步建立系统 的、 的信誉管理方面的法规体系 , 配套 依靠法律法 来保证信誉管理 的顺利实施 , 从而保证 注定是其品牌绽放 的重要历史时刻。作为 2 0 — 0 2年新周期中国奥 规的强制性规定和政策 的引导 , 09 21 。提高企业的 委会的合作伙伴, 安踏所涉权益覆盖之广、 年限之长 、 赞助金额之高, 在 零售业供应链战略联盟 中各个成员更好的实现信 息共享目 中国奥林 匹克运动史上都是空前的。 这是整个体育行业对安踏如今“ 信 息化水平 。 江 4 结论 湖地位”的肯定 ,也是安踏自身品牌和产品升级的体现。 ̄0 3 2 0 20- 05 2 1世纪的竞争将不再是企业与企业之间的竞争 , 而是供应链与供 年, 安踏完成了更为重要 的品牌转型。 在大多数 国内体育用品企业还在 为生产如何迎合每年那 3 个月的销售旺季发愁时, 安踏又领先一步 , 应链之间的竞争 。任何一个企业只有与上下游企业或竞争企业结成战 其 形成稳定的供应链 , 实现信息共享 , 并不断使供应链整体价值 产品系列首先在鞋 、 、 服 配上进行了细分和补充。2 0 0 7年 , 在其他皮拍 略联盟, 寻求如何进行鞋服配细分的时候 ,安踏已完成了各个专业运动装备市 增值 ,才有可能在竞争 中取胜。中国体育用 品市场在今后几年很有潜 我们要保护并开发 自己的品牌 , 搞好零售商的 自主创新 能力 , 多渠 场鞋服配产品系列的深度品牌细分 ,这是 引领真个体育用品也未来发 力, 展 的理念。安踏致力于为中国更多消费者精心设计和打造全方位 的专 道销售能力等。中国的体育用品零售环境正在走向成熟,正在逐步开
单片机实现双机通信自己的
单片机实现双机通信自己的单片机是一种集成电路芯片,可以实现各种功能。
双机通信是指两台或多台计算机通过网络或其他方式进行数据传输和通信的过程。
在很多应用中,需要使用单片机实现双机通信,以实现数据传输和信息交换等功能。
单片机实现双机通信的基本原理是通过通信端口(例如串口或网络接口等)进行数据的发送和接收。
在这个过程中,需要使用一些通信协议来规定数据的格式和传输的方式。
下面是一种基于串口通信的单片机双机通信的实现方法。
首先,我们需要确定通信的硬件配置。
通常情况下,可以通过串口连接两台单片机,其中一台设置为发送方,另外一台设置为接收方。
发送方将待发送的数据通过串口发送出去,接收方则接收这些数据。
在单片机程序代码的编写方面,我们需要首先配置串口的通信参数,例如波特率、数据位、停止位、奇偶校验等。
这些参数需要在发送方和接收方进行一致配置,以保证数据的正确传输。
接下来,我们需要实现发送和接收的程序。
首先,发送方需要将待发送的数据存储在发送缓冲区中,然后通过串口将数据发送出去。
接收方则需要实时监听串口接收缓冲区中是否有数据到达,并将接收到的数据存储在接收缓冲区中。
另外,为了保证数据的正确传输,通常还要实现一些数据校验机制,例如奇偶校验、循环冗余校验(CRC)等。
这些校验机制可以用于检测和纠正数据传输中的错误。
在程序编写的过程中,还需要考虑到程序的稳定性和容错性。
例如,在发送方发送数据时,可能会遇到发送缓冲区已满的情况,此时需要实现相应的处理机制,例如等待一段时间后再次发送。
同样,在接收方接收数据时,也可能会遇到接收缓冲区溢出的情况,此时需要及时处理,以避免数据的丢失。
最后,在实际应用中,还需要考虑一些高级的功能,例如数据压缩、加密、数据传输速度的控制等。
这些功能可以根据具体的需求进行实现。
总之,单片机实现双机通信是一项复杂的任务,需要考虑到硬件和软件两个方面的因素。
在程序编写的过程中,需要考虑到通信参数的配置、发送和接收的程序编写、数据校验、稳定性和容错性等方面的问题。
51单片机多机通信
一、多机通信原理在多机通信中,主机必须要能对各个从机进行识别,在51系列单片机中可以通过SCON 寄存器的SM2位来实现。
当串口以方式2或方式3发送数据时,每一帧信息都是11位,第9位是数据可编程位,通过给TB8置1或置0来区别地址帧和数据帧,当该位为1时,发送地址帧;该位为0时,发送数据帧。
在多机通信过程中,主机先发送某一从机的地址,等待从机的应答,所有的从机接收到地址帧后与本机地址进行比较,若相同,则将SM2置0准备接收数据;若不同,则丢弃当前数据,SM2位不变。
二、多机通信电路图此处,U1作为主机,U2为从机1,U3为从机2。
三、C语言程序(1)主机程序#include<reg51.h>#include<string.h>#define _SUCC_ 0x0f//数据传送成功#define _ERR_ 0xf0//数据传送失败unsigned char Table[9]={0x31,0x32,0x33,0x34,0x35,0x36,0x37,0x38,0x39}; unsigned char Buff[20]; //数据缓冲区unsigned char temp=0xff;sbit KEY1=P1^6;sbit KEY2=P1^7;//unsigned char addr;//延时1ms函数void delay_1ms(unsigned int t){unsigned int x,y;for(x=t;x>0;x--)for(y=110;y>0;y--);}//缓冲区初始化void Buff_init(){unsigned char i; //将Table里的数据放到缓冲区里for(i=0;i<9;i++){Buff[i]= Table[i];delay_1ms(100);}}//串口初始化函数void serial_init(){TMOD=0x20; //定时器1工作于方式2TH1=0xfd;TL1=0xfd; //波特率为9600PCON=0;SCON=0xd0; //串口工作于方式3TR1=1; //开启定时器TI=0;RI=0;}//发送数据函数void SEND_data(unsigned char *Buff){unsigned char i;unsigned char lenth;unsigned char check;lenth=strlen(Buff); //计算数据长度check=lenth;TI=0; //发送数据长度TB8=0; //发送数据帧SBUF=lenth;while(!TI);TI=0;for(i=0;i<lenth;i++) //发送数据{check=check^Buff[i];TB8=0;SBUF=Buff[i];while(!TI);TI=0;}TB8=0; //发送校验字节SBUF=check;while(!TI);TI=0;}//向指定从机地址发送数据void ADDR_data(unsigned addr){while(temp!=addr) //主机等待从机返回其地址作为应答信号{TI=0; //发送从机地址TB8=1; //发送地址帧SBUF=addr;while(!TI);TI=0;RI=0;while(!RI);temp=SBUF;RI=0;}temp=_ERR_; //主机等待从机数据接收成功信号while(temp!=_SUCC_){SEND_data(Buff);RI=0;while(!RI);temp=SBUF;RI=0;}}void main(){Buff_init();serial_init();while(1){if(KEY1==0){delay_1ms(5);if(KEY1==0){while(!KEY1);ADDR_data(0x01);}}if(KEY2==0){delay_1ms(5);if(KEY2==0){while(!KEY2);ADDR_data(0x02);}}}}(2)从机1程序#include<reg51.h>#include<string.h>#define addr 0x01//从机1的地址#define _SUCC_ 0x0f//数据传送成功#define _ERR_ 0xf0//数据传送失败unsigned char aa=0xff;//主机与从机之间通信标志unsigned char Buff[20];//数据缓冲区//串口初始化函数void serial_init(){TMOD=0x20; //定时器1工作于方式2TH1=0xfd;TL1=0xfd; //波特率为9600PCON=0;SCON=0xd0; //串口工作于方式3TR1=1; //开启定时器TI=0;RI=0;}//接收数据函数unsigned char RECE_data(unsigned char *Buff) {unsigned char i,temp;unsigned char lenth;unsigned char check;RI=0; //接收数据长度while(!RI);if(RB8==1) //若接收到地址帧,则返回0xfereturn 0xfe;lenth=SBUF;RI=0;check=lenth;for(i=0;i<lenth;i++) //接收数据{while(!RI);if(RB8==1) //若接收到地址帧,则返回0xfereturn 0xfe;Buff[i]=SBUF;check=check^(Buff[i]);RI=0;}while(!RI); //接收校验字节if(RB8==1) //若接收到地址帧,则返回0xfereturn 0xfe;temp=SBUF;RI=0;check=temp^check; //将从主机接收到的校验码与自己计算的校验码比对if(check!=0) //校验码不一致,表明数据接收错误,向主机发送错误信号,函数返回0xff {TI=0;TB8=0;SBUF=_ERR_;while(!TI);TI=0;return 0xff;}TI=0; //校验码一致,表明数据接收正确,向主机发送成功信号,函数返回0x00 TB8=0;SBUF=_SUCC_;while(!TI);TI=0;return 0;}void main(){serial_init();while(1){SM2=1; //接收地址帧while(aa!=addr) //从机等待主机请求自己的地址{RI=0;while(!RI);aa=SBUF;RI=0;}TI=0; //一旦被请求,从机返回自己的地址作为应答,等待接收数据 TB8=0;SBUF=addr;while(!TI);TI=0;SM2=0; //接收数据帧aa=0xff; //从机接收数据,并将数据保存到数据缓冲区while(aa==0xff){aa=RECE_data(Buff);}if(aa==0xfe)continue;P1=Buff[1]; //查看接收到的数据}}(3)从机2程序#include<reg51.h>#include<string.h>#define addr 0x02//从机2的地址#define _SUCC_ 0x0f//数据传送成功#define _ERR_ 0xf0//数据传送失败unsigned char aa=0xff;//主机与从机之间通信标志unsigned char Buff[20];//数据缓冲区//串口初始化函数void serial_init(){TMOD=0x20; //定时器1工作于方式2TH1=0xfd;TL1=0xfd; //波特率为9600PCON=0;SCON=0xd0; //串口工作于方式3TR1=1; //开启定时器TI=0;RI=0;}//接收数据函数unsigned char RECE_data(unsigned char *Buff){unsigned char i,temp;unsigned char lenth;unsigned char check;RI=0; //接收数据长度while(!RI);if(RB8==1) //若接收到地址帧,则返回0xfereturn 0xfe;lenth=SBUF;RI=0;check=lenth;for(i=0;i<lenth;i++) //接收数据{while(!RI);if(RB8==1) //若接收到地址帧,则返回0xfereturn 0xfe;Buff[i]=SBUF;check=check^(Buff[i]);RI=0;}while(!RI); //接收校验字节if(RB8==1) //若接收到地址帧,则返回0xfereturn 0xfe;temp=SBUF;RI=0;check=temp^check; //将从主机接收到的校验码与自己计算的校验码比对if(check!=0) //校验码不一致,表明数据接收错误,向主机发送错误信号,函数返回0xff {TI=0;TB8=0;SBUF=_ERR_;while(!TI);TI=0;return 0xff;}TI=0; //校验码一致,表明数据接收正确,向主机发送成功信号,函数返回0x00 TB8=0;SBUF=_SUCC_;while(!TI);TI=0;return 0;}void main(){serial_init();while(1){SM2=1; //接收地址帧while(aa!=addr) //从机等待主机请求自己的地址{RI=0;while(!RI);aa=SBUF;RI=0;}TI=0; //一旦被请求,从机返回自己地址作为应答,等待接收数据TB8=0;SBUF=addr;while(!TI);TI=0;SM2=0; //接收数据帧aa=0xff; //从机接收数据,并将数据保存到数据缓冲区while(aa==0xff){aa=RECE_data(Buff);}if(aa==0xfe)continue;P1=Buff[2]; //查看接收到的数据}}。
计算机与51系列单片机多机通讯的实现
图 1 5 单 片 机 主 从 式 多 机 通 讯 原 理 1
Fi 1 P ii e frMu t o ue mmu c to y 51 e is Mirc mp tr g. rcpl o li mp trCo c nia in b S re c o o u e
予 理 睬 , 能 激 活 中 断 标 志 . E 允 许 串 行 接 收 , 软 件 控 制 , R N: 1 , 许 接 收 . B 不 R N 由 当 E 时 允 T 8在 方 式 2和
方 式 3时 , 送 的第 9位 数 据 , 发 由软 件 置位 或 复位 .B =1表 示 该 帧 数 据 为地 址 帧 ;B =0表 示 发送 的 T8 T8
数 据 帧 .B R 8在 方 式 2和方 式 3时 , 收 的是 第 9位数 据 . I I 送/ 收 中 断标 志位 , 须 由软 件 清 0 接 T/ 发 R 接 必 .
12 5 . 1系列 单片 机 主从 式 多机 通 讯原 理
主 从 式 多 机 通 讯 系 统 是 由 1台 主 机
和 多 台 从 机 组 成 的 , 机 发 送 信 息 可 被 各 主 个 从 机 接 收 , 从 机 只 能 对 主 机 发 送 信 而
息, 机 问不 能互 相通 讯 . 原理 如 图 1 从 其
所 示 . 各从 机 串行 口工 作 方 式 为 方 式 2 当 或 方 式 3时 , S 若 M2= 1 R N= 1 利 用 此 ,E , 5 1系 列 单 片 机 串 行 口 的 通 讯 性 能 , 实 现 可
储 和 检索 、 示 界 面 的更新 、 显 从机 的 调度 等 ) 这 类 系统 中计 算 机 与单 片机 的数 据通 讯 技 术是 决 定 整 个 系 .
51单片机的多机通信原理
51单片机的多机通信原理1. 什么是51单片机的多机通信?51单片机的多机通信是指在多个51单片机之间进行数据传输和通信的过程。
通过多机通信,可以实现不同单片机之间的数据共享和协作,从而实现更加复杂的功能。
2. 多机通信的原理是什么?多机通信的原理是通过串口进行数据传输。
在多个单片机之间,可以通过串口进行数据的发送和接收。
通过定义好的协议,可以实现数据的传输和解析,从而实现多机之间的通信。
3. 多机通信的步骤是什么?多机通信的步骤包括以下几个方面:(1)定义好通信协议:在多机通信之前,需要定义好通信协议,包括数据的格式、传输方式等。
(2)设置串口参数:在单片机中,需要设置好串口的参数,包括波特率、数据位、停止位等。
(3)发送数据:在发送数据之前,需要将数据按照协议进行格式化,然后通过串口发送出去。
(4)接收数据:在接收数据之前,需要设置好串口的中断,然后在中断中接收数据,并按照协议进行解析。
(5)处理数据:在接收到数据之后,需要对数据进行处理,包括数据的存储、显示等。
4. 多机通信的应用场景有哪些?多机通信的应用场景非常广泛,包括以下几个方面:(1)智能家居系统:通过多机通信,可以实现智能家居系统中不同设备之间的数据共享和协作。
(2)工业控制系统:在工业控制系统中,多机通信可以实现不同设备之间的数据传输和控制。
(3)智能交通系统:在智能交通系统中,多机通信可以实现不同设备之间的数据共享和协作,从而实现更加智能化的交通管理。
(4)机器人控制系统:在机器人控制系统中,多机通信可以实现不同机器人之间的数据传输和控制,从而实现更加复杂的任务。
5. 多机通信的优缺点是什么?多机通信的优点包括以下几个方面:(1)实现数据共享和协作:通过多机通信,可以实现不同设备之间的数据共享和协作,从而实现更加复杂的功能。
(2)提高系统的可靠性:通过多机通信,可以实现数据的备份和冗余,从而提高系统的可靠性。
(3)提高系统的扩展性:通过多机通信,可以实现系统的模块化设计,从而提高系统的扩展性。
基于51单片机的多机通信系统设计
基于51单片机的多机通信系统设计多机通信系统是指通过一台主机与多台从机之间进行数据交互和通信的系统。
在本设计中,我们将使用51单片机实现一个基于串行通信的多机通信系统。
系统硬件设计如下:1.主机:使用一个51单片机作为主机,负责发送数据和接收数据。
2.从机:使用多个51单片机作为从机,每个从机负责接收数据和发送数据给主机。
3.串口:主机和从机之间通过串口进行通信。
我们可以使用RS232标准通信协议。
系统软件设计如下:1.主机设计:a.初始化串口:设置串口参数,如波特率、数据位、停止位等。
b.发送数据:将需要发送的数据存储在发送缓冲区中,通过串口发送给从机。
c.接收数据:接收从机发送的数据,并存储在接收缓冲区中。
2.从机设计:a.初始化串口:设置串口参数,如波特率、数据位、停止位等。
b.接收数据:接收主机发送的数据,并存储在接收缓冲区中。
c.发送数据:将需要发送的数据存储在发送缓冲区中,通过串口发送给主机。
系统工作流程如下:1.主机启动,执行初始化操作,包括初始化串口。
2.从机启动,执行初始化操作,包括初始化串口。
3.主机发送数据给从机:主机将需要发送的数据存储在发送缓冲区中,通过串口发送给从机。
4.从机接收并处理数据:从机接收主机发送的数据,并存储在接收缓冲区中,对接收到的数据进行处理。
5.从机发送数据给主机:从机将需要发送的数据存储在发送缓冲区中,通过串口发送给主机。
6.主机接收并处理数据:主机接收从机发送的数据,并存储在接收缓冲区中,对接收到的数据进行处理。
7.主机和从机循环执行步骤3-6,实现多机之间的数据交互和通信。
多机通信系统的设计考虑到以下几个方面:1.硬件设计:需要合理选择单片机和串口的类型和参数,确保系统的稳定性和可靠性。
2.软件设计:需要设计适应系统需求的通信协议和数据处理提取方法,保证数据的准确性和完整性。
3.通信协议:需要定义主机和从机之间的通信协议,包括数据的格式、传输方式等,以便实现正确的数据交互。
实时通信监测的单片机多机通信电路设计
实时通信监测的单片机多机通信电路设计*孙万麟(昌吉学院物理系,昌吉831100)*基金项目:新疆维吾尔自治区教育科学 十二五 规划课题(145006)㊂摘要:为了改善单片机通信过程中时常会产生一些异常状态,本文采用P r o t e u s 软件设计及仿真了一个主要由4个80C 51单片机㊁3个七段L E D 数码管㊁4ˑ4矩阵式键盘㊁模拟开关及电压探针等构成的改进多机通信电路,并借助P r o -t e u s 仿真图表㊁示波器及查看寄存器存储窗口等虚拟工具对仿真过程进行了验证性分析㊂仿真结果表明,改进多机通信电路能够实时监测通信是否正常,提高了单片机的通信稳定性㊂关键词:P r o t e u s ;80C 51;多机通信电路;仿真中图分类号:T P 273 文献标识码:AD e s i g n o f M u l t i -c o m p u t e r C o m m u n i c a t i o n C i r c u i t f o r R e a l -t i m e C o m m u n i c a t i o n M o n i t o r i n gS u n W a n l i n(D e p a r t m e n t o f P h y s i c s ,C h a n g j i C o l l e g e ,C h a n g ji 831100,C h i n a )A b s t r a c t :I n o r d e r t o i m p r o v e s o m e a b n o r m a l c o n d i t i o n s t h a t o f t e n o c c u r r s i n t h e c o mm u n i c a t i o n p r o c e s s o f s i n g l e c h i p m i c r o c o m pu t e r (S C M ),t h e P r o t e u s s o f t w a r e i s u s e d t o d e s i g n a n d s i m u l a t e a n i m p r o v e d m u l t i -c o m p u t e r c o mm u n i c a t i o n c i r c u i t m a i n l y c o m po s e d o f f o u r 80C 51s i n g l e c h i p m i c r o c o m p u t e r s ,t h r e e 7-s e g m e n t L E D d i g i t a l t u b e s ,4ˑ4m a t r i x k e y b o a r d ,a n a l o g s w i t c h a n d v o l t a ge p r o b e ,e t c .T h e s i m u l a t i o n p r o c e s s i s v e r if i e d a n d a n a l y z e d b y m e a n s o f P r o t e u s s i m u l a t i o n c h a r t ,o s c i l l o s c o p e a n d v i r t u a l t o o l s s u c h a s v i e w i ng r e gi s t e r s t o r a g e w i n d o w.T h e s i m u l a t i o n r e s u l t s s h o w t h a t t h e i m p r o v e d m u l t i -c o m p u t e r c o mm u n i c a t i o n c i r c u i t c a n m o n i t o r w h e t h e r t h e c o mm u -n i c a t i o n i s n o r m a l o r n o t i n r e a l t i m e a n d i m p r o v e t h e c o mm u n i c a t i o n s t a b i l i t y of S C M.K e yw o r d s :P r o t e u s ;80C 51;m u l t i -c o m p u t e r c o mm u n i c a t i o n c i r c u i t ;s i m u l a t i o n 0 引 言随着计算机技术的飞速发展,单片机技术已在各行各业应用中越来越普及㊂今天,单片机技术已由原来的单工通信㊁半双工通信发展到如今的全双工通信和无线通信,并逐渐向多机互联趋势发展,但由于单片机在多机通信过程中会出现延时㊁中断㊁通信错误等异常情况[1-6],因而本文对多机通信电路进行设计及改进,提高了单片机通信的稳定性㊂1 多机通信电路设计设计多机通信电路器件为:采用4个80C 51嵌入式单片机U 1㊁U 2㊁U 3和U 4,其中U 1为主机,U 2㊁U 3和U 4为从机,利用4ˑ4矩阵式键盘向主机U 1提供通信信息,主机U 1的P 1口作为通信信息接收端,假定通过键盘向主机U 1提供模拟信号 2 (10100100B=A 4H ),作为各机相互通信数据,在主机U 1的P 0.0~P 0.2端口设置多路开关K 1㊁K 2㊁K 3,用来分别控制主机U 1与从机U 2㊁U 3㊁U 4之间相互独立通信,并用3个七段共阳型L E D 数码管显示从机接收到的通信信息,为了实时检测主机与从机之间是否正常通信,3个从机P 2.3端口均连接一只L E D 发光二极管D 1㊁D 2㊁D 3,并设置二极管点亮表示通信正常,采用P r o t e u s 软件设计的改进电路如图1所示㊂图1中,主机U 1和3个从机U 2㊁U 3和U 4之间采用全双工通信,因而将各从机T X D 端口分别与主机R X D 端口连接,各从机R X D 端口分别与主机T X D 端口连接,并在主机U 1P 0.0~P 0.2端口设置多路开关K 1㊁K 2及K 3,各个开关功能如表1所列㊂为了直观了解通信过程,添加了虚拟分析工具仿真图表来实时监测通信过程中的时序变化㊂为了检测主机和从机程序执行情况,在主机U 1的R X D 端口和T X D 端口㊁从机U 2的P 0.0~P 0.7端口㊁三个从机R X D 端口及P 2.3端口等都添加电压探针,各个电压探针标号和引脚号如表2所列㊂除此之外,设置4组开关来模拟通信电路故障,并在主机U 1的R X D 端和T X D端接入虚拟仪器示波器,通过示波器波形与时序图对比检测主机U 1是否存在故障㊂另外,在P 0.0~P 0.7端口连图1 改进多机通信电路图接上拉电阻,用于保护电路和保证通信稳定性㊂表1 各个开关功能开 关开关功能K 1闭合K 1,U 1与U 2通信K 2闭合K 2,U 1与U 3通信K 3闭合K 3,U 1与U 4通信表2 电压探针标号和引脚号对照表单片机探针标号引脚号单片机探针标号引脚号U 1P 3.1/T X D T X D P 3.0/R X DR XDU 3P 2.3/A 11U 3(P 2.3/A 11)P 3.0/R X DU 3r x dU 4P 2.3/A 11U 4(P 2.3/A 11)P 3.0/R X DU 4r x dU 2P 2.3/A 11U 3(P 2.3/A 11)P 3.0/R X DU 3r x dU 2(P 0.0/A D 0)U 2(P 0.0/A D 0)U 2(P 0.1/A D 1)U 2(P 0.1/A D 1)U 2(P 0.2/A D 2)U 2(P 0.2/A D 2)U 2(P 0.3/A D 3)U 2(P 0.3/A D 3)U 2(P 0.4/A D 4)U 2(P 0.4/A D 4)U 2(P 0.5/A D 5)U 2(P 0.5/A D 5)U 2(P 0.6/A D 6)U 2(P 0.6/A D 6)2 软件设计本文使用C 语言编写多机通信源程序代码,利用K e i l软件对源程序代码进行调试及编译,其中图2为主机程序流程图,图3为子程序通信流程图,图4为从机程序流程图[7-10]㊂3 仿真及其分析将源程序编译生成对应的.H E X 文件,并加载到图1图2 主机程序流程图对应的主从机单片机中,点击全速运行按钮进行仿真㊂首先闭合开关K 1状态,发光二极管D 1点亮,表示主机U 1与从机U 2正常通信,从机U 2接收到主机U 1发送数据 2,同时与从机U 2相连的七段L E D 数码管显示 2㊂紧接着,断开开关K 1㊁闭合开关K 2,发光二极管D 1熄灭㊁D 2点亮,表示主机U 1与从机U 2通信中断㊁主机U 1与从机U 3通信正常,从机U 3接收到主机U 1发送数据 2,同时与从机U 3相连的七段L E D 数码管显示 2 ,当然从机U 2存储主机U 1发送的数据 2 ,故仍显示 2㊂图3 子程序通信流程图最后主机U 1与从机U 4相互通信,因为是在主机U 1与从机U 2㊁U 3通信之后,所以3个七段L E D 数码管图4 从机程序流程图均显示 2㊂3.1 仿真图表分析在主机U 1与从机U 4相互通信时,点击图1中仿真图表,其程序执行时序变化图如图5所示㊂图5中,U 1发送端u 1t x d 波形变化与从机U 2㊁U 3㊁U 4接收端u 2r x d ㊁u 3r x d ㊁u 4r x d 波形变化一致,表明主机U 1与从机U 2㊁U 3㊁U 4之间是正常通信㊂再根据全双工通信数据格式,除去起始位㊁校验位和停止位,剩余的是数据位(低位在前,高位在后),由图5数据波形得出数据位为00100101B ,则通信数据就是10100100B ,这正是通信数据 2的字段码,证实主机U 1发送端成功发送数据,从机U 2㊁U 3㊁U 4接收端成功接收数据㊂图5 主从机通信时序图3.2 内部寄存器分析采用P r o t e u s 的W a t c h W i n d o w 窗口查看单片机传输数据,以主机U 1与从机U 2相互通信为例,主机U 1接收到矩阵式键盘提供的通信数据 2 (10100100B=A 4H ),并将 A 4H 存入存储寄存器S B U F 中,如图6所示,当从机U 2接收到数据时,与从机U 2的P 0口相连的L E D 数码管立即显示 2 ,因 A 4H 就是共阳型L E D 数码管显示十进制数 2 所对应的字段码,则P 0存储A 4H ,如图7所示㊂图6 U 1寄存器数据比较图6和图7,主机S B U F 中存储数据和从机P 0口存储数据一致,且P 3口均为高电平F F H ,证实主机U 1与从机U 2成功通信㊂图7 U 2寄存器数据3.3电路故障检测及分析图8 模拟故障电路图在图1中设置4组开关模拟通信电路故障,如图8所示,并在主机U 1的R X D 端和T X D 端接入虚拟仪器示波器,通过比较示波器波形与时序图来检测主机U 1是否存在故障㊂表3 开关功能开关动作线路情况S 1闭合U 1R X D 端置高电平S 2闭合U 1T X D 端置高电平S 3闭合U 1R X D 端接地S 4闭合U 1T X D 端接地在图8中,利用开关接入高电平或者接地来模拟通信电路故障,各开关功能如表3所列㊂这里以开关S 3闭合为例,闭合S 3时,主机U 1的R X D 端接地,即主机接收端恒为0,观察示波器T X D 端和R X D 端波形,如图9所示㊂图9 S 3闭合波形图由图9示波器波形与时序图对比可知,主机U 1的R X D 端是恒为低电平的一条直线,与时序图主机u 1r x d端波形一致,而主机U 1的T X D 端有数据波形,且与各从机u 2t x d ㊁u 3t x d ㊁u 4t x d 数据波形变化一致,说明此时主机U 1在发送数据,各从机在接收数据,电路通信正常进行㊂4 结 语本文利用P r o t e u s 软件设计及仿真了一个34表1 参训学员训练考评法律意识法律要求处置程序武力适用战术意识安全距离戒备动作语言交流手枪使用能力持枪动作射击次数射击命中率结 语将虚拟现实技术应用于警务战术训练中,增强了警务人员的判定决策能力㊁战术协同能力和武力使用能力水平,确保了警务执法活动中警察武力使用的规范性㊁合法性㊁安全性和有效性,推进警务战术训练向信息化㊁实战化方向转变㊂本文将虚拟现实技术与警察战术训练相结合,以情境认知㊁表象训练和沉浸理论为支撑,构建多层级松耦合模块化架构,通过对警察物理系统功能㊁框架进行设计规划,实现警务战术的 基本训练㊁判定训练㊁战术训练 功能㊂文章最后选择了基础的持枪训练和复杂的持刀暴力情境两类典型案例来阐述实战模拟训练的实现过程,为运用虚拟仿真系统执行官警务实战化训练提供可靠的实现路径㊂参考文献[1]王振华,黄冶,张光雨.V R 反恐处突战术训练平台构建研究[J ].铁道警察学院学报,2017,27(3):5155.[2]马志磊,张麟寰,王绪东.5G 视角下V R 虚拟技术在运动训练领域的理论探究[J ].体育世界:学术版,2020(2):111112.[3]罗博峰,周清.虚拟现实技术训练应用研究综述[J ].计算机仿真,2020,37(4):14.[4]曾金明,胡永生.创新军事地形学课程实战化教学研究[J ].军事交通学院学报,2015,17(5):7982.[5]瞿杨,李培林,王崴,等.美军虚拟训练发展现状及趋势[J ].飞航导弹,2013(5):2428.[6]要进辉,赵庆海,李建华.虚拟现实技术在消防特勤模拟训练中的应用[J ].安全,2018,33(3):1517.[7]耿小兵,刘思江.洗消分队战术技术仿真训练系统研究[J ].系统仿真学报,2017,24(2):339343.[8]袁狄平,靳学胜,张晓丽,等.沉浸式灭火救援计算机模拟训练平台的开发[J ].消防科学与技术,2016,31(2):162165.[9]高桂清,马良.导弹分队战术训练系统战场环境仿真研究[J ].舰船电子工程,2019,32(5):9698.[10]廖奇.谈实战化训练环境对消防部队灭火救援能力的提升[J ].武警学院学报,2017,28(12):3032.[11]季旭升,陈志付,崔文雄.网络化火力作战单元集成训练[J ].四川兵工学报,2017,31(4):117118.[12]杨杰,陈芬,王润岗.基于H L A 的坦克分队战术训练仿真系统[J ].火力与指挥控制,2018,35(3):144146.[13]王亚,汤万刚,罗代升,等.虚拟现实技术在军事领域的应用及对未来战争的影响[J ].现代防御技术,2015(4):6872.[14]张跃,赵建元,许舟兵.虚拟仪器与虚拟实验在军队院校教育中的应用[J ].实验室研究与探索,2017(4):6467,70.[15]章小辉,张璋.警察战术训练系统仿真技术应用初探[J ].系统仿真学报,2016(S 2):945948.[16]杨宏军,韩志军.坦克分队战术综合演练仿真系统[J ].计算机仿真,2018(3):1012,15.[17]柳玉,张蓉.战术训练模拟系统M u l t i A ge n t 协同通信机制研究[J ].武汉大学学报:理学版,2018,60(3):225230.[18]孙少斌,林学华.坦克分队战术仿真训练系统的设计与实现[J ].火力与指挥控制,2018,33(11):127131.[19]陈文彪.关于加强警察查缉战术教学训练的思考[J ].公安大学学报,2017(2):106110.张帅奇(讲师),主要研究方向为警务技能㊁警务战术㊂(责任编辑:薛士然 收稿日期:2020-07-20) 改进单片机多机通信电路,并对电路仿真过程进行了验证性分析㊂仿真结果表明,改进多机通信电路能够实时监测通信是否正常,提高了单片机通信的稳定性㊂参考文献[1]袁小平,李子旋,陈烨,等.基于P r o t e u s 的电子技术综合设计虚拟实验环境建设[J ].实验技术与管理,2017,34(8):104106.[2]胡中玉,岳强,任杰,等.基于P r o t e u s 仿真的电工电子课程教学创新[J ].实验技术与管理,2016,33(4):128130.[3]邓力.基于K e i l 时序逻辑和P r o t e u s 的电路仿真[J ].实验室研究与探索,2017,36(1):8083.[4]党新安,唐鹏,杨立军.单片机控制P I D 调节的自平衡自行车[J ].机械设计与制造,2019(10):115118.[5]宋杰,丁志远.基于P r o t e u s 的X 86中断仿真异常问题探究和对策[J ].实验室研究与探索,2015,34(8):8184.[6]姚雪梅,陈永前.P r o t e u s 和K e i l 模拟交通灯的实践教学[J ].实验室研究与探索,2016,35(11):107109,136.[7]孙万麟,杨莲红,宋莉莉.单片机虚拟实验室的构建及其应用[J ].实验技术与管理,2014,31(7):229231.[8]邓力.使用P r o t e u s 仿真图表对单片机指令时序仿真[J ].科技通报,2013(5):130133.[9]孙万麟.基于P r o t e u s 的单片机通信电路设计[J ].实验室研究与探索,2016,35(10):135138.[10]田社平,方向忠,张峰.V S P D 和P r o t e u s 串口通信教学实验[J ].实验室研究与探索,2018,37(9):211214,334.孙万麟(副教授),主要从事单片机与嵌入式系统研究㊂(责任编辑:薛士然 收稿日期:2020-07-10)。
单片机双机通信接口应用
单片机双机通信接口应用在现代电子技术领域,单片机的应用越来越广泛。
单片机之间的通信成为实现复杂系统功能的关键环节之一。
双机通信接口的应用,为各种设备之间的数据交换和协同工作提供了有效的途径。
单片机,简单来说,就是在一块芯片上集成了微处理器、存储器、输入输出接口等功能部件的微型计算机。
它具有体积小、成本低、可靠性高、控制功能强等优点,被广泛应用于工业控制、智能仪表、家用电器、通信设备等众多领域。
双机通信,指的是两个单片机之间进行数据传输和信息交换。
实现双机通信的关键在于通信接口的选择和配置。
常见的双机通信接口方式有串行通信和并行通信。
串行通信是指数据一位一位地按顺序传输。
这种方式只需要少数几根数据线,就能在两个设备之间进行通信,因此硬件成本较低,连线简单。
串行通信又分为同步串行通信和异步串行通信。
异步串行通信相对简单,不需要时钟信号进行同步,通信双方按照约定的波特率和数据格式进行通信。
例如,常见的 UART(通用异步收发器)就是一种异步串行通信接口。
并行通信则是数据的各位同时进行传输。
它的传输速度快,但需要较多的数据线,硬件成本较高,连线也较为复杂。
在实际应用中,并行通信通常用于短距离、高速的数据传输。
在选择双机通信接口时,需要考虑多种因素,如通信距离、数据传输速率、系统复杂度、成本等。
如果通信距离较远,对传输速率要求不高,串行通信是一个较好的选择;如果需要高速传输大量数据,且通信距离较短,并行通信可能更为合适。
以两个基于 51 单片机的系统为例,来探讨一下双机通信的实现。
假设我们要实现一个温度监测系统,一个单片机负责采集温度数据,另一个单片机负责接收并处理这些数据,然后进行显示或控制。
对于串行通信,我们可以使用 UART 接口。
首先,需要对两个单片机的 UART 进行初始化设置,包括波特率、数据位、停止位、校验位等参数。
然后,发送方将温度数据按照约定的格式进行封装,并通过UART 发送出去;接收方则不断监测 UART 接收缓冲区,当有数据到达时,进行读取和解析。
51单片机双机通信原理(一)
51单片机双机通信原理(一)51单片机双机通信简介•什么是51单片机双机通信•双机通信的作用和应用场景基本原理•单片机串口通信原理–串口通讯协议–数据帧的构成•串口通信的硬件连接–引脚连接方式–串口信号格式设置单向通信实现•主从模式–主机发送数据–从机接收数据•编程实现–主机端程序设计–从机端程序设计双向通信实现•主从模式–主机发送数据–从机接收数据–主机接收数据–从机发送数据•编程实现–主机端程序设计–从机端程序设计通信协议的设计•自定义通信协议–协议的格式–数据的解析与封装高级功能扩展•多机通信实现•数据加密与解密•异常处理与误码纠错总结•51单片机双机通信的基本原理和实现方式•可能遇到的问题及解决方案•双机通信的进一步应用展望简介51单片机双机通信是指使用51系列单片机实现两台或多台单片机之间的数据传输和通信。
双机通信可以实现在多个单片机之间传递数据、完成控制指令的下发、数据的采集和处理等功能。
在各种电子设备和嵌入式系统中,双机通信被广泛应用,可以实现设备之间的互联和协同工作,提高系统的灵活性和智能化水平。
基本原理单片机串口通信原理串口通信是一种将数据通过串行线路进行传输的通信方式。
在51单片机的串口通信中,常用的是UART(通用异步收发传输器)通信协议。
UART通信采用的是异步传输方式,数据按照固定的数据帧格式进行传输。
串口通信的硬件连接在51单片机的串口通信中,需要将主机和从机的UART引脚连接起来。
常用的连接方式是通过一对直线的串行数据线(TXD和RXD)连接主从机,其中TXD是发送数据的引脚,RXD是接收数据的引脚。
为了确保数据的正确传输,还需要进行串口信号格式的设置,包括波特率、数据位数、停止位数和校验位等。
单向通信实现主从模式在单向通信中,主机负责发送数据,从机负责接收数据。
主机通过串口发送数据帧,从机通过串口接收数据帧,并进行相应的处理。
编程实现在主机端程序设计中,需要配置串口通信的参数,并使用串口发送数据的相关函数来发送数据。
51单片机多机通信程序
51单片机多机通信程序(主机部分) /* multi_m.c *//* 多机通信的主机部分*/#ifndef __MULTI_M_C__#define __MULTI_M_C__#include <AT89X51.H>#include <STRING.H>#define __MAX_LEN_ 64 // 数据最大长度#define _MHZ_ 11 // 设置单片机使用的晶振频率(11.0592MHz) /* 以下为程序协议中使用的握手信号*/#define __SUCC_ 0x0f // 数据传送成功#define __ERR_ 0xf0 // 数据传送错误void init_serial(); // 串口初始化void send_data(unsigned char *buf); // 发送数据void delay10ms(unsigned int count); // 延时子程序(10ms) void main(){char buf[__MAX_LEN_];unsigned char i = 0;unsigned char tmp;unsigned char addr; // 该字节用于保存要通信的从机地址/* 为缓冲区赋初值*/P0 = 0xff;while(P1 != 0) // 每隔100ms从P0口读取,若读取到0则表明数据采集结束{*(buf+i) = P0;delay10ms(10); // 延时100msP0 = 0xff;i++;}*(buf+i) = 0; // 缓冲区最后一个字节为0表示数据结束/* 读要访问的分机地址*/P0 = 0xff;addr = P0;/* 串口初始化*/init_serial(); // 初始化串口EA = 0; // 关闭所有中断/* 发送地址帧并接收应答信息,如果接收的信号与发送的地址信息不同,则重新发送地址帧*/tmp = addr-1;while(tmp != addr){/* 发送从机地址*/TB8 = 1; // 发送地址帧SBUF = addr;while(!TI);TI = 0;/* 接收从机应答*/RI = 0;while(!RI);tmp = SBUF;RI = 0;}/* 发送数据并接收校验信息,如果接收的信号为0FH,表示从机接收成功,否则将重新发送该组数据*/tmp = __ERR_;while(tmp != __SUCC_){send_data(buf); // 发送数据RI = 0;while(!RI);tmp = SBUF;RI = 0;}while(1); // 程序结束,进入死循环}/* 初始化串口*/void init_serial(){TMOD = 0x20; //定时器T1使用工作方式2TH1 = 250; // 设置初值TL1 = 250;TR1 = 1; // 开始计时PCON = 0x80; // SMOD = 1SCON = 0xd0; //工作方式3,9位数据位,波特率9600bps,允许接收}/* 发送数据*/void send_data(unsigned char *buf){unsigned char len; // 保存数据长度unsigned char ecc; // 保存校验字节len = strlen(buf); // 计算要发送数据的长度ecc = len; // 开始进行校验字节计算/* 发送数据长度*/TB8 = 0; // 发送数据帧SBUF = len; // 发送长度while(!TI);TI = 0;/* 发送数据*/for(i=0; i<len; i++){ecc = ecc^(*buf); // 计算校验字节TB8 = 0; // 发送数据帧SBUF = *buf; // 发送数据buf++;while(!TI);TI = 0;}/* 发送校验字节*/TB8 = 0; // 发送数据帧SBUF = ecc; // 发送校验字节while(!TI);TI = 0;}/* 延时10ms,精度较低,参数count为延时时间*/ void delay10ms(unsigned int count){unsigned int i, k;unsigned char j;unsigned int tmp;tmp = (int)((100*_MHZ_)/12);for(i=0; i<count; i++)for(j=0; j<100; j++)for(k=0; k<tmp; k++);}#endif51单片机多机通信程序(从机部分)/* multi_s.c *//* 多机通信的从机部分*/#ifndef __MULTI_S_C__#define __MULTI_S_C__#include <AT89X51.H>#include <STRING.H>#define __MAX_LEN_ 64 // 数据最大长度#define _MHZ_ 11 // 设置单片机使用的晶振频率(11.0592MHz)/* 以下为程序协议中使用的握手信号*/#define __SUCC_ 0x0f // 数据传送成功#define __ERR_ 0xf0 // 数据传送错误void init_serial(); // 串口初始化unsigned char recv_data(unsigned char *buf); // 接收数据void Beep_ok(); // 蜂鸣表示数据接收ok,该函数代码未给出void main() {char buf[__MAX_LEN_];unsigned char i = 0;unsigned char tmp = 0xff;unsigned char addr; // 保存本机地址/* 从P1口读取本机地址*/P1 = 0xff;addr = P1;/* 串口初始化*/init_serial(); // 初始化串口EA = 0; // 关闭所有中断/* 进入设备应答阶段*/while(1){SM2 = 1; // 只接收地址帧/* 如果接收到的地址帧不是本机地址,则继续等待*/ tmp = addr-1;while(tmp != addr){RI = 0;while(!RI);tmp = SBUF;RI = 0;}/* 发送应答信号,并做好接收数据的准备*/TI = 0;TB8 = 0; // 主机不检测该位SBUF = addr;while(!TI);TI = 0;SM2 = 0; // 允许接收数据信息/* 数据接收*/tmp = 0xff;while(tmp == 0xff) // 如果数据校验失败则重新接收数据{tmp = recv_data(buf); // 校验失败返回0xff,检测到地址帧则返回0xfe,接收成功则返回0}if(tmp == 0xfe) // 在数据接收过程中,如果发现地址帧,则重新开始整个接收过程continue;Beep_ok(); // 蜂鸣表示数据接收成功}}/* 初始化串口*/void init_serial(){TMOD = 0x20; //定时器T1使用工作方式2TH1 = 250; // 设置初值TL1 = 250;TR1 = 1; // 开始计时PCON = 0x80; // SMOD = 1SCON = 0xd0; //工作方式3,9位数据位,波特率9600bps,允许接收}/* 接收数据,注意该函数使用buf指向的缓冲区保存数据,在数据末尾使用’\0’表示数据结束* 返回值为0,数据校验成功,返回值为0xfe,接受过程中接收到地址帧,返回值为0xff,数据校验失败*/unsigned char recv_data(unsigned char *buf){unsigned char len; // 该字节用于保存数据长度unsigned char ecc; // 该字节用于保存校验字节unsigned char i,tmp;/* 接收数据长度*/RI = 0;while(!RI);if(RB8 == 1) // 若当前接收为地址帧则返回0xfereturn 0xfe;len = SBUF;RI = 0;/* 使用len的值为校验字节ecc赋初值*/ecc = len;/* 接收数据*/for(i=0; i<len; i++){while(!RI);if(RB8 == 1) // 若当前接收为地址帧则返回0xfe return 0xfe; *buf = SBUF; // 接收数据ecc = ecc^(*buf); // 进行字节校验RI = 0;buf++;}*buf = 0; // 表示数据结束/* 接收校验字节*/while(!RI);if(RB8 == 1) // 若当前接收为地址帧则返回0xfe return 0xfe; tmp = SBUF;RI = 0;/* 进行数据校验*/ecc = tmp^ecc;if(ecc != 0) // 校验失败{*(buf-len) = 0; // 清空数据缓冲区TI = 0; // 发送校验失败信号TB8 = 0;SBUF = __ERR_;while(!TI);TI = 0;return 0xff; // 返回0xff表示校验错误} TI = 0; // 校验成功TB8 = 0;SBUF = __SUCC_;while(!TI);TI = 0;return 0; // 校验成功,返回0}#endif。
基于51单片机的双机通信
5.1.1、机械特性: 、机械特性
RS-232C接口规定使用 针连接 接口规定使用25针连接 接口规定使用 器,连接器的尺寸及每个插针的排列位 置都有明确的定义。 置都有明确的定义。
5.1.2、功能特性 、
5.1.3、过程特性 、 过程特性规定了信号之间的时序关系, 过程特性规定了信号之间的时序关系,以便正确地 接收和发送数据 。
4、波特率的计算 波特率的计算
方式0的波特率 = fosc/12 方式 的波特率 方式2的波特率 ( 方式 的波特率 =(2SMOD/64)· fosc ) 方式1的波特率 ( 溢出率) 方式 的波特率 =(2SMOD/32)·(T1溢出率) ) ( 溢出率 方式3的波特率 ( 溢出率) 方式 的波特率 =(2SMOD/32)·(T1溢出率) ) ( 溢出率
异步通信的数据格式 :
异步通信的特点: 异步通信的特点:不要求收发双方时钟的 严格一致,实现容易,设备开销较小, 严格一致,实现容易,设备开销较小,但 每个字符要附加2~ 位用于起止位 位用于起止位, 每个字符要附加 ~3位用于起止位,各帧 之间还有间隔,因此传输效率不高。 之间还有间隔,因此传输效率不高。
双 机 通 信
●计算机串行通信基础 ● 80C51的串行口 ●单片机串行口编程应用举例
一、计算机串行通信基础
● 计算机通信是指计算机与外部设备或计算机与 计算机之间的信息交换。 计算机之间的信息交换。 通信有并行通信和串行通信两种方式。 ● 通信有并行通信和串行通信两种方式。
1.1并行通信: 并行通信: 并行通信
TXD SBUF
TH1 TL1 1
控制门 发送控制器
÷16
TI
去串口中断
≥1
A
单片机双机之间的串行通信设计
单片机双机之间的串行通信设计1.引言单片机双机之间的串行通信是指两个或多个单片机之间通过串口进行数据传输和通信的过程。
串行通信是一种逐位传输数据的方式,与并行通信相比,它占用的硬件资源更少,且传输距离较远。
本文将介绍单片机双机之间串行通信的设计过程,包括硬件设计和软件编程。
2.硬件设计串行通信需要使用到两个主要的硬件部件:串口芯片和通信线路。
串口芯片负责将要发送或接收的数据转换成串行数据流,并通过通信线路进行传输。
通信线路通常包括两根传输数据的线路(TX和RX)、地线和时钟线。
2.1串口芯片的选择常用的串口芯片有MAX232、MAX485、CH340等。
选择合适的芯片需要考虑通信距离、通信速率、系统的功耗等因素。
对于较短的通信距离和较低的通信速率,可以选择MAX232芯片;而对于长距离通信和较高的通信速率,可以选择MAX485芯片。
2.2通信线路设计通信线路的设计需要考虑信号的传输质量和抗干扰能力。
通常使用双绞线或者屏蔽线路来减小信号的串扰和干扰。
对于短距离通信,双绞线即可满足需求;而对于长距离通信,需要采用屏蔽线路来减小串扰和干扰。
3.软件设计串行通信的软件设计主要包括通信协议的制定和数据包的格式规定。
3.1通信协议的选择通信协议是指数据传输的一套规则和约定,它规定了数据的格式、传输顺序、误码校验等内容。
常用的通信协议有UART、RS232、SPI、I2C等。
UART是最常用的通信协议,它一般使用异步通信方式,并具有较高的通信速率和稳定性。
3.2数据包的格式规定数据包是一组有意义的数据的集合,它包括起始位、数据位、停止位和校验位等。
起始位用于标识一个数据包的开始,通常为逻辑低电平;数据位用于存储要传输的数据;停止位用于标识数据包的结束,通常为逻辑高电平;校验位用于检测数据传输过程中是否发生错误。
校验位可以是奇校验、偶校验、无校验等。
4.实验步骤4.1连接硬件根据硬件设计部分的要求,将串口芯片和通信线路连接到单片机上。
单片机双机之间的串行通信设计
单片机双机串行实验报告实验报告:单片机双机串行通信实验一、实验目的本实验旨在通过单片机实现双机间的串行通信,包括数据的发送和接收,并利用这种通信方式完成一定的任务。
二、实验原理1.串行通信:串行通信是将数据一个个位发送或接收的方式。
数据通过一个线路逐位发送或接收,可以减少通信所需的线路数目。
2. UART串口通信:UART是通用异步收发传输器(Universal Asynchronous Receiver/Transmitter)的简称,是一种最常用的串口通信方式,通常用于单片机与计算机、单片机与单片机之间的通信。
3.串口模块:串口模块是负责将数据转变为串行传输的硬件模块,包括发送端和接收端。
通过设置波特率、数据位、校验位和停止位等参数,可以实现数据的可靠传输。
4.单片机串口通信:单片机内部集成了UART串口通信接口,只需要通过相应的寄存器配置,可以实现串口通信功能。
5.双机串行通信:双机串行通信是通过串口将两台单片机进行连接,一台单片机作为发送端,负责将数据发送出去;另一台单片机作为接收端,负责接收并处理发送的数据。
三、实验器材与软件1.实验器材:两台单片机、USB转TTL模块、杜邦线若干。
2. 实验软件:Keil C51集成开发环境。
四、实验内容与步骤1.配置发送端单片机(1)连接单片机和USB转TTL模块,将USB转TTL模块的TXD端连接到单片机的P3口,将GND端连接到单片机的地线。
(2)在Keil C51环境下创建新工程,编写发送端程序。
(3)配置串口通信的波特率、数据位、校验位和停止位,并打开串口发送中断。
(4)循环发送指定的数据。
2.配置接收端单片机(1)连接单片机和USB转TTL模块,将USB转TTL模块的RXD端连接到单片机的P3口,将GND端连接到单片机的地线。
(2)在Keil C51环境下创建新工程,编写接收端程序。
(3)配置串口通信的波特率、数据位、校验位和停止位,并打开串口接收中断。
proteus仿真51单片机串口双机通讯
51单片机的串口双机通讯一、什么是串口串口是串行发送数据的接口,是相对于并口来说的,是一个广泛的定义。
本期我们说的串口指的是指UART或是RS232。
二、什么是波特率波特率是指串行端口每秒内可以传输的波特位数。
这里所指的波特率,如标准9600不是每秒种可以传送9600个字节,而是指每秒可以传送9600个二进位。
一个字节需要8个二进位,如用串口模式1来传输,那么加上起始位和停止位,每个数据字节就要占用10个二进位。
9600bps用模式1传输时,每秒传输的字节数是9600÷10=960个字节,发送一个字节大概需要1ms时间。
三、51单片机串口相关寄存器1、SCON串口控制寄存器(1)SM0和SM1:方式选择寄存器SM0 SM1 工作方式功能波特率0 0 方式0 8位同步移位寄存器晶振频率/ 120 1 方式1 10位UART 可变1 0 方式2 11位UART 晶振频率/32或晶振频率/64 1 1 方式3 11位UART 可变多机通信是工作在方式2和方式3的,所以SM2主要用于方式2和方式3,多级通信时,SM2=1,当SM2=1时,只有当接收到的数据帧第9位(RB8)为1时,单片机才把前八位数据放入自己的SBUF中,否则,将丢弃数据帧。
当SM2=0时,不论RB8的值是什么,都会把串口收到的数据放到SBUF中。
(3)REN:允许接收位REN用于控制是否允许接收数据,REN=1时,允许接收数据,REN=0时,拒绝接收数据。
(4)TB8:要发送的第9位数据位在方式2和方式3中,TB8是要作为数据帧第9位被发送出去的,在多机通信中,可用于判断当前数据帧的数据是地址还是数据,TB8=0为数据,TB8=1为地址。
(5)RB8:接收到的第9位数据位当单片机已经接收一帧数据帧时,会把数据帧中的第9位放到RB8中。
方式0不使用RB8,在方式2和方式3中,RB8为接收到的数据帧的第9位数据位。
(6)TI:发送中断标志位方式0中,不用管他。
51单片机多机通信过程
51单片机多机通信过程51单片机具有多机通信的功能,可实现一台主机于多台从机的通信。
多机通信充分利用了单片机内部的多机通信控制位SM2。
当从机SM2,1时,从机只接收主机发出的地址帧(第九位为1),对数据帧(第九位为0)不予理睬;而当SM2=0时,可接收主机发送过来的所有信息。
多机通信的过程如下:(1)所有从机SM2均置1,处于只接收地址帧状态。
(2)主机先发送一个地址帧,其中前8位数据表示地址,第9位为1表示该帧为地址帧。
(3)所有从机接收到地址帧后,进行中断处理,把接收到的地址与自身地址相比较。
地址相符时将SM2清成0,脱离多机状态,地址不相符的从机不作任何处理,即保持SM2,1。
(4)地址相符的从机SM2=0,可以接收到主机随后发来的信息,即主机发送的所有信息。
收到信息TB8=0,则表示是数据帧,而对于地址不符的从机SM2=1,收到信息TB8=0,则不予理睬,这样就实现了主机与地址相符的从机之间的双机通信。
(5)被寻址的从机通信结束后置SM2=1,恢复多机通信系统原有的状态。
主机:设置为SM2=0。
这是双机通信的形式,可以任意的发送和接收发送:以TB8=1发送,将发送到所有SM2=1的分机。
这是呼叫某个从机。
以TB8=0发送,将发送到SM2=0的分机。
这是双机通信的形式。
------从机:先设置为SM2=1。
这是多机通信的形式,只能收到RB8=1的。
接收:仅能收到RB8=1的数据,确认是呼叫本机时,令SM2=0。
设置为SM2=0后,是双机通信的形式。
追问那从机的RB8要怎么设,是需要软件设置还是单片机自己识别,在编程的时候要怎么写, 回答从机的RB8,不需要编程。
从机的RB8,是接收到的,它是主机发送出来的TB8。
想要对TB8进行控制,需要在主机中编程。
单片机多机通讯说明:该程序为多机通讯程序,最多可以挂255个从机。
该程序主机发送端与多个从机的接收端相接,主机的接收端与多个从机的发送端相接。
单片机双机通信设计
单片机双机通信设计在现代科技的发展中,单片机作为一种控制元件,在各个领域得到了广泛应用。
单片机作为一种集成度高、可靠性强的微处理器,可以用于设计各种电子系统,包括双机通信系统。
本文将介绍单片机双机通信系统的设计原理及其实现方法。
一、引言随着科技的不断进步,双机通信系统在许多领域中扮演着重要的角色。
双机通信系统可以实现两个或多个设备之间的数据传输和交互,广泛应用于工业自动化、家庭智能化等领域。
而单片机作为微处理器的一种,拥有强大的数据处理和控制能力,可以用于设计双机通信系统。
二、设计原理单片机双机通信系统的设计原理主要包括硬件设计和软件设计两个方面。
硬件设计方面,需要选择合适的单片机芯片,并配备必要的外围电路。
通常情况下,单片机芯片具有多个I/O口、通信接口(如UART、SPI、I2C等)以及定时器等功能,可以与其他设备进行数据交互。
在双机通信系统中,两个单片机之间可以通过串口(UART)进行数据传输,因此需要在硬件设计中包含相应的串口电路。
软件设计方面,需要编写适当的程序代码,实现数据的发送和接收功能。
首先,需要定义通信协议,规定数据的格式和传输方式。
其次,需要编写发送程序和接收程序,实现数据的传输和处理。
在发送程序中,将待发送的数据按照通信协议打包,并通过串口发送出去;在接收程序中,通过串口接收数据,并按照通信协议解包,实现数据的处理和显示。
三、实现方法在单片机双机通信系统的实现中,可以采用以下方法来设计和搭建系统。
首先,选择合适的单片机芯片。
根据应用的需求和系统的复杂度,选择具有足够的存储容量和计算能力的单片机芯片。
同时,考虑到通信接口和外设的需求,选择具备串口功能的单片机芯片。
其次,进行硬件电路设计和布局。
根据选定的单片机芯片和通信方式,设计相应的硬件电路,包括串口电路、电源电路、外设接口等。
在布局过程中,应合理安排各个电路的位置,保证信号的稳定性和电路的可靠性。
接着,编写程序代码。
根据设计原理中的要求,编写适当的程序代码,实现数据的发送和接收功能。
MCS-51单片机的多机通信方式
多机通信原理
每台从机一个地址(编号) 系统中的通信总是由主机发起 主机向从机发送的信息分为地址字节和数据字节两种。地址字
节用于寻址从机,数据字节为发给从机的实际数据,二者可以 使用第9位来区分。地址字节帧的第9位为1,数据字节帧的第9 位为0 系统初始化时,将所有从机的SM2位置为1,并允许串行口接收 中断。这样,只有主机送来的地址帧才会被接收
单片机原理与应用
MCS-51单片机的多机通信方式
SCON中的SM2位可以作为多处理机通信位,使单片机方便地 应用于集散式分布系统中
集散式分布系统,或者称为分布式控制系统(DCS),是相对于 集中式控制系统而言的一种新型计算机控制系统,它是在集中 式控制系统的基础上发展、演变而来的。这种系统中,有一台 主机和多台从机。主机负责全局运行情况的监视、统计、控制 等,各从机负责本地信号的采集处理、本地资源的控制。主机 和从机通过通信线路相联系
1.2 通信协议的设计
通信协议中,除规定命令、数据的格式,还有以下一些方面需 要特别考虑
命令的顺序 差错处理 超时处理
单片机原理与应用
ห้องสมุดไป่ตู้
1.1 多机通信原理
主从式多机通信连接方式
多机通信原理
当串行口工作在方式2或3时 若SM2=1,则只有接收到的第9位数据(RB8)为1时,才将数据
送入接收缓冲器SBUF,并置位RI,申请中断,否则丢弃接收 到的数据 若SM2=0,则无论第9位数据(RB8)是1还是0,都将数据装入 SBUF,置位RI,申请中断
基于单片机的多机通信系统设计
基于单片机的多机通信系统设计作者:刘涛来源:《中国新通信》2014年第08期【摘要】随着社会经济的不断发展进步,科技的不断飞升,在新时代的背景下网络通信已经成了人们最为常用的科学技术产品之一,由于生活水平得到了提高人们在日常的追求上也发生着变化,而对于通信的产品可以说是有着日新月异的变化,人们在网络通讯以及工业自动化和数据传输等这方面的实践操作中会需要一个控制系统对于所运行的数据来进行有效地控制与检测,以此来让通信系统能够及时高速的进行正常通讯,基于它的种种优点在当下已经得到了较为广泛的应用。
在不影响控制系统功能的情况下本文对于多机通信系统的相关软件设计的部分以及硬件部分作出了分析研究。
【关键词】单片机多机通信系统设计在当前的科学技术发展的形势下,随着单片机以及计算机相关方面技术的不断革新进步,单片机是微型计算机的一个分支部分,应用比较的广泛,单片机的多机通信系统就是在单片机的发展上创新而来的,这也是一个方向。
一、单片机概念所谓的单片机就是一种集成电路的芯片,它是采用了超大规模的集成电路技术将有着数据处理能力的CPU和RAM以及ROM等等多种内容集中在一个硅片上而构成的微型计算机系统,这种单片机在工业的控制得到了较为广泛的应用。
在很多的方面对于单片机来说它要比专用的处理器更加的适用于嵌入型的系统,这也是其广泛应用的一个重要的原因,其实单片机是世界上数量最多的一个处理器,伴随着单片机家族的发展规模的壮大单片机与专用的处理器的发展已经是分道扬镳了[1]。
二、关于单片机多机通信的现状对于现代所见到的的单片机基本上都是带有通信接口的,能够方便的和计算机在信息数据上进行通信这给通信设备以及计算机网络之间在应用的层面上提供了有力的物质基础条件,在当下的通信设备的使用上都已经实现了对于单片机的智能控制,像手机、列车无线通信、无线电对讲机等等,在单片机的通信应用应该说是从两片单片机间的通信开始的,再往后就有了主从式的通信设备,在后就出现了基于单片机的多机通信系统的应用,同时得到了广泛的应用,虽然说在单片机的多机通信上面有了很长的研究史但是在形式上也基本都是主从式的,对于平权式的就相对较少[2]。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
单片机多机通信系统一、引言随着单片机技术的不断发展,单片机的应用已经从单机向多机互联化方向发展。
单片机在实时数据采集和数据处理方面,有着成本低、能满足一般要求、开发周期短等优点,其在智能家居、计算机的网络通信与数据传输、工业控制自动化等方面有着广泛的应用。
本系统是面向智能家居应用而设计的。
在初期,采用红外无线通信方式,其传输距离短,适于一般家庭应用,且成本相对较低;待方案成熟、成本允许,可以改用GSM无线通信方式。
二、系统原理及方案设计1 、系统框架介绍本系统为基于51单片机的多机红外无线通信系统,由三个51单片机模块组成。
其中一个作为主机(即上位机),负责接收来自从机1(即下位机)采集的数据信息,以及向从机2(即下位机)发送控制信息。
从机1是数据采集模块,采集温度、光强等室内数据,并将其发送给主机。
主机经分析处理,作出相应判断,并给从机2发送控制信息,使由从机2控制的电机作出相应反应,调节室内环境状况。
系统总体框图如下图1所示,图2为红外收发模块简图:图1 系统总体框图图2 红外收发模块简图2 、多机通信原理介绍在多机通信系统中,要保证主机与从机间可靠的通信,必须要让通信接口具有识别功能,51单片机串行口控制寄存器SCON中的控制位SM2正是为了满足这一要求而设置的。
当串行口以方式2或方式3工作时,发送或接收的每一帧信息都是11位的,其中除了包含SBUF 寄存器传送的8位数据之外,还包含一个可编程的第9位数据TB8或RB8。
主机可以通过对TB8赋予1或0,来区别发送的是数据帧还是地址帧。
根据串行口接收有效条件可知,若从机的SCON控制位SM2为1,则当接收的是地址帧时,接收数据将被装入SBUF并将RI标志置1,向CPU发送中断请求;若接收的是数据帧时,则不会产生中断标志,信息将被丢弃。
若从机的SCON控制位SM2为0,则无论主机发送的是地址帧还是数据帧,接收数据都会被装入SBUF并置1标志位RI,向CPU发出中断请求。
那么,我们规定如下通信协议:(1)置1所有从机的SM2位,使之处于只能接收地址帧的状态,并给每个从机初始化一个地址值;(2)主机发送地址帧,其中包含8位地址信息,第9位为1,进行从机寻址;(3)从机接收到地址后,将8地址信息与其自身地址值相比较,若相同则清“0“控制位SM2,若不同则保持SM2位为1;(4)主机从第二帧开始发送数据帧,其中第9位为0。
对于已经被寻址的从机,因其SM2为0,可以接收主机发送来的任何信息,而对于其他从机,因其SM2为1,将对主机发送来的数据信息不予理睬,直到发来一个新的地址帧。
(5)若主机需要要与其他从机联系,可再次发送地址帧来进行从机寻址,而先前被寻址过的从机在分析出主机发来的地址帧是对其他从机寻址时,恢复其自身的SM2为1,对主机随后发来的数据信息不予理睬。
3 、红外通信方式介绍因为本系统是面向智能家居而设计的,考虑到有线方式给用户带来的不便,我们选用无线作为各单片机间的通信方式。
且我们队员以前未做无线通信,希望在这次比赛中锻炼、提高自己。
对于无线通信方式,常见的有五种:红外通信,蓝牙通信,Zigbee通信,GSM通信,GPRS通信。
红外通信是我们在学习中接触到最多的,元件材料相对简单、容易获得,能够满足一般家庭应用,且红外通信方面的资料比较多,易学。
蓝牙设备自制不易,购买则增加系统成本。
Zigbee、GSM、GPRS 则或系统设计复杂,或成本高。
红外通信背景介绍:红外线是波长在750nm至1000nm间的电磁波,其频率高于微波而低于可见光,是一种人肉眼看不见的光线。
目前无线电波和微波已被广泛应用在长距离的无线通信中,但由于红外线的波长较短,对障碍物的衍射能力差,所以更适合应用在需要短距离无线通信场合点对点的直线数据传输。
(1)红外收发器TFDU4100介绍对于红外收发模块,我们采用TFDU4100红外收发器来实现。
TFDU4100是常用的低电压红外收发模块,以串行方式进行数据交换,遵循IrDA1.2标准,最高通信速率可以达到115.2Kbps,最大传输距离为3.0m。
TFDU4100芯片图片和管脚定义分别如图3、表1所示图3 TFDU4100芯片图片表1 TFDU4100管脚定义除了使用TFDU4100构成红外收发模块外,还可以选用其他的方案。
比如用分立元件搭建一个红外发射、接收电路:用电阻、电容组成低步振荡器,频率调在38KHz左右,由红外发光二极管发射载波;红外接收部分采用普通的红外接收头,比如LF0038U,再用二极管、晶体管、电容、电阻构成放大、解调电路。
但此方案缺点在于电路复杂、系统稳定性不强,并且成本与采用TFDU4100设计差别不大。
(2)串行红外传输控制器TOIM3232介绍根据IrDA红外传输标准,串行红外传输采用特定的脉冲编码标准,该标准与RS232串行传输标准不同。
若两设备之间进行串行红外通讯,就需要一个传输控制器,以进行RS232编码和IrDA编码之间的转换。
TOIM3232串行红外传输控制器就是Vishay公司为配合TFD U4100而设计的。
其功能结构图如图4所示:图4 TOIM3232功能结构框图在输出模式下,TOIM3232可把RS232输出信号转变成符合IrDA 标准的信号以驱动红外发射器;在接收模式下,TOIM3232可把IrDA 输入信号转变成符合RS232标准的信号;TOIM3232的红外传输速度范围为2.4Kbit/s~115.2Kbit/s。
TOIM3232内部有一个3.6864MHz 的晶振,用以实现脉冲的扩张和压缩。
该时钟信号既可以由内部晶振产生也可用外部时钟实现。
该控制器可通过RS232口进行编程控制,其输出脉冲宽度可程控为1.627μs或3/16位长。
4 、主机模块介绍主机模块以89C52单片机为控制核心,外围主要接有4X4矩阵键盘、1602液晶显示屏、TFDU4100红外收发器、串行红外传输控制器TOIM3232。
此模块中 89C52单片机作为CPU,控制整个系统的运转。
系统启动时,默认主机与从机1建立连接。
主机以串行口中断方式接受从机1发送的数据。
数据经单片机分析,显示于1602液晶上,并判断是否向从机2发送控制信息。
本系统中我们使用4*4的非独立式矩阵键盘,如下图5所示。
将行线、列线分别连接到按键开关的两端,并且连接到单片机的I/O口。
图5 4*4矩阵键盘通过矩阵键盘,可以向主机输入要寻址的从,以控制主与哪一个从通信;并能控制与主机连接的1602液晶,显示任意一项从机1测量的数据。
下面为4*4矩阵键盘的程序设计流程图如下图6所示:图6 4*4矩阵键盘的程序设计流程图1602液晶是一种专门用于显示字母、数字、符号的点阵式LCD,它有5*10和5*7两种点阵字符显示模式可供选择,5*7点阵字符下可以显示2行共32个字符。
一般其主控制驱动电路为HD44780,模块内部的字符发生存储器(CGROM)已经存储了160个不同的点阵字符图形,每一个字符都有一个固定的代码,比如大写的英文字母“A”的代码是01000001B(41H),显示时模块把地址41H中的点阵字符图形显示出来,我们就能看到字母“A”。
1602液晶在此模块内的作用,是显示从机1测量的数据,验证红外通信的可靠性;当主机要切换要与之通信的从机时,用1602显示修改后与之通信的从机名。
红外通信模块主要由TFDU4100和TOIM3232构成。
TFDU4100采用IrDA红外传输标准,即串行红外传输的脉冲编码,这个标准不能和单片机接口直接兼容。
所以用串行红外传输控制器TOIM3232进行串码和IrDA编码间的转换。
TOIM3232可把单片机输出的串码信号转换成符合IrDA标准的信号以驱动TFDU4100;它还可以将IrDA输入信号转换成串码信号送入单片机。
其电路设计原理图如下图7所示:图7 51单片机、TOIM3232、TFDU4100简易连接原理图主机负责对外围器件的调度与控制,包括红外收发模块接收数据控制、键盘扫描、1602液晶的显示、是否向从机2发送消息。
其程序流程图如下图8所示:图8 主机程序流程图5 、从机1模块介绍从机1模块以89C52单片机为控制核心,外围主要接有1602液晶显示屏、TFDU4100红外收发器、串行红外传输控制器TOIM3232、ADC0809、温度传感器、光强传感器。
室内温度的测量采用温度传感器DS18B20。
选用此传感器的原因是它价格便宜,可以降低系统成本,且对于一般家庭使用,此传感器的精度足够了。
使用简单,易控制。
DS18B20提供9位二进制温度读数,指示器件的温度信息,并通过单线接口送至CPU 。
DSl820中有用于贮存测得的温度值的两个8位存贮器RAM 编号为0号和1号。
将存贮器中的二进制数求补再转换成十进制数并除以2就得到被测温度值(-550摄氏度--125摄氏度)。
光强传感器采用实验室现已有的,主要由可见光光敏电阻器、普通电阻等分立器件构成。
光敏电阻是利用半导体的光电效应制成的一种电阻值随入射光的强弱而改变的电阻器;入射光强时,电阻减小,入射光弱时,电阻增大。
所有传感器输出的数据均为模拟量,要输入单片机处理,必须经过A/D转换。
模数转换芯片采用ADC0809,主要原因是采集数据的路数较多(以后还可扩展),需要一个多通道的A/D,而我们以前做数电实验时用过的ADC0809正是8位8通道的模数转换芯片,它是逐次逼近式A/D转换器,可以和单片机直接接口。
红外收发模块,则负责将传感器采集的数据传至主机,其结构已在前面介绍过。
1602液晶在此处的作用是将单片机接收到的数据显示出来,与传到主机的数据作对比,验证红外通信的可靠性。
从机1的程序流程图如下图9所示:图9 从机1程序流程图6 、从机2模块介绍从机2模块以89C52单片机为控制核心,外围主要接有红外收发模块、电机驱动电路、直流电机和窗帘模型。
红外收发模块负责接收主机发送来的信息,经单片机处理,以控制电机运转。
电机驱动电路主要由L298N构成。
L298N芯片可以驱动两个二相电机,也可以驱动一个四相电机,输出电压最高可达50V,可以直接通过电源来调节输出电压;可以直接用单片机的IO口提供信号;而且电路简单,使用比较方便。
电路原理图如下图10所示:图10 电机驱动电路原理图直流电机采用德国FAULHABER-2342电机,其转子转动惯量小,因而动态性能极好;FAULHABER电机采用精密合金换向器,因其接触电阻低而使性能优良。
为表征电机控制的实现,在电机后端我们做一个窗帘模型,通过电机控制窗帘的开关。
89C52单片机在此模块中,负责控制接收来自主机的信息,并产生PWM波驱动电机,以达到调速的目的。
51没有硬件的PWM,全靠软件模拟。