高分求51单片机串口通信的程序 求多个51单片机之间的 串口通讯程序,1个主机 3个从机 ,...

\u9ad8\u5206\u6c42\u80fd\u752851\u5355\u7247\u673a\u7a0b\u5e8fstc12c5a60s2\u4e32\u53e3\u901a\u4fe1

\u5bf9\uff0c\u7528\u5f00\u53d1\u677f\u7684\u7a0b\u5e8f\u6216\u8005\u7f51\u4e0a\u7684\u7a0b\u5e8f\u4fee\u6539\u4e0b\u5c31\u53ef\u4ee5\u4e86\uff0c\u4f60\u53ef\u4ee5\u5148\u8bd5\u8bd5\uff0c\u4e0d\u53ef\u4ee5\u518d\u95ee\u6211\u3002

\u7ed9\u4f60\u4e00\u4e9b\u601d\u8def\uff0c\u9996\u5148\u4f60\u8981\u786e\u5b9a\u4e0b\u901a\u4fe1\u7684\u534f\u8bae\uff0c\u6bd4\u5982\u8bf4\u5e38\u89c1\u7684\u683c\u5f0f\uff1a0x55\u5b57\u5934\u3001\u4ece\u673a\u5730\u5740\uff08\u4e09\u4e2a\u53ef\u4ee5\u752800\u300101\u30011\u8db3\u591f\u4e86\uff09\u3001\u4f20\u8f93\u6570\u636e\u30010xAA\u5b57\u5c3e\u3002\u7136\u540e\u770b\u61c2\u5355\u7247\u673a\u7684\u4e32\u53e3\u901a\u4fe1\u90a3\u5757\u3002\u4ece\u673a\u7684\u5904\u7406\u7a0b\u5e8f\u53ea\u6709\u5730\u5740\u4e0d\u4e00\u6837\uff0c\u5176\u4ed6\u7ed3\u6784\u53ef\u4ee5\u4e00\u81f4\u3002\u4e3b\u673a\u8981\u8bfb\u53d6\u201c\u5fd9\u201d\u72b6\u6001\u6765\u54cd\u5e94\u4ece\u673a\u7684\u4e2d\u65ad\u8bf7\u6c42\u3002\u5dee\u4e0d\u591a\u4e86\uff0c\u4f60\u53ef\u4ee5\u5728Proteus\u4e0a\u4eff\u771f\u3002\u7a0b\u5e8f\u53ef\u4ee5\u5230pudn\u3001csdn\u4e0a\u627e\u627e\u4e3b\u4ece\u673a\u4e32\u53e3\u901a\u4fe1\u7684\u4fee\u6539\u4e00\u4e0b\u5c31\u597d\u4e86\u3002

#include <reg52.h>
#include <intrins.h>
#define uchar unsigned char
#define uint unsigned int
sbit LCD_RS = P2^0;
sbit LCD_RW = P2^1;
sbit LCD_EN = P2^2;
#define delayNOP(); {_nop_();_nop_();_nop_();_nop_();};
uchar data RXDdata[ ] = {0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20 };
uchar temp,buf,m,count;
bit playflag=0;
uchar code cdis1[ ] = {" SERILA TRANFER "};
uchar code cdis2[ ] = {" "};
/**********************************************************
延时子程序
**********************************************************/
char code SST516[3] _at_ 0x003b;
void delay1(uint ms)

{
uchar k;
while(ms--)
{
for(k = 0; k < 120; k++);
}
}
/******************************************************************/
/* */
/*检查LCD忙状态 */
/*lcd_busy为1时,忙,等待。lcd-busy为0时,闲,可写指令与数据。 */
/* */
/******************************************************************/
bit lcd_busy()
{
bit result;
LCD_RS = 0;
LCD_RW = 1;
LCD_EN = 1;
delayNOP();
result = (bit)(P0&0x80);
LCD_EN = 0;
return(result);
}
/*******************************************************************/
/* */
/*写指令数据到LCD */
/*RS=L,RW=L,E=高脉冲,D0-D7=指令码。 */
/* */
/*******************************************************************/
void lcd_wcmd(uchar cmd)
{
while(lcd_busy());
LCD_RS = 0;
LCD_RW = 0;
LCD_EN = 0;
_nop_();
_nop_();
P0 = cmd;
delayNOP();
LCD_EN = 1;
delayNOP();
LCD_EN = 0;
}
/*******************************************************************/
/* */
/*写显示数据到LCD */
/*RS=H,RW=L,E=高脉冲,D0-D7=数据。 */
/* */
/*******************************************************************/
void lcd_wdat(uchar dat)
{
while(lcd_busy());
LCD_RS = 1;
LCD_RW = 0;
LCD_EN = 0;
P0 = dat;
delayNOP();
LCD_EN = 1;
delayNOP();
LCD_EN = 0;
}
/*******************************************************************/
/* */
/* LCD初始化设定 */
/* */
/*******************************************************************/
void lcd_init()
{
delay1(15);
lcd_wcmd(0x01); //清除LCD的显示内容
lcd_wcmd(0x38); //16*2显示,5*7点阵,8位数据
delay1(5);
lcd_wcmd(0x38);
delay1(5);
lcd_wcmd(0x38);
delay1(5);
lcd_wcmd(0x0c); //开显示,显示光标,光标闪烁
delay1(5);
lcd_wcmd(0x01); //清除LCD的显示内容
delay1(5);
}
/*******************************************************************/
/* */
/* 设定显示位置 */
/* */
/*******************************************************************/
void lcd_pos(uchar pos)
{
lcd_wcmd(pos | 0x80); //数据指针=80+地址变量
}
/*********************************************************
发送数据函数
*********************************************************/
void senddata(uchar dat)
{
SBUF =dat;
while(!TI);
TI = 0;
}
/*********************************************************
串行中断服务函数
*********************************************************/
void serial() interrupt 4
{
ES = 0; //关闭串行中断
RI = 0; //清除串行接受标志位
buf = SBUF; //从串口缓冲区取得数据
playflag=1;
switch(buf)
{
case 0x31: senddata('X');break; //接受到1,发送字符'W'给计算机
case 0x32: senddata('L');break; //接受到2,发送字符'I'给计算机
case 0x33: senddata('1');break; //接受到3,发送字符'L'给计算机
case 0x34: senddata('0');break; //接受到4,发送字符'L'给计算机
case 0x35: senddata('0');break; //接受到5,发送字符'A'给计算机
case 0x36: senddata('0');break; //接受到5,发送字符'R'给计算机
default: senddata(buf);break; //接受到其它数据,将其发送给计算机
}
if(buf!=0x0D)
{
if(buf!=0x0A)
{
temp =buf;
if(count<16)
{
RXDdata[count]=temp;
count++;
}
}
}
ES = 1; //允许串口中断
}
/*********************************************************
数据显示函数
*********************************************************/
void play()
{
if(playflag)
{
lcd_pos(0x40); //设置位置为第二行
for(m=0;m<16;m++)
lcd_wdat(cdis2[m]); //清LCD1602第二行
for(m=0;m<16;m++)
{
lcd_pos(0x40+m); //设置显示位置为第二行
lcd_wdat(RXDdata[m]); //显示字符
}
playflag=0;
count=0x00;
for(m=0;m<16;m++)
RXDdata[m]=0x20; //清显存单元
}
}
/*********************************************************
主函数
*********************************************************/
void main(void)
{
P0 = 0xff;
P2 = 0xff;
SCON=0x50; //设定串口工作方式
PCON=0x00; //波特率不倍增
TMOD=0x20; //定时器1工作于8位自动重载模式, 用于产生波特率
EA=1;
ES = 1; //允许串口中断
TL1=0xf3;
TH1=0xf3; //波特率2400
TR1=1;
lcd_init();
lcd_pos(0x00); //设置显示位置为第一行
for(m=0;m<16;m++)
lcd_wdat(cdis1[m]); //显示字符
lcd_pos(0x40); //设置显示位置为第二行
for(m=0;m<16;m++)
lcd_wdat(cdis2[m]); //显示字符
while(1)
{
play();
}
}
这个串口通信程序在我的开发版上已经全部验证通过,你可以根据实际,攸 改里面某些参数,满足你自己的需要就行。
比如你你点亮小灯,这部分你只可在相应位置添加代码即可。单片机都是51的。
其中1602的显示程序是用来验证是否通信成功,这部分你可作为参考。这部分你大可用小灯显示程序来替代。

利用方式1实现单片机双机通信,主频为6M,波特率为2400bps,电路见图5-10。当两个单片机距离较近时,甲、乙两机的发送端与接收端分别直接相联,两机共地。执行程序,甲机将亮灯信号发送给乙机,若通信正常,乙机接收到信号后点亮20个发光二极管。乙机采用查询与中断两种工作方式。当然20个LED乙机可单独控制,也可接受甲机的控制,并执行甲机指令,还需要进一步完善程序.
甲机发送程序:
org 0000h
sta: mov tmod,#20h ;设置波特率
mov tl1,#0FAh
mov th1,#0FAh
setb tr1
mov scon,#40h ;置工作方式1
clr ti
mov a,#00h
mov sbuf,a ;发送亮灯信号
wait: jbc ti,cont ;发送成功清标志
ajmp wait ;等待发送完毕
cont: sjmp sta ;重复发送
end

乙机查询工作方式接收:

org 0000h
mov tmod,#20h ;设置通信波特率
mov tl1,#0FAh
mov th1,#0FAh
setb tr1
mov scon,#40h
clr ri
setb ren ;允许接收
wait: jbc ri,read ;接收成功清标志
ajmp wait ;接收未完等待
read: mov a ,sbuf
mov p1,a ;接收亮灯信号送P1口
sjmp $
end

乙机中断工作方式接收
org 0000h
ajmp main
org 0023h
ajmp zd ;转串口中断程序
START: MOV TMOD,#20h
mov tl1,#0FAh
mov th1,#0FAh
setb tr1
mov scon,#50h
clr ri
mov ie,#90h ;开中断

MAIN:sjmp $ 主程序
zd: clr ri ;清接收标志
;==============中断程序还要再完善==============
mov a ,sbuf ;读接收信号
mov p1,a
MOV R1,A ;将收到的信号送缓存
reti ;中断返回
end

采用方式2 通信,数据帧格式是11位的,TB8为奇偶校验位,接收过程要求判断RB8,若出错置F0标志为1,正确则置F0标志为0,然后返回。发送波特率375kbps,晶振为12MHz,所以SMOD=l。由于传送数据的波特率与定时器无关,所以程序中无需对定时器编程.

send:
MOV SCON,#80H ;设置串行口为方式2
MOV PCON,#80H ;SMOD=l
MOV R0,#50H ;设数据块指针
MOV R7,#20 ;设数据块长度
STA: MOV A,@R0 ;取数据给A
MOV C,P
MOV TB8,C ;奇偶位P送给TB8,
MOV SBUF,A ;启动发送
;====================================================
WAIT: JBC TI,CONT ;若发完一帧数据,清标志后发下一帧数据
AJMP WAIT ;未完等待
;=======================================================
CONT:INC R0 ;修改数据指针
DJNZ R7,STA ;循环发送至结束
RET
;========================================================
;乙机接收程序如下:
; 在进行双机通信时,两机应采用相同的工作方式和波特率。
;=============================================================
MOV SCON,#90H ;设置串行口为方式2,REN为1,允许接收
MOV PCON,#80H ;SMOD=1
MOV R0,#50H ;设置数据块首址
MOV R7,#20 ;置数据块长度
;=========================================================
WAIT:JBC RI,READ ;接收完一帧数据则RI清零并读入数据
AJMP WAIT ;未完等待
;==========================================
READ:MOV A,SBUF ;读入数据
JNB PSW.0,PZ ;收到数为偶数则转
JNB RB8,ERR ;收到数为奇数,发端为偶数则通信出错
SJMP RIGHT ;相符则正确
PZ:JB RB8,ERR ;收到数为偶数,发端为奇数则出错
;========================================
RlGHT:MOV @R0,A ;通信正确,存放数据
INC R0 ;更改地址指针
DJNZ R7,WAIT ;数据块接收完否,未完继续
CLR PSW.5 ;通信正确,置F0为0
RET ;返回
ERROR:SETB PSW.5 ;通信出错,置F0为l
RET ;返回

把下面的程序稍微改一下:

/*
说明:
1. U1为发信机,U2位收信机;
2. U1收到数据后会打印出AT89C51 U1-->..., 并循环点亮8个LED;
3. U2接收输入数据后保存最新的30个字符,按‘\’后输出AT89C51 U2-->...
*/
#include <reg51.h> /* define 8051 registers */
#include <stdio.h> /* define I/O functions */

void delays(unsigned int ms)
{
unsigned int ii,jj;
for(ii=0;ii<ms;ii++)
for(jj=0;jj<5000;jj++);
}
void delayms(void)
{
unsigned int ii;
for(ii=0;ii<100;ii++);
}
void ledloop(unsigned char ss)
{
unsigned int ii;
P1=0xFF;
for(ii=0;ii<8;ii++)
{
P1=~(0x01<<ii);
delays(ss);
P1=0xff;
delays(ss);
}
P1=0xFF;
}

void initcom(void){
SCON = 0x52;
TMOD = 0x20;
TCON = 0x69;
TH1 = 0xf3;

}

void main (void){ /* main program */
unsigned char ch;
initcom();
//printf ("\n-----------------------");
//printf ("\n|Here is the receiver!|");
//printf ("\n-----------------------\n");
ledloop(10);

while (1){
P1=0;
delays(10);
P1=0xFF;
delays(10);
P1=0;
delays(10);
P1=0xFF;
delays(10);
ch = getchar();
if( (ch>30)&&(ch<123))
{
printf("\nAT89C51 U1-->%c\n", ch);
delayms();
ledloop(3);
}
}
}

串口很简单的!好好看看书看看教程!一会就会写了!

这是C语言的,试试吧,

#include <reg52.h>
#include <intrins.h>

#define uchar unsigned char
#define uint unsigned int

sbit LCD_RS = P2^0;
sbit LCD_RW = P2^1;
sbit LCD_EN = P2^2;

#define delayNOP(); {_nop_();_nop_();_nop_();_nop_();};

uchar data RXDdata[ ] = {0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20 };
uchar temp,buf,m,count;

bit playflag=0;

uchar code cdis1[ ] = {" SERILA TRANFER "};
uchar code cdis2[ ] = {" "};

/**********************************************************

延时子程序

**********************************************************/
void delay1(uint ms)

{
uchar k;
while(ms--)
{
for(k = 0; k < 120; k++);
}
}

/******************************************************************/
/* */
/*检查LCD忙状态 */
/*lcd_busy为1时,忙,等待。lcd-busy为0时,闲,可写指令与数据。 */
/* */
/******************************************************************/
bit lcd_busy()
{
bit result;
LCD_RS = 0;
LCD_RW = 1;
LCD_EN = 1;
delayNOP();
result = (bit)(P0&0x80);
LCD_EN = 0;
return(result);
}

/*******************************************************************/
/* */
/*写指令数据到LCD */
/*RS=L,RW=L,E=高脉冲,D0-D7=指令码。 */
/* */
/*******************************************************************/
void lcd_wcmd(uchar cmd)
{
while(lcd_busy());
LCD_RS = 0;
LCD_RW = 0;
LCD_EN = 0;
_nop_();
_nop_();
P0 = cmd;
delayNOP();
LCD_EN = 1;
delayNOP();
LCD_EN = 0;
}

/*******************************************************************/
/* */
/*写显示数据到LCD */
/*RS=H,RW=L,E=高脉冲,D0-D7=数据。 */
/* */
/*******************************************************************/
void lcd_wdat(uchar dat)
{
while(lcd_busy());
LCD_RS = 1;
LCD_RW = 0;
LCD_EN = 0;
P0 = dat;
delayNOP();
LCD_EN = 1;
delayNOP();
LCD_EN = 0;
}

/*******************************************************************/
/* */
/* LCD初始化设定 */
/* */
/*******************************************************************/
void lcd_init()
{
delay1(15);
lcd_wcmd(0x01); //清除LCD的显示内容
lcd_wcmd(0x38); //16*2显示,5*7点阵,8位数据
delay1(5);
lcd_wcmd(0x38);
delay1(5);
lcd_wcmd(0x38);
delay1(5);

lcd_wcmd(0x0c); //开显示,显示光标,光标闪烁
delay1(5);

lcd_wcmd(0x01); //清除LCD的显示内容
delay1(5);
}

/*******************************************************************/
/* */
/* 设定显示位置 */
/* */
/*******************************************************************/

void lcd_pos(uchar pos)
{
lcd_wcmd(pos | 0x80); //数据指针=80+地址变量
}

/*********************************************************

发送数据函数

*********************************************************/
void senddata(uchar dat)
{
SBUF =dat;
while(!TI);
TI = 0;
}

/*********************************************************

串行中断服务函数

*********************************************************/
void serial() interrupt 4
{
ES = 0; //关闭串行中断
RI = 0; //清除串行接受标志位
buf = SBUF; //从串口缓冲区取得数据

playflag=1;

switch(buf)
{
case 0x31: senddata('W');break; //接受到1,发送字符'W'给计算机
case 0x32: senddata('I');break; //接受到2,发送字符'I'给计算机
case 0x33: senddata('L');break; //接受到3,发送字符'L'给计算机
case 0x34: senddata('L');break; //接受到4,发送字符'L'给计算机
case 0x35: senddata('A');break; //接受到5,发送字符'A'给计算机
case 0x36: senddata('R');break; //接受到5,发送字符'R'给计算机
default: senddata(buf);break; //接受到其它数据,将其发送给计算机
}

if(buf!=0x0D)
{
if(buf!=0x0A)
{
temp =buf;
if(count<16)
{
RXDdata[count]=temp;
count++;
}
}
}
ES = 1; //允许串口中断
}

/*********************************************************

数据显示函数

*********************************************************/
void play()
{
if(playflag)
{
lcd_pos(0x40); //设置位置为第二行
for(m=0;m<16;m++)
lcd_wdat(cdis2[m]); //清LCD1602第二行

for(m=0;m<16;m++)
{
lcd_pos(0x40+m); //设置显示位置为第二行
lcd_wdat(RXDdata[m]); //显示字符
}

playflag=0;
count=0x00;

for(m=0;m<16;m++)
RXDdata[m]=0x20; //清显存单元
}
}

/*********************************************************

主函数

*********************************************************/
void main(void)
{
P0 = 0xff;
P2 = 0xff;

SCON=0x50; //设定串口工作方式
PCON=0x00; //波特率不倍增

TMOD=0x20; //定时器1工作于8位自动重载模式, 用于产生波特率
EA=1;
ES = 1; //允许串口中断
TL1=0xfd;
TH1=0xfd; //波特率9600
TR1=1;

lcd_init();
lcd_pos(0x00); //设置显示位置为第一行
for(m=0;m<16;m++)
lcd_wdat(cdis1[m]); //显示字符

lcd_pos(0x40); //设置显示位置为第二行
for(m=0;m<16;m++)
lcd_wdat(cdis2[m]); //显示字符

while(1)
{
play();
}
}

/*********************************************************/

  • 楂樺垎姹51鍗曠墖鏈轰覆鍙i氫俊鐨勭▼搴
    绛旓細include <reg52.h> include <intrins.h> define uchar unsigned char define uint unsigned int sbit LCD_RS = P2^0;sbit LCD_RW = P2^1;sbit LCD_EN = P2^2;define delayNOP(); {_nop_();_nop_();_nop_();_nop_();};uchar data RXDdata[ ] = {0x20,0x20,0x20,0x20...
  • 51鍗曠墖鏈濡備綍杩涜涓插彛閫氫俊,骞跺埗瀹氶氫俊鍗忚.
    绛旓細杩炵嚎灏辨槸 浜ゅ弶杩炴帴 A鐨凾X鍒癇鐨凴X A鐨凴X鍒癇鐨凾X,杩樻湁涓鏍瑰湴绾 涓插彛绾垮氨杩欎笁鏍瑰氨澶熺敤浜 鐒跺悗灏辨槸鍒濆鍖朅鍜孊鐨勪覆鍙,璁剧疆娉㈢壒鐜,宸ヤ綔妯″紡,寮涓柇绛夌瓑 A鍜孊鐨勯氫俊,浣犲厛璋冭瘯涓鍙版満鍣,姣斿A,鍜岀數鑴戣繛鎺,鐢ㄤ覆鍙h皟璇曞姪鎵(缃戜笂鎵)鏌ョ湅A鐨勬敹鍙戞暟鎹槸鍚︽甯,鐒跺悗A鍜孊鑱旇皟 涓插彛閫氫俊璺濈涓嶈繙涓鑸笉浼氬嚭閿,娉...
  • 51鍗曠墖鏈闂,楂樺垎,鎬ユ眰!!!
    绛旓細void UartInit(void) //1200bps@6MHz { PCON &= 0x7f; //娉㈢壒鐜囦笉鍊嶉 SCON = 0xd0; //9浣嶆暟鎹,鍙彉娉㈢壒鐜 AUXR &= 0xbf; //瀹氭椂鍣1鏃堕挓涓篎osc/12,鍗12T AUXR &= 0xfe; //涓插彛1閫夋嫨瀹氭椂鍣1涓烘尝鐗圭巼鍙戠敓鍣 TMOD &= 0x0f; //娓呴櫎瀹氭椂鍣1妯″紡浣 TMOD |= 0x20; //...
  • 楂樺垎姹涓涓51鍗曠墖鏈虹▼搴
    绛旓細include<reg51.h> define uchar unsigned char define uint unsigned int void delay(uint);sbit key1=P3^1; //鎸夐敭璁剧疆鏍规嵁浣鍗曠墖鏈鍜岀‖浠剁數璺潵鍐冲畾 sbit key2=P3^2;void main(){ // P3=0xff;while(1){ if(key1==0);delay(5);if(key1==0){ P0=0x01; //鐏寒涔熸槸鏍规嵁浣犲畾涔夌伅...
  • 楂樺垎姹傚崟鐗囨満楂樻墜甯啓涓娈电畝鍗曠殑C51绋嬪簭
    绛旓細浣犺瘯璇曠湅...#include <reg52.h> define uint unsigned int define uchar unsigned char uchar Receive_Buffer[6];uchar Buf_Index = 0;uchar Time_cnt=0;uchar DRV_OUT=0;sbit val_out=P1^0;uchar code DSY_CODE[]= { 0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x00 ...
  • 51鍗曠墖鏈娴嬫俯搴,閫熷害閫氳繃涓插彛鍙戦併愭眰鏂规硶銆
    绛旓細涓涓嬬▼搴忔槸51鍗曠墖鏈虹殑绋嬪簭銆侾0鍙f槸鍏鏁扮爜绠★紝wela銆乨ula鍒嗗埆鏄暟鐮佺浣嶉夊拰娈甸夈 DS18S20鎺ュ湪P2^2鍙c//瀹夎鐩綍涓嬬殑EXE鏂囦欢鎵撳紑鍚庡彲鍦ㄧ數鑴戜笂鏄剧ず褰撳墠娓╁害鍊 include <reg52.h> define uchar unsigned char define uint unsigned int sbit DS=P2^2; //define interface of DS18B20 sbit ...
  • 51鍗曠墖鏈轰覆鍙i氫俊
    绛旓細浣犲彂閫佺殑鏄疉SC鐮侊紝鎺ユ敹鐨勬椂鍊欙紝杞崲鎴16杩涘埗璧嬬粰PO鍙d簡锛岃繖鏍疯偗瀹氫笉瀵广備綘鍙戦佺殑鏃跺欙紝涓婁綅鏈鸿蒋浠堕16杩涘埗鍙戦併傜粰浣犱竴涓笂浣嶆満涓插彛璋冭瘯杞欢锛屼綘璇曡瘯鍚с
  • 51鍗曠墖鏈鏁版嵁绫诲瀷杞崲 楂樺垎!
    绛旓細涓锛氬皢娴偣鍨嬫暟涔樹笂涓涓父鏁皌锛屽皢鍏惰浆鎹㈡垚闀挎暣褰㈡暟鎹紝鐒跺悗閫氳繃涓插彛鍒4娆″彂閫侊紝鎺ユ敹鍚庡啀闄や互t杩樺師璇ユ暟锛屼絾鏄繖绉嶆柟娉曞湪杞崲鎴愰暱鏁村舰鐨勬椂鍊欎細閫犳垚璇樊锛屽湪璇樊瑕佹眰涓嶉珮鐨勬椂鍊欏彲浠ヤ娇鐢ㄣ備簩锛氫竴涓诞鐐瑰瀷鍗犵敤4涓瓧鑺傦紝鑰屾诞鐐瑰瀷鏄湁涓瀹氭牸寮忕殑锛屾寜鏍煎紡杩涜浼犻侊紝鐒跺悗鎸夋牸寮忚繘琛岃繕鍘燂紝鍏蜂綋鏍煎紡鎴戣涓嶆竻浜嗭紝...
  • 涓や釜鍗曠墖鏈轰箣闂寸殑閫氫俊,瑕佹眰涓涓崟鐗囨満鎸夐敭鎺у埗鍙︿竴涓鍗曠墖鏈虹殑灏忕伅浜?璺...
    绛旓細銆傘備袱涓鍗曠墖鏈瑕涓插彛閫氳鎵嶈銆傘绋嬪簭寰堢畝鍗曪紝涓昏鍋氬ソ涓插彛杩欏潡鑳藉浜掍紶灏辨病闂浜嗐傘傚鏋滀笉鎯冲仛涓插彛锛屽彲浠ョ洿鎺ョ偣锛屾帶鍒堕偅鍧楀崟鐗囨満杈撳嚭鑴夊啿淇″彿锛屽彟涓鍧楁帴鏀跺埌鍚庣偣浜甽ed灏卞彲浠ヤ簡銆傘備笉杩囪繖涓渶濂借繕鏄覆鍙e仛銆傘
  • 楂樺垎姹鑳界敤51鍗曠墖鏈虹▼搴stc12c5a60s2涓插彛閫氫俊
    绛旓細瀵癸紝鐢ㄥ紑鍙戞澘鐨勭▼搴鎴栬呯綉涓婄殑绋嬪簭淇敼涓嬪氨鍙互浜嗭紝浣犲彲浠ュ厛璇曡瘯锛屼笉鍙互鍐嶉棶鎴戙
  • 扩展阅读:modbus三种通讯协议 ... 51串口通信四个工作方式 ... c#上位机串口通信 ... 51单片机串口停止位 ... c#串口通讯 ... 51串口接收数据程序 ... 51串口通信内部结构 ... 51串口方式3 ... 51串口通信发送字符串 ...

    本站交流只代表网友个人观点,与本站立场无关
    欢迎反馈与建议,请联系电邮
    2024© 车视网