精华内容
下载资源
问答
  • RS-485双机通信程序

    2017-03-27 10:20:21
    程序的主要特点是加的的校验少,适合初学者利用max485模拟单片机双机通信.
  • 该工程实现了两片STM32F103通过硬件I2C通信,采用轮询的方式接收,未使用中断及DMA。
  • 双机通信程序

    2015-01-11 11:38:32
    基于51单片机异步串行口双机通信汇编语言程序编程
  • 双机通信程序.rar

    2020-06-18 18:29:47
    双机通信程序
  • 这是一个STM32F103基于HAL库的CAN双机通信测试程序,分享给大家进行学习,实验。
  • 这个做的一个串口双机通信程序,用汇编语言写的。 完成的功能为: A机和B机进行双机通信,A向B发送一个启动信号AA, B机接收到以后到以后发送一个BB的,表示同意接收。 A机接收到BB后,就会发送数据。 B机将接收到的...
  • 基于单片机的双机通信程序设计.pdf
  •  (2)单片机双机异步通信接收程序(PIC单片机2)。  (3)单片机双机同步通信发送程序(PIC单片机1)。  (4)单片机双机同步通信接收程序(PIC单片机2)。  欢迎转载,信息来源维库电子市场网...
  • 利用winsock实现简单的双机通信程序,包含客户端和服务器端
  • 基于80C51的RS485双机通信程序_01
  • 这是一个51单片机的双机通信汇编程序,已调试通过,有proteus仿真,有需要学习的可以分享一下!
  • 本文主要讲了51单片机双机通信硬件电路图及C程序,下面以来学习一下
  • 关于51单片机双机通信1、主机发送数据,从机接收数据,双方发送和接收数据采用查询方式;2、双机开始通信,主机发送握手信号,等待从机应答;3、从机接收到握手信号后,应答OK或BUSY;4、当从机应答OK后,主机开始向...
  • 可以更换界面的背景图片,可直接运行,也可根据自己喜好修改界面布局
  • 基于单片机的max485双机通信程序 本人亲测
  • 在MFC的程序中实现双机通信,直接输入IP,点击发送后,实现点对点沟通
  • 单片机-双机通信

    2021-01-23 09:59:52
    **实现功能:**双机都能控制彼此的电位器模块开启与关闭(单片机为普中科技89C51单片机) **连线:**P31接P30,P30接P31; 实验原理: 1.AD模数转换电路原理图: 2.AD模数转换器的主要技术指标: ①分辨率 ADC的...

    **实现功能:**双机都能控制彼此的电位器模块开启与关闭(单片机为普中科技89C51单片机)
    **连线:**P31接P30,P30接P31;
    实验原理:
    1.AD模数转换电路原理图:

    2.AD模数转换器的主要技术指标:
    ①分辨率
    ADC的分辨率是指使输出数字量变化一个相邻数码所需输入模拟电压的变化量。常用二进制的位数表示。例如12位ADC的分辨率就是12位,或者说分辨率为满刻度的1/(2^12)。
    ②量化误差
    ADC把模拟量变为数字量,用数字量近似表示模拟量,这个过程称为量化。量化误差是ADC的有限位数对模拟量进行量化而引起的误差。
    ③偏移误差
    偏移误差是指输入信号为零时,输出信号不为零的值,所以有时又称为零值误差。假定ADC没有非线性误差,则其转换特性曲线各阶梯中点的连线必定是直线,这条直线与横轴相交点所对应的输入电压值就是偏移误差。

    ④满刻度误差
    满刻度误差又称为增益误差。ADC的满刻度误差是指满刻度输出数码所对应的实际输入电压与理想输入电压之差。
    ⑤线性度
    线性度有时又称为非线性度,它是指转换器实际的转换特性与理想直线的最大偏差。
    ⑥绝对精度
    在一个转换器中,任何数码所对应的实际模拟量输入与理论模拟输入之差的最大值,称为绝对精度。对于ADC而言,可以在每一个阶梯的水平中点进行测量,它包括了所有的误差。
    ⑦转换速率
    ADC的转换速率是能够重复进行数据转换的速度,即每秒转换的次数。而完成一次A/D转换所需的时间(包括稳定时间),则是转换速率的倒数。
    3.控制字描述:

    即在本次实验中,我要检测转换电位器模拟信号,控制字命令寄存器值为0X94。
    4.时序图:

    在时序图中可以看出,我们要先写入再读取,写入前要将时钟信号拉低,并且读取的是12bit的数据;
    C语言代码:

    ①shuangji.c
    #include "reg52.h"			 
    #include"XPT2046.h"	
    
    #define uchar unsigned char
    #define uint unsigned int
    
    sbit LSA=P2^2;//数码管使能
    sbit LSB=P2^3;
    sbit LSC=P2^4;
    sbit K3=P3^2; //独立按键
    sbit K4=P3^3;
    uchar flag;   //存储接受的指令
    
    uchar disp[4];
    uchar code smgduan[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f}; //数码管显示
    
    void delay(uint i)
    {
    	while(i--);	
    }
    
    void datapros()
    {
    	uint temp;
    	static uchar i;
    	if(i==50)
    	{
    		i=0;
    		temp = Read_AD_Data(0x94);		//   AIN0 电位器
    	}
    	i++;
    	disp[0]=smgduan[temp/1000];//千位
    	disp[1]=smgduan[temp%1000/100];//百位
    	disp[2]=smgduan[temp%1000%100/10];//个位
    	disp[3]=smgduan[temp%1000%100%10];		
    }
    
    void DigDisplay()
    {
    	uchar i;
    	for(i=0;i<4;i++)
    	{
    		switch(i)	 //位选,选择点亮的数码管,
    		{
    			case(0):
    				LSA=1;LSB=1;LSC=1; break;//显示第0位
    			case(1):
    				LSA=0;LSB=1;LSC=1; break;//显示第1位
    			case(2):
    				LSA=1;LSB=0;LSC=1; break;//显示第2位
    			case(3):
    				LSA=0;LSB=0;LSC=1; break;//显示第3位	
    		}
    		P0=disp[i];//发送数据
    		delay(100); //间隔一段时间扫描	
    		P0=0x00;//消隐
    	}		
    }
    
    void UART_INIT(){
    	SCON=0x50;//设定串口工作方式0101 0000
    	PCON=0x00;//设置了SMOD,波特率不翻倍
    	TMOD=0x20;//设置定时器1方式二
    	EA=1;//开中断
    	ES=1;//允许串口1发起中断
    	TL1=0xfd;//波特率9600
    	TH1=0xfd;
    	TR1=1;//定时器1开始计时
    }	
    
    void main(){	
    	UART_INIT();
    
    	while(1){
    		uchar i;
    		if(K3==0){
    			SBUF=0x00;    //发送0x00给单片机2
    		}else if(K4==0){
    			SBUF=0x01;    //发送0x01给单片机2
    		}
    		switch(flag)     //接收到0x00开启电位器,0x01关闭电位器
    		{
    			case(0x00):     //开启电位器
    				datapros();
    				DigDisplay();
    				break;
    			case(0x01):     //关闭电位器
    				for(i=0;i<4;i++)
    				{
    					disp[i]=0;
    				}
    				break;
    		}
    	}		
    }
    
    //串口中断
    void Interrupt_Receive() interrupt 4
    {  
    	if(TI==1) TI=0;
    	if(RI==1)
        {
            RI=0;
            flag=SBUF;
         }
    }      
         
    ②XPT2046.c
    #include"XPT2046.h"
    
    void SPI_Write(uchar dat)   //写数据
    {
    	uchar i;
    	CLK = 0;
    	for(i=0; i<8; i++)      //先写高位,再写低位
    	{
    		DIN = dat >> 7;  	//放置最高位
    		dat <<= 1;          //左移一位,从最高位放起
    		CLK = 0;			//上升沿放置数据
    
    		CLK = 1;
    
    	}
    }
    
    uint SPI_Read(void)         //读数据
    {
    	uint i, dat=0;
    	CLK = 0;
    	for(i=0; i<12; i++)		//接收12位数据
    	{
    		dat <<= 1;          //读取最高位
    
    		CLK = 1;
    		CLK = 0;
    
    		dat |= DOUT;        //DOUT数据输出管脚
    
    	}
    	return dat;	
    }
    
    uint Read_AD_Data(uchar cmd)
    {
    	uchar i;
    	uint AD_Value;
    	CLK = 0;             //拉低时钟信号再开始写入
    	CS  = 0;             //拉低片选信号
    	SPI_Write(cmd);      //写一个字节
    	for(i=6; i>0; i--);   //延时一个时钟周期,等待转换结果
    	CLK = 1;	         //发送一个时钟周期,清除BUSY
    	_nop_();
    	_nop_();
    	CLK = 0;
    	_nop_();
    	_nop_();
    	AD_Value=SPI_Read(); //返回的是12位的数据,想要显示电压还需要进行处理
    	CS = 1;              //拉高片选信号,停止传输数据
    	return AD_Value;	
    }
    

    流程框图:

    ①主函数:
    在这里插入图片描述
    ②延时函数:
    在这里插入图片描述

    ③数据接收转换函数(datapros):
    在这里插入图片描述

    ④数码管显示函数:
    在这里插入图片描述

    展开全文
  • 单片机双机通信之c语言

    千次阅读 2020-04-17 21:53:07
    /*发送程序*/ #include<reg51.h> #define uchar unsigned char char code map[]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F};//'0'~'9' void delay(unsigned int time){ unsigned int j = ...

    1.单片机A代码块

    /*发送程序*/
    #include<reg51.h>
    #define uchar unsigned char
    char code map[]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F};//'0'~'9'
    
    void delay(unsigned int time){ 
    	unsigned int j = 0;
    	for(;time>0;time--)
    		for(j=0;j<125;j++);
    }
    
    void main(void){
       	uchar counter=0;	 	//定义计数器
       	PCON = 0x80;			//波特率加倍
       	SCON = 0x90;			//方式2,SM2=TI=RI=0,允许接收
       	while(1){   				
    		ACC = counter;		//提取奇偶标志位值
    		TB8 = P;			//组装奇偶标志
           	SBUF = counter;		//发送数据
           	while(TI==0);		//等待发送完成
           	TI = 0;				//清TI标志位
           	while(RI==0);		//等待乙机回答
           	RI = 0;
    		if(RB8 ==0){		//判断RB8=0?
    			P2 = map[counter];	//若为0,则显示已发送值
    			if(++counter>9) counter=0;//刷新发送数据
    			delay(500);		//调整程序节奏
    		}
    	}
    }
    

    2.单片机B代码块

    /*接收程序*/
    #include<reg51.h>
    #define uchar unsigned char
    char code map[]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F};//'0'~'9'
    void main(void){
       uchar receive;		    	//定义接收器
       PCON = 0x80;					//波特率加倍
       SCON = 0x90;					//串口方式2,TI和RI清零,允许接收
       while(1){  
    		while(RI==1){			//等待接收完成
    			RI = 0;				//清RI标志位
    			receive = SBUF;		//取得接收值
    			ACC = receive;		//提取奇偶标志位
    			if (P == RB8) TB8=0;//将标志位值装入第9位
    			  else TB8 = 1;
    			SBUF = receive;		//接收的结果返回主机
    			while(TI == 0);		//等待发送结束
    			TI = 0;		   		//清TI标志位
    			P2 = map[receive];  //显示接收值
    		}
        }
    }
    

    3.仿真图

    3.1 仿真环境

    Proteus 8 Professional(微信公众号:软件安装管家)

    3.2 仿真器件

    需要用到的仿真器件:7SEG-COM-CAT-G、80C51、CAP、CAP-ELEC、CRYSTAL、RES
    在这里插入图片描述

    3.2原理图绘制

    在这里插入图片描述
    PS:咱们有货再见!

    展开全文
  • (2) 服务器在同一时刻只能与一个客户通信,直到该客户退出才可以接收下一个客户。 (3) 客户程序使用命令行参数指定服务器地址 (4) 客户端输入的文本都发送给服务器 包含必要的头文件和连接的WinSock 库,分别...
  • 双机通信,一个甲为发送,一个乙作为接收。 甲: #include<reg51.h> sbit k1=P0^0; sbit k2=P0^1; unsigned char fabuf[3]; unsigned char sj1[3]={0xa0,0x1,0x2}; unsigned char sj2[3]={0xa1,0x3,0x4}; ...

    双机通信,一个甲为发送,一个乙作为接收。

    甲:

    #include<reg51.h>
    sbit k1=P0^0;
    sbit k2=P0^1;
    unsigned char fabuf[3];
    unsigned char sj1[3]={0xa0,0x1,0x2};
    unsigned char sj2[3]={0xa1,0x3,0x4};
    void init_UART(void)
    {
     SCON=0x50;
     PCON=0x0;
     TMOD=0x20;
     TH1=0xF4;
     TL1=TH1;
     TR1=1;
    
    }
    void send_jia(void)
    {
     unsigned char i;
     unsigned char sum=0;
     for(i=0;i<3;i++)
     {
     	SBUF=fabuf[i];
    	sum=sum^fabuf[i];
    	while(!TI);
    	TI=0;
     
     }
     SBUF=sum;
     while(!TI);
     TI=0;
    }
    void main()
    {
     unsigned char j;
     init_UART();
     while(1)
     {
       if(!k1)
       {
       	while(!k1);
    	for(j=0;j<3;j++)
    	{
    	 fabuf[j]=sj1[j];
    	}
       	send_jia();
       
       }
       if(!k2)
       {
       	 while(!k2);
    	 for(j=0;j<3;j++)
    	 {
    	  fabuf[j]=sj2[j];
    	 }
       	send_jia();
       }
     }
    
    }
    
    
    
    
    
    

    乙:

    #include<reg51.h>
    unsigned char kk,ii,jsw,sjsq,sjsqbak;
    unsigned char txb
    展开全文
  • 自己写的双机通信程序。资源类型:application/x-rar
  • 双机通信

    千次阅读 2020-04-29 13:22:55
    #include <STC89C5xRC.H> #define RELOAD_COUNT 0xF9 //宏定义波特率发生器的载入值 4800 void UartInit(void) //9600bps@12.000MHz { SCON|=0X50; //设置为工作方式1 TMOD|=0X20; //设置计数器工作...
    #include <STC89C5xRC.H>
    #define RELOAD_COUNT 0xF9 //宏定义波特率发生器的载入值 4800
    void UartInit(void)		//9600bps@12.000MHz
    {
    	SCON|=0X50;			//设置为工作方式1
    	TMOD|=0X20;			//设置计数器工作方式2
    	PCON=0X80;			//波特率加倍
    	TH1=RELOAD_COUNT;	//计数器初始值设置
    	TL1=TH1;
    	EA=1;				//打开总中断
    	TR1=1;				//打开计数器
    	ES=1;          //打开接收中断                       
    }
    void Delay100ms()		//@12.000MHz
    {
    	unsigned char i, j;
    
    	i = 195;
    	j = 138;
    	do
    	{
    		while (--j);
    	} while (--i);
    }
    void Unit() interrupt 4//接收中断
    {
    	int receivedata=SBUF;//储存初值
    	receivedata%=10;
    	if(receivedata==0) P2=0xff;
    	else{
    	if(((~P2)&((1<<(receivedata-1))))&(1<<(receivedata-1))) P2|=(1<<(receivedata-1));//输入的值对应的灯已经亮起时,熄灭它
    	else P2&=~(1<<(receivedata-1));}//输入的值对应的灯未亮起时,点亮它
    	RI=0;//标志位清零
    }
    void main()
    {
    	int num;
      UartInit();
    	while(1)
    	{
    		P1=0xf0;
    		if(P1!=0xf0)
    		{
    			if(P1==0x70) num=1;
    			if(P1==0xb0) num=5;
    			if(P1==0xd0) num=9;
    			if(P1==0xe0) num=13;
    			P1=0x0f;
    			if(P1==0x07) num+=0;
    			if(P1==0x0b) num+=1;
    			if(P1==0x0d) num+=2;
    			if(P1==0x0e) num+=3;
    			while(P1!=0x0f);
    			Delay100ms();//延时消抖
    			SBUF=num;//发送数据
    			while(TI==0);//延时处理
    			TI=0;
    		}
    	}
    }
    
    展开全文
  • 这是一个简单的双机串行通信的汇编程序,使用masm编译。 直接运行后就可使用看到实验结果。
  • 双机通信socket编程

    2013-03-28 22:07:45
    socket通信的一个例子,有助于对socket编程的理解。
  • 程序中定义各端口的地址,写出了显示程序,延时程序,键盘扫描程序,定时和串口中断程序.
  • 单片机双机通信

    万次阅读 多人点赞 2017-12-27 14:21:49
    单工通信主机控制从机。主机工作方式/********************初始化串口 bps为波特率**********************************/ void uart_init(unsigned int bps) { unsigned char t; SCON=0x50;//(0101)工作方式一:8...
  • SPI自主通信双机通信

    2018-04-17 17:35:58
    使用stm32单片机的SPI实现两个单片机之间的双机通信,自主通信。包括了F103RCT6、ZET6、F407ZGT6三种型号的stm32单片机的程序,注释详细
  • 双机通信C语言程序

    2015-07-02 09:55:36
    两单片机之间通过按钮实现单片机A按下按键,在单片机B上显示按键数。在单片机B上按相应按键,在单片机A上显示对应的按键数。显示数字通过数码管实现。
  • 本文为大家介绍了PIC单片机双机异步通信程序

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 7,439
精华内容 2,975
关键字:

双机通信程序