① 您好请问一下,两个单片机互相传数据的程序怎么写
两个单片机互相传数据,其实很简单的 就是两个单片机的串口通信,当然需要一个串口通信的协议,如指令码、数据长度、数据等等,就是什么指令需要怎么操作、操作数据是什么。如这是两个单片机简单通信操作的仿真实例可以作为参考。
#include <reg52.h> // 单片机1
#define uchar unsigned char
#include <stdio.h>
unsigned char* c;
sbit k0=P3^2;
sbit k1=P3^3;
sbit led1=P3^5;
uchar k;
bit y0,y1;
bit t,s;
uchar table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d};
void SendOneChar(char c) //发送字节到PC
{
TI=0;
SBUF = c;
while(!TI);
TI=0;
}
void SendString(char *st) //发送字符串到PC
{
while(*st)
{
SendOneChar(*st++);
}
}
void main()
{
SCON = 0x50; //SCON: mode 1, 8-bit UART, enable rcvr
TMOD = 0x20; //TMOD: timer 1, mode 2, 8-bit reload
PCON = 0x80; // 数据位8、停止位1。效验位无 (11.0592M)
TH1 = 0xF4; //TH1: reload value for [email protected]
TR1 = 1; //启动定时器1
ES = 1; //允许串口中断位
EA = 1; //允许总中断位
c=0;
s=1;
k=0;
P1 =~table[k];
while(1)
{
if(k0==0 && y0==0)
{
y0=1;
c = "az";
SendString(c); //发送字符串
}
if(k0==1 ) { y0=0; }
if(k1==0 && y1==0)
{
y1=1;
c = "as";
SendString(c); //发送字符串
}
if(k1==1 ) { y1=0; }
// for(i = 0; i < 4000; i++); //延迟一小段时间
}
}
void chuankou(void) interrupt 4
{
if(RI==1)
{
RI = 0;
if(t==1)
{
if(SBUF=='z') { k++;led1=~led1; }
s=1; t=0;
if(k==10) { k=0;}
P1 =~table[k];
}
if(SBUF=='a' && s==1) { t=1;s=0;}
}
}
------------------
#include <reg51.h> // 单片机2
#define uchar unsigned char
unsigned char* c;
sbit led1=P3^2; // 接收 az , P.2 输出低电平, P3.3 输出高电平。
sbit led2=P3^3; // 接收 aa , P.2 输出高电平, P3.3 输出低电平。
sbit k0=P3^5;
bit y0,t,s;
uchar k;
uchar table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d};
void SendOneChar(char c) //发送字节到PC
{
TI=0;
SBUF = c;
while(!TI);
TI=0;
}
void SendString(char *st) //发送字符串到PC
{
while(*st)
{
SendOneChar(*st++);
}
}
void main (void)
{
SCON = 0x50; // REN=1允许串行接受状态,串口工作模式1
TMOD = 0x21; // 定时器工作方式2
PCON = 0x80; // 数据位8、停止位1。效验位无 (11.0592M)
TH1 = 0xF4; // TH1 = 0xFD; 波特率 2400
TH0=(65536-54253)/256; // 50 mS
TL0=(65536-54253)%256;
TR1 = 1;
ES = 1; // 开串口中断
EA = 1; // 开总中断
// ET0=1;
// TR0=1;
s=1;
k=0;
P1 =~table[k];
while(1)
{
if(k0==0 && y0==0)
{
y0=1;
c = "az";
SendString(c); //发送字符串
}
if(k0==1 ) { y0=0; }
}
}
void chuankou(void) interrupt 4
{
if(RI==1)
{
RI = 0;
if(t==1)
{
if(SBUF=='z') {led1=0;led2=1; k++; }
if(SBUF=='s') {led1=1;led2=0; k--; }
s=1; t=0;
if(k==10) { k=0;}
if(k==255) { k=9; }
P1 =~table[k];
}
if(SBUF=='a' && s==1) { t=1;s=0;}
}
}
void T0_time()interrupt 1
{
TH0=(65536-54253)/256; // 50 mS
TL0=(65536-54253)%256;
k++;
if(k==10) // 这里修改时间
{
k=0;
led1=1;
led2=1;
}
}
② 51单片机怎么双机通信
你好!!
单片机双机通讯,就是直接单片机的串口RX和TX直接连接,然后通过串口命令完成通讯!
给你一个实例,可以完全满足你的要求!
希望帮到你,满意请采纳!
③ 如何使用Proteus做单片机仿真
1,找到需要的元件,芯片。
2,根据原理图,画出仿真图。
3,写程序,并编译出HEX代码文件。
4,把HEX代码文件加载到单片机中。
5,运行仿真,就看到结果了。
如下图,就是一个仿真的实例。
更详细的操作步骤,可上网下载有关的教程看一下。
④ protues如何仿真 两块一样的单片机板子通讯
要复制,确定存在网络标号也会复制的。再修改就麻烦的。
画仿真图时,那就尽量少用网络标号,或者先不加网络标号,等复制完了再加。
你仿真的最终目的是什么?是要做实物?要做实物,就直接焊接板子,不必仿真,仿真的程序,到了实物上,还会有很多的需要修改,更麻烦。
⑤ 双机通信(8051单片机)
仿真图用了DB9接口,那个DB9是对应电脑硬件的串口的,即仿真时,数据从DB9收/发,对应的电脑实际串口数据收发。所以,两个DB9是不能用导线连接起通信片,你那三条线画了也没用。
DB9是直接与单片机的RXD,TXD连接的,不能加MAX232,加了反倒不对了。
要仿真双机通信,很简单,两个单片机的TXD,RXD直接交叉连接就行,而你这么画,又加MAX232,又用DB9反倒不行了。要用MAX232也可以,但不能用DB9了,两个单片机的MAX232对接。
⑥ 51单片机串行通信双机通信仿真
从图可知,两个单片机各接一个八路拨码开关,八个led。
可以这样测试,上机读取拨码状态,通过串口发送至下机,从而控制led。下机一样。注意避免两机通讯冲突。
只提供思路,具体程序自行解决。
⑦ 单片机仿真图大蓝线怎么接
1、首先与USB-RS232端连接。
2、其次再将USB与电脑连接。
3、最后将光通讯与电源连接,蓝色线接负极,棕色线接正极。
⑧ 单片机仿真图和原理图不一样
你好!
仿真图和原理图,会出现不一样的情况,在最终出PCB版的时候,也会做适当的修改
因为都是网上的教材,要求不是很严格
但是如果是一个定型的产品,肯定会有一个标准的原理图的
⑨ 单片机怎么仿真
单片机体积小,重量轻,具有很强的灵活性而且价格便宜,具有逻辑判断,定时计数等多种功能,广泛应用于仪器仪表,家用电器,医用设备的智能化管理和过程控制等领域。以单片机为核心的嵌入式系统已经成为目前电子设计最活跃的领域之一。
在嵌入式系统的中,开发板成本高,特别是对于大量的初学者而言,还可能由于设计的错误导致开发板损坏。利用Proteus我们可以很好地解决这个问题,由此我们可以快速地建立一个仿真系统。
2.Proteus介绍
Proteus是英国Labcenter Electro-nics公司开发的一款电路仿真软件,软件由两部分组成:一部分是智能原理图输入系统ISIS(Intelligent Schematic Input System)和虚拟系统模型VSM(Virtual Model System);另一部分是高级布线及编辑软件ARES(Adv-Ancd Routing and Editing Software)也就是PCB.
2.1 Proteus VSM的仿真
Proteus可以仿真模拟电路及数字电路,也可以仿真模拟数字混合电路。
Proteus可提供30多种元件库,超过8000种模拟、数字符器件。可以按照设计的要求选择不同生产厂家的元器件。此外,对于元器件库中没有的元件,设计者也可以通过软件自己创建。
除拥有丰富的元器件外,Proteus还提供了各种虚拟仪器,如常用的电流表,电压表,示波器,计数/定时/频率计,SPI调试器等虚拟终端。支持图形化的分析功能等。
Proteus特别适合对嵌入式系统进行软硬件协同设计与仿真,其最大的特点是可以仿真8051,PIA,AVR,ARM等多种系列的处理器。Protues包含强大的调试工具,具有对寄存器和存储器、断点和单步模式IAR C-SPY,Keil、MPLAB等开发工具的源程序进行调试的功能;能够观察代码在仿真硬件上的实时运行效果;对显示,按钮,键盘等外设的交互可视化进行仿真。
2.2 Proteus PCB
Proteus 的PCB设计除了有自动布线仿真功能外,还集成了PCB设计,支持多达16个布线层,可以任意角度放置元件和焊接连线;集成了高智能的布线算法,可以方便地进行PCB设计。
3. 基于Protesus的简单数据采集系统。
3.1 软件的编写
本例题采用可调电阻调节电压值作为模拟信号的输入